#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; 
}