Implemented amb296 - Added HookEventEx() which does not generate a runtime error if the event does not exist and returns false instead.
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40807
This commit is contained in:
parent
1a77530c93
commit
4ed2d6e515
@ -38,6 +38,26 @@ static cell_t sm_HookEvent(IPluginContext *pContext, const cell_t *params)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell_t sm_HookEventEx(IPluginContext *pContext, const cell_t *params)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
IPluginFunction *pFunction;
|
||||||
|
|
||||||
|
pContext->LocalToString(params[1], &name);
|
||||||
|
|
||||||
|
if (!pFunction)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Invalid function id (%X)", params[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_EventManager.HookEvent(name, pFunction, static_cast<EventHookMode>(params[3])) == EventHookErr_InvalidEvent)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static cell_t sm_UnhookEvent(IPluginContext *pContext, const cell_t *params)
|
static cell_t sm_UnhookEvent(IPluginContext *pContext, const cell_t *params)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
@ -313,6 +333,7 @@ static cell_t sm_SetEventString(IPluginContext *pContext, const cell_t *params)
|
|||||||
REGISTER_NATIVES(gameEventNatives)
|
REGISTER_NATIVES(gameEventNatives)
|
||||||
{
|
{
|
||||||
{"HookEvent", sm_HookEvent},
|
{"HookEvent", sm_HookEvent},
|
||||||
|
{"HookEventEx", sm_HookEventEx},
|
||||||
{"UnhookEvent", sm_UnhookEvent},
|
{"UnhookEvent", sm_UnhookEvent},
|
||||||
{"CreateEvent", sm_CreateEvent},
|
{"CreateEvent", sm_CreateEvent},
|
||||||
{"FireEvent", sm_FireEvent},
|
{"FireEvent", sm_FireEvent},
|
||||||
|
@ -66,6 +66,17 @@ funcenum EventHook
|
|||||||
*/
|
*/
|
||||||
native HookEvent(const String:name[], EventHook:callback, EventHookMode:mode=EventHookMode_Post);
|
native HookEvent(const String:name[], EventHook:callback, EventHookMode:mode=EventHookMode_Post);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a hook for when a game event is fired.
|
||||||
|
*
|
||||||
|
* @param name Name of event.
|
||||||
|
* @param callback An EventHook function pointer.
|
||||||
|
* @param mode Optional EventHookMode determining the type of hook.
|
||||||
|
* @return True if event exists and was hooked successfully, false otherwise.
|
||||||
|
* @error Invalid callback function.
|
||||||
|
*/
|
||||||
|
native bool:HookEventEx(const String:name[], EventHook:callback, EventHookMode:mode=EventHookMode_Post);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a hook for when a game event is fired.
|
* Removes a hook for when a game event is fired.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user