#include <amxmodx>
#include <fakemeta>
#include <nvault>
#include <cstrike>
#include <fun>
#include <hamsandwich>
 
#define PLUGIN "Unlocker"
#define VERSION "1.0"
#define AUTHOR "DeRoiD"
 
new fegyver_ak47[33],fegyver_m4a1[33],fegyver_famas[33],fegyver_tmp[33],fegyver_awp[33],pont[33]
new fejloves, oles
new csapat_menu, kijelzo, spawn_elohoz
new ak47_ar,m4a1_ar, famas_ar, tmp_ar, awp_ar
new szerver_prefix[] = "[DeRoiD's Unlocker]"
new unlocker_vault, name[33][32]
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /unlocker","unlockmenu")
	register_clcmd("say_team /unlocker","unlockmenu")
	register_event("DeathMsg","halal","a")
 
	RegisterHam(Ham_Spawn, "player", "ujraeledes", 0)
 
	unlocker_vault = nvault_open("UnlockerV1")
 
	fejloves = register_cvar("oles_fejlovessel","3")
	oles = register_cvar("oles_sima","2")
 
	csapat_menu = register_cvar("csapat_menu","1") //Akiknek megjelenik a menu!0=Mindenki/1=CT/2=TE
	kijelzo = register_cvar("kijelzo","1") //Ahol mutatja a pontokat !0=Menuben/1=HUD
	spawn_elohoz = register_cvar("elohoz","1") // Ujraeledesnel mutassa a menut? 1=Igen / 0=Nem
 
	tmp_ar = register_cvar("tmp_ara","0")
	famas_ar = register_cvar("famas_ara","47")
	ak47_ar = register_cvar("ak47_ara","89")
	m4a1_ar = register_cvar("m4a1_ara","147") 
	awp_ar = register_cvar("awp_ara","302")
 
	if(get_pcvar_num(kijelzo) == 1){
		set_task(2.0, "kijelzo_hud", 0, _, _, "b")
	}
}
public ujraeledes(id){
	if(!is_user_alive(id)){
		if(get_pcvar_num(spawn_elohoz) == 1){
			unlockmenu(id)
		}
		else if(get_pcvar_num(spawn_elohoz) == 0){
			client_print(id,print_chat,"")
		}
	}
}
public halal() {
	new killer = read_data(1)
	new victim = read_data(2)
	new headshot = read_data(3)
	if(killer == victim) {
		return PLUGIN_HANDLED
	}
	if(headshot) {
		pont[killer] += get_pcvar_num(fejloves)
		client_print(killer,print_chat,"%s +%d Pont (Headshot)",szerver_prefix,get_pcvar_num(fejloves))
	}
	else
	{
		pont[killer] += get_pcvar_num(oles)
		client_print(killer,print_chat,"%s +%d Pont",szerver_prefix,get_pcvar_num(oles))
	}
	return PLUGIN_HANDLED
}
public unlockmenu(id) {
	new menu_cim[121],egy[121],ketto[121],harom[121],negy[121],ot[121]
	if(get_pcvar_num(kijelzo) == 0){
		format(menu_cim,charsmax(menu_cim),"\w%s \rUnlocker^n\yPont : \r%i",szerver_prefix,pont[id])
	}
	else
	if(get_pcvar_num(kijelzo) == 1){
		format(menu_cim,charsmax(menu_cim),"\w%s \rUnlocker^n",szerver_prefix)
	}
	format(egy,charsmax(egy),"\dTMP - Locked \y[\w%i \rPont\y]",get_pcvar_num(tmp_ar))
	format(ketto,charsmax(ketto),"\dFAMAS - Locked \y[\w%i \rPont\y]",get_pcvar_num(famas_ar))
	format(harom,charsmax(harom),"\dAK47 - Locked \y[\w%i \rPont\y]",get_pcvar_num(ak47_ar))
	format(negy,charsmax(negy),"\dM4A1 - Locked \y[\w%i \rPont\y]",get_pcvar_num(m4a1_ar))
	format(ot,charsmax(ot),"\dAWP - Locked \y[\w%i \rPont\y]",get_pcvar_num(awp_ar))
 
	new menu = menu_create(menu_cim,"unlockmenu_handler")
 
	if(fegyver_tmp[id] == 1) {
		menu_additem(menu,"\rTMP \w- \yUnlocked","1",0)
	}
	else if(fegyver_tmp[id] == 0) {
		menu_additem(menu,egy,"6",0)
	}
	if(fegyver_famas[id] == 1) {
		menu_additem(menu,"\rFAMAS \w- \yUnlocked","2",0)
	}
	else if(fegyver_famas[id] == 0) {
		menu_additem(menu,ketto,"7",0)
	}
	if(fegyver_ak47[id] == 1) {
		menu_additem(menu,"\rAK47 \w- \yUnlocked","3",0)
	}
	else if(fegyver_ak47[id] == 0) {
		menu_additem(menu,harom,"8",0)
	}
	if(fegyver_m4a1[id] == 1) {
		menu_additem(menu,"\rM4A1 \w- \yUnlocked","4",0)
	}
	else if(fegyver_m4a1[id] == 0) {
		menu_additem(menu,negy,"9",0)
	}
	if(fegyver_awp[id] == 1) {
		menu_additem(menu,"\rAWP \w- \yUnlocked","5",0)
	}
	else if(fegyver_awp[id] == 0) {
		menu_additem(menu,ot,"10",0)
	}
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
	if(get_pcvar_num(csapat_menu) == 0){
		menu_display(id, menu, 0);
	}
	else if(cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(csapat_menu) == 1){
		menu_display(id, menu, 0);
	}
	else if(cs_get_user_team(id) == CS_TEAM_T && get_pcvar_num(csapat_menu) == 2){
		menu_display(id, menu, 0);
	}
}
public unlockmenu_handler(id,menu,item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	new data[9], szName[64], szam1[33], szam2[33], szam3[33], szam4[33], szam5[33]
	szam1[id] = get_pcvar_num(tmp_ar) - pont[id]
	szam2[id] = get_pcvar_num(famas_ar) - pont[id]
	szam3[id] = get_pcvar_num(ak47_ar) - pont[id]
	szam4[id] = get_pcvar_num(m4a1_ar) - pont[id]
	szam5[id] = get_pcvar_num(awp_ar) - pont[id]
	new access, callback
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
	new key = str_to_num(data)
	switch(key)
	{
		// Ha mar unlockolva vannak a fegyverek
		case 1:{
			strip_user_weapons(id)
			give_item(id, "weapon_tmp")
			cs_set_user_bpammo(id, CSW_TMP, 120)
			client_print(id,print_chat,"%s Sikeres valasztas!",szerver_prefix)
			masodlagos(id)
		}
		case 2:{
			strip_user_weapons(id)
			give_item(id, "weapon_famas")
			cs_set_user_bpammo(id, CSW_FAMAS, 90)
			client_print(id,print_chat,"%s Sikeres valasztas!",szerver_prefix)
			masodlagos(id)
		}
		case 3:{
			strip_user_weapons(id)
			give_item(id, "weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 90)
			client_print(id,print_chat,"%s Sikeres valasztas!",szerver_prefix)
			masodlagos(id)
		}
		case 4:{
			strip_user_weapons(id)
			give_item(id, "weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 90)
			client_print(id,print_chat,"%s Sikeres valasztas!",szerver_prefix)
			masodlagos(id)
		}
		case 5:{
			strip_user_weapons(id)
			give_item(id, "weapon_awp")
			cs_set_user_bpammo(id, CSW_AWP, 30)
			client_print(id,print_chat,"%s Sikeres valasztas!",szerver_prefix)
			masodlagos(id)
		}
		// Ha nincs unlockolva!
		case 6:{
			if(pont[id] >= get_pcvar_num(tmp_ar)){
				fegyver_tmp[id] = 1
				pont[id] -= get_pcvar_num(tmp_ar)
				client_print(id,print_chat,"%s Sikeres vasarlas!",szerver_prefix)
				unlockmenu(id)
				client_cmd(id, "spk ^"buttons/lightswitch2^"")
			}
			else
			{
				client_print(id,print_chat,"%s Nincs eleg pontod, kell meg %d!",szerver_prefix,szam1[id])
				client_cmd(id, "spk ^"buttons/latchunlocked2^"")
			}
		}
		case 7:{
			if(pont[id] >= get_pcvar_num(famas_ar)){
				fegyver_famas[id] = 1
				pont[id] -= get_pcvar_num(famas_ar)
				client_print(id,print_chat,"%s Sikeres vasarlas!",szerver_prefix)
				unlockmenu(id)
				client_cmd(id, "spk ^"buttons/lightswitch2^"")
			}
			else
			{
				client_print(id,print_chat,"%s Nincs eleg pontod, kell meg %d!",szerver_prefix,szam2[id])
				client_cmd(id, "spk ^"buttons/latchunlocked2^"")
			}
		}
		case 8:{
			if(pont[id] >= get_pcvar_num(ak47_ar)){
				fegyver_ak47[id] = 1
				pont[id] -= get_pcvar_num(ak47_ar)
				client_print(id,print_chat,"%s Sikeres vasarlas!",szerver_prefix)
				unlockmenu(id)
				client_cmd(id, "spk ^"buttons/lightswitch2^"")
			}
			else
			{
				client_print(id,print_chat,"%s Nincs eleg pontod, kell meg %d!",szerver_prefix,szam3[id])
				client_cmd(id, "spk ^"buttons/latchunlocked2^"")
			}
		}
		case 9:{
			if(pont[id] >= get_pcvar_num(m4a1_ar)){
				fegyver_m4a1[id] = 1
				pont[id] -= get_pcvar_num(m4a1_ar)
				client_print(id,print_chat,"%s Sikeres vasarlas!",szerver_prefix)
				unlockmenu(id)
				client_cmd(id, "spk ^"buttons/lightswitch2^"")
			}
			else
			{
				client_print(id,print_chat,"%s Nincs eleg pontod, kell meg %d!",szerver_prefix,szam4[id])
				client_cmd(id, "spk ^"buttons/latchunlocked2^"")
			}
		}
		case 10:{
			if(pont[id] >= get_pcvar_num(awp_ar)){
				fegyver_awp[id] = 1
				pont[id] -= get_pcvar_num(awp_ar)
				client_print(id,print_chat,"%s Sikeres vasarlas!",szerver_prefix)
				unlockmenu(id)
				client_cmd(id, "spk ^"buttons/lightswitch2^"")
			}
			else
			{
				client_print(id,print_chat,"%s Nincs eleg pontod, kell meg %d!",szerver_prefix,szam5[id])
				client_cmd(id, "spk ^"buttons/latchunlocked2^"")
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public masodlagos(id) {
	give_item(id, "weapon_knife")
	give_item(id, "weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 35)
	give_item(id, "weapon_hegrenade")
	give_item(id, "weapon_flashbang")
 
}
public kijelzo_hud(){
	new players[32], num, id
	get_players(players, num)
 
	for(new i; i < num; i++)
	{
		id = players[id]
		set_hudmessage(255, 255, 255, -1.0, 0.0, 0, 6.0, 12.0)
		show_hudmessage(id, "%s Pontjaid : %d",szerver_prefix, pont[id])
	}
}
public client_disconnect(id)
{
	mentes(id)
}
 
public client_connect(id)
{
	get_user_name(id, name[id], 31)
	betoltes(id)
}
public mentes(id) 
{
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-PONTOK", name[id])
	format(vaultdata,255,"%i#%i#%i#%i#%i#%i",pont[id], fegyver_tmp[id], 
	fegyver_famas[id], fegyver_ak47[id], fegyver_m4a1[id], fegyver_awp[id])
	nvault_set(unlocker_vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public betoltes(id) 
{ 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-PONTOK", name[id])
	format(vaultdata,255,"%i#%i#%i#%i#%i#%i",pont[id], fegyver_tmp[id], 
	fegyver_famas[id], fegyver_ak47[id], fegyver_m4a1[id], fegyver_awp[id])
	nvault_get(unlocker_vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ") 
	new a1[32], a2[32], a3[32], a4[32], a5[32], a6[32]
	parse(vaultdata, a1, 31, a2, 31, a3, 31, a4, 31, a5, 31, a6, 31) 
	pont[id] = str_to_num(a1)
	fegyver_tmp[id] = str_to_num(a2)
	fegyver_famas[id] = str_to_num(a3)
	fegyver_ak47[id] = str_to_num(a4)
	fegyver_m4a1[id] = str_to_num(a5)
	fegyver_awp[id] = str_to_num(a6)
	return PLUGIN_CONTINUE;
}