#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <colorchat>
 
#define PLUGIN "Rangok"
#define VERSION "1.0"
#define AUTHOR "qKKKJ"
 
new message[192]
new nev[32]
new Temp[192]
static color[10]
new olesek[33]
new szint[33]
new Host[]     = "mysqlgame.clans.hu"
new User[]    = "reload564"
new Pass[]     = ""
new Db[]     = "reload564"
 
new Handle:g_SqlTuple
new g_Error[512] 
 
 
#define ASD 43
 
//Ha az ASD értéke 15 akkor a szamoknal 15 szám a rangoknál 16 szöveg
 
new const szamok[ASD] = {
	1,
	2,
	3,
	4,
	5,
	7,
	9,
	12,
	15,
	18,
	21,
	24,
	28,
	32,
	36,
	42,
	48,
	55,
	65,
	75,
	85,
	100,
	120,
	145,
	190,
	250,
	380,
	480,
	650,
	800,
	1000,
	1200,
	1500,
	1800,
	2100,
	2400,
	2800,
 	3200,
	3600,
	4000,
	4500,
	5000,
	6000
}
 
new const rangok[ASD+1][] = {
	"[Pisis][Lv0]",
	"[Taknyos][Lv1]",
	"[Nokedli][Lv2]",
	"[Noob][Lv3]",
	"[Páwa][Lv4]",
	"[Csirkefogó][Lv5]",
	"[McDonald’s][Lv6]", 
	"[Bot][Lv7]",
	"[Kezdő][Lv8]‘",
	"[Újonc][Lv9]",
	"[Tag][Lv10]",
	"[Lelkes][Lv11]",
	"[Haladó][Lv12]",
	"[TudValamit][Lv13]",
	"[Tanuló][Lv14]",
	"[Tanár][Lv15]",
	"[Hóember][Lv16]",
	"[Gyilkos][Lv17]",
	"[Őrult][Lv18]",
	"[LoL][Lv19]",
	"[Kobra][Lv20]",
	"[Alien][Lv21]",
	"[Jómunkásember][Lv22]",
	"[Eszméletlen][Lv23]",
	"[Legyőzhetetlen][Lv24]",
	"[Veterán][Lv25]",
	"[Fejvadász][Lv26]",
	"[Rambó][Lv27]",
	"[Hercules][Lv28]",
	"[Aimos][Lv29]",
	"[Fanatikus][Lv30]",
	"[Godzilla][Lv31]",
	"[Brutál][Lv32]",
	"[Mester][Lv33]",
	"[Pro][Lv34]",
	"[NagyMester][Lv35]",
	"[Tábornok][Lv36]",
	"[Terminátor][Lv37]",
	"[Predátor][Lv38]",
	"[LegenD][Lv39]",
	"[Minden6ó][Lv40]",
	"[FélIsten][Lv41]",
	"[Isten][Lv42]",
	"[Titán][Lv43]"
 
}
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /xp", "hud")
	register_clcmd("say /szint", "hud")
	register_clcmd("say /rang", "hud")
	register_clcmd("say", "sayhook")
	register_clcmd("say_team", "tshook")
	register_event("DeathMsg", "halal", "a")
	set_task(1.0, "MySql_Init")
 
}
public MySql_Init()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
    new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error)
    new Handle:Queries
    Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS Szintrendszer (nev varchar(32),szint INT(11))")
 
    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        set_fail_state(g_Error)
 
    }
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(SqlConnection)   
} 
public plugin_end()
{
    SQL_FreeHandle(g_SqlTuple)
}
public hud(id)
{
	if(szint[id] != ASD+1)
	{
 
 
		ColorChat(id, RED, "Szint:^4%s ^1| ^3Ölések:^4%d ^1| ^3Kell még:^4%d",rangok[szint[id]], olesek[id],szamok[szint[id]]-olesek[id] )
	}
	else {
 
		ColorChat(id, GREEN, "Elérted a ^3Maximális ^4Szintet.Gratulálunk.")
	}
 
}
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_admin(id))
	{
		if(is_user_alive(id)) {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
		}
		else {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* %s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		}
	}else{
		if(is_user_alive(id)) {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
		}
		else {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* %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, "*Terrorista*")
 
		}
		case 2: {
			copy (playerTeamName, 18, "*Anti-Terrorista*")
 
		}
		default:
		copy (playerTeamName, 9, "*Néző*")
	}
	if(is_user_admin(id))
	{
		if(is_user_alive(id))
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x03(%s) ^x04%s ^x03%s^x04: %s",playerTeamName, rangok[szint[id]], nev, message)
 
		}
		else
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* ^x03(%s) ^x04%s ^x03%s^x04: %s",playerTeamName, rangok[szint[id]], nev, message)
		}
	}else{
		if(is_user_alive(id))
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, rangok[szint[id]], nev, message)
 
		}
		else
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* ^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, 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_putinserver(id)
{
    betoltes(id)
}
public client_disconnect(id)
{
    mentes(id)
} 
public mentes(id)
{
    new szNev[32], szTemp[512]
    get_user_name(id, szNev, charsmax(szNev))
 
    format(szTemp,charsmax(szTemp),"UPDATE `Szintrendszer` SET `oles` = '%i' WHERE `Szintrendszer`.`nev` = '%s';",olesek[id], szNev)
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
}
public betoltes(id)
{
    new szNev[32], szTemp[512]
    get_user_name(id, szNev, charsmax(szNev))
 
    new Data[1]
    Data[0] = id
    format(szTemp,charsmax(szTemp),"SELECT * FROM `Szintrendszer` WHERE (`Szintrendszer`.`nev` = '%s')", szNev)
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
    {
        log_amx("Kapcsolodas sikertelen.  [%d] %s", Errcode, Error)
    }
    else if(FailState == TQUERY_QUERY_FAILED)
    {
        log_amx("A QUERY betoltese sikertelen.[%d] %s", Errcode, Error)
    }
 
    new id
    id = Data[0]
 
    if(SQL_NumResults(Query) < 1) 
    {
 
        new szNev[32]
        get_user_name(id, szNev, charsmax(szNev)) 
 
        new szTemp[512]
 
        format(szTemp,charsmax(szTemp),"INSERT INTO `Szintrendszer` ( `nev` , `oles`)VALUES ('%s','0');",szNev)
        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
    } 
    else 
    {
        szint[id] = SQL_ReadResult(Query, 1)
    }
 
    return PLUGIN_HANDLED
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    SQL_FreeHandle(Query)
 
    return PLUGIN_HANDLED
}
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]++
	}
}
 
