Example of use:
Code: Select all
#include "q_events.h"
int Event_CurWeapon( int msg_dest, int msg_type, const float *pOrigin, edict_t *ed );
void ClientCommand(edict_t* pPlayer)
{
if(!strcmp(CMD_ARGV(1), "hook"))
{
Events.RegisterEvent( "CurWeapon", &Event_CurWeapon );
}
RETURN_META(MRES_IGNORED);
}
int Event_CurWeapon( int msg_dest, int msg_type, const float *pOrigin, edict_t *ed )
{
UTIL_ClientPrint(NULL, HUD_PRINTTALK, "Event: CurWeapon dest: %d type: %d ed: %p", msg_dest, msg_type, ed);
UTIL_ClientPrint(NULL, HUD_PRINTTALK, "Active: %d ID: %d ClippAmmo: %d", Events.GetArgInt(0), Events.GetArgInt(1), Events.GetArgInt(2));
UTIL_ClientPrint(NULL, HUD_PRINTTALK, "%d %p", Events.GetArgInt(3), Events.GetArgString(2));
Events.SetArg(2, 77);
return ER_IGNORED;
} int Event_Handler (int msg_dest, int msg_type, const float * pOrigin, edict_t * ed);
It returns one of the following values:
Code: Select all
enum
{
ER_IGNORED = 0,
ER_SUPERCEDE // block event
}; Code: Select all
/ / Hook event by name or id
void RegisterEvent (const int msg_id, EventCallback func);
void RegisterEvent (const char * msg_id, EventCallback func);
/ / Gets the argument by number
int GetArgInt (int num);
float GetArgFloat (int num);
const char * GetArgString (int num);
/ / Set the argument by number
void SetArg (int num, int set);
void SetArg (int num, float set);
void SetArg (int num, const char * set);
/ / Get the id event by name (not required)
int ID (const char * msg_name);