#include <amxmisc>
#include <fun>
#include <cstrike>





new MaxClients =
new message[192] =
new szName[191] =
new strText[191] =
new sayText =
new teamInfo =
new maxPlayers =
new PlayerRank[33] =
new bool:g_bHud[33] =
new Float:HUD_INTERVAL =
new color[10] =
new RANKS[19][0] =
new szamok[18] =
{
    80, 180, 250, 300, 450, 650, 800, 1000, 1200, 1400, 1700, 2000, 2500, 3000, 3600, 4500, 5500, 20000
}

bool:operator==(Float:,_:)(Float:oper1, oper2)
{
    return floatcmp(oper1, float(oper2)) == 0;
}

bool:operator!=(Float:,_:)(Float:oper1, oper2)
{
    return floatcmp(oper1, float(oper2)) != 0;
}

replace_all(String:string[], len, String:what[], String:with[])
{
    new pos = 0;
    new var1 = contain(string, what);
    pos = var1;
    if (var1 == -1)
    {
        return 0;
    }
    new total = 0;
    new with_len = strlen(with);
    new diff = strlen(what) - with_len;
    new total_len = strlen(string);
    new temp_pos = 0;
    while (replace(string[pos], len - pos, what, with))
    {
        total++;
        pos = with_len + pos;
        total_len -= diff;
        if (pos >= total_len)
        {
            return total;
        }
        else
        {
            temp_pos = contain(string[pos], what);
            if (temp_pos == -1)
            {
                return total;
            }
            else
            {
                pos = temp_pos + pos;
            }
            return total;
        }
        return total;
    }
    return total;
}

public plugin_init()
{
    register_plugin("6lmasok,qKKKJ", "1.5", "RaZ_HU");
    register_clcmd("say /rang", "hud", -1, "", -1);
    register_clcmd("say rang", "hud", -1, "", -1);
    register_clcmd("say /rangok", "cmdRangs", -1, "", -1);
    register_clcmd("say /hud", "cmdHud", -1, "", -1);
    register_clcmd("say", "hook_say", -1, "", -1);
    register_clcmd("say_team", "hook_teamsay", -1, "", -1);
    register_cvar("sv_rankrendszer", "1", 0, 0.00);
    register_cvar("sv_rankrendszer_HUD", "1", 0, 0.00);
    sethudtime();
    sayText = get_user_msgid("SayText");
    teamInfo = get_user_msgid("TeamInfo");
    maxPlayers = get_maxplayers();
    set_task(160.00, "korUzenet", 0, "", 0, "b", 0);
    register_message(sayText, "avoid_duplicated");
    return 0;
}

public cmdRangs(iPlayerId)
{
    static iMotdLen = 2047;
    static sMotd[2048];
    static iLen;
    iLen = formatex(sMotd, iMotdLen, "<meta charset=utf-8><style>table{color:#FFB000;} td,th{border:1px solid #666;text-align:center;}</style><body bgcolor=#000000><center><table width='400'><tr><th>Rang</th><th>Ölés</th><tr>");
    new var1 = RANKS;
    iLen = formatex(sMotd[iLen], iMotdLen - iLen, "<tr><td>%s</td><td>0</td><tr>", var1[0][0][var1]) + iLen;
    new i = 0;
    while (i < 18)
    {
        iLen = formatex(sMotd[iLen], iMotdLen - iLen, "<tr><td>%s</td><td>%d</td><tr>", RANKS[i + 1][0][0], szamok[i]) + iLen;
        i++;
    }
    show_motd(iPlayerId, sMotd, "Rangrendszer info");
    return 0;
}

