since I'm not really an expert on Sourcemod but I've hooked this function manually without needed sourcemod, I can noticed that you are trying to hook a claass function.
In the sourcemod docuemtnation there is an example to hook a class function like this:
Code:
SH_DECL_MANUALHOOK1_void(MHook_TakeDamage, 0, 0, 0, int);
extern void *player_vtable; int takedamage_hook = 0;
void StartHooks()
{
takedamage_hook = SH_ADD_MANUALDVPHOOK(MHook_TakeDamage, player_vtable, SH_STATIC(Hook_TakeDamage), false);
}
void StopHooks()
{
if (takedamage_hook)
{
SH_REMOVE_HOOK_ID(takedamage_hook);
}
}
void Hook_TakeDamage(int damage)
{
//...
}
changing this to player run cmd
Code:
SH_DECL_MANUALHOOK1_void(MHook_PlayerRunCmd, 0, 0, 0, CUserCmd*, IMoveHelper*);
extern void *player_vtable;
int playerruncmd_hook = 0;
void StartHooks()
{
playerruncmd_hook = SH_ADD_MANUALDVPHOOK(MHook_PlayerRunCmd, player_vtable, SH_STATIC(Hook_PlayerRunCmd), false);
}
void StopHooks()
{
if (playerruncmd_hook)
{
SH_REMOVE_HOOK_ID(playerruncmd_hook);
}
}
void Hook_PlayerRunCmd(CUserCmd *ucmd, IMoveHelper *moveHelper)
{
Player *pPlayer = META_IFACEPTR(Player);
g_pSM->LogMessage(myself, "H %i %i %f %f %f %f %i", ucmd->command_number, ucmd->tick_count, ucmd->viewangles.x, ucmd->viewangles.y, ucmd->viewangles.z, ucmd->forwardmove, ucmd->buttons);
RETURN_META(MRES_IGNORED);
}
__________________