#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <nvault>
#include <engine>
new bomb_plantedp,bomb_defusedp,kill_hs,kill,five_min,
ten_min,survival,ctwiin,tewiin
new kill_vic
 
new point[33],name[33],g_vault
 
new bool:bunny[33]=false,damagee[33]=false,speed[33]=false,grenade[33]=false
 
public plugin_init() {
	register_event("DeathMsg","death","a")
	register_event("SendAudio","ctwin","a","2&!%MRAD_terwin")
	register_event("SendAudio","tewin","a","2&!%MRAD_ctwin")
 
	bomb_plantedp = register_cvar("bomb_planted","5") // BOMBA LERAKASKOR
	bomb_defusedp = register_cvar("bomb_defused","10") //BOMBA HATASTALANITASAKOR
	kill = register_cvar("kill","5") // OLESENKENT
	kill_hs = register_cvar("kill_hs","7") // FEJLOVESENKENT
	five_min = register_cvar("five_minute","5") //5 PERCENKENT
	ten_min = register_cvar("ten_minute","10") //10 PERCENKENT
	ctwiin = register_cvar("ct_win","5") // CT GYOZELEM ESETEBEN
	tewiin = register_cvar("te_win","5") // TERROR GYOZELEM
	survival = register_cvar("survival","10") //TULELESKOR
 
	kill_vic= register_cvar("kill_victim","2")
 
	register_clcmd("say /bolt","show_menuu")
	register_clcmd("say_team /bolt","show_menuu")
	register_clcmd("say /shop","show_menuu")
	register_clcmd("say_team /shop","show_menuu")
	register_clcmd("say /pont","check")
 
	register_logevent("end",2,"1=Round_End")
 
	RegisterHam(Ham_TakeDamage,"player","daamaagee")
 
	set_task(2.0,"check_point",_,_,_,"b")
}
public check(id) client_print(id,print_chat,"Pontjaid: %d",get_user_pont(id))
public check_point(id){
	set_hudmessage(255, 0, 0, 0.37, 0.88, 0, 6.0, 12.0)
	show_hudmessage(id, "Pontjaid: %d",get_user_pont(id))
}	
public daamaagee(victim, inflictor, attacker, Float:damage){
	if(damagee[attacker]){
		SetHamParamFloat(attacker,Float:damage*2)
	}
}
public grenade_throw(id,gid,tip){
	if(grenade[id]){
		if(tip==CSW_HEGRENADE) give_item(id,"weapon_hegrenade")
	}
}
public end(id){
	for(new i;i<get_playersnum();i++){
		speed[i]=false
		damagee[i]=false
		grenade[i]=false
		set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderTransAlpha , 255);
	}
}
public show_menuu(id){
	new menu=menu_create("\rBolt:","menu_handler")
	menu_additem(menu,"\y100 hp \R20P","1",0)
	menu_additem(menu,"\y200 hp \R35P","2",0)
	menu_additem(menu,"\y500 hp \R70P","3",0)
	menu_additem(menu,"\yBunnyhop \R100P","4",0)
	menu_additem(menu,"\yLathatatlansag \R70P","5",0)
	menu_additem(menu,"\yGyorsasag \R40P","6",0)
	menu_additem(menu,"\yNagyobb sebzes \R50P","7",0)
	menu_additem(menu,"\yTitkor granat \R50P","8",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],name[64]
	new acces,callback
	menu_item_getinfo(menu,item,acces,data,charsmax(data),name,charsmax(name),callback)
	new key = str_to_num(data)
	switch(key){
		case 1:{
			if(get_user_pont(id)>=20){
				set_user_health(id,100)
				set_user_pont(id,get_user_pont(id)-20)
			}
			else {
				client_print(id,print_chat,"Nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 2:{
			if(get_user_pont(id)>=35){
				set_user_health(id,200)
				set_user_pont(id,get_user_pont(id)-35)
			}
			else
			{
				client_print(id,print_chat,"Nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 3:{
			if(get_user_pont(id)>=70) {
				set_user_health(id,500)
				set_user_pont(id,get_user_pont(id)-70)
			}
			else {
				client_print(id,print_chat,"Nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 4:{
			if(get_user_pont(id)>=100) {
				bunny[id]=true
				set_user_pont(id,get_user_pont(id)-100)
			}
			else{
				client_print(id,print_chat,"Nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 5:{
			if(get_user_pont(id)>=70){
				set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha , 0);
				set_user_pont(id,get_user_pont(id)-70)
			}
			else {
				client_print(id,print_chat,"nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 6:{
			if(get_user_pont(id)>=40) {
				speed[id]=true
				set_user_pont(id,get_user_pont(id)-40)
			}
			else{
				client_print(id,print_chat,"nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 7:{
			if(get_user_pont(id)>=50){
				damagee[id]=true
				set_user_pont(id,get_user_pont(id)-50)
			}
			else{
				client_print(id,print_chat,"nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
		case 8:{
			if(get_user_pont(id)>=50){
				grenade[id]=true
				give_item(id,"weapon_hegrenade")
				set_user_pont(id,get_user_pont(id)-50)
			}
			else{
				client_print(id,print_chat,"nincs eleg pontod!")
				return PLUGIN_CONTINUE
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public ctwin(){
	for(new i;i<get_playersnum();i++){
		if(pev(i,pev_team) == 2){
			set_user_pont(i,get_user_pont(i)+get_pcvar_num(ctwiin))
			client_print(i,print_chat,"Kaptal +%d pontot,mert a nyerted csapatba vagy!",get_pcvar_num(ctwiin))
		}
		if(pev(i,pev_team) == 1){
			if(is_user_alive(i)){
				set_user_pont(i,get_user_pont(i)+get_pcvar_num(survival))
				client_print(i,print_chat,"Kaptal +%d pontot,mert tulelted a kort!",get_pcvar_num(survival))
			}
		}
	}
}
public tewin(){
	for(new i;i<get_playersnum();i++){
		if(pev(i,pev_team)==1){
			set_user_pont(i,get_user_pont(i)+get_pcvar_num(tewiin))
			client_print(i,print_chat,"Kaptal +%d pontot,mert csapatod nyerte a kort!",get_pcvar_num(tewiin))
		}
		else if(pev(i,pev_team) == 2){
			if(is_user_alive(i)){
				set_user_pont(i,get_user_pont(i)+get_pcvar_num(survival))
				client_print(i,print_chat,"Kaptal +%d pontot,mert tulelted a kort!",get_pcvar_num(survival))
			}
		}
	}
}
public client_putinserver(id) set_task(300.0,"fivee",id)
public fivee(id){
	set_user_pont(id,get_user_pont(id)+get_pcvar_num(five_min))
	client_print(id,print_chat,"Kaptal +%d pontot,mert jatszottal a szerveren 5 percet!",get_pcvar_num(five_min))
	set_task(300.0,"tene",id)
}
public tene(id){
	set_user_pont(id,get_user_pont(id)+get_pcvar_num(ten_min))
	client_print(id,print_chat,"Kaptal +%d pontot,mert jatszottal a szerveren 10 percet!",get_pcvar_num(ten_min))
}
public death(id){
	id = read_data(1)
	if(read_data(3)){
		set_user_pont(id,get_user_pont(id)+get_pcvar_num(kill_hs))
		client_print(id,print_chat,"Kaptal +%d pontot a fejlovesert!",get_pcvar_num(kill_hs))
	}
	else{
		set_user_pont(id,get_user_pont(id)+get_pcvar_num(kill))
		client_print(id,print_chat,"Kaptal +%d pontot az olesert!",get_pcvar_num(kill))
	}
	if(get_user_pont(read_data(2)>=get_pcvar_num(kill_vic))){
		client_print(read_data(2),print_chat,"Vesztettel %d pontot,mert megoltek!",get_pcvar_num(kill_vic))
		set_user_pont(read_data(2),get_user_pont(read_data(2)-get_pcvar_num(kill_vic)))
	}
}
public bomb_defused(id){
	set_user_pont(id,get_user_pont(id)+get_pcvar_num(bomb_defusedp))
	client_print(id,print_chat,"Kaptal +%d pontot,mert hatastalanitottad a bombat!",get_pcvar_num(bomb_defusedp))
}
public bomb_planted(id){
	client_print(id,print_chat,"Kaptal +%d pontot,mert leraktad a bombat!",get_pcvar_num(bomb_plantedp))
	set_user_pont(id,get_user_pont(id)+get_pcvar_num(bomb_plantedp))
}
stock get_user_pont(id) return point[id]
stock set_user_pont(id,ertek) point[id] = ertek
public client_disconnect(id){
	mentes(id)
	speed[id]=false
	damagee[id]=false
	grenade[id]=false
	get_user_name(id,name,charsmax(name))
}
public mentes(id)
{
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-PONT", name[id])
	format(vaultdata,255,"%d",get_user_pont(id))
	nvault_set(g_vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public client_connect(id){
	speed[id]=false
	grenade[id]=false
	damagee[id]=false
	betoltes(id)
}
public betoltes(id)
{
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-PONT", name[id])
	nvault_get(g_vault,vaultkey,vaultdata,255)
	set_user_pont(id,str_to_num(vaultdata))
	return PLUGIN_CONTINUE;
}
public client_PreThink(id) {
	if(bunny[id]){
		entity_set_float(id, EV_FL_fuser2, 0.0)	// Disable slow down after jumping
 
 
		if (entity_get_int(id, EV_INT_button) & 2) {
			new flags = entity_get_int(id, EV_INT_flags)
 
			if (flags & FL_WATERJUMP)
				return PLUGIN_CONTINUE
			if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
				return PLUGIN_CONTINUE
			if ( !(flags & FL_ONGROUND) )
				return PLUGIN_CONTINUE
 
			new Float:velocity[3]
			entity_get_vector(id, EV_VEC_velocity, velocity)
			velocity[2] += 250.0
			entity_set_vector(id, EV_VEC_velocity, velocity)
 
			entity_set_int(id, EV_INT_gaitsequence, 6)
		}
		return PLUGIN_CONTINUE
	}
	else return PLUGIN_CONTINUE
	return 1
}