#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
 
 
#define PLUGIN "Kes olesert"
#define VERSION "1.0"
#define AUTHOR "mforce"
 
new const PREFIX[] = "Információ";
 
new pont[33], kes[33], vault;
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("DeathMsg","death","a")
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "OnItemDeployPost", 1)
    register_clcmd("say /menu","fomenu")
    vault = nvault_open("kesszar")
    register_forward(FM_CmdStart, "behozo")
    register_clcmd("pont_adas", "adas")
}
public behozo(id, uc_handle, seed)
{
    if(get_uc(uc_handle, UC_Impulse) == 201)
    {
        fomenu(id);
        return FMRES_HANDLED
    }
    return FMRES_IGNORED
}
 
new const fegyverek[][] = {
    "models/BS_XMAS/xmas_kes1.mdl",
    "models/BS_XMAS/xmas_kes2.mdl",
    "models/BS_XMAS/xmas_kes3.mdl",
    "models/BS_XMAS/xmas_kes4.mdl",
    "models/BS_XMAS/xmas_kes5.mdl",
    "models/BS_XMAS/xmas_kes6.mdl"
};
 
public plugin_precache() {
    for(new i; i<sizeof(fegyverek);i++) precache_model(fegyverek[i]);
}
 
public OnItemDeployPost(ent) {
    static id; id = fm_cs_get_weapon_ent_owner(ent);
    if (!pev_valid(id)) return;
   
    switch(kes[id]) {
            case 1: set_pev(id, pev_viewmodel2, fegyverek[0])
            case 2: set_pev(id, pev_viewmodel2, fegyverek[1])
            case 3: set_pev(id, pev_viewmodel2, fegyverek[2])
       case 4: set_pev(id, pev_viewmodel2, fegyverek[3])
       case 5: set_pev(id, pev_viewmodel2, fegyverek[4])
       case 6: set_pev(id, pev_viewmodel2, fegyverek[5])
    }
}
 
fm_cs_get_weapon_ent_owner(ent) {
    if (pev_valid(ent) != 2) return -1;
 
    return get_pdata_cbase(ent, 41, 4);
}
 
public death() {
    new killer = read_data(1);
    new victim = read_data(2);
   
    if(killer != victim) {
        pont[killer]++
    }
}
 
public fomenu(id) {
    new temp[128];
    formatex(temp, charsmax(temp), "\r[BS] \yKarácsonyi MenĂĽ \w| \yPontjaid: \w%d", pont[id]);
    new menu = menu_create(temp, "fomenu_h");
 
    formatex(temp, charsmax(temp), "\yNyalĂłka %s", pont[id] >= 50 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "0", 0)
    formatex(temp, charsmax(temp), "\yFenyĹ‘fa %s", pont[id] >= 100 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "1", 0)
    formatex(temp, charsmax(temp), "\yKarácsonyi kĂ©s %s", pont[id] >= 200 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "2", 0)
    formatex(temp, charsmax(temp), "\yNyalĂłka kĂ©s %s", pont[id] >= 350 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "3", 0)
    formatex(temp, charsmax(temp), "\yJĂ©g kĂ©s %s", pont[id] >= 500 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "4", 0)
    formatex(temp, charsmax(temp), "\yXMAS kĂ©s %s", pont[id] >= 600 ? "\r[ElĂ©rhetĹ‘]":"");
    menu_additem(menu, temp, "5", 0)
   
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_EXITNAME, "KilĂ©pĂ©s");
    menu_display(id, menu, 0)
}
 
