[code]#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fakemeta >
#include < CC_ColorChat >
#define ADMIN_ACCESS ADMIN_BAN
#pragma semicolon 1
static const PLUGIN[ ] = "Player Tags";
static const VERSION[ ] = "1.0";
new szFile[ 128 ];
new PlayerTag[ 33 ][ 32 ];
new bool: PlayerHasTag[ 33 ];
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" );
register_concmd( "amx_reloadtags", "ClCmdReloadTags", -1, "" );
register_clcmd("say","hook_say");
register_clcmd("say_team","hook_say_team");
register_forward( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
}
public plugin_precache( )
{
get_configsdir( szFile, sizeof ( szFile ) -1 );
formatex( szFile, sizeof ( szFile ) -1, "%s/PlayerTags.ini", szFile );
if( !file_exists( szFile ) )
{
write_file( szFile, ";Aici treceti tag-urile jucatorilor !", -1 );
write_file( szFile, ";ex: ^"Nume Player^" ^"Ip Player^" ^"Tag Player^" ", -1 );
write_file( szFile, ";Numele sa fie exact( ex: Askhanar va fi Askhanar nu askhanar ! ) ", -1 );
}
}
public client_putinserver( id )
{
if( is_user_bot( id ) || is_user_hltv( id ) ) return 1;
PlayerHasTag[ id ] = false;
LoadPlayerTag( id );
return 0;
}
public fwClientUserInfoChanged( id, buffer )
{
if ( !is_user_connected( id ) )
return FMRES_IGNORED;
static newname[ 32 ];
static name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
engfunc( EngFunc_InfoKeyValue, buffer, "name", newname, sizeof ( newname ) -1 );
if ( equal( newname, name ) )
return FMRES_IGNORED;
set_task( 0.1, "LoadPlayerTag", id );
return FMRES_SUPERCEDE;
}
public ClCmdReloadTags( id )
{
if( !( get_user_flags( id ) & ADMIN_ACCESS ) )
{
client_cmd( id, "echo Nu ai acces la aceasta comanda !");
return 1;
}
new iPlayers[ 32 ];
new iPlayersNum;
get_players( iPlayers, iPlayersNum, "c" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
PlayerHasTag[ iPlayers[ i ] ] = false;
LoadPlayerTag( iPlayers[ i ] );
}
client_cmd( id, "echo Tag-urile jucatorilor au fost incarcate cu succes !");
return 1;
}
public hook_say( id )
{
if( is_user_bot( id ) ) return 0;
static chat[ 192 ];
read_args( chat, sizeof( chat ) - 1 );
remove_quotes( chat );
if( equali( chat,"" ) ) return 0;
new name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
if( PlayerHasTag[ id ] )
{
switch( cs_get_user_team( id ) )
{
case CS_TEAM_T:
{
ColorChat( 0, RED,"^x04%s^x03 %s^x01: %s", PlayerTag[ id ], name ,chat);
}
case CS_TEAM_CT:
{
ColorChat( 0, BLUE,"^x04%s^x03 %s^x01: %s", PlayerTag[ id ], name ,chat);
}
case CS_TEAM_SPECTATOR:
{
ColorChat( 0, GREY,"^x04%s^x03 %s^x01: %s", PlayerTag[ id ], name ,chat);
}
}
}
else if( !PlayerHasTag[ id ] )
{
switch( cs_get_user_team( id ) )
{
case CS_TEAM_T:
{
ColorChat( 0, RED,"^x03%s^x01: %s", name ,chat);
}
case CS_TEAM_CT:
{
ColorChat( 0, BLUE,"^x03%s^x01: %s", name ,chat);
}
case CS_TEAM_SPECTATOR:
{
ColorChat( 0, GREY,"^x03%s^x01: %s", name ,chat);
}
}
}
return 1;
}
public hook_say_team( id )
{
if( is_user_bot( id ) ) return 0;
static chat[ 192 ];
read_args( chat, sizeof( chat ) - 1 );
remove_quotes( chat );
if( equali( chat, "" ) ) return 0;
new name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
if( PlayerHasTag[ id ] )
{
new iPlayers[ 32 ], iPlayer;
new iPlayersNum;
get_players( iPlayers, iPlayersNum, "c" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
iPlayer = iPlayers[ i ];
if( cs_get_user_team( id ) == cs_get_user_team( iPlayer ) )
{
switch( cs_get_user_team( iPlayer ) )
{
case CS_TEAM_T:
{
ColorChat( iPlayer, RED, "^x01(Terrorist)^x04 %s^x03%s^x01: %s", PlayerTag[ id ], name ,chat);
}
case CS_TEAM_CT:
{
ColorChat( iPlayer, BLUE, "^x01(Counter-Terrorist)^x04%s^x03 %s^x01: %s", PlayerTag[ id ], name ,chat);
}
case CS_TEAM_SPECTATOR:
{
ColorChat( iPlayer, GREY, "^x01(Spectator)^x04 %s^x03%s^x01: %s", PlayerTag[ id ], name ,chat);
}
}
}
}
}
else if( !PlayerHasTag[ id ] )
{
new iPlayers[ 32 ], iPlayer;
new iPlayersNum;
get_players( iPlayers, iPlayersNum, "c" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
iPlayer = iPlayers[ i ];
if( cs_get_user_team( id ) == cs_get_user_team( iPlayer ) )
{
switch( cs_get_user_team( id ) )
{
case CS_TEAM_T:
{
ColorChat( iPlayer, RED, "^x01(Terrorist)^x03%s^x01: %s", name ,chat);
}
case CS_TEAM_CT:
{
ColorChat( iPlayer, BLUE, "^x01(Counter-Terrorist)^x03%s^x01: %s", name ,chat);
}
case CS_TEAM_SPECTATOR:
{
ColorChat( iPlayer, GREY, "^x01(Spectator)^x03 %s^x01: %s", name ,chat);
}
}
}
}
}
return 1;
}
public LoadPlayerTag( id )
{
PlayerHasTag[ id ] = false;
if( !file_exists( szFile ) )
{
write_file( szFile, ";Aici treceti tag-urile jucatorilor !", -1 );
write_file( szFile, ";ex: ^"Nume Player^" ^"Ip Player^" ^"Tag Player^" ", -1 );
write_file( szFile, ";Numele sa fie exact( ex: Askhanar va fi Askhanar nu askhanar ! ) ", -1 );
}
new f = fopen( szFile, "rt" );
if( !f ) return 0;
new data[ 512 ], buffer[ 3 ][ 32 ] ;
while( !feof( f ) )
{
fgets( f, data, sizeof ( data ) -1 );
if( !data[ 0 ] || data[ 0 ] == ';' || ( data[ 0 ] == '/' && data[ 1 ] == '/' ) )
continue;
parse(data,\
buffer[ 0 ], sizeof ( buffer[ ] ) - 1,\
buffer[ 1 ], sizeof ( buffer[ ] ) - 1,\
buffer[ 2 ], sizeof ( buffer[ ] ) - 1
);
new name[ 32 ], ip[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
get_user_ip( id, ip, sizeof ( ip ) -1, 1 );
if( equal( name, buffer[ 0 ] ) || equal( ip, buffer[ 1 ] ) )
{
PlayerHasTag[ id ] = true;
copy( PlayerTag[ id ], sizeof ( PlayerTag[ ] ) -1, buffer[ 2 ] );
break;
}
}
return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/[/code]