PDA

View Full Version : problem getting server events


L. Duke
05-11-2005, 18:41
I'm trying to hook the FireEvent from IGameEventManager2 so I can run code on "round_start"

In meta_hooks.hSH_DECL_HOOK2(IGameEventManager2, FireEvent, SH_NOATTRIB, 0, bool, IGameEvent *, bool);
In Hostitron::Loadm_GameEventManager = (IGameEventManager2 *)((ismm->engineFactory())(INTERFACEVERSION_GAMEEVENTSM ANAGER2, NULL));

SH_ADD_HOOK_MEMFUNC(IGameEventManager2, FireEvent, m_GameEventManager, &g_Hostitron, &Hostitron::FireEvent, true);
Hostitron::FireEventbool Hostitron::FireEvent(IGameEvent *event, bool bDontBroadcast)
{
const char *name = event->GetName();
META_LOG(g_PLAPI, "Hostitron::FireEvent received event: %s", name);
RETURN_META_VALUE(MRES_IGNORED, true);
}

The event->GetName() always crashes the server. If I take out that line, I can log every time an event is received but I don't know which event it is. I'm probably missing something simple again, any ideas?




http://img2.uploadimages.net/246081temp.jpg

PM
05-12-2005, 11:49
Hm, interesting. Will check it out later.

L. Duke
05-13-2005, 16:25
I finally found a solution to the problem. You have to hook FireEvent pre instead of post.
SH_ADD_HOOK_MEMFUNC(IGameEventManager2, FireEvent, m_GameEventManager, &g_Hostitron, &Hostitron::FireGameEvent, false);

I think that FireEvent frees the event before it returns.

PM
05-13-2005, 16:38
Ohhh, that'd be logical, yes.

MSCBuff
05-19-2005, 17:16
Thanks for posting this. I was just running into problems adding the FireEvent stuff and this gave me a kick in the right direction... :P