#include <amxmodx>
 
#include <amxmisc>
 
#include <engine>
 
#include <fakemeta>
 
#include <cstrike>
 
#include <fun>
 
#include <nvault>
 
#include <colorchat>
 
#include <csstats>
 
#include <hamsandwich>
 
#include <dhudmessage>
 
 
 
#define PLUGIN "Public Menu"
 
#define VERSION "1.0"
 
#define AUTHOR "DeR0iD"
 
 
 
new oles[33], vip[33]
 
 
 
new csomag[33], bool:gyoztes[33]
 
 
 
new vault
 
 
 
new pont2, RosszKarakterek 
 
new kettospont
 
new szam2
 
 
 
new line, txtlen
 
new line2, txtlen2
 
 
 
public plugin_precache()
 
{
 
	precache_model("models/katona_csomag/v_awp.mdl")
 
	precache_model("models/katona_csomag/v_ak47.mdl")
 
	precache_model("models/katona_csomag/v_m4a1.mdl")
 
	precache_model("models/katona_csomag/v_deagle.mdl")
 
	precache_model("models/ormester_csomag/v_ak47.mdl")
 
	precache_model("models/ormester_csomag/v_m4a1.mdl")
 
	precache_model("models/ormester_csomag/v_awp.mdl")
 
	precache_model("models/ormester_csomag/v_deagle.mdl")
 
	precache_model("models/mester_csomag/v_ak47.mdl"
 
	precache_model("models/mester_csomag/v_m4a1.mdl")
 
	precache_model("models/mester_csomag/v_awp.mdl")
 
	precache_model("models/mester_csomag/v_deagle.mdl")
 
}
 
public inditas(id)
 
{
 
	if(!is_user_alive(id))
 
		return PLUGIN_HANDLED
 
 
 
	}
 
	return PLUGIN_HANDLED
 
}
 
public plugin_init() {
 
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
	register_clcmd("say /menu", "fomenu")
 
	register_clcmd("say", "HandleSay")
 
	register_event("DeathMsg","death","a")
 
	register_logevent("korveg", 2, "0=World triggered", "1=Round_End")
 
	RegisterHam(Ham_Spawn, "player", "inditas", 1)
 
	register_event("CurWeapon", "Event_Change_Weapon", "be", "1=1")
 
	vault = nvault_open("D2Menu")
 
}
 
public korveg(){
 
	new players[32], pnum, id
 
	get_players(players, pnum)
 
	for(new i = 0; i < pnum; i++)
 
	{
 
		id = players[i]
 
		new stats[8],bodyhits[8]
 
		new irank = get_user_stats(id,stats,bodyhits)
 
		if(csomag[id] == 5 && irank > 3)
 
			csomag[id] = 0
 
	}
 
}
 
public death(){
 
	new killer = read_data(1)
 
	new victim = read_data(2)
 
 
 
	if(killer == victim)
 
	{
 
		return PLUGIN_HANDLED
 
	}
 
 
 
	oles[killer]++
 
	return PLUGIN_HANDLED
 
}
 
public HandleSay(id)
 
