Code:
#include <amxmodx>
#include <amxmisc>
#include <geoip>
#define MAXSLOTS 32
enum Color
{
YELLOW = 1, // Yellow
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamInfo;
new SayText;
new MaxSlots;
new bool:IsConnected[MAXSLOTS + 1];
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
new PluginEnable;
public plugin_init() {
register_plugin("Connect Message", "1.03", "MaTTe");
PluginEnable = register_cvar("connect_enable", "1");
TeamInfo = get_user_msgid("TeamInfo");
SayText = get_user_msgid("SayText");
MaxSlots = get_maxplayers();
}
public client_connect(id)
{
if(get_pcvar_num(PluginEnable)) {
new result[51];
new name[32];
get_user_name(id, name, 31);
new steamid[32];
get_user_authid(id, steamid, 31);
new ip[32];
get_user_ip(id, ip, 31, 1);
geoip_country(ip, result, 50);
ColorChat(0, RED, "%s ^x04(%s) ^x01is connecting ^x04(%s)", name, steamid, result);
}
}
public client_putinserver(player)
{
if(get_pcvar_num(PluginEnable)) {
IsConnected[player] = true;
new result[51];
new name[32];
get_user_name(player, name, 31);
new steamid[32];
get_user_authid(player, steamid, 31);
new ip[32];
get_user_ip(player, ip, 31, 1);
geoip_country(ip, result, 50);
ColorChat(0, RED, "%s ^x04(%s) ^x01has connected ^x04(%s)", name, steamid, result);
}
}
public client_disconnect(player)
{
if(get_pcvar_num(PluginEnable)) {
new result[51];
new name[32];
get_user_name(player, name, 31);
new steamid[32];
get_user_authid(player, steamid, 31);
new ip[32];
get_user_ip(player, ip, 31, 1);
geoip_country(ip, result, 50);
ColorChat(0, RED, "%s ^x04(%s) ^x01has disconnected ^x04(%s)", name, steamid, result);
IsConnected[player] = false;
}
}
public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static message[256];
switch(type)
{
case YELLOW: // Yellow
{
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)
{
index = FindPlayer();
MSG_Type = MSG_ALL;
} else {
MSG_Type = MSG_ONE;
index = id;
}
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[])
{
emessage_begin(type, SayText, _, id);
ewrite_byte(id)
ewrite_string(message);
emessage_end();
}
Team_Info(id, type, team[])
{
emessage_begin(type, TeamInfo, _, id);
ewrite_byte(id);
ewrite_string(team);
emessage_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 <= MaxSlots)
{
if(IsConnected[++i])
{
return i;
}
}
return -1;
}