Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < amxmodx >
- #include < fakemeta >
- enum _:Teams
- {
- FM_TEAM_UNASSIGNED,
- FM_TEAM_T,
- FM_TEAM_CT,
- FM_TEAM_SPECTATOR
- };
- new const szPrefix[ ] = "AMXX";
- new bool:Voice[ 33 ], pCvar[ 2 ];
- public plugin_init()
- {
- register_plugin( "JailBreak Voice Manager", "1.1", "Rejack" );
- register_clcmd( "say /voice", "CmdVoice" );
- register_forward( FM_Voice_SetClientListening, "FwdVoiceSetClientListening" );
- register_logevent( "evRoundStart", 2, "1=Round_Start" );
- pCvar[ 0 ] = register_cvar( "jbvoice_toggle", "1" );
- pCvar[ 1 ] = register_cvar( "jbvoice_deadvoice", "1" ); // Dead players can talk to each other
- }
- public CmdVoice( client )
- {
- if ( !get_pcvar_num( pCvar[ 0 ] ) )
- return 0;
- if ( !(get_user_flags( client ) & ADMIN_IMMUNITY) )
- return ColorPrint( client, "You have no access to this command." );
- static szItem[ 128 ], Menu, Players[ 32 ], iNum, szTempid[ 10 ];
- formatex( szItem, charsmax( szItem ), "\r[%s]\w JailBreak Voice Manager", szPrefix );
- Menu = menu_create( szItem, "SubVoice" );
- get_players( Players, iNum, "ce", "TERRORIST" );
- for ( new i; i < iNum; i++ )
- {
- new iPlayer = Players[ i ];
- num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
- formatex( szItem, charsmax( szItem ), "%s%s", szName( iPlayer ), Voice[ iPlayer ] ? " - \d[\r Voice \d]" : "" );
- menu_additem( Menu, szItem, szTempid );
- }
- menu_display( client, Menu );
- return 1;
- }
- public SubVoice( client, Menu, Item )
- {
- if ( !get_pcvar_num( pCvar[ 0 ] ) )
- return 0;
- if ( Item == MENU_EXIT )
- {
- menu_destroy( Menu );
- return 1;
- }
- new Access, Callback, Name[ 64 ], Data[ 6 ];
- menu_item_getinfo( Menu, Item, Access, Data, charsmax( Data ), Name, charsmax( Name ),Callback );
- new iPlayer = str_to_num( Data );
- if ( fm_get_user_team( iPlayer ) != FM_TEAM_T )
- return ColorPrint( client, "Invalid player was chosen." );
- ColorPrint( 0, "^4%s^1 %s^4 %s^1 the abillity to speak.", szName( client ), Voice[ iPlayer ] ? "took" : "gave", szName( iPlayer ) );
- Voice[ iPlayer ] = !Voice[ iPlayer ];
- menu_destroy( Menu );
- CmdVoice( client );
- return 1;
- }
- public FwdVoiceSetClientListening( Rec, Sender, bool:bListen )
- {
- if ( !get_pcvar_num( pCvar[ 0 ] ) || get_user_flags( Sender ) & ADMIN_BAN || fm_get_user_team( Sender ) == FM_TEAM_CT && is_user_alive( Sender ) || Voice[ Sender ] ||
- get_pcvar_num( pCvar[ 1 ] ) != 0 && !is_user_alive( Sender ) && !is_user_alive( Rec ) || !is_user_connected( Sender ) || !is_user_connected( Rec ) )
- return 1;
- engfunc( EngFunc_SetClientListening, Rec, Sender, 0 );
- return FMRES_SUPERCEDE;
- }
- public evRoundStart( )
- {
- if ( !get_pcvar_num( pCvar[ 0 ] ) )
- return 0;
- for ( new i = 1; i < get_maxplayers(); i++ )
- {
- if ( !is_user_connected( i ) || !Voice[ i ] )
- continue;
- Voice[ i ] = false;
- }
- return 0;
- }
- stock ColorPrint( const client, const szString[], any:... )
- {
- new szMsg[ 191 ], Players[ 32 ], PNum = 1;
- static Len; Len = formatex( szMsg, charsmax( szMsg ), "^4[%s]^1 ", szPrefix );
- vformat( szMsg[ Len ], charsmax ( szMsg ) - Len, szString, 3 );
- if ( client ) Players[ 0 ] = client;
- else get_players( Players, PNum, "ch" );
- for ( new i; i < PNum; i++ )
- {
- if ( is_user_connected( Players[ i ] ) )
- {
- message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ) ,_, Players[ i ] );
- write_byte( Players[ i ] );
- write_string( szMsg );
- message_end( );
- }
- }
- return 1;
- }
- stock szName( const index )
- {
- static g_szName[ 32 ];
- get_user_name( index, g_szName, charsmax( g_szName ) );
- return g_szName;
- }
- stock fm_get_user_team( const index )
- return get_pdata_int( index, 114 );
Advertisement
Add Comment
Please, Sign In to add comment