public cmdHud(iPlayerId)
{
    new var2 = g_bHud[iPlayerId];
    new var3 = var2[0][0] ^ true;
    var2 = var3;
    new var1;
    if (var3)
    {
        var1 = 14072;
    }
    else
    {
        var1 = 14084;
    }

/ * ERROR! Az objektum nem konvertálható "Lysis.DSentinel" típusról "Lysis.DReturn" típusra. * /
 function "cmdHud"
public cmdHud(iPlayerId)

public sethudtime()
{
    !!! Removed Phi
    new refreshtime = register_cvar("sv_rankrendszer_HUDtime", "0.9", 0, 0.00);
    if (0.90/*1063675494*/ == refreshtime)
    {
        HUD_INTERVAL = 0.90/*1063675494*/;
    }
    else
    {
        if (0.90/*1063675494*/ != refreshtime)
        {
            HUD_INTERVAL = get_pcvar_float(refreshtime);
        }
    }
    return 0;
}

public avoid_duplicated(msgId, msgDest, receiver)
{
    return 1;
}

public korUzenet()
{
    ColorChat(0, "\3Írd be \4/rang \3vagy \4rang \3hogy megnézd hány ölés kell a következő ranghoz.");
    return 1;
}

public hud(id)
{
    new stats[8];
    new bodyhits[8];
    get_user_stats(id, stats, bodyhits);
    ColorChat(id, "\4Rangod: \3%s \1| \4Ölések: \3%d", RANKS[PlayerRank[id][0][0]][0][0], stats);
    new var2 = PlayerRank;
    new var1;
    if (var2[id][0][0] == 18)
    {
        ColorChat(id, "\4Már elérted a legnagyobb \4rangot.");
        var1 = var2;
    }
    else
    {
        ColorChat(id, "\4Következő rang: \3%s \1| \4A következő szinthez kell még: \3%d", RANKS[PlayerRank[id][0][0] + 1][0][0], szamok[PlayerRank[id][0][0]][0][0] - stats[0]);
        var1 = Heap_-4;
    }
    return 0;
}

public hook_say(id)
{
    !!! Removed Phi
    if (message[0][0] == 64 || message[0][0] == 47 || message[0][0] == 33 || equal("", "", 0))
    {
        return 0;
    }
    new name[32];
    get_user_name(id, name, 31);
    new isAlive = 0;
    new alive[32];
    if (is_user_alive(id))
    {
        isAlive = 1;
        alive[0] = 15128;
    }
    else
    {
        isAlive = 0;
        alive[0] = 15140;
    }
    if (get_user_flags(id, 0) & 64)
    {
        getTeam(id);
        format(strName, 191, "%s\4[TULAJ][%s] \3%s:", alive, RANKS[PlayerRank[id][0][0]][0][0], name);
        format(strText, 191, "\4%s", message);
    }
    else
    {
        if (get_user_flags(id, 0) & 32)
        {
            getTeam(id);
            format(strName, 191, "%s\4[ADMIN][%s] \3%s:", alive, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\4%s", message);
        }
        if (get_user_flags(id, 0) & 1048576)
        {
            getTeam(id);
            format(strName, 191, "%s\4[VIP][%s] \3%s:", alive, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\4%s", message);
        }
        if (get_user_flags(id, 0) & 33554432)
        {
            getTeam(id);
            format(strName, 191, "%s\4[%s] \3%s:", alive, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\1%s", message);
        }
    }
    format(message, 191, "%s \1%s", strName, strText);
    sendMessage(color, isAlive);
    return 0;
}

public hook_teamsay(id)
{
    !!! Removed Phi
    new playerTeam;
    new var2 = Heap_4;
    var2[0] = 15560;
    playerTeam = get_user_team(id, var2, 0);
    new playerTeamName[19];
    switch (playerTeam)
    {
        case 1:
        {
            copy(playerTeamName, 11, "Terrorista");
        }
        case 2:
        {
            copy(playerTeamName, 18, "Anti-Terrorista");
        }
        default:
        {
            copy(playerTeamName, 9, 15672);
        }
    }
    if (message[0][0] == 64 || message[0][0] == 47 || message[0][0] == 33 || equal("", "", 0))
    {
        return 0;
    }
    new isAlive = 0;
    new alive[32];
    if (is_user_alive(id))
    {
        isAlive = 1;
        alive[0] = 15704;
    }
    else
    {
        isAlive = 0;
        alive[0] = 15716;
    }
    new name[32];
    get_user_name(id, name, 31);
    if (get_user_flags(id, 0) & 64)
    {
        getTeam(id);
        format(strName, 191, "%s(%s)\4[TULAJ][%s] \3%s:", alive, playerTeamName, RANKS[PlayerRank[id][0][0]][0][0], name);
        format(strText, 191, "\4%s", message);
    }
    else
    {
        if (get_user_flags(id, 0) & 32)
        {
            getTeam(id);
            format(strName, 191, "%s(%s)\4[ADMIN][%s] \3%s:", alive, playerTeamName, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\4%s", message);
        }
        if (get_user_flags(id, 0) & 1048576)
        {
            getTeam(id);
            format(strName, 191, "%s(%s)\4[VIP][%s] \3%s:", alive, playerTeamName, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\4%s", message);
        }
        if (get_user_flags(id, 0) & 33554432)
        {
            getTeam(id);
            format(strName, 191, "%s(%s)\4[%s] \3%s:", alive, playerTeamName, RANKS[PlayerRank[id][0][0]][0][0], name);
            format(strText, 191, "\1%s", message);
        }
    }
    format(message, 191, "%s \1%s", strName, strText);
    sendTeamMessage(color, isAlive, playerTeam);
    return 0;
}

public sendMessage(String:color[], alive)
{
    !!! Removed Phi
    new teamName[10];
    new player = 1;
    while (player < maxPlayers)
    {
        if (is_user_connected(player))
        {
            if ((alive && is_user_alive(player)) || (!alive && !is_user_alive(player)) || (get_user_flags(player, 0) && 256))
            {
                get_user_team(player, teamName, 9);
                changeTeamInfo(player, color);
                writeMessage(player, message);
                changeTeamInfo(player, teamName);
            }
        }
        player++;
    }
    return 0;
}

public sendTeamMessage(String:color[], alive, playerTeam)
{
    !!! Removed Phi
    new teamName[10];
    new player = 1;
    while (player < maxPlayers)
    {
        if (is_user_connected(player))
        {
            if (playerTeam != get_user_team(player, var5, 0) && get_user_flags(player, 0) & 256)
            {
                if ((alive && is_user_alive(player)) || (!alive && !is_user_alive(player)) || get_user_flags(player, 0) & 256)
                {
                    get_user_team(player, teamName, 9);
                    changeTeamInfo(player, color);
                    writeMessage(player, message);
                    changeTeamInfo(player, teamName);
                }
            }
        }
        player++;
    }
    return 0;
}

public changeTeamInfo(player, String:team[])
{
    message_begin(MSG_ONE, teamInfo, 16200, player);
    write_byte(player);
    write_string(team);
    message_end();
    return 0;
}

public writeMessage(player, String:message[])
{
    message_begin(MSG_ONE, sayText, 16212, player);
    write_byte(player);
    write_string(message);
    message_end();
    return 0;
}

public client_putinserver(id)
{
    !!! Removed Phi
    if (get_cvar_num("sv_rankrendszer"))
    {
        if (get_cvar_num("sv_rankrendszer") == 1 && get_cvar_num("sv_rankrendszer_HUD") == 1)
        {
            g_bHud[id] = 1;
            set_task(HUD_INTERVAL, "setDisplay", id, "", 0, "", 0);
        }
        else
        {
            set_task(0.50, "remTask", id, "", 0, "", 0);
        }
        return 0;
    }
    return 1;
}

public remTask(id)
{
    remove_task(id, 0);
    return 0;
}

public getTeam(id)
{
    get_user_team(id, color, 9);
    return 0;
}

public setDisplay(id)
{
    !!! Removed Phi
    if (!is_user_connected(id))
    {
        return 0;
    }
    new stats[8];
    new bodyhits[8];
    get_user_stats(id, stats, bodyhits);
    if (50 > stats[0])
    {
        PlayerRank[id] = 0;
    }
    else
    {
        if (stats[0] >= 50 && stats[0] < 100)
        {
            PlayerRank[id] = 1;
        }
        if (stats[0] >= 100 && stats[0] < 200)
        {
            PlayerRank[id] = 2;
        }
        if (stats[0] >= 200 && stats[0] < 300)
        {
            PlayerRank[id] = 3;
        }
        if (stats[0] >= 300 && stats[0] < 450)
        {
            PlayerRank[id] = 4;
        }
        if (stats[0] >= 450 && stats[0] < 650)
        {
            PlayerRank[id] = 5;
        }
        if (stats[0] >= 650 && stats[0] < 800)
        {
            PlayerRank[id] = 6;
        }
        if (stats[0] >= 800 && stats[0] < 1000)
        {
            PlayerRank[id] = 7;
        }
        if (stats[0] >= 1000 && stats[0] < 1200)
        {
            PlayerRank[id] = 8;
        }
        if (stats[0] >= 1200 && stats[0] < 1400)
        {
            PlayerRank[id] = 9;
        }
        if (stats[0] >= 1400 && stats[0] < 1700)
        {
            PlayerRank[id] = 10;
        }
        if (stats[0] >= 1700 && stats[0] < 2000)
        {
            PlayerRank[id] = 11;
        }
        if (stats[0] >= 2000 && stats[0] < 2500)
        {
            PlayerRank[id] = 12;
        }
        if (stats[0] >= 2500 && stats[0] < 3000)
        {
            PlayerRank[id] = 13;
        }
        if (stats[0] >= 3000 && stats[0] < 3600)
        {
            PlayerRank[id] = 14;
        }
        if (stats[0] >= 3600 && stats[0] < 4500)
        {
            PlayerRank[id] = 15;
        }
        if (stats[0] >= 4500 && stats[0] < 5500)
        {
            PlayerRank[id] = 16;
        }
        if (stats[0] >= 5500 && stats[0] < 20000)
        {
            PlayerRank[id] = 17;
        }
        if (20000 <= stats[0])
        {
            PlayerRank[id] = 18;
        }
    }
    set_hudmessage(random_num(15, 255), random_num(15, 255), random_num(15, 255), 0.01, 0.20, 0, 6.00, 1.00, 0.00, 0.00, -1);
    show_hudmessage(id, "\nÖléseid: %i\nRangod: %s\nParancsok: /rang, /rangok, /hud", stats, RANKS[PlayerRank[id][0][0]][0][0]);
    set_task(HUD_INTERVAL, "setDisplay", id, "", 0, "", 0);
    return 0;
}

ColorChat(id, String:input[])
{
    new count = 1;
    new 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");
    if (id)
    {
        players[0] = id;
    }
    else
    {
        get_players(players, count, "ch", "");
    }
    new i = 0;
    while (i < count)
    {
        if (is_user_connected(players[i]))
        {
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), 16200, players[i]);
            write_byte(players[i]);
            write_string("");
            message_end();
            i++;
        }
        i++;
    }
    return 0;
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
