EventManager

Adding Modules to help with scripting/coding plugins.
User avatar
Archive-Poster
Posts: 1090
Gender:
United States of America

EventManager

Post by Archive-Poster »

Ready-made solution for messaging / event module to metamod.

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;
} 
Type of event handler function: EventCallback
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
}; 
Functions:

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);
Attachments
q_events.zip
(2.89 KiB) Downloaded 6 times

Who is online

Users browsing this forum: No registered users and 0 guests