#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
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,_}:...)
{
static 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);
message[192] = '^0';
static 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, get_user_msgid("SayText"), _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
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()
{
static i;
i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
{
return i;
}
}
return -1;
}
#define PLUGIN "New Plugin"
#define AUTHOR "Unknown"
#define VERSION "1.0"
new g_iKills[32], g_iHS[32], g_iDmg[32]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TakeDamage, "player", "hamTakeDamage")
register_event("DeathMsg", "EventDeathMsg", "a")
register_logevent("RoundEnd", 2, "1=Round_End")
}
public client_disconnect(id)
{
g_iDmg[id] = 0;
g_iKills[id] = 0;
g_iHS[id] = 0;
}
public hamTakeDamage(victim, inflictor, attacker, Float:damage, DamageBits)
{
if( 1 <= attacker <= 32)
{
if(cs_get_user_team(victim) != cs_get_user_team(attacker))
g_iDmg[attacker] += floatround(damage)
else
g_iDmg[attacker] -= floatround(damage)
}
}
public EventDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
new is_hs = read_data(3)
if(killer != victim && killer && cs_get_user_team(killer) != cs_get_user_team(victim))
{
g_iKills[killer]++;
if(is_hs)
g_iHS[killer]++;
}
else
g_iKills[killer]--;
}
public RoundEnd()
{
new iBestPlayer = get_best_player()
new szName[32]
get_user_name(iBestPlayer, szName, charsmax(szName))
ColorChat(0, NORMAL, "*^x03 A legjobb jatekos ebben a korben,^x04 %s^x03 volt!", szName)
ColorChat(0, NORMAL, "*^x03 Megolt^x04 %i^x03 jatekost, ebbol^x04 %i^x03 fejessel!", g_iKills[iBestPlayer], g_iHS[iBestPlayer])
for(new i; i < 31; i++)
{
g_iDmg[i] = 0;
g_iHS[i] = 0;
g_iKills[i] = 0;
}
}
get_best_player()
{
new players[32], num;
get_players(players, num);
SortCustom1D(players, num, "sort_bestplayer")
return players[0]
}
public sort_bestplayer(id1, id2)
{
if(g_iKills[id1] > g_iKills[id2])
return -1;
else if(g_iKills[id1] < g_iKills[id2])
return 1;
else
{
if(g_iDmg[id1] > g_iDmg[id2])
return -1;
else if(g_iDmg[id1] < g_iDmg[id2])
return 1;
else
return 0;
}
return 0;
}