142 lines
2.2 KiB
C++
142 lines
2.2 KiB
C++
/* Fun functions
|
|
*
|
|
* by Numb
|
|
*
|
|
* This file is provided as is (no warranties).
|
|
*/
|
|
|
|
#if defined _colorchat_included
|
|
#endinput
|
|
#endif
|
|
#define _colorchat_included
|
|
|
|
enum Color
|
|
{
|
|
NORMAL = 1, // clients scr_concolor cvar color
|
|
GREEN, // Green Color
|
|
TEAM_COLOR, // Red, grey, blue
|
|
GREY, // grey
|
|
RED, // Red
|
|
BLUE, // Blue
|
|
}
|
|
|
|
new TeamName[][] =
|
|
{
|
|
"",
|
|
"TERRORIST",
|
|
"CT",
|
|
"SPECTATOR"
|
|
}
|
|
|
|
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
|
|
{
|
|
new message[256];
|
|
|
|
switch(type)
|
|
{
|
|
case NORMAL: // clients scr_concolor cvar color
|
|
{
|
|
message[0] = 0x01;
|
|
}
|
|
case GREEN: // Green
|
|
{
|
|
message[0] = 0x04;
|
|
}
|
|
default: // White, Red, Blue
|
|
{
|
|
message[0] = 0x03;
|
|
}
|
|
}
|
|
|
|
vformat(message[1], 251, msg, 4);
|
|
|
|
// Make sure message is not longer than 192 character. Will crash the server.
|
|
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[])
|
|
{
|
|
static bool:saytext_used;
|
|
static get_user_msgid_saytext;
|
|
if(!saytext_used)
|
|
{
|
|
get_user_msgid_saytext = get_user_msgid("SayText");
|
|
saytext_used = true;
|
|
}
|
|
message_begin(type, get_user_msgid_saytext, _, id);
|
|
write_byte(id)
|
|
write_string(message);
|
|
message_end();
|
|
}
|
|
|
|
Team_Info(id, type, team[])
|
|
{
|
|
static bool:teaminfo_used;
|
|
static get_user_msgid_teaminfo;
|
|
if(!teaminfo_used)
|
|
{
|
|
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
|
|
teaminfo_used = true;
|
|
}
|
|
message_begin(type, get_user_msgid_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;
|
|
}
|
|
|
|
FindPlayer()
|
|
{
|
|
new i = -1;
|
|
|
|
while(i <= get_maxplayers())
|
|
{
|
|
if(is_user_connected(++i))
|
|
return i;
|
|
}
|
|
|
|
return -1;
|
|
} |