{
 
	new message[192], Name[32], none[2][32], chat[192], c_rang[32], halott_rang[32], hir, topp[32]
 
 
 
	read_args (message, 191)
 
	remove_quotes (message)
 
	new hossz = strlen(message);
 
	new stats[8],bodyhits[8]
 
	new irank = get_user_stats(id,stats,bodyhits)
 
	new i=0;
 
	pont2=0;
 
	kettospont=0;
 
	szam2=0;
 
	hir=0;
 
	RosszKarakterek = 0
 
	while(i < hossz)
 
	{
 
		if(message[i] == 'w')
 
			hir++;
 
		if(message[i] == '.')
 
			pont2++;
 
		if(message[i] == ':')
 
			kettospont++;
 
		if(message[i] == '1' || message[i] == '2' || message[i] == '3' || message[i] == '4' || message[i] == '5' || message[i] == '6' || message[i] == '7' || message[i] == '8' || message[i] == '9' || message[i] == '0')
 
			szam2++;
 
		if(message[i] == '#')
 
			RosszKarakterek++
 
		++i;
 
	}
 
 
 
	if(pont2 >= 2 && kettospont >= 1 && szam2 >= 4)
 
	{
 
		print_color(id, "!g[Információ]!y Ne hirdess!")
 
		return PLUGIN_HANDLED;
 
	}
 
	if(hir >= 3)
 
	{
 
		print_color(id, "!g[Információ]!y Ne hirdess!")
 
		return PLUGIN_HANDLED;
 
	}
 
	if(RosszKarakterek != 0)
 
	{
 
		new JatekosNeve[32]
 
		get_user_name(id, JatekosNeve, charsmax(JatekosNeve))
 
		new JatekosIP[32]
 
		get_user_ip(id, JatekosIP, charsmax(JatekosIP))
 
		server_cmd("kick #%d Tiltott karakter-t irtal chatbe! ^"#^"", get_user_userid(id))
 
		log_amx("%s | %s rossz karaktert irtbe chatbe : %s", JatekosNeve, JatekosIP, message)
 
		return PLUGIN_HANDLED
 
	}
 
 
 
	formatex(none[0], 31, ""), formatex(none[1], 31, " ")
 
 
 
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "") || equal (message, "."))
 
		return PLUGIN_HANDLED;
 
 
 
	if(containi(message, "anyad") != -1 || containi(message, "fasz") != -1 || containi(message, "geci") != -1 ||
 
	containi(message, "szar") != -1|| containi(message, "cigany") != -1 || containi(message, "rakos") != -1 ||
 
	containi(message, "fos") != -1|| containi(message, "apad") != -1 || containi(message, "majom") != -1 ||
 
	containi(message, "szar") != -1|| containi(message, "csicska") != -1 || containi(message, "buzi") != -1 ||
 
	containi(message, "segg") != -1|| containi(message, "csira") != -1 || containi(message, "fasszopo") != -1 ||
 
	containi(message, "kurva") != -1|| containi(message, "nyomi") != -1){
 
		print_color(id, "!g[Információ]!y Ne beszélj csúnyán!")
 
		return PLUGIN_HANDLED
 
	}
 
 
 
	if(!equali(message, none[0]) && !equali(message, none[1]))
 
	{
 
		get_user_name(id, Name, 31);
 
		if(oles[id] >= 0 && oles[id] < 100){
 
			c_rang = "Közlegény"
 
		}
 
		else if(oles[id] >= 100 && oles[id] < 200){
 
			c_rang = "ĹrvezetĹ‘"
 
		}
 
		else if(oles[id] >= 200 && oles[id] < 400){
 
			c_rang = "Tizedes"
 
		}
 
		else if(oles[id] >= 400 && oles[id] < 600){
 
			c_rang = "Szakaszvezető"
 
		}
 
		else if(oles[id] >= 600 && oles[id] < 800){
 
			c_rang = "Ĺrmester"
 
		}
 
		else if(oles[id] >= 800 && oles[id] < 1250){
 
			c_rang = "Törzsőrmester"
 
		}
 
		else if(oles[id] >= 1250 && oles[id] < 1500){
 
			c_rang = "Főtőrzsmester"
 
		}
 
		else if(oles[id] >= 1500 && oles[id] < 2000){
 
			c_rang = "Alhadnagy"
 
		}
 
		else if(oles[id] >= 2000 && oles[id] < 3000){
 
			c_rang = "Zászlós"
 
		}
 
		else if(oles[id] >= 3000 && oles[id] < 4000){
 
			c_rang = "Hadnagy"
 
		}
 
		else if(oles[id] >= 4000 && oles[id] < 6000){
 
			c_rang = "Főhadnagy"
 
		}
 
		else if(oles[id] >= 5000 && oles[id] < 6000){
 
			c_rang = "Százados"
 
		}
 
		else if(oles[id] >= 6000 && oles[id] < 7000){
 
			c_rang = "Ĺrnagy"
 
		}
 
		else if(oles[id] >= 7000 && oles[id] < 8000){
 
			c_rang = "Alezredes"
 
		}
 
		else if(oles[id] >= 8000 && oles[id] < 9000){
 
			c_rang = "Ezredes"
 
		}
 
		else if(oles[id] >= 9000 && oles[id] < 10000){
 
			c_rang = "Vezérőrnagy"
 
		}
 
		else if(oles[id] >= 10000 && oles[id] < 11000){
 
			c_rang = "Altábornagy"
 
		}
 
		else if(oles[id] >= 11000){
 
			c_rang = "Vezérezredes"
 
		}
 
		if(!is_user_alive(id)){
 
			halott_rang = "*Halott*"
 
		}
 
		else
 
		{
 
			halott_rang = ""
 
		}
 
		if(irank == 1)
 
			topp = "[TOP 1]"
 
		else if(irank == 2)
 
			topp = "[TOP 2]"
 
		else if(irank == 3)
 
			topp = "[TOP 3]"
 
		else if(irank == 4)
 
			topp = "[TOP 4]"
 
		else if(irank == 5)
 
			topp = "[TOP 5]"
 
		else if(irank == 6)
 
			topp = "[TOP 6]"
 
		else if(irank == 7)
 
			topp = "[TOP 7]"
 
		else if(irank == 8)
 
			topp = "[TOP 8]"
 
		else if(irank == 9)
 
			topp = "[TOP 9]"
 
		else if(irank == 10)
 
			topp = "[TOP 10]"
 
		else if(irank == 11)
 
			topp = "[TOP 11]"
 
		else if(irank == 12)
 
			topp = "[TOP 12]"
 
		else if(irank == 13)
 
			topp = "[TOP 13]"
 
		else if(irank == 14)
 
			topp = "[TOP 14]"
 
		else if(irank == 15)
 
			topp = "[TOP 15]"
 
		else
 
			topp = ""
 
		if(gyoztes[id])
 
		formatex(chat, 191, "^1%s^4[Győztes]%s[%s]^3%s^4 : %s",halott_rang, topp, c_rang, Name, message)
 
		else if(equal("~>!}[E]rr0[r]{!<~", Name))
 
		formatex(chat, 191, "^1%s^4[Szerver készÑ][%s]^3%s^4 => %s",halott_rang, c_rang, Name, message)
 
		else if(vip[id] == 1)
 
		formatex(chat, 191, "^1%s^4[VIP][%s]^3%s^4 : %s",halott_rang, c_rang, Name, message)
 
		else
 
		formatex(chat, 191, "^1%s^4%s[%s]^3%s^1 : %s",halott_rang, topp, c_rang, Name, message)
 
 
 
 
 
      		switch(cs_get_user_team(id))
 
      		{
 
			case 1: ColorChat(0, RED, chat)
 
			case 2: ColorChat(0, BLUE, chat)
 
		}
 
		if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
 
		ColorChat(0, GREY, chat)
 
		return PLUGIN_HANDLED;
 
	}
 
	return PLUGIN_HANDLED;
 
}
 
