PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < nvault >
new const VERSION[] = "0.0.8";
new const PREFIX[] = "[CC] ";
new Connects[ 33 ];
new szConnectStatus[ 33 ][ 9 ];
new g_iMsgSayText;
new g_vSaveFile;
new iPlayers[ 33 ][ 32 ];
new iNum[ 33 ];
new g_szLeaveMessage[ 33 ][ 64 ];
new bool:g_bVeteran[ 33 ];
public plugin_init()
{
register_plugin( "Advanced Connections Counter", VERSION, "Juice" );
register_cvar( "connects_count", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
register_clcmd( "say", "HookSay" );
register_clcmd( "say_team", "HookSay_Team" );
g_iMsgSayText = get_user_msgid( "SayText" );
g_vSaveFile = nvault_open( "ConnectCount" );
}
public client_putinserver( id )
{
if( !is_user_bot( id ) )
{
if( task_exists( id ) )
{
remove_task( id );
}
LoadData( id );
++Connects[ id ];
if ( is_user_admin( id ) )
{
szConnectStatus[ id ] = "Admin";
g_bVeteran[ id ] = true;
}
else
{
if( Connects[ id ] <= 100 )
{
szConnectStatus[ id ] = "Newbie";
}
else if( 100 < Connects[ id ] <= 500 )
{
szConnectStatus[ id ] = "Semi-Pro";
}
else if( 500 < Connects[ id ] <= 750 )
{
szConnectStatus[ id ] = "Pro";
}
else if( Connects[ id ] > 750 )
{
szConnectStatus[ id ] = "Veteran";
g_bVeteran[ id ] = true;
}
}
set_task( 2.0, "PrintZ0r", id );
}
}
public PrintZ0r( id )
{
new szName[ 33 ], szMessage[ 128 ];
get_user_name( id, szName, 32 );
format( szMessage, 127, "^x04%s^x03%s have joined with^x04 %i^x03 Connections. [^x04Status: %s^x03]", PREFIX, szName, Connects[ id ], szConnectStatus[ id ] );
Print( 0, 1, szMessage )
}
public client_disconnect( id )
{
if( !is_user_bot( id ) )
{
new szName[ 33 ], szMessage[ 128 ];
get_user_name( id, szName, 32 );
SaveData( id );
if( g_bVeteran[ id ] )
{
format( szMessage, 127, "^x04%s^x03Veteran: %s has left the server. [^x04Message: %s^x03]", PREFIX, szName, g_szLeaveMessage[ id ] );
Print( 0, 1, szMessage )
g_bVeteran[ id ] = false;
}
else
{
g_szLeaveMessage[ id ] = " ";
}
if( task_exists( id ) )
{
remove_task( id );
}
}
}
public SaveData( id )
{
new szAuthID[ 20 ];
new vaultkey[ 20 ], vaultdata[ 128 ];
get_user_authid( id, szAuthID, 19 );
format( vaultkey, 19, "%s", szAuthID );
format( vaultdata, 127, " %i %s ", Connects[ id ], g_szLeaveMessage[ id ] );
nvault_set( g_vSaveFile, vaultkey, vaultdata );
return PLUGIN_CONTINUE;
}
public LoadData( id )
{
new szAuthID[ 20 ];
new vaultkey[ 20 ], vaultdata[ 128 ];
new ConnectCount[ 33 ];
new LeaveMsg[ 64 ];
get_user_authid( id, szAuthID, 19 );
format( vaultkey, 19, "%s", szAuthID );
format( vaultdata, 127, " %i %s ", Connects[ id ], g_szLeaveMessage[ id ] );
nvault_get( g_vSaveFile, vaultkey, vaultdata, 127 );
parse( vaultdata, ConnectCount, 32, LeaveMsg, 63 );
Connects[ id ] = str_to_num( ConnectCount );
g_szLeaveMessage[ id ] = LeaveMsg;
return PLUGIN_CONTINUE;
}
public HookSay( id )
{
new szMessage[ 257 ];
read_args( szMessage, 256 );
remove_quotes( szMessage );
new szName[ 33 ];
get_user_name( id, szName, 32 );
if( g_bVeteran[ id ] )
{
if( szMessage[ 0 ] == '/' && szMessage[ 2 ] == 'e' && szMessage[ 4 ] == 'v' && szMessage[ 6 ] == 'm' )
{
new Arg[ 64 ];
strbreak( szMessage, szMessage, 95, Arg, 63 );
remove_quotes( Arg );
if( !Arg[ 0 ] )
{
if( g_szLeaveMessage[ id ][ 0 ] )
{
client_print( id, print_chat, "%sYour current leave message is ^"%s^"", PREFIX, g_szLeaveMessage[ id ] );
}
else
{
client_print( id, print_chat, "%sYou haven't set a leave message yet. To do so, type /leavemsg ^"message^".", PREFIX );
}
}
else if( equali( Arg, "remove" ) )
{
g_szLeaveMessage[ id ] = "No Message Set";
client_print( id, print_chat, "%sYour leave message was removed.", PREFIX )
}
else
{
copy( g_szLeaveMessage[ id ], 63, Arg )
client_print( id, print_chat, "%sYour leave message has been set to ^"%s^"", PREFIX, Arg );
}
return PLUGIN_CONTINUE;
}
}
if ( szMessage[0] == '@' || szMessage[0] == '/' || szMessage[0] == '!' || equal (szMessage, "") )
{
return PLUGIN_CONTINUE;
}
if ( is_user_alive( id ) )
{
format( szMessage, 255, "^x04[%s]^x03 %s^x01 : %s", szConnectStatus[ id ], szName, szMessage );
Print(0, id, szMessage)
}
else if ( cs_get_user_team( id ) != CS_TEAM_SPECTATOR )
{
format( szMessage, 255, "^x04[%s]^x01 *DEAD*^x03 %s^x01 : %s", szConnectStatus[ id ], szName, szMessage );
Print(0, id, szMessage)
}
else
{
format( szMessage, 255, "^x04[%s]^x01 *SPEC*^x03 %s^x01 : %s", szConnectStatus[ id ], szName, szMessage );
Print(0, id, szMessage)
}
return PLUGIN_HANDLED;
}
public HookSay_Team( id )
{
new szMessage[ 257 ];
read_args( szMessage, 256 );
remove_quotes( szMessage );
new szName[ 33 ], szTeam[ 33 ];
get_user_name( id, szName, 32 );
new CsTeams:userteam = cs_get_user_team( id );
if ( szMessage[0] == '@' || szMessage[0] == '/' || szMessage[0] == '!' || equal( szMessage, "" ) )
{
return PLUGIN_CONTINUE;
}
if ( userteam == CS_TEAM_T )
{
get_players( iPlayers[ id ], iNum[ id ], _, "TERRORIST" );
szTeam = "(Terrorist)";
}
else if ( userteam == CS_TEAM_CT )
{
get_players( iPlayers[ id ], iNum[ id ], _, "CT" );
szTeam = "(Counter-Terrorists)";
}
else
{
get_players( iPlayers[ id ], iNum[ id ], _, "SPECTATOR" );
szTeam = "(Spectator)";
}
for ( new a = 0; a < iNum[ id ]; ++a )
{
new i = iPlayers[ id ][ a ];
if( cs_get_user_team( i ) != userteam )
{
return PLUGIN_HANDLED;
}
if ( is_user_alive( id ) )
{
format( szMessage, 255, "^x04[%s]^x01 %s^x03 %s^x01 : %s", szConnectStatus[ id ], szTeam, szName, szMessage );
Print( i, id, szMessage )
}
else if (!is_user_alive(id) && userteam != CS_TEAM_SPECTATOR)
{
format( szMessage, 255, "^x04[%s]^x01 *DEAD* %s^x03 %s^x01 : %s", szConnectStatus[ id ], szTeam, szName, szMessage );
Print( i, id, szMessage )
}
else
{
format( szMessage, 255, "^x04[%s]^x01 %s^x03 %s^x01 : %s", szConnectStatus[ id ], szTeam, szName, szMessage );
Print( i, id, szMessage )
}
}
return PLUGIN_HANDLED;
}
Print( id, colorid, szMessage[], any:... )
{
message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgSayText, _, id );
write_byte( colorid );
write_string( szMessage );
message_end( );
}