#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>
 
#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR ""
 
new message[192]
new nev[32]
new Temp[192]
static color[10]
new g_vault
new olesek[33]
new szint[33]
 
 
#define ASD 15
#define TULAJ ADMIN_IMMUNITY
#define FOADMIN ADMIN_LEVEL_F
#define ADMIN ADMIN_LEVEL_G
#define VIP ADMIN_LEVEL_H
 
//Ha az ASD értéke 15 akkor a szamoknal 15 szám a rangoknál 16 szöveg
 
new const szamok[ASD] = {
	 15,
	 30,
	 45,
	 55,
	 60,
	 70,
 	 85,
	 95,
	 100,
	 140,
	 160,
	 180,
	 200,
	 220,
	 250
 
}
 
new const rangok[ASD+1][] = {
	"[Nokedli][lvl:0]",
	"[Bena][lvl:1]",
	"[Tag][lvl:2]",
	"[Beavatott][lvl:3]",
	"[Tud valamit][lvl:4]",
	"[Rossz][lvl:5]",
	"[Bolond][lvl:6]",
	"[Jomunkasember][lvl:7]",
	"[Nagyur][lvl:8]",
	"[Felisten][lvl:9]",
	"[Bolond][lvl:10]",
	"[Veteran][lvl:12]",
	"[szimpatikus][lvl:13]",
	"[Szep][lvl:14]",
	"[ISTEN][lvl:15]",
	"[Legyozhetetlen][lvl:16 MAX]"
}
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /rang", "hud")
	register_clcmd("say /xp", "hud")
	register_clcmd("say /szint", "hud")
	register_clcmd("say /mykill", "hud")
	register_clcmd("say", "sayhook")
	register_clcmd("say_team", "tshook")
	register_event("DeathMsg", "halal", "a")
	g_vault = nvault_open("Rang")
 
}
public hud(id)
{
	if(szint[id] != ASD+1)
	{
 
 
		ColorChat(id, RED, "Szint:^4%s ^1| ^3Olések:^4%d ^1| ^3Kell meg:^4%d",rangok[szint[id]], olesek[id],szamok[szint[id]]-olesek[id] )
	}
	else {
 
		ColorChat(id, GREEN, "Elerted a ^3Maximalis ^4Szintet.Gratulalunk.")
	}
 
}
public sayhook(id)
{
 
	read_args (message, 191)
	remove_quotes (message)
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
	{
		return PLUGIN_CONTINUE
	}
	get_user_name(id, nev, 31)
	if(is_user_alive(id)) {
		get_user_team(id, color, 9)
 
		if(get_user_flags(id) & TULAJ)
			formatex(Temp, 191, "^x04[Tulaj]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & FOADMIN)
			formatex(Temp, 191, "^x04[FőAdmin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & ADMIN)
			formatex(Temp, 191, "^x04[Admin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & VIP)
			formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
 
 
		else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
	}
	else {
		get_user_team(id, color, 9)
		if(get_user_flags(id) & TULAJ)
			formatex(Temp, 191, "^x04[Tulaj]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & FOADMIN)
			formatex(Temp, 191, "^x04[FőAdmin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & ADMIN)
			formatex(Temp, 191, "^x04[Admin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & VIP)
			formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
		else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
	}
	sendmessage(color)
	return PLUGIN_HANDLED
}
public tshook(id)
{
	read_args (message, 191)
	remove_quotes (message)
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
	{
		return PLUGIN_CONTINUE
	}
	get_user_name(id, nev, 31)
	new playerTeam = get_user_team(id)
	new playerTeamName[19]
	switch (playerTeam)
	{
		case 1: {
			copy (playerTeamName, 11, "*T*")
 
		}
		case 2: {
			copy (playerTeamName, 18, "*CT*")
 
		}
		default:
		copy (playerTeamName, 9, "*Néző*")
	}
	if(is_user_alive(id))
	{
		get_user_team(id, color, 9)
		if(get_user_flags(id) & TULAJ)
			formatex(Temp, 191, "^x04[Tulaj]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & FOADMIN)
			formatex(Temp, 191, "^x04[FőAdmin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & ADMIN)
			formatex(Temp, 191, "^x04[Admin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & VIP)
			formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
 
 
		else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
	}
	else {
		get_user_team(id, color, 9)
		if(get_user_flags(id) & TULAJ)
			formatex(Temp, 191, "^x04[Tulaj]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & FOADMIN)
			formatex(Temp, 191, "^x04[FőAdmin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & ADMIN)
			formatex(Temp, 191, "^x04[Admin]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		else if(get_user_flags(id) & VIP)
			formatex(Temp, 191, "^x04[VIP]%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
		else formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
	}
	sendtmessage(color, playerTeam)
	return PLUGIN_HANDLED
}
public sendmessage(color[])
{
	new teamName[10]
	for(new player = 1; player < get_maxplayers(); player++)
	{
		get_user_team (player, teamName, 9)
		teamf (player, color)
		elkuldes(player, Temp)
		teamf(player, teamName)
	}
}
public sendtmessage(color[], playerTeam)
{
	new teamName[10]
	for (new player = 1; player < get_maxplayers(); player++)
	{
		if(get_user_team(player) == playerTeam)
		{
			get_user_team (player, teamName, 9)
			elkuldes(player, Temp)
			teamf (player, teamName)
			teamf (player, color)
		}
	}
}
public teamf(player, team[])
{
	message_begin(MSG_ONE, get_user_msgid("TeamInfo"), _, player)
	write_byte(player)
	write_string(team)
	message_end()
}
public elkuldes(player, Temp[])
{
 
	message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, player)
	write_byte( player )
	write_string( Temp )
	message_end()
 
}
 
public client_connect(id)
{	
	LoadData(id)
}
public client_disconnect(id)
{
         SaveData(id)
}
 
public SaveData(id)
{
	new name[32]
	get_user_name(id, name, 31)
 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s", name)
	format(vaultdata,255,"%i#%i#",olesek[id],szint[id])
	nvault_set(g_vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public LoadData(id)
{
	new name[32]
	get_user_name(id, name, 31)
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s", name)
	format(vaultdata,255,"%i#%i#",olesek[id],szint[id])
 
	nvault_get(g_vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ")
	new lekeres_1[32],lekeres_2[32]
	parse(vaultdata, lekeres_1, 31, lekeres_2, 31)
	olesek[id] = str_to_num(lekeres_1)
	szint[id] = str_to_num(lekeres_2)
	return PLUGIN_CONTINUE
}
public halal()
{
	new killer = read_data(1)
	new victim = read_data(2)
 
	if(killer != victim)
		olesek[killer]++
 
	while(olesek[killer] >= szamok[szint[killer]])
	{
		szint[killer]++
	}
}