#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
 
#define PLUGIN "Counter-Strike_OnLY_D2"
#define VERZIO "v1.0"
#define KESZITO "Tomi"


new filename[128];
 
#pragma tabsize 0
 
//Egyebek
new penz[33]
 
//Lada fajtak
new lada[33]
 
//Kulcs fajtak
new kulcs[33]
 
new ak47_skin[33]
new ak47_1[33]
new ak47_2[33]
new ak47_3[33]
new ak47_4[33]
new ak47_5[33]
new v_ak47_1[] = "models/onlyd2/ak47/gforce.mdl"
new v_ak47_2[] = "models/onlyd2/ak47/fireserpent.mdl"
new v_ak47_3[] = "models/onlyd2/ak47/jaguar.mdl"
new v_ak47_4[] = "models/onlyd2/ak47/outlaw.mdl"
new v_ak47_5[] = "models/onlyd2/ak47/point.mdl"
 
public plugin_init() {
    register_plugin(PLUGIN, VERZIO, KESZITO)
   
    //Chat Parancsok
    register_impulse(201, "fomenu")
        register_clcmd("say /add", "addolas")
   
    //Halál
    register_event("DeathMsg", "halal", "ade")
   
    //Fegyverváltás
    register_event("CurWeapon", "fegyverellen", "be", "1=1")
    register_event("CurWeapon", "fegyvervaltas", "be", "1=1")
 
}
 
public halal() {
        new tamado = read_data(1)
   
    if(40.0 >= random_float(1.0, 60.0))
    {
        ladat_kap(tamado)
    }
    else if(50.0 >= random_float(1.0, 70.0))
    {
        kulcsot_kap(tamado)
    }
        else if(80.0 >= random_float(1.0, 50.0))
    {
        penz_adas(tamado)
    }
   
    return PLUGIN_CONTINUE
}
 
public penz_adas(id) {
        switch(random_num(1,1))
        {
            case 1:
            {
                new ertek = random_num(30,70);
                                penz[id] += ertek
                                penz[id] +=ertek
                ColorChat(id, GREEN,"[OnLY D2]^1Találtál ^4%d ^1FT-t!", ertek)
            }
           
        }
}
 
public ladat_kap(id) {
    if(is_user_alive(id) && is_user_connected(id)) {
        new szerver[32]
        get_user_name(id, szerver, 31)
        lada[id]++
        ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Ládát^1!", szerver)
    }
}
 
public kulcsot_kap(id) {
    if(is_user_alive(id) && is_user_connected(id)) {
        new szerver[32]
        get_user_name(id, szerver, 31)
        kulcs[id]++
        ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Kulcsot^1!", szerver)
    }
}
 
public plugin_precache() {
    precache_model(v_ak47_1)
        precache_model(v_ak47_2)
        precache_model(v_ak47_3)
        precache_model(v_ak47_4)
        precache_model(v_ak47_5)
}
 
public fegyverellen(id) {
    new weapon = get_user_weapon(id)
   
    //AK47
    if(ak47_skin[id] == 1 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_1)
    }
        if(ak47_skin[id] == 2 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_2)
    }
        if(ak47_skin[id] == 3 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_3)
    }
        if(ak47_skin[id] == 4 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_4)
    }
        if(ak47_skin[id] == 5 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_5)
    }
}
 
public fegyvervaltas(id) {
    new weapon = get_user_weapon(id)
   
    //AK47
    if(ak47_skin[id] == 1 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_1)
    }
        if(ak47_skin[id] == 2 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_2)
    }
        if(ak47_skin[id] == 3 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_3)
    }
        if(ak47_skin[id] == 4 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_4)
    }
        if(ak47_skin[id] == 5 && weapon == CSW_AK47)
    {
        set_pev(id, pev_viewmodel2, v_ak47_5)
    }
}
 
public addolas(id){
            new menu = menu_create("\r#\yAddolas \d+\y1 \rLada \d& 1 \rKulcs", "menu_handler")
            new players[32], pnum, tempid
            new szName[32], szTempid[20]
            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)
    }
    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) )
        {
           kulcs[tempid] += 1
           lada[tempid] += 1
           ColorChat(id, GREEN,"Sikeres Addolas !.")
        }
        client_cmd(id,"adas")
        menu_destroy(menu);
        return PLUGIN_HANDLED;
}
 
