Dead players not hear anybody
I don't know why, but dead players not hear anybody
Code snippet:
PHP Code:
#include <amxmodx> #include <hamsandwich> #include <fakemeta>
#define GetBit(%0,%1) %0 & (1<<(%1 & 31)) #define SetBit(%0,%1) (%0 |= (1<<(%1 & 31))) #define ClearBit(%0,%1) (%0 &= ~(1<<(%1 & 31)))
#define userFlags(%0,%1) (get_user_flags(%0) & read_flags(%1)) #define userAlive(%0) GetBit(g_iBitUserAlive, %0)
new g_iBitUserAlive;
public plugin_init() { RegisterHamPlayer(Ham_Spawn, "HamSpawn", 1);
register_forward(FM_Voice_SetClientListening, "VoiceSetListening"); }
public client_disconnected(id) ClearBit(g_iBitUserAlive, id);
public HamSpawn(id) { if(!is_user_alive(id) || userAlive(id)) return;
SetBit(g_iBitUserAlive, id); }
public VoiceSetListening(iReceiver, iSender, bool:bListen) { static bool:bShouldListen; bShouldListen = false;
if(g_iAdminVoice) bShouldListen = (g_iAdminVoice == iSender); else if(GetBit(g_iBitInterAdminVoice, iSender)) bShouldListen = bool:!!(userFlags(iReceiver, "d")); else if(GetBit(g_iBitUserAdminMuted, iSender) || jbe_get_ban_micro(iSender)) bShouldListen = false; else if(GetBit(g_iBitVipVoice, iSender) && userAlive(iSender)) { if(userAlive(iReceiver) && g_iUserTeam[iSender] == g_iUserTeam[iReceiver]) bShouldListen = true; else bShouldListen = false; } else if(g_iUserTeam[iSender] == 1) { if(g_bRestartGame) bShouldListen = true; else if(~GetBit(g_iBitUserVoice, iSender)) bShouldListen = false; } else if(userAlive(iReceiver)) bShouldListen = bool:!!(userAlive(iSender));
if(bShouldListen != bListen) { forward_return(FMV_CELL, engfunc(EngFunc_SetClientListening, iReceiver, iSender, bShouldListen)); return 4; } return 1; }
|