#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] = {
    200,
    400,
    600,
    800,
    1000,
    1200,
    1400,
    1600,
    1800,
    2000,
    2200,
    2400,
    2600,
    2800,
    3000
 
    }
 
    new const rangok[ASD+1][] = {
    "|Nokedli| |Szint:1|",
    "|Bena| |Szint:2|",
    "|Tag| |Szint:3|",
    "|Beavatott| |Szint:4|",
    "|Tud valamit| |Szint:5|",
    "|Rossz| |Szint:6|",
    "|Bolond| |Szint:7|",
    "|Jomunkasember| |Szint:8|",
    "|Nagyur| |Szint:9|",
    "|Felisten| |Szint:10|",
    "|Bolond| |Szint:11|",
    "|Veteran| |Szint:12|",
    "|Szimpatikus| |Szint:13|",
    "|Szep| |Szint:14]",
    "|ISTEN| |Szint:15|",
    "|Legyozhetetlen| |Szint: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[Szerver Készitő]%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[Szerver Készitő]%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[Szerver Készitő]%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[Szerver Készitő]%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]++
    }
    }