stock print_color(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)
 
        replace_all(msg, 190, "!g", "^4")
        replace_all(msg, 190, "!y", "^1")
        replace_all(msg, 190, "!t", "^3")
        replace_all(msg, 190, "á", "á")
        replace_all(msg, 190, "é", "Ă©")
        replace_all(msg, 190, "í", "Ă")
        replace_all(msg, 190, "ó", "Ăł")
        replace_all(msg, 190, "ö", "ö")
        replace_all(msg, 190, "ő", "Ĺ‘")
        replace_all(msg, 190, "ú", "Ăş")
        replace_all(msg, 190, "ü", "ĂĽ")
        replace_all(msg, 190, "ű", "ű")
        replace_all(msg, 190, "Á", "Ă")
        replace_all(msg, 190, "É", "É")
        replace_all(msg, 190, "Í", "ĂŤ")
        replace_all(msg, 190, "Ó", "Ă“")
        replace_all(msg, 190, "Ö", "Ă–")
        replace_all(msg, 190, "Ő", "Ĺ")
        replace_all(msg, 190, "Ú", "Ăš")
        replace_all(msg, 190, "Ü", "Ăś")
        replace_all(msg, 190, "Ű", "Ű")        
 
        if (id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i])
                                write_string(msg)
                                message_end()
                        }
                }
        }
        return PLUGIN_HANDLED
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/