public fomenu_h(id, menu, item) {
    if( item == MENU_EXIT ) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
 
    switch(item)
    {
        case 0: {
            if(pont[id] >= 50) {  
                kes[id] = 1
                ChatColor(id, "^4[%s]^1 Aktiváltad az elsĹ‘ kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g ^3%d ^1pontot kell szerezned!", PREFIX, 50-pont[id])
            }
        }
        case 1: {
            if(pont[id] >= 100) {
                kes[id] = 2
                ChatColor(id, "^4[%s]^1 Aktiváltad a második kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g^3 %d ^1pontot kell szerezned!", PREFIX, 100-pont[id])
            }
        }
        case 2: {
            if(pont[id] >= 200) {
                kes[id] = 3
                ChatColor(id, "^4[%s]^1 Aktiváltad a harmadik kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g^3 %d ^1pontot kell szerezned!", PREFIX, 200-pont[id])
           }
        }
    case 3: {
            if(pont[id] >= 350) {
                kes[id] = 4
                ChatColor(id, "^4[%s]^1 Aktiváltad a negyedik kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g^3 %d ^1pontot kell szerezned!", PREFIX, 350-pont[id])
           }
        }
    case 4: {
            if(pont[id] >= 500) {
                kes[id] = 5
                ChatColor(id, "^4[%s]^1 Aktiváltad a ötödik kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g^3 %d ^1pontot kell szerezned!", PREFIX, 500-pont[id])
           }
        }
    case 5: {
            if(pont[id] >= 600) {
                kes[id] = 6
                ChatColor(id, "^4[%s]^1 Aktiváltad a hatodik kĂ©st!", PREFIX)
            }
            else {
                ChatColor(id, "^4[%s]^1 MĂ©g^3 %d ^1pontot kell szerezned!", PREFIX, 600-pont[id])
           }
        }
    }
 
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
    public adas(id)
{
if (get_user_flags(id) & ADMIN_IMMUNITY)
{
new menu = menu_create("\r[BS] \wPont Adás \d[\y 100 pont\d ]", "menu_handler")
new players[32], pnum, tempid
new szName[32], szTempid[10]
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, charsmax(szName))
num_to_str(tempid, szTempid, charsmax(szTempid))
menu_additem(menu, szName, szTempid, 0)
 
}
menu_display(id, menu, 0)
}
else
{
ChatColor(id, "^4[Információ]^1 Sajnálom, nincs jogod használni ezt a parancsot!")
}
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
 
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
 
new tempid = str_to_num(data);
 
if( is_user_alive(tempid) )
{
pont[tempid] += 100
}
client_cmd(id,"pont_adas")
menu_destroy(menu);
return PLUGIN_HANDLED;
}
 
public client_disconnect(id) {
    mentes(id)
    pont[id] = 0;
    kes[id] = 0;
}
 
public client_authorized(id) {
    betoltes(id)
}
 
mentes(id) {
    new vaultkey[32], vaultdata[256];
    get_user_name(id, vaultkey, charsmax(vaultkey));
    format(vaultdata, charsmax(vaultdata), "%i %i", pont[id], kes[id])
    nvault_set(vault, vaultkey, vaultdata)
}
 
betoltes(id) {
    new vaultkey[32], vaultdata[256];
    get_user_name(id, vaultkey, charsmax(vaultkey));
    if(nvault_get(vault, vaultkey, vaultdata, charsmax(vaultdata))) {
        new pontok[8], kesvalaszto[8];
        parse(vaultdata, pontok, charsmax(pontok), kesvalaszto, charsmax(kesvalaszto));
        pont[id] = str_to_num(pontok);
        kes[id] = str_to_num(kesvalaszto);
    }
}
 
public plugin_end() {
    nvault_close(vault);
}
 
stock ChatColor(const id, const szMessage[], any:...) {
    static pnum, players[32], szMsg[190], IdMsg;
    vformat(szMsg, charsmax(szMsg), szMessage, 3);
 
    if(!IdMsg) IdMsg = get_user_msgid("SayText");
 
    if(id) {
        if(!is_user_connected(id)) return;
        players[0] = id;
        pnum = 1;
    }
    else get_players(players, pnum, "ch");
 
    for(new i; i < pnum; i++) {
        message_begin(MSG_ONE, IdMsg, .player = players[i]);
        write_byte(players[i]);
        write_string(szMsg);
        message_end();
    }
}