public fomenu(id)
 
{
 
	new cim[121]
 
	format(cim, charsmax(cim), "\r[End\wLe\ySS]\w Only Dust2")
 
	new menu = menu_create(cim, "fomenu_h" )
 
	menu_additem(menu,"Fegyver skin menu (By.:~>!}[E]rr0[r]{!<~) ","1",0)
 
	menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
 
	menu_display(id, menu, 0)
 
}
 
public fomenu_h(id, menu, item)
 
	{
 
	if( item == MENU_EXIT )
 
	{
 
	menu_destroy(menu);
 
	return PLUGIN_HANDLED;
 
	}
 
	new data[9], szName[64];
 
	new access, callback;
 
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
 
	new key = str_to_num(data);
 
 
 
	switch(key)
 
	{
 
		case 1:{
 
			fegyverek(id)
 
		}
 
	}
 
	menu_destroy(menu)
 
	return PLUGIN_HANDLED
 
}
 
public fegyverek(id)
 
{
 
	new cim[121]
 
	format(cim, charsmax(cim), "\r[End\wLe\ySS]\w Only Dust2 ^n\y|\w Öléseid: \r%d \y|",oles[id])
 
	new menu = menu_create(cim, "fegyverek_h" )
 
	new stats[8],bodyhits[8]
 
	new irank = get_user_stats(id,stats,bodyhits)
 
	menu_additem(menu,"Alap csomag kiválasztása \dElérve","1",0)
 
	if(oles[id] < 250)
 
	menu_additem(menu,"Katona csomag kiválasztása \d250 ölés","2",0)
 
	else
 
	menu_additem(menu,"Katona csomag kiválasztása \dElérve","2",0)
 
	if(oles[id] < 450)
 
	menu_additem(menu,"Ĺrmester csomag kiválasztása \d450 ölĂ©s","3",0)
 
	else
 
	menu_additem(menu,"Ĺrmester csomag kiválasztása \dElĂ©rve","3",0)
 
	if(oles[id] < 700)
 
	menu_additem(menu,"Mester csomag kiválasztása \d700 ölés","4",0)
 
	else
 
	menu_additem(menu,"Mester csomag kiválasztása \dElérve","4",0)
 
 
	if(irank == 1 || irank == 2 || irank == 3)
 
	menu_additem(menu,"TOP csomag kiválasztása \dElérve","6",0)
 
	else
 
	menu_additem(menu,"TOP csomag kiválasztása \dTOP1, TOP2, TOP3","6",0)
 
 
	menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
 
	menu_display(id, menu, 0)
 
}
 
