#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#define PLUGIN "Fegyvermenu"
#define VERSION "1.0"
#define AUTHOR "RaZzoR"

new const primary_weapons[][][] = {
	{ "M4A1", "weapon_m4a1", "90" },
	{ "AK47", "weapon_ak47", "90" },
	{ "AUG", "weapon_aug", "90" },
	{ "SG552", "weapon_sg552", "90" },
	{ "GALIL", "weapon_galil", "90" },
	{ "FAMAS", "weapon_famas", "90" },
	{ "SCOUT", "weapon_scout", "90" },
	{ "AWP", "weapon_awp", "30" },
	{ "SG550", "weapon_sg550", "90" },
	{ "M249", "weapon_m249", "200" },
	{ "G3SG1", "weapon_g3sg1", "90" },
	{ "MP5NAVY", "weapon_mp5navy", "120" },
	{ "M3", "weapon_m3", "32" },
	{ "XM1014", "weapon_xm1014", "32" },
	{ "TMP", "weapon_tmp", "120" },
	{ "MAC10", "weapon_mac10", "100" },
	{ "P90", "weapon_p90", "100" }
}

new const secondary_weapons[][][] = {
	{ "USP", "weapon_usp", "100" },
	{ "GLOCK18", "weapon_glock18", "120" },
	{ "DEAGLE", "weapon_deagle", "35" },
	{ "P228", "weapon_p228", "52" },
	{ "ELITE", "weapon_elite", "120" },
	{ "FIVESEVEN", "weapon_fiveseven", "100" }
}

new save_weapons[33][2], bool:save_menu[33] = false

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /fegyo", "clcmd_fegyo")
	RegisterHam(Ham_Spawn, "player", "Spawn", 1)
}

public client_connect(id) {
	save_weapons[id][0] = 0
	save_weapons[id][1] = 0
	save_menu[id] = false
}

public Spawn(id) {
	if(!is_user_alive(id)) return
	
	strip_user_weapons(id)
	give_item(id, "weapon_knife")
	
	if(save_menu[id] == true) give_previous_item(id)
	else open_weapon_menu(id)
}

public clcmd_fegyo(id) {
	if(save_menu[id] == true) {
		client_print(id, print_chat, "Következő körben újra engedélyezve lesz a Fegyvermenü!")
		save_menu[id] = false
	}
	
	else client_print(id, print_chat, "A Fegyvermenü engedélyezve van már!")
}

/* Main Menu */
public open_weapon_menu(id) {
	new menu = menu_create("Fegyvermenü:", "open_weapon_menu_handler")
	
	menu_additem(menu, "Új Fegyver", "0", 0)
	
	if(save_weapons[id][0] > 0 && save_weapons[id][1] > 0) {
		menu_additem(menu, "Előző Fegyver", "1", 0)
		menu_additem(menu, "Előző Fegyver + Mentés", "2", 0)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
	menu_display(id, menu, 0)
	
	return PLUGIN_HANDLED
}

public open_weapon_menu_handler(id, menu, item)
{
	if(item == MENU_EXIT) {
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new data[64], szName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
	
	switch(item) {
		case 0: open_primary_menu(id)
		case 1: give_previous_item(id)
		case 2: {
			give_previous_item(id)
			save_menu[id] = true
			client_print(id, print_chat, "Ha engedélyezni szeretnéd a Fegyvermenüt, írd chatbe: '/fegyo' !")
		}	
	}
	
	return PLUGIN_CONTINUE
}

/* Primary Menu */
public open_primary_menu(id) {
	new i_data[64]
	new menu = menu_create("Elsődleges Fegyverek:", "open_primary_menu_handler")
	
	for(new i=0; i < sizeof(primary_weapons); i++) {
		num_to_str(i, i_data, sizeof(i_data))
		menu_additem(menu, primary_weapons[i][0], i_data, 0)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
	menu_display(id, menu, 0)
	
	return PLUGIN_HANDLED
}

public open_primary_menu_handler(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new data[64], szName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
	
	new key = str_to_num(data)
	new weapon_id = get_weaponid(primary_weapons[key][1])
	new convert_to_num = str_to_num(primary_weapons[key][2])
	
	give_item(id, primary_weapons[key][1])
	cs_set_user_bpammo(id, weapon_id, convert_to_num)
	
	save_weapons[id][0] = key+1
	open_secondary_menu(id)
	
	return PLUGIN_CONTINUE
}

/* Secndary Menu */
public open_secondary_menu(id) {
	new i_data[64]	
	new menu = menu_create("Másodlagos Fegyverek:", "open_secondary_menu_handler")
	
	for(new i=0; i < sizeof(secondary_weapons); i++) {
		num_to_str(i, i_data, sizeof(i_data))
		menu_additem(menu, secondary_weapons[i][0], i_data, 0)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
	menu_display(id, menu, 0)
	
	return PLUGIN_HANDLED
}

public open_secondary_menu_handler(id, menu, item)
{
	if(item == MENU_EXIT) {
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new data[64], szName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
	
	new key = str_to_num(data)
	new weapon_id = get_weaponid(secondary_weapons[key][1])
	new convert_to_num = str_to_num(secondary_weapons[key][2])
	
	give_item(id, secondary_weapons[key][1])
	cs_set_user_bpammo(id, weapon_id, convert_to_num)
	give_item(id, "weapon_hegrenade")
	
	save_weapons[id][1] = key+1
	
	return PLUGIN_CONTINUE
}

public give_previous_item(id) {
	new pri_weapon_id = get_weaponid(primary_weapons[save_weapons[id][0]-1][1])
	new pri_convert_to_num = str_to_num(primary_weapons[save_weapons[id][0]-1][2])
	
	new sec_weapon_id = get_weaponid(secondary_weapons[save_weapons[id][1]-1][1])
	new sec_convert_to_num = str_to_num(secondary_weapons[save_weapons[id][1]-1][2])
	
	give_item(id, primary_weapons[save_weapons[id][0]-1][1])
	cs_set_user_bpammo(id, pri_weapon_id, pri_convert_to_num)
	
	give_item(id, secondary_weapons[save_weapons[id][1]-1][1])
	cs_set_user_bpammo(id, sec_weapon_id, sec_convert_to_num)
	give_item(id, "weapon_hegrenade")
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