public fomenu(id) {
    new cim[125]
    formatex(cim, charsmax(cim), "\y.:R3pLaY:. *\wOnLY \rD2 \d| \wPénzed: \y%dFT", penz[id])
    new menu = menu_create(cim, "fo_menu_h");
   
    menu_additem(menu, "\rRaktár", "1", 0)
        menu_additem(menu, "\rLádanyitás", "2", 0)
 
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(menu, MPROP_EXITNAME, "\dKilépés")
    menu_display(id, menu, 0)
    return PLUGIN_HANDLED
}
 
public fo_menu_h(id, menu, item) {
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
    new data[9], access, callback, szName[64]
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
    new key = str_to_num(data)
    switch(key) {
        case 1:{
            raktar(id)
        }
                case 2:{
            lada_nyitas(id)
        }
        }
    return PLUGIN_HANDLED
}
 
public lada_nyitas(id) {
    new cim[550]
    formatex(cim, charsmax(cim), "\y.:R3pLaY:. \w*OnLY \rD2 \d| \yLáda Nyitás ^n\rKulcs: \r%d \d| Láda: \r%d", kulcs[id], lada[id])
    new menu = menu_create(cim, "lada_nyitas_h");
   
    menu_additem(menu, "\rLáda \r[\yNyitás\r]", "1", 0)
   
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
    menu_setprop(menu, MPROP_EXITNAME, "\dKilépés")
    menu_display(id, menu, 0)
    return PLUGIN_HANDLED
}
 
public lada_nyitas_h(id, menu, item) {
    if( item == MENU_EXIT )
    {
    menu_destroy(menu);
    return PLUGIN_HANDLED;
    }
    new data[9], access, callback, szName[64]
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
    new key = str_to_num(data)
    switch(key) {
        case 1:{
            if(lada[id] >= 1 && kulcs[id] >= 1) {
                lada[id] --
                kulcs[id] --
                ladat_nyit(id)
            }
            else {
                ColorChat(id, RED, "^3.:R3pLaY:. ^1Nincs ládád ^4vagy ^1kulcsod!")
                lada_nyitas(id)
            }
        }
    }
    return PLUGIN_HANDLED
}
 
public ladat_nyit(id) {
    if(is_user_alive(id) && is_user_connected(id)) {
        new szerver[32]
        get_user_name(id,szerver,31)
        switch(random_num(1,5)) {
            case 1:{
                ak47_1[id] ++
                ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4GForce AK47^1-et!", szerver)
            }
                        case 2:{
                ak47_2[id] ++
                ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Fireserpent AK47^1-et!", szerver)
            }
                        case 3:{
                ak47_3[id] ++
                ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Jaguár AK47^1-et!", szerver)
            }
                        case 4:{
                ak47_4[id] ++
                ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Outlaw AK47^1-et!", szerver)
            }
                        case 5:{
                ak47_5[id] ++
                ColorChat(0, RED, "^3.:R3pLaY:. ^1%s talált +1 ^4Point AK47^1-et!", szerver)
            }
        }
    }
}
 
public raktar(id) {
    new szText[555 char]
    new menu = menu_create("\y.:R3pLaY:. *\wOnLY \rD2 ^n\wRaktár", "raktar_h")
   
    //AK47
    if(ak47_1[id] >= 1) {
        formatex( szText, charsmax( szText ), "GForce AK47 \w| \y[\r%d\y] \w(\yDarab\w)",  ak47_1[id])
        menu_additem(menu, szText, "1", 0)
    }
        if(ak47_2[id] >= 1) {
        formatex( szText, charsmax( szText ), "Fireserpent AK47 \w| \y[\r%d\y] \w(\yDarab\w)",  ak47_2[id])
        menu_additem(menu, szText, "2", 0)
    }
        if(ak47_3[id] >= 1) {
        formatex( szText, charsmax( szText ), "Jaguár AK47 \w| \y[\r%d\y] \w(\yDarab\w)",  ak47_3[id])
        menu_additem(menu, szText, "3", 0)
    }
        if(ak47_4[id] >= 1) {
        formatex( szText, charsmax( szText ), "Outlaw AK47 \w| \y[\r%d\y] \w(\yDarab\w)",  ak47_4[id])
        menu_additem(menu, szText, "4", 0)
    }
        if(ak47_5[id] >= 1) {
        formatex( szText, charsmax( szText ), "Point AK47 \w| \y[\r%d\y] \w(\yDarab\w)",  ak47_5[id])
        menu_additem(menu, szText, "5", 0)
    }
   
    menu_setprop(menu, MPROP_BACKNAME, "\dVissza")
    menu_setprop(menu, MPROP_NEXTNAME, "\dTovább")
    menu_setprop(menu, MPROP_EXITNAME, "\dKilépés")
 
    menu_display(id, menu, 0)
}
 
