/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < cstrike >
#define PLUGIN "Rang Admin Chat Fixed"
#define VERSION "1.0.1"
#pragma semicolon 1
#define MAX_GROUPS 7
// --| CC_ColorChat.
enum Color
{
NORMAL = 1, // Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
GREEN, // Culoare Verde.
TEAM_COLOR, // Culoare Rosu, Albastru, Gri.
GREY, // Culoarea Gri.
RED, // Culoarea Rosu.
BLUE, // Culoarea Albastru.
};
new TeamName[ ][ ] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
// --| CC_ColorChat.
new g_szGroups[ MAX_GROUPS ][ ] =
{
"Owner",
"God",
"S-God",
"Mod",
"Admin",
"Slot",
"VIP"
};
new g_szGroupsFlags[ MAX_GROUPS ][ ] =
{
"abcdefghijklmnopqrstu",
"abcdefghijklmnopqrs",
"bcdefghijklmnpqrs",
"bcdefijklmnpqs",
"bcdefijklmnpq",
"b",
"t"
};
new g_iGroupsFlagsValues[ MAX_GROUPS ];
public plugin_init( )
{
//Plugin original creat de Ex3cuTioN ( pluginuri-extream/rangadminchat-t81702.html )!
register_plugin( PLUGIN, VERSION, "Askhanar" );
register_clcmd("say","HookClCmdSay");
register_clcmd("say_team","HookClCmdSayTeam");
for( new i = 0; i < MAX_GROUPS; i++ )
g_iGroupsFlagsValues[ i ] = read_flags( g_szGroupsFlags[ i ] );
// Add your code here...
}
public HookClCmdSay( id )
{
if( is_user_bot( id ) )
return PLUGIN_CONTINUE;
static szChat[ 192 ];
read_args( szChat, sizeof( szChat ) - 1 );
remove_quotes( szChat );
if( equali( szChat,"" ) )
return PLUGIN_CONTINUE;
static szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
if( is_user_admin( id ) )
{
for( new i = 0; i < MAX_GROUPS; i++ )
{
if( get_user_flags( id ) == g_iGroupsFlagsValues[ i ] )
{
switch( cs_get_user_team( id ) )
{
case CS_TEAM_T: ColorChat( 0, RED,"^x04[%s]^x03 %s^x01: %s", g_szGroups[ i ], szName, szChat );
case CS_TEAM_CT: ColorChat( 0, BLUE,"^x04[%s]^x03 %s^x01: %s", g_szGroups[ i ], szName, szChat );
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY,"^x04[%s]^x03 %s^x01: %s", g_szGroups[ i ], szName, szChat );
}
break;
}
}
}
else
{
switch( cs_get_user_team( id ) )
{
case CS_TEAM_T: ColorChat( 0, RED,"^x03 %s%s^x01: %s", is_user_alive( id ) ? "" : "*Mort* ", szName, szChat );
case CS_TEAM_CT: ColorChat( 0, BLUE,"^x03 %s%s^x01: %s", is_user_alive( id ) ? "" : "*Mort* ", szName, szChat );
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY,"^x03 %s^x01: %s", szName, szChat );
}
}
return PLUGIN_HANDLED_MAIN;
}
public HookClCmdSayTeam( id )
{
if( is_user_bot( id ) )
return PLUGIN_CONTINUE;
static szChat[ 192 ];
read_args( szChat, sizeof( szChat ) - 1 );
remove_quotes( szChat );
if( equali( szChat,"" ) )
return PLUGIN_CONTINUE;
static szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
static iPlayers[ 32 ];
static iPlayersNum;
get_players( iPlayers, iPlayersNum, "ch" );
if( !iPlayersNum )
return PLUGIN_CONTINUE;
static iPlayer, i;
iPlayer = -1; i = 0;
if( is_user_admin( id ) )
{
static x; x = 0;
for( x = 0; x < MAX_GROUPS; x++ )
{
if( get_user_flags( id ) == g_iGroupsFlagsValues[ x ] )
{
for( 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, "^x04[%s] ^x03(Terrorist) %s^x01: %s", g_szGroups[ x ], szName, szChat );
case CS_TEAM_CT: ColorChat( iPlayer, BLUE, "^x04[%s] ^x03(Counter-Terrorist) %s^x01: %s", g_szGroups[ x ], szName, szChat );
case CS_TEAM_SPECTATOR: ColorChat( iPlayer, GREY, "^x04[%s] ^x03(Spectator) %s^x01: %s", g_szGroups[ x ], szName, szChat );
}
}
}
break;
}
}
}
else
{
for( 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, "^x03(Terrorist)%s%s^x01: %s", is_user_alive( id ) ? "" : "*Mort* ", szName, szChat );
case CS_TEAM_CT: ColorChat( iPlayer, BLUE, "^x03(Counter-Terrorist)%s%s^x01: %s", is_user_alive( id ) ? "" : "*Mort* ", szName, szChat );
case CS_TEAM_SPECTATOR: ColorChat( iPlayer, GREY, "^x03(Spectator) %s^x01: %s", szName, szChat );
}
}
}
}
return PLUGIN_HANDLED_MAIN;
}
// From amxmisc.inc
stock is_user_admin( id )
{
new __flags=get_user_flags(id);
return (__flags>0 && !(__flags&ADMIN_USER));
}
// -----------------------
// --| CC_ColorChat.
ColorChat( id, Color:iType, const msg[ ], { Float, Sql, Result, _}:... )
{
// Daca nu se afla nici un jucator pe server oprim TOT. Altfel dam de erori..
if( !get_playersnum( ) ) return;
new szMessage[ 256 ];
switch( iType )
{
// Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
case NORMAL: szMessage[ 0 ] = 0x01;
// Culoare Verde.
case GREEN: szMessage[ 0 ] = 0x04;
// Alb, Rosu, Albastru.
default: szMessage[ 0 ] = 0x03;
}
vformat( szMessage[ 1 ], 251, msg, 4 );
// Ne asiguram ca mesajul nu este mai lung de 192 de caractere.Altfel pica server-ul.
szMessage[ 192 ] = '^0';
new iTeam, iColorChange, iPlayerIndex, MSG_Type;
if( id )
{
MSG_Type = MSG_ONE_UNRELIABLE;
iPlayerIndex = id;
}
else
{
iPlayerIndex = CC_FindPlayer( );
MSG_Type = MSG_ALL;
}
iTeam = get_user_team( iPlayerIndex );
iColorChange = CC_ColorSelection( iPlayerIndex, MSG_Type, iType);
CC_ShowColorMessage( iPlayerIndex, MSG_Type, szMessage );
if( iColorChange ) CC_Team_Info( iPlayerIndex, MSG_Type, TeamName[ iTeam ] );
}
CC_ShowColorMessage( id, const iType, const szMessage[ ] )
{
static bool:bSayTextUsed;
static iMsgSayText;
if( !bSayTextUsed )
{
iMsgSayText = get_user_msgid( "SayText" );
bSayTextUsed = true;
}
message_begin( iType, iMsgSayText, _, id );
write_byte( id );
write_string( szMessage );
message_end( );
}
CC_Team_Info( id, const iType, const szTeam[ ] )
{
static bool:bTeamInfoUsed;
static iMsgTeamInfo;
if( !bTeamInfoUsed )
{
iMsgTeamInfo = get_user_msgid( "TeamInfo" );
bTeamInfoUsed = true;
}
message_begin( iType, iMsgTeamInfo, _, id );
write_byte( id );
write_string( szTeam );
message_end( );
return 1;
}
CC_ColorSelection( id, const iType, Color:iColorType)
{
switch( iColorType )
{
case RED: return CC_Team_Info( id, iType, TeamName[ 1 ] );
case BLUE: return CC_Team_Info( id, iType, TeamName[ 2 ] );
case GREY: return CC_Team_Info( id, iType, TeamName[ 0 ] );
}
return 0;
}
CC_FindPlayer( )
{
new iMaxPlayers = get_maxplayers( );
for( new i = 1; i <= iMaxPlayers; i++ )
if( is_user_connected( i ) )
return i;
return -1;
}
// --| CC_ColorChat.