Ok what i want to do is have a command (amx_allowmic <name> <state>) to either allow or disallow mic chatting. I have come this far, but for some reason this doesn't work. Any help is appreciated.
PHP Code:
new bool:g_bAllowMic[ 33 ];
public plugin_init( ) {
register_forward( FM_Voice_SetClientListening, "Forward_SetVoice" );
register_concmd( "amx_allowmic", "ConCmd_AllowMic", ADMIN_ADMIN, " <name|authid|userid> <1|0> - Set a player talk power" );
}
// Edit:
public client_putinserver( iPlayerID ) {
g_bAllowMic[ iPlayerID ] = false;
}
public Forward_SetVoice( iReceiver, iSender, bool:listen ) {
if( !( 1<= iReceiver <= g_iMaxPlayers ) ||
!g_bConnected[ iReceiver ] ||
!( 1<= iSender <= g_iMaxPlayers ) ||
!g_bConnected[ iSender ] ) {
return FMRES_IGNORED;
}
new CsTeams:iTeam = cs_get_user_team( iSender );
if( !g_bAllowMic[ iSender ] && !access( iSender, ADMIN_KICK ) ) {
engfunc( EngFunc_SetClientListening, iReceiver, iSender, 0 );
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public ConCmd_AllowMic( iPlayerID, iLevel, iCid ) {
if( !cmd_access( iPlayerID, iLevel, iCid, 2 ) ) {
return PLUGIN_HANDLED;
}
static strTarget[ 32 ], strStatus[ 2 ];
read_argv( 1, strTarget, 31 );
read_argv( 2, strStatus, 1 );
new iTarget = cmd_target( iPlayerID, strTarget, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF );
if( !iTarget ) {
return PLUGIN_HANDLED;
}
if( str_to_num( strStatus ) ) {
g_bAllowMic[ iTarget ] = true;
client_print( iPlayerID, print_console, "Talk power has been granted to the user." );
} else {
g_bAllowMic[ iTarget ] = false;
client_print( iPlayerID, print_console, "Talk power has been revoked from the user." );
}
return PLUGIN_HANDLED;
}
Any ideas?
EDIT: when i use the command amx_allowmic, i get the appropriate message so i know that the bool value is correctly set, it's just that when he tries to talk it doesn't work (btw i reset the boolean value to false whenver a player connects)
__________________