Example #1
0
void l_updateammo(CallHandler& handler, Object::unique_deque& args, Object::unique_list& results)
{
	ident weapon_id = make_ident(ReadNumber<DWORD>(*args[0]));
	s_halo_weapon* weapon = (s_halo_weapon*)GetObjectAddress(weapon_id);
	if (!weapon) handler.RaiseError("updateammo: invalid weapon id!");
	weapon->SyncAmmo(weapon_id);
}
Example #2
0
// will change this when i rework the script system
void check_script_reload(CallHandler& handler, const std::string& cmd)
{
	std::vector<std::string> tokens = TokenizeArgs(cmd);
	if (tokens.size() && tokens[0] == "sv_script_reload")
		handler.RaiseError("scripts cannot execute sv_script_reload.");

}
Example #3
0
void l_setammo(CallHandler& handler, Object::unique_deque& args, Object::unique_list& results)
{
	ident weapon_id = make_ident(ReadNumber<DWORD>(*args[0]));
	WORD clip_ammo = ReadNumber<WORD>(*args[1]);
	WORD pack_ammo = ReadNumber<WORD>(*args[2]);
	s_halo_weapon* weapon = (s_halo_weapon*)GetObjectAddress(weapon_id);
	
	if (!weapon) handler.RaiseError("setammo: invalid weapon id!");
	weapon->SetAmmo(pack_ammo, clip_ammo);
	weapon->SyncAmmo(weapon_id);
}
Example #4
0
void l_log_msg(CallHandler& handler, Object::unique_deque& args, Object::unique_list&)
{
	//todo: lets hope everything is null terminated.
	// find calls, and rip pout.

	DWORD log_id = ReadNumber<DWORD>(*args[0]);
	COutStream* stream;
	switch (log_id)
	{
	case 1: // game log
		{
			// can't treat the gaming log as a normal stream
			std::vector<std::wstring> msgs = ReadString(*args[1]);
			for (size_t x = 0; x < msgs.size(); x++)
				_TRACE_DEBUG_SCRIPT_EVENT(msgs[x].c_str())
			return;
		} break;

	case 2: //phasor log
		{
			//stream = g_PhasorLog.get();
		} break;
	case 3: // rcon log
		{
			//stream = g_RconLog.get();
		} break;
	case 4: // script log
		{
			//stream = g_ScriptsLog.get();
		} break;
	default:
		{
			std::stringstream ss;
			ss << "log_msg : '" << log_id << "' is not a valid id.";
			handler.RaiseError(ss.str());
		} break;
	}

	_TRACE_DEBUG("_l_log_msg: %s", *args[1])
	// todo:
	//WriteMessageToStream(*stream, *args[1]);
}
Example #5
0
int main() {
	CallHandler handler;

	handler.employ(new Fresher("Lily"));
	handler.employ(new Fresher("Ben"));
	handler.employ(new Fresher("Carlos"));
	handler.employ(new Fresher("David"));
	handler.employ(new Fresher("Thomas"));
	handler.employ(new TechLead("Anglela"));
	handler.employ(new ProductManager("Benson"));

	Call call1_1(CallHandler::FRESHER);
	Call call1_2(CallHandler::FRESHER);
	Call call1_3(CallHandler::FRESHER);
	Call call1_4(CallHandler::FRESHER);
	Call call1_5(CallHandler::FRESHER);
	Call call2(CallHandler::TECHLEAD);
	Call call3(CallHandler::TECHLEAD);
	Call call4(CallHandler::PRODUCTMANAGER);

	handler.dispatchCall(&call1_1);
	handler.dispatchCall(&call1_2);
	handler.dispatchCall(&call1_3);
	handler.dispatchCall(&call1_4);
	handler.dispatchCall(&call1_5);
	handler.dispatchCall(&call2);
	handler.dispatchCall(&call3);
	handler.dispatchCall(&call4);

	call1_1.disconnect();
	call2.complain();
	call3.disconnect();

	// Call Handler updates and dispatch Call4 to ProductManager
	handler.update();
	call4.disconnect();

	// Call Handler updates and dispatch Call2 to ProductManager
	handler.update();

	// Complain again, product manager just give up ...
	call2.complain();

	// ...

	return 0;
}
Example #6
0
void l_removetimer(CallHandler& handler, Object::unique_deque& args, Object::unique_list& results)
{
	DWORD id = ReadNumber<DWORD>(*args[0]);
	if (!g_Timers.RemoveTimer(id)) handler.RaiseError("removetimer : invalid timer id or a timer tried removing itself in its callback.");
}