#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
 
#define PLUGIN "Fegyvermenu"
#define VERSION "1.0"
#define AUTHOR "mforce"
 
 
new const PREFIX[] = "WorldDustII";
 
enum _:weapinfo {name[32], weap_name[32], bpammo};
enum _:TEAMS {TE, CT};
new g_Awps[TEAMS], bool:g_Used[33];
 
new const weapons[][weapinfo] = {
    {"M4A1 Csomag", "weapon_m4a1", 90},
    {"AK47 Csomag", "weapon_ak47", 90},
    {"AWP Csomag\y[3db csapatonként]", "weapon_awp", 30},
    {"M249 Csomag", "weapon_m249", 200},
    {"AUG Csomag", "weapon_aug", 90},
    {"FAMAS Csomag", "weapon_famas", 90},
    {"GALIL Csomag", "weapon_galil", 90},
    {"MP5NAVY Csomag", "weapon_mp5navy", 120},
    {"XM1014 Csomag", "weapon_xm1014", 32},
    {"M3 Csomag", "weapon_m3", 32},
    {"SCOUT Csomag", "weapon_scout", 90},
    {"P90 Csomag", "weapon_p90", 100},
    {"TMP Csomag", "weapon_tmp", 120},
    {"UMP45 Csomag", "weapon_ump45", 100},
    {"MAC10 Csomag", "weapon_mac10", 100}
};
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    RegisterHam(Ham_Spawn, "player", "spawn_event", 1);
    register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
    register_clcmd("say /fegyo", "fegyvermenu");
    register_clcmd("say /fegyomenu", "fegyvermenu");
    register_clcmd("say /fegyver", "fegyvermenu");
    register_clcmd("say /fegyvermenu", "fegyvermenu");
    register_message(get_user_msgid("Money"), "MessageMoney");
    register_message(get_user_msgid("HideWeapon"), "MessageHideWeapon");
    register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon");
}
 
public Event_NewRound() {
    arrayset(g_Used, false, sizeof(g_Used));
    arrayset(g_Awps, 0, sizeof(g_Awps));
}
 
public spawn_event(id) fegyvermenu(id);
 
public fegyvermenu(id) {
    if (!is_user_alive(id) || g_Used[id]) return;
   
    switch(cs_get_user_team(id)) {
        case CS_TEAM_T: {
            if(user_has_weapon(id, CSW_C4)) {
                strip_user_weapons(id)
                give_item(id, "weapon_c4")
                cs_set_user_plant(id,1,1)
            }
            else {
                strip_user_weapons(id)
            }
        }
        case CS_TEAM_CT: {
            strip_user_weapons(id);
            cs_set_user_defuse(id, 1);
        }
    }
    give_item(id, "weapon_knife");
 
    new s_MenuName[128]; formatex(s_MenuName, charsmax(s_MenuName), "\r[%s] \wFegyvermenü", PREFIX);
    new menu = menu_create(s_MenuName, "FegyverMenu_mh");
    for(new i; i<sizeof(weapons);i++) {
        menu_additem(menu, weapons[i][name], "", 0)
    }
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_setprop(menu, MPROP_BACKNAME, "Vissza");
    menu_setprop(menu, MPROP_NEXTNAME, "Következő");
    menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
    menu_display(id, menu, 0);
}
 
public FegyverMenu_mh(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
 
    if (!is_user_alive(id)) return PLUGIN_HANDLED;
 
    if(item == 2) {
        switch(cs_get_user_team(id)) {
            case CS_TEAM_T: {
                if(g_Awps[TE] < 3) g_Awps[TE]++;
                else {
                    ChatColor(id, "^4[%s]^1 Nincs lehetőség több ^3AWP^1 vásárlására a csapatodban", PREFIX)
                    fegyvermenu(id);
                    return PLUGIN_HANDLED;
                }
            }
            case CS_TEAM_CT: {
                if(g_Awps[CT] < 3) g_Awps[CT]++;
                else {
                    ChatColor(id, "^4[%s]^1 Nincs lehetőség több ^3AWP^1 vásárlására a csapatodban", PREFIX)
                    fegyvermenu(id);
                    return PLUGIN_HANDLED;
                }
            }
        }
    }
   
    give_item(id, "weapon_deagle");
    cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    give_item(id, weapons[item][weap_name]);
    cs_set_user_bpammo(id, get_weaponid(weapons[item][weap_name]), weapons[item][bpammo]);
    cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
    give_item(id, "weapon_hegrenade");
    give_item(id, "weapon_flashbang");
    cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
    give_item(id, "weapon_smokegrenade");
 
    new fegyonev[32]; formatex(fegyonev, charsmax(fegyonev), "%s", weapons[item][name]);
    ChatColor(id, "^4[%s]^1 A(z)^3 %s ^1csomagot választottad.", PREFIX, item == 2 ? "AWP":fegyonev);
    g_Used[id] = true;
   
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
 
public MessageMoney(msgid, dest, id) {
    set_pdata_int(id, 115, 0);
    set_msg_arg_int(1, ARG_LONG, 0);
}
 
public MessageHideWeapon(msgid, dest, id) {
    set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1) | (1<<5));
}
 
public Message_StatusIcon(iMsgId, iMsgDest, id) {
    static szIcon[8];
    get_msg_arg_string(2, szIcon, charsmax(szIcon));
    if(equal(szIcon, "buyzone")) {
        if(get_msg_arg_int(1)) {
            set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
            return PLUGIN_HANDLED;
        }
    }
    return PLUGIN_CONTINUE;
}
 
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();
    }
}