Версия за Ant1Lamer:
Код за потвърждение: Избери целия код
#include < amxmodx >
#include < cstrike >
#include < hamsandwich >
#define BALANCE_IMMUNITY ADMIN_IMMUNITY
/*
auto_balance
- 0: Disabled
- 1: Enabled
- 2: Enabled, obey immunity
*/
new bool:g_bConnected[ 33 ], bool:g_bImmunity[ 33 ], CsTeams:g_iNewTeam[ 33 ];
new g_pCvar, g_iMaxPlayers, g_iMsgSayText, g_iMsgScreenFade, g_iPlayers;
public plugin_init( ) {
register_plugin( "Auto Balance", "1.0", "xPaw" );
RegisterHam( Ham_Spawn, "player", "eventPlayerSpawnPre", 0 );
register_event( "DeathMsg", "eventDeathMsg", "a" );
g_pCvar = register_cvar( "auto_balance", "2" );
g_iMsgScreenFade = get_user_msgid( "ScreenFade" );
g_iMsgSayText = get_user_msgid( "SayText" );
g_iMaxPlayers = get_maxplayers( );
}
public client_putinserver( id ) {
g_bConnected[ id ] = true; // bool:!is_user_bot( id );
g_bImmunity[ id ] = bool:( get_user_flags( id ) & BALANCE_IMMUNITY );
g_iPlayers++;
}
public client_disconnected( id ) {
g_iNewTeam[ id ] = CS_TEAM_UNASSIGNED;
g_bImmunity[ id ] = false;
g_bConnected[ id ] = false;
g_iPlayers--;
}
public eventDeathMsg( ) {
new iKiller = read_data(1);
new iVictim = read_data(2);
if( g_iPlayers < 4 || iKiller == iVictim || !g_bConnected[ iVictim ] )
return;
new iCvar = get_pcvar_num( g_pCvar );
if( iCvar <= 0 || iCvar == 2 && g_bImmunity[ iVictim ] )
return;
hasDifference(iVictim)
}
public eventPlayerSpawnPre( id ) {
new CsTeams:iNewTeam = g_iNewTeam[ id ];
if ( iNewTeam > CS_TEAM_UNASSIGNED ) {
if (!hasDifference(id))
{
g_iNewTeam[id] = CS_TEAM_UNASSIGNED
return
}
cs_set_user_team(id, iNewTeam)
new szName[ 32 ];
get_user_name( id, szName, 31 );
set_hudmessage( 0, 127, 255, 0.42, 0.53, 2, 6.0, 4.0, 0.1, 0.2, -1 );
if ( iNewTeam == CS_TEAM_T ) {
show_hudmessage( id, "You have been transfered to Terrorists!" );
UTIL_GreenPrintAll( id, "^4[CS-BULGARIA]^3 %s^1 has been transfered to^3 Terrorists^1.", szName );
UTIL_ScreenFade( id, 175, 0, 0 );
} else {
show_hudmessage( id, "You have been transfered to Counter-Terrorists!" );
UTIL_GreenPrintAll( id, "^4[CS-BULGARIA]^3 %s^1 has been transfered to^3 Counter-Terrorists^1.", szName );
UTIL_ScreenFade( id, 0, 0, 175 );
}
g_iNewTeam[id] = CS_TEAM_UNASSIGNED
}
}
bool:hasDifference(id)
{
new iPlayers[ 2 ];
for( new i = 1; i <= g_iMaxPlayers; i++ ) {
if( !is_user_connected( i ) )
continue;
switch( cs_get_user_team( i ) ) {
case CS_TEAM_T: iPlayers[ 0 ]++;
case CS_TEAM_CT: iPlayers[ 1 ]++;
}
}
new CsTeams:iCheck, iDifference = iPlayers[ 1 ] - iPlayers[ 0 ];
if( iDifference > 0 )
iCheck = CS_TEAM_T;
else if( iDifference < 0 )
iCheck = CS_TEAM_CT;
else
return false;
if( abs( iDifference ) < 2 || cs_get_user_team(id) == iCheck )
return false;
g_iNewTeam[id] = iCheck;
return true
}
UTIL_GreenPrintAll( const iSender, const Message[ ], any:... ) {
new szMessage[ 192 ];
vformat( szMessage, 191, Message, 3 );
message_begin( MSG_BROADCAST, g_iMsgSayText );
write_byte( iSender );
write_string( szMessage );
message_end( );
}
UTIL_ScreenFade( const id, const iRed, const iGreen, const iBlue ) {
message_begin( MSG_ONE_UNRELIABLE, g_iMsgScreenFade, _, id );
write_short( 2000 );
write_short( 2000 );
write_short( 0 );
write_byte( iRed );
write_byte( iGreen );
write_byte( iBlue );
write_byte( 175 );
message_end( );
}