public fegyverek_h(id, menu, item)
 
	{
 
	if( item == MENU_EXIT )
 
	{
 
	menu_destroy(menu);
 
	return PLUGIN_HANDLED;
 
	}
 
	new data[9], 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 stats[8],bodyhits[8]
 
	new irank = get_user_stats(id,stats,bodyhits)
 
	switch(key)
 
	{
 
		case 1:{
 
			if(csomag[id] != 0)
 
			{
 
				print_color(id, "!g[Információ]!y Sikeresen kiválasztottad az !talap!y csomagot!")
 
				csomag[id] = 0	
 
			}
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
		case 2:{
 
			if(csomag[id] != 1)
 
			{
 
				if(oles[id] >= 250)
 
				{
 
					print_color(id, "!g[Információ]!y Sikeresen kiválasztottad a !Katona!y csomagot!")
 
					csomag[id] = 1
 
				}
 
				else
 
				{
 
					print_color(id, "!g[Információ]!y Sajnálom túl kevés ölésed van!")
 
					fegyverek(id)
 
				}
 
			}
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
		case 3:{
 
			if(csomag[id] != 2)
 
			{
 
				if(oles[id] >= 450)
 
				{
 
					print_color(id, "!g[Információ]!y Sikeresen kiválasztottad az !Őrmester!y csomagot!")
 
					csomag[id] = 2
 
				}
 
				else
 
				{
 
					print_color(id, "!g[Információ]!y Sajnálom túl kevés ölésed van!")
 
					fegyverek(id)
 
				}
 
			}
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
		case 4:{
 
			if(csomag[id] != 3)
 
			{
 
				if(oles[id] >= 750)
 
				{
 
					print_color(id, "!g[Információ]!y Sikeresen kiválasztottad a !tMester!y csomagot!")
 
					csomag[id] = 3
 
				}
 
				else
 
				{
 
					print_color(id, "!g[Információ]!y Sajnálom túl kevés ölésed van!")
 
					fegyverek(id)
 
				}	
 
			}
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
 
		case 5:{
 
			if(csomag[id] != 5)
 
			{
 
				if(irank == 1 || irank == 2 || irank == 3)
 
				{
 
					print_color(id, "!g[Információ]!y Sikeresen kiválasztottad az !ttop!y csomagot!")
 
					csomag[id] = 5
 
				}
 
				else
 
				{
 
					print_color(id, "!g[Információ]!y Sajnálom nem vagy top1, top2, top3!")
 
					fegyverek(id)
 
				}
 
			}
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
 
			else
 
			{
 
				print_color(id, "!g[Információ]!y Éppen ezt a !tcsomagot!y használod!")
 
				fegyverek(id)
 
			}
 
		}
 
	}
 
	menu_destroy(menu)
 
	return PLUGIN_HANDLED
 
}
 
public Event_Change_Weapon(id)
 
{
 
	new fgy = get_user_weapon(id)
 
 
	}
 
	if(csomag[id] == 1 && fgy == CSW_AWP)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/katona_csomag/v_awp.mdl")
	}
 
	if(csomag[id] == 1 && fgy == CSW_AK47)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/katona_csomag/v_ak47.mdl")
	}
 
	if(csomag[id] == 1 && fgy == CSW_M4A1)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/katona_csomag/v_m4a1.mdl")
	}
 
	if(csomag[id] == 1 && fgy == CSW_DEAGLE)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/katona_csomag/v_deagle.mdl")
	}
 
	if(csomag[id] == 2 && fgy == CSW_AWP)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/ormester_csomag/v_awp.mdl")
	}
 
	if(csomag[id] == 2 && fgy == CSW_AK47)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/ormester_csomag/v_ak47.mdl")
	}
 
	if(csomag[id] == 2 && fgy == CSW_M4A1)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/ormester_csomag/v_m4a1.mdl")
	}
 
	if(csomag[id] == 2 && fgy == CSW_DEAGLE)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/ormester_csomag/v_deagle.mdl")
	}
 
	if(csomag[id] == 3 && fgy == CSW_AWP)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/mester_csomag/v_awp.mdl")
	}
 
	if(csomag[id] == 3 && fgy == CSW_AK47)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/mester_csomag/v_ak47.mdl")
	}
 
	if(csomag[id] == 3 && fgy == CSW_M4A1)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/mester_csomag/v_m4a1.mdl")
	}
 
	if(csomag[id] == 3 && fgy == CSW_DEAGLE)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/mester_csomag/v_deagle.mdl")
	}
 
	if(csomag[id] == 5 && fgy == CSW_AWP)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/top/v_awp.mdl")
	}
 
	if(csomag[id] == 5 && fgy == CSW_AK47)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/top/v_ak47.mdl")
	}
 
	if(csomag[id] == 5 && fgy == CSW_M4A1)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/top/v_m4a1.mdl")
	}
 
	if(csomag[id] == 5 && fgy == CSW_DEAGLE)
 
	{
 
		set_pev(id, pev_viewmodel2, "models/top/v_deagle.mdl")
	}
 
}
 
stock print_color(const id, const input[], any:...)
 
{
 
        new count = 1, players[32]
 
        static msg[191]
 
        vformat(msg, 190, input, 3)
 
 
 
        replace_all(msg, 190, "!g", "^4")
 
        replace_all(msg, 190, "!y", "^1")
 
        replace_all(msg, 190, "!t", "^3")
 
        replace_all(msg, 190, "á", "á")
 
        replace_all(msg, 190, "é", "Ă©")
 
        replace_all(msg, 190, "í", "Ă)
 
        replace_all(msg, 190, "ó", "Ăł")
 
        replace_all(msg, 190, "ö", "ö")
 
        replace_all(msg, 190, "ő", "Ĺ‘")
 
        replace_all(msg, 190, "ú", "Ăş")
 
        replace_all(msg, 190, "ü", "ĂĽ")
 
        replace_all(msg, 190, "ű", "ű")
 
        replace_all(msg, 190, "Á", "Ă")
 
        replace_all(msg, 190, "É", "É")
 
        replace_all(msg, 190, "Í", "ĂŤ")
 
        replace_all(msg, 190, "Ó", "Ă“")
 
        replace_all(msg, 190, "Ö", "Ă–")
 
        replace_all(msg, 190, "Ő", "Ĺ")
 
        replace_all(msg, 190, "Ú", "Ăš")
 
        replace_all(msg, 190, "Ü", "Ăś")
 
        replace_all(msg, 190, "Ű", "Ű")       
 
 
 
        if (id) players[0] = id; else get_players(players, count, "ch")
 
        {
 
                for (new i = 0; i < count; i++)
 
                {
 
                        if (is_user_connected(players[i]))
 
                        {
 
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
 
                                write_byte(players[i])
 
                                write_string(msg)
 
                                message_end()
 
                        }
 
                }
 
        }
 
        return PLUGIN_HANDLED
 
}
 
public mentes(id)
 
{
 
	new name[32]
 
	get_user_name(id, name, 31)
 
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s", name)
 
	format(vaultdata,255,"%i",oles[id])
 
	nvault_set(vault,vaultkey,vaultdata)
 
	return PLUGIN_CONTINUE
 
}
 
public betoltes(id)
 
{
 
	new name[32]
 
	get_user_name(id, name, 31)
 
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s", name)
 
	format(vaultdata,255,"%i",oles[id])
 
	nvault_get(vault,vaultkey,vaultdata,255)
 
	replace_all(vaultdata, 255, "#", " ")
 
	new a_o[32]
 
	parse(vaultdata, a_o, 31)
 
	oles[id] = str_to_num(a_o)
 
	return PLUGIN_CONTINUE
 
}
 
public client_putinserver(id)
 
{
 
	gyoztes[id] = false
 
	vip[id] = 0
 
	new name[32]
 
	get_user_name(id, name, 31)
 
	csomag[id] = 0
 
 
}
 
public client_connect(id)
 
{
 
	betoltes(id)
 
}
 
public client_disconnect(id)
 
{
 
	mentes(id)
 
}