Есть плагин CW, нужно что бы при запуске CW всех новых игроков не пускало ни за одну команду кроме наблюдателей, т.е. блокировать подключение к командам CT и TT
Код:
#include < amxmodx >
#include < cstrike >
#include < colorchat >
#define ADMIN_LEVEL ADMIN_BAN
#define MR get_pcvar_num( g_pRoundsCvar )
new const VERSION[] = "0.0.3";
new const PREFIX[] = "[Dangerous]";
//new g_iHudSync;
new g_iMaxPlayers;
new g_iTeamScore[ 2 ]; // 0 = T ; 1 = CT
new g_pTeamNames[ 2 ]; // 0 = T ; 1 = CT
new g_pRoundsCvar;
new bool:g_bHalf_First;
new bool:g_bHalf_Second;
new g_pDuel;
new bool:g_bDuel;
new g_szDuelists[ 2 ][ 33 ];
new g_iDuelistScore[ 2 ];
public plugin_init()
{
register_plugin( "ClanWar Mod", VERSION, "Juice" );
register_clcmd( "say /start", "start_game" );
register_clcmd( "say /scrim", "start_game" );
register_clcmd( "say /scrimstop", "stop_game" );
register_clcmd( "say /stop", "stop_game" );
register_clcmd( "say /swap", "swap_teams" );
register_clcmd( "say /score", "print_score" );
g_pTeamNames[ 0 ] = register_cvar( "scrim_team_t", "Mix1" );
g_pTeamNames[ 1 ] = register_cvar( "scrim_team_ct", "Mix2" );
g_pRoundsCvar = register_cvar( "scrim_rounds" , "8" );
g_pDuel = register_cvar( "scrim_duel", "0" );
register_logevent( "eRoundEnd", 2, "0=World triggered", "1=Round_Draw", "1=Round_End" );
//g_iHudSync = CreateHudSyncObj( );
g_iMaxPlayers = get_maxplayers( );
}
public start_game( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
new szName[ 33 ];
get_user_name( id, szName, 32 );
ScrimReset( );
if( get_pcvar_num( g_pDuel ) )
{
new players[32],num;
get_players( players, num, "ae", "TERRORIST" );
if( num != 1 )
ColorChat( 0, GREEN, "^x03%s^x04 Cannot start duel!", PREFIX )
else
{
get_user_name( players[0], g_szDuelists[0], 32 );
// arrayset(players,0,32)
get_players( players, num, "ae", "CT" );
if( num != 1 )
ColorChat( 0, GREEN, "^x03%s^x04 Cannot start duel!", PREFIX )
else
{
g_bDuel = true;
g_iDuelistScore[0] = 0;
g_iDuelistScore[1] = 0;
get_user_name( players[0], g_szDuelists[1], 32 );
ColorChat( 0, RED, "%s %s have started the duel between^x04 %s^x03 and^x04 %s^x03!", PREFIX, szName, g_szDuelists[0], g_szDuelists[1] );
}
}
return PLUGIN_HANDLED;
}
else
{
g_bHalf_First = true;
ColorChat( 0, RED, "%s %s have started the Scrim! [Max Rounds: %d]", PREFIX, szName, get_pcvar_num( g_pRoundsCvar ) );
}
}
return PLUGIN_HANDLED;
}
public eRoundEnd()
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) ) return PLUGIN_CONTINUE;
//client_print( 0, print_chat, "AAA" );
new players[ 32 ], num;
get_players( players, num, "ae", "TERRORIST" );
if( g_bDuel )
{
if( !num )
{
new a = g_iDuelistScore[1];
g_iDuelistScore[1] = g_iDuelistScore[0];
g_iDuelistScore[0] = a;
new poop[32];
formatex( poop, 32, g_szDuelists[1] );
formatex( g_szDuelists[1], 32, g_szDuelists[0] );
formatex( g_szDuelists[0], 32, poop );
swap();
}
else
{
if( ++g_iDuelistScore[0] >= 3 )
{
new szName[33];
get_user_name( players[0], szName, 32 );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ScrimReset();
}
else ssay_score(0);
}
}
else
{
if( !num )
{
if( g_bHalf_First )
{
g_iTeamScore[ 1 ]++; round_end(); // give point to CT
}
else if( g_bHalf_Second )
{
g_iTeamScore[ 0 ]++; round_end(); // give point to T
}
}
else
{
if( g_bHalf_First )
{
g_iTeamScore[ 0 ]++; round_end(); // give point to T
}
else if( g_bHalf_Second )
{
g_iTeamScore[ 1 ]++; round_end(); // give point to CT
}
}
}
return PLUGIN_CONTINUE;
}
public round_end()
{
if ( !g_bHalf_First && !g_bHalf_Second ) return
if ( g_bHalf_First )
{
ssay_score( 0 );
if ( g_iTeamScore[ 0 ] + g_iTeamScore[ 1 ] == MR )
{
ColorChat( 0, GREEN, "%s Half of scrim is over! Switching teams...", PREFIX );
g_bHalf_First = false;
g_bHalf_Second = true;
swap( );
server_cmd( "sv_restartround 1" );
}
}
else if ( g_bHalf_Second )
{
new szTeamNames[ 2 ][ 33 ];
get_pcvar_string( g_pTeamNames[ 0 ], szTeamNames[ 0 ], 32 );
get_pcvar_string( g_pTeamNames[ 1 ], szTeamNames[ 1 ], 32 );
ssay_score( 0 );
if ( g_iTeamScore[ 0 ] == MR + 1 )
{
ColorChat( 0, RED, "%s Team^x04 %s^x03 have won the game!", PREFIX, szTeamNames[ 0 ] );
ScrimReset( );
}
else if ( g_iTeamScore[ 1 ] == MR + 1 )
{
ColorChat( 0, RED, "%s Team^x04 %s^x03 have won the game!", PREFIX, szTeamNames[ 1 ] );
ScrimReset( );
}
else if ( g_iTeamScore[ 0 ] + g_iTeamScore[ 1 ] == (MR+MR) )
{
ColorChat( 0, GREEN, "%s The game has ended with a draw!", PREFIX );
ScrimReset( );
}
}
}
public ScrimReset( )
{
g_bHalf_First = false;
g_bHalf_Second = false;
g_iTeamScore[ 0 ] = g_iTeamScore[ 1 ] = 0;
g_bDuel = false;
arrayset( g_iDuelistScore, 0, 33 );
server_cmd( "sv_restartround 1" );
}
public stop_game( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) )
{
client_print( id, print_chat, "%s Scrim is not started!", PREFIX );
return PLUGIN_HANDLED;
}
new szName[ 33 ];
get_user_name( id, szName, 32 );
ColorChat( 0, BLUE, "%s %s have stopped the scrim!", PREFIX, szName );
ScrimReset( );
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public swap_teams( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
swap( );
ScrimReset( );
}
}
public print_score( id )
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) )
{
client_print( id, print_chat, "%s Scrim is not started!", PREFIX );
return PLUGIN_HANDLED;
}
ssay_score( id );
return PLUGIN_HANDLED;
}
public ssay_score( id )
{
if( g_bDuel )
{
ColorChat( id, BLUE, "%s [^x04 %s : %d^x03 ]^x04 |^x03 [^x04 %s : %d^x03 ]", PREFIX, g_szDuelists[0], g_iDuelistScore[0], g_szDuelists[1], g_iDuelistScore[1] );
}
else
{
new szTeamNames[ 2 ][ 33 ];
get_pcvar_string( g_pTeamNames[ 0 ], szTeamNames[ 0 ], 32 );
get_pcvar_string( g_pTeamNames[ 1 ], szTeamNames[ 1 ], 32 );
ColorChat( id, BLUE, "%s Half: %s (MR: %d) - Score: [^x04 %s : %d^x03 ]^x04 |^x03 [^x04 %s : %d^x03 ]"
, PREFIX, g_bHalf_First ? "1st" : "2nd", MR, szTeamNames[ 0 ], g_iTeamScore[ 0 ], szTeamNames[ 1 ], g_iTeamScore[ 1 ] );
}
//set_hudmessage( 255, 255, 255, -1.0, -0.5, 0, 2.0, 5.0 );
//ShowSyncHudMsg( g_bNotice ? 0 : id, g_iHudSync, "Half: %s^n[ %s : %d ] | [ %s : %d ]"
//, g_bHalf_First ? "1st" : "2nd", szTeamNames[ 0 ], g_iTeamScore[ 0 ], szTeamNames[ 1 ], g_iTeamScore[ 1 ] );
}
public swap( )
{
for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
{
switch( cs_get_user_team( i ) )
{
case CS_TEAM_T: cs_set_user_team( i, CS_TEAM_CT );
case CS_TEAM_CT: cs_set_user_team( i,CS_TEAM_T );
}
} else continue;
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/