void HookFunction(){
g_pClient->HUD_Redraw = HUD_Redraw;
g_pClient->HUD_Frame = HUD_Frame;
g_pEngine->pfnPlaySound = plays; //here
and
void [or what??] plays(const char *sound,float vol, float pitch)
{
ConsolePrintColor(22, 222, 22, "hook sound %s \n",sound);
return g_pEngine->pfnPlaySound(sound, vol, pitch); //wrong
}

pcmd_t hookdisc;
hookdisc = CommandByName("disconnect");
hookdisc->function = (xcommand_t)mydisconnect;
void mydisconnect()
{
how to return original function ? because if I do engine-> clientcmd disconenct it will be infinite loop
int plays(const char *sound,float vol, float pitch)
{
if(g_pEngine)
ConsolePrintColor(22, 222, 22, "Engine Found \n",sound);
return g_pEngine->pfnPlaySound(sound, vol, pitch); //wrong
}
void plays(const char *sound,float vol, float pitch)
{
if(!blockplaysound)
return g_Engine.pfnPlaySound(sound, vol, pitch);
}