public raktar_h(id, menu, item) {
    if( item == MENU_EXIT )
    {
    menu_destroy(menu);
    return PLUGIN_HANDLED;
    }
    new data[9], access, callback, szName[64]
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
    new key = str_to_num(data)
    switch(key) {
        case 1:{
            ak47_skin[id] = 1
            ColorChat(id, RED, "^3.:R3pLaY:. ^1 kiválasztva: ^4GForce AK47^1!")
        }
                case 2:{
            ak47_skin[id] = 2
            ColorChat(id, RED, "^3.:R3pLaY:. ^1 kiválasztva: ^4Fireserpent AK47^1!")
        }
                case 3:{
            ak47_skin[id] = 3
            ColorChat(id, RED, "^3.:R3pLaY:. ^1 kiválasztva: ^4Jaguár AK47^1!")
        }
                case 4:{
            ak47_skin[id] = 4
            ColorChat(id, RED, "^3.:R3pLaY:. ^1 kiválasztva: ^4Outlaw AK47^1!")
        }
                case 5:{
            ak47_skin[id] = 5
            ColorChat(id, RED, "^3.:R3pLaY:. ^1 kiválasztva: ^4Point AK47^1!")
        }
    }
    return PLUGIN_HANDLED
}
stock get_data(const key[], data[], len) {
    new vault = fopen(filename, "rt");
    new _data[512], _key[64];
   
    while( !feof(vault) ) {
        fgets(vault, _data, charsmax(_data));
        parse(_data, _key, charsmax(_key), data, len);
       
        if( equal(_key, key) ) {
            fclose(vault);
            return 1;
        }
    }
   
    fclose(vault);
    copy(data, len, "");
   
    return 0;
}
 
stock set_data(const key[], const data[]) {
    static const temp_vault_name[] = "set_data.txt";
    new file = fopen(temp_vault_name, "wt");
   
    new vault = fopen(filename, "rt");
    new _data[512], _key[64], _other[32];
    new bool:replaced = false;
   
    while( !feof(vault) ) {
        fgets(vault, _data, charsmax(_data));
        parse(_data, _key, charsmax(_key), _other, charsmax(_other));
       
        if( equal(_key, key) && !replaced ) {
            fprintf(file, "^"%s^" ^"%s^"^n", key, data);
           
            replaced = true;
        }
        else {
            fputs(file, _data);
        }
    }
   
    if( !replaced ) {
        fprintf(file, "^"%s^" ^"%s^"^n", key, data);
    }
   
    fclose(file);
    fclose(vault);
   
    delete_file(filename);
   
    while( !rename_file(temp_vault_name, filename, 1) ) { }
   
    //delete_file(temp_vault_name);
}
public client_disconnect(id) {
    if(!is_user_bot(id) && !is_user_hltv(id)) {
        save(id);
    }
}
 
public save(id) {
    new szData[128];
    new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
    if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
   
    formatex(szData, charsmax(szData), "%i %i", lada[id], penz[id], kulcs[id]);
    set_data(steamid, szData)
}
public client_authorized(id) {
    if(!is_user_bot(id) && !is_user_hltv(id)) {
        load(id);
    }
}
 
public load(id) {
    new szData[128];
    new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
    if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
   
    if(get_data(steamid, szData, charsmax(szData))) {
        new valami[32], valami2[32], valami3[32];
        parse(szData, valami, charsmax(valami), valami2, charsmax(valami2), valami3, charsmax(valami3))
        lada[id] = str_to_num(valami)  
        penz[id] = str_to_num(valami2)
		kulcs[id] = str_to_num(valami3)
    }
}