#include < amxmodx >
#include < amxmisc >
#define PLUGIN "Red Message"
#define VERSION "0.1"
#define AUTHOR "aNNakin"
enum Color
{
NORMAL = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE,
}
new TeamName[ ][ ] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
new gi_IsConnected[ 33 ], gi_MaxPlayers;
new SayText, TeamInfo;
public plugin_init ( )
{
register_plugin ( PLUGIN, VERSION, AUTHOR );
register_concmd ( "amx_message", "message_cmd", ADMIN_CHAT, "- <msg>" );
gi_MaxPlayers = get_maxplayers ( );
SayText = get_user_msgid ( "SayText" );
TeamInfo = get_user_msgid ( "TeamInfo" );
}
public client_putinserver ( e_Index ) gi_IsConnected[ e_Index ] = 1;
public client_disconnect ( e_Index ) gi_IsConnected[ e_Index ] = 0;
public message_cmd ( id, level, cid )
{
if ( ! cmd_access ( id, level, cid, 2 ) )
return PLUGIN_HANDLED;
new s_Args[ 192 ];
read_args ( s_Args, 191 );
ColorChat ( 0, RED, "%s", s_Args );
return PLUGIN_HANDLED;
}
public ColorChat ( id, Color:type, const msg[], { Float, Sql, Result, _ }:... )
{
static message[ 256 ];
switch ( type )
{
case NORMAL:
message[ 0 ] = 0x01;
case GREEN:
message[ 0 ] = 0x04;
default:
message[ 0 ] = 0x03;
}
vformat ( message[ 1 ], 251, msg, 4 );
message[ 192 ] = '^0';
new team, ColorChange, index, MSG_Type;
if ( id )
{
MSG_Type = MSG_ONE;
index = id;
}
else
{
index = FindPlayer ( );
MSG_Type = MSG_ALL;
}
team = get_user_team ( index );
ColorChange = ColorSelection ( index, MSG_Type, type );
ShowColorMessage ( index, MSG_Type, message );
if ( ColorChange )
Team_Info ( index, MSG_Type, TeamName[ team ] );
}
ShowColorMessage ( id, type, message[] )
{
message_begin ( type, SayText, _, id );
write_byte ( id )
write_string ( message );
message_end ( );
}
Team_Info ( id, type, team[] )
{
message_begin ( type, TeamInfo, _, id );
write_byte ( id );
write_string ( team );
message_end ( );
return 1;
}
ColorSelection ( index, type, Color:Type )
{
switch ( Type )
{
case RED:
return Team_Info ( index, type, TeamName[ 1 ] );
case BLUE:
return Team_Info ( index, type, TeamName[ 2 ] );
case GREY:
return Team_Info ( index, type, TeamName[ 0 ] );
}
return 0;
}
public FindPlayer ( )
{
for ( new i = 1; i <= gi_MaxPlayers; i++ )
if ( gi_IsConnected[ i ] )
return i;
return -1
}