////////////////////////////////////////////////////////////////////////////////////////////
//                               Created By: FloxaY                                       //
//                                   Copyright®                                           //
//                                  2014 -- 2015                                          //
////////////////////////////////////////////////////////////////////////////////////////////
 
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <engine>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
 
#define PLUGIN "Kesmenu"
#define VERSION "1.0.0"
#define AUTHOR "FloxaY"
 
#define VIP_JOG ADMIN_LEVEL_H
 
new v_alap[] = "models/kesmenu/v_alap.mdl" //modellek
new v_ugras[] = "models/kesmenu/v_ugras.mdl" //modellek
new v_gyors[] = "models/kesmenu/v_gyors.mdl" //modellek
new v_sebzes[] = "models/kesmenu/v_sebzes.mdl" //modellek
new v_halado[] = "models/kesmenu/v_halado.mdl" //modellek
new v_felisten[] = "models/kesmenu/v_felisten.mdl" //modellek
new v_halhatatlan[] = "models/kesmenu/v_halhatatlan.mdl" //modellek
new v_vip1[] = "models/kesmenu/v_vip1.mdl" //modellek
 
new bool:b_alap[33]
new bool:b_ugras[33]
new bool:b_gyorsasag[33]
new bool:b_sebzes[33]
new bool:b_halado[33]
new bool:b_felisten[33]
new bool:b_halhatatlan[33]
new bool:b_vip1[33]
new olesek[33]
new szorzo
new name[33][32]
new g_vault
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /kes","kesmenu")
	register_clcmd("say /knife","kesmenu")
	register_clcmd("team_say /kes","kesmenu")
	register_clcmd("team_say /knife","kesmenu")
	//register_clcmd("say //topoles","top")
	//register_clcmd("team_say /topoles","top")
	register_event("DeathMsg", "halal", "a")
	register_event("CurWeapon", "curwep", "be", "1=1")
	szorzo = register_cvar("sebzes_kes_szorzo", "2")
	g_vault = nvault_open("Kesmenu_Olesek")
	register_event("ResetHUD", "resetModel", "b")
}
 
public plugin_precache() {
	precache_model(v_alap)
	precache_model(v_ugras)
	precache_model(v_gyors)
	precache_model(v_sebzes)
	precache_model(v_halado)
	precache_model(v_felisten)
	precache_model(v_halhatatlan)
	precache_model(v_vip1)
	precache_model("models/player/vip_ct/vip_ct.mdl")
	precache_model("models/player/vip_te/vip_te.mdl")
}
 
public resetModel(id, level, cid) {
	if (get_user_flags(id) & VIP_JOG) {
		new CsTeams:userTeam = cs_get_user_team(id)
		if (userTeam == CS_TEAM_T) {
			cs_set_user_model(id, "admin_te")
		}
		else if(userTeam == CS_TEAM_CT) {
			cs_set_user_model(id, "admin_ct")
		}
		else {
			cs_reset_user_model(id)
		}
	}
	return PLUGIN_CONTINUE
}
 
public damagetake(victim, inflictor, attacker, Float:damage)
{
if(b_sebzes[attacker] && get_user_weapon(attacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage * get_pcvar_float(szorzo))
}
}
 
public curwep(id) {
	new weapon = get_user_weapon(id)
 
	if(b_alap[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_alap)
	}
	if(b_ugras[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_ugras)
		set_user_gravity(id, 0.6)
	}
	if(b_gyorsasag[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_gyors)
		set_user_maxspeed(id, 450)
	}
	if(b_sebzes[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_sebzes)
	}
	if(b_halado[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_halado)
		set_user_maxspeed(id, 450)
		set_user_gravity(id, 0.6)
	}
	if(b_felisten[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_felisten)
		set_user_maxspeed(id, 450)
		set_user_gravity(id, 0.6)
		set_task(3.5 , "task_healing",id,_,_,"b")
	}
	if(b_halhatatlan[id] && weapon == CSW_KNIFE) {
		set_pev(id, pev_viewmodel2, v_halhatatlan)
		set_user_maxspeed(id, 450)
		set_user_gravity(id, 0.6)
		set_task(3.5 , "task_healing",id,_,_,"b")
		b_sebzes[id] = true
	}
	if(b_vip1[id] && weapon == CSW_KNIFE && get_user_flags(id) & VIP_JOG) {
		set_pev(id, pev_viewmodel2, v_vip1)
		set_user_maxspeed(id, 450)
		set_user_gravity(id, 0.6)
}
public halal()
{
	if(read_data(1) != read_data(2))
		if(get_user_weapon(read_data(1)) == CSW_KNIFE) {
		{
			olesek[read_data(1)] ++
		}
	}
}
 
public top(id) {
 
}
 
public kesmenu(id) {
	new menu = menu_create("Valassz kest", "kesmenu_case");
 
	new oles = olesek[id]
	new szText[555 char]
 
	menu_additem(menu, "Alap kes", "0", 0); //0
	formatex( szText, charsmax( szText ), "Gravitációs kés[+20%grav](%d|30)", oles)
	menu_additem(menu, szText, "1", 0) //1 30 ölés
	formatex( szText, charsmax( szText ), "Gyors kés [+20%grav](%d|60)", oles)
	menu_additem(menu, szText, "2", 0); //2 60 ölés
	formatex( szText, charsmax( szText ), "Nagy sebzés kés[+10% Ütés](%d|200)", oles)
	menu_additem(menu, szText, "4", 0); //4 200 ölés
	formatex( szText, charsmax( szText ), "Haladó kés(%d|450)", oles)
	menu_additem(menu, szText, "5", 0); //5 450 ölés
	formatex( szText, charsmax( szText ), "Felisten kes(%d|700)", oles)
	menu_additem(menu, szText, "6", 0); //6 700 ölés
	formatex( szText, charsmax( szText ), "Halhatatlan kes(%d|1000)", oles)
	menu_additem(menu, szText, "7", 0); //7 1000 ölés
	formatex( szText, charsmax( szText ), "VIP kes(0 oles csak VIP-nek)")
	menu_additem(menu, szText, "8", 0); //8 0 ölés
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_setprop(menu, MPROP_PERPAGE, 7);
	menu_setprop(menu, MPROP_BACKNAME, "Vissza");
	menu_setprop(menu, MPROP_NEXTNAME, "Kovetkezo");
	menu_setprop(menu, MPROP_EXITNAME, "Kilepes");
	menu_setprop(menu, MPROP_NOCOLORS, 1);
 
	menu_display(id, menu, 0);
 
	return PLUGIN_HANDLED;
}
 
public kesmenu_case(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}
 
	new command[6], name[64], access, callback;
	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
 
	switch(item)
	{
		case 0: //alap
		{
			alap(id)
		}
		case 1: //ugras
		{
			if(olesek[id] >= 30) {
				ugras(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 2: //gyors
		{
			if(olesek[id] >= 60) {
				gyors(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 4: //sebzes
		{
			if(olesek[id] >= 200) {
				sebzes(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 5: //halado
		{
			if(olesek[id] >= 450) {
				halado(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 6: //felisten
		{
			if(olesek[id] >= 700) {
				felisten(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 7: //halhatatlan
		{
			if(olesek[id] >= 1000) {
				halhatatlan(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nincs elég ölésed")
			}
		}
		case 8: //vip1
		{
			if(get_user_flags(id) & VIP_JOG) {
				vip1(id)
			}
			else {
				ColorChat(id, GREEN,"[*|P|eac|E|*] Sajnos Nem vagy VIP!!")
			}
		}
	}
	return PLUGIN_HANDLED
}
 
public alap(id) {
	b_alap[id] = true
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public ugras(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = true
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public gyors(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = true
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
}
 
public sebzes(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = true
	b_vip1[id] = false
}
 
public halado(id) {
	b_alap[id] = false
	b_halado[id] = true
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public felisten(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = true
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public halhatatlan(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = true
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public vip1(id) {
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = true
}
 
public client_putinserver(id) {
	betoltes(id)
	get_user_name(id, name[id], 31)
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
}
 
public client_disconnect(id) {
	mentes(id)
	b_alap[id] = false
	b_halado[id] = false
	b_felisten[id] = false
	b_halhatatlan[id] = false
	b_ugras[id] = false
	b_gyorsasag[id] = false
	b_hp[id] = false
	b_sebzes[id] = false
	b_vip1[id] = false
	remove_task(id)
}
 
public mentes(id)
{
new vaultkey[64],vaultdata[256]
 
format(vaultkey,63,"%s-OLESEK", name[id])
format(vaultdata,255,"%d", olesek[id])
 
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
 
public betoltes(id)
{
new vaultkey[64],vaultdata[256]
 
format(vaultkey,63,"%s-OLESEK", name[id])
 
nvault_get(g_vault,vaultkey,vaultdata,255)
 
olesek[id] = str_to_num(vaultdata)