#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <fvault>
 
#pragma semicolon 1
 
new Awp[5][33], Pont[33], MenuMod[33], Skin[33], Szint[33], Xp[33];
new const Prefix[] = "[Only AWP MA3d By:LK~.]";
new const File[] = "AwpModMentes";
 
new const AWP_NEVEK[][] =
{
    { "Redline AWP", },
    { "Smoke AWP" },
    { "Asiimov AWP" },
    { "Blue AWP" },
    { "Sticker Bomb AWP" }
};
new const PontAwp[] =
{
    150,
    300,
    550,
    700,
    850
};
new const AWP_MODEL[][] =
{
    "v_awp",
    "awpmenu/wp1",
    "awpmenu/wp2",
    "awpmenu/wp3",
    "awpmenu/wp4",
    "awpmenu/wp5"
};
public plugin_init()
{
    register_plugin("AWP MENU", "1.0", "Pardon.");
   
    register_impulse(201, "g_Fomenu");
    register_clcmd("say /simon", "g_Fomenu");
    register_clcmd("say /add", "Addolas");
   
    register_event("DeathMsg", "g_Halal", "a");
    register_event("CurWeapon", "Fegyver_Valtas", "be", "1=1");
}
public Addolas(id)
{
    Pont[id] += 5000;
}
public plugin_precache()
{
    for(new i;i < 5; i++)
    {
        new fmdl[64];
        format(fmdl, charsmax(fmdl), "models/%s.mdl", AWP_MODEL[i]);
        precache_model(fmdl);
    }
}
public Fegyver_Valtas(id)
{
    new Gun = get_user_weapon(id);
   
    for(new i;i < 5; i++)
    {
        if(Skin[id] == i && Gun == CSW_AWP)
        {
            new fmdl[64];
            format(fmdl, charsmax(fmdl), "models/%s.mdl", AWP_MODEL[i]);
            set_pev(id, pev_viewmodel2, fmdl);
        }
    }
}
public g_Halal()
{
    new Gyilkos = read_data(1);
    new Aldozat = read_data(2);
   
    if(Gyilkos != Aldozat)
    {
        Pont[Gyilkos] ++;
        client_printcolor(Gyilkos, "!g%s !nEzA©rt az A¶lA©sA©rt !g+1 !nPontod kaptA!l.", Prefix);
    }
   
    if(Szint[Gyilkos] >= 0 && Szint[Gyilkos] <= 50)
    {
        Xp[Gyilkos] += random_num(18, 20);
    }
    else if(Szint[Gyilkos] >= 50 && Szint[Gyilkos] <= 100)
    {
        Xp[Gyilkos] += random_num(14, 18);
    }
    if(Xp[Gyilkos] > 100)
    {
        new Nev[32]; get_user_name(Gyilkos, Nev, 31);
        Xp[Gyilkos] -= 100;
        Szint[Gyilkos] ++;
        client_printcolor(0, "!g%s !t%s !g%d !nSzint-re lA©pett. !gGRATULALUNK!n!", Prefix, Nev, Szint[Gyilkos]);
    }
}
public g_Fomenu(id)
{
    new cim[121];
    format(cim, charsmax(cim), "\r[AWP] \wMenA1^n\dPont: \y%d \r| \dSzint: \y%d \r| \dXp: \y%d%%", Pont[id], Szint[id], Xp[id]);
    new menu = menu_create(cim, "gFomenuH");
   
    menu_additem(menu, "RaktA!r", "1", 0);
    menu_additem(menu, "AWP VA!sA!rlA!s", "2", 0);
    menu_additem(menu, "Kuka", "3", 0);
   
    menu_display(id, menu, 0);
}
public gFomenuH(id, menu, item){
   
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return;
    }
   
    new data[9], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
    new key = str_to_num(data);
   
    switch(key)
    {
        case 1: g_Raktar(id);
        case 2: AWPMENU(id);
        case 3: g_Kuka(id);
    }
}
public AWPMENU(id)
{
    new cim[121];
    format(cim, charsmax(cim), "\r[AWP] \yMenA1^n\dPont: \y%d", Pont[id]);
    new menu = menu_create(cim, "gAWPNENUh");
   
    for(new i;i < 5; i++)
    {
        new Sor[6];
        num_to_str(i, Sor, 5);
        format(cim, charsmax(cim), "\w%s \y| \d(%d Pont)", AWP_NEVEK[i], PontAwp[i]);
        menu_additem(menu, cim, Sor);
    }
   
    menu_display(id, menu, 0);
}
public gAWPNENUh(id, menu, item){
   
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return;
    }
   
    MenuMod[id] = item;
    AWPVASARLAS(id);
}
public AWPVASARLAS(id)
{
    new cim[121];
    format(cim, charsmax(cim), "\r[AWP] \yVA!sA!rlA!s MenA1");
    new menu = menu_create(cim, "vasarlasH");
   
    format(cim, charsmax(cim), "\w%s^n\yAra: \d%d&^n", AWP_NEVEK[MenuMod[id]], PontAwp[MenuMod[id]]);
    menu_additem(menu, cim, "0", 0);
   
    menu_additem(menu, "\rVA!sA!rlA!s", "1", 0);
   
    menu_display(id, menu, 0);
}
public vasarlasH(id, menu, item){
   
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return;
    }
   
    new data[9], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
    new key = str_to_num(data);
   
    switch(key)
    {
        case 0: AWPMENU(id);
        case 1:
        {
            if(Pont[id] >= PontAwp[MenuMod[id]])
            {
                Awp[MenuMod[id]][id] ++;
                Pont[id] -= PontAwp[MenuMod[id]];
                client_printcolor(id, "!g%s !nSikeresen MegvA!sA!roltad.", Prefix);
            }
            else
            {
                client_printcolor(id, "!g%s !nNincs ElA©g pontod.", Prefix);
                AWPMENU(id);
            }
        }
    }
}
public g_Raktar(id)
{
    new cim[121];
    new menu = menu_create("\r[AWP] \wRaktA!r", "gRaktarH");
   
    for(new i;i < 5; i++)
    {
        if(Awp[i][id] > 0)
        {
            new Sor[6];
            num_to_str(i, Sor, 5);
            format(cim, charsmax(cim), "\y%s \r| \d(%d) DB", AWP_NEVEK[i], Awp[i][id]);
            menu_additem(menu, cim, Sor);
        }
    }
   
    menu_display(id, menu, 0);
}
public gRaktarH(id, menu, item){
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return;
    }
   
    new data[9], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
    new key = str_to_num(data);
   
    Skin[id] = key+1;
    client_printcolor(id, "!g%s !nSikeresen Kiválasztodtad: !g%s", Prefix, AWP_NEVEK[key]);
    g_Raktar(id);
}
public g_Kuka(id)
{
    new cim[121];
    new menu = menu_create("\r[AWP] \wKuka", "gKukaH");
   
    for(new i;i < 5; i++)
    {
        if(Awp[i][id] > 0)
        {
            new Sor[6];
            num_to_str(i, Sor, 5);
            format(cim, charsmax(cim), "\y%s \r| \d(%d) DB", AWP_NEVEK[i], Awp[i][id]);
            menu_additem(menu, cim, Sor);
        }
    }
   
    menu_display(id, menu, 0);
}
public gKukaH(id, menu, item){
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return;
    }
   
    new data[9], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
    new key = str_to_num(data);
   
    Awp[key][id] --;
    client_printcolor(id, "!g%s !nSikeresen TA¶rA¶lted a !g%s !n-Skint.", Prefix, AWP_NEVEK[key]);
}
stock client_printcolor(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, "!n", "^1");
        replace_all(msg, 190, "!t", "^3");    
 
        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;
}
public client_putinserver(id)
{
    if(!is_user_bot(id))
        Load(id);
}
public client_disconnect(id)
{
    if(!is_user_bot(id))
    {
        Save(id);
       
        Pont[id] = 0;
        Szint[id] = 0;
        Xp[id] = 0;
       
        for(new i;i < 5; i++)
            Awp[i][id] = 0;
    }
}
Load(id)
{
    new Nev[32]; get_user_name(id, Nev, sizeof(Nev)-1);
   
    new Mentes[512];
    format(Mentes, charsmax(Mentes), "%i %i %i %i %i %i %i %i", Pont[id], Szint[id], Xp[id], Awp[0][id], Awp[1][id], Awp[2][id], Awp[3][id], Awp[4][id]);
   
    if(fvault_get_data(File, Nev, Mentes, charsmax(Mentes)))
    {
        new Pt[32], Lv[32], Tap[32], Aw[32], Aw1[32], Aw2[32], Aw3[32], Aw4[32];
        parse(Mentes, Pt, 31, Lv, 31, Tap, 31, Aw, 31, Aw1, 31, Aw2, 31, Aw3, 31, Aw4, 31);
       
        Pont[id] = str_to_num(Pt);
        Szint[id] = str_to_num(Lv);
        Xp[id] = str_to_num(Tap);
        Awp[0][id] = str_to_num(Aw);
        Awp[1][id] = str_to_num(Aw1);
        Awp[2][id] = str_to_num(Aw2);
        Awp[3][id] = str_to_num(Aw3);
        Awp[4][id] = str_to_num(Aw4);
    }
}
Save(id)
{
    new Nev[32]; get_user_name(id, Nev, sizeof(Nev)-1);
   
    new Mentes[512];
    format(Mentes, charsmax(Mentes), "%i %i %i %i %i %i %i %i", Pont[id], Szint[id], Xp[id], Awp[0][id], Awp[1][id], Awp[2][id], Awp[3][id], Awp[4][id]);
   
    fvault_set_data(File, Nev, Mentes);
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1038{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/
