#include < amxmodx >
#include < fakemeta >
#define SetPlayerBits(%1,%2) ( %1 |= 1 << ( %2 & 31 ) )
#define ClearPlayerBits(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) )
#define GetPlayerBits(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
new g_pEnabled, g_bAdmin;
public plugin_init( ) {
register_plugin( "Voice Admin Only", "1.1", "xPaw" );
g_pEnabled = register_cvar( "sv_voiceadminonly", "1" );
register_forward( FM_Voice_SetClientListening, "FwdSetClientListening" );
}
public client_authorized( id )
if( get_user_flags( id ) & ADMIN_CHAT )
SetPlayerBits( g_bAdmin, id );
public client_disconnect( id )
ClearPlayerBits( g_bAdmin, id );
public FwdSetClientListening( iReceiver, iSender, bool:bListen ) {
if( GetPlayerBits( g_bAdmin, iSender ) && get_pcvar_num( g_pEnabled ) > 0 ) {
engfunc( EngFunc_SetClientListening, iReceiver, iSender, false );
forward_return( FMV_CELL, false );
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}