#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <dhudmessage>
#include <fun>
#include <hamsandwich>
 
#define PLUGIN "FegyverMenu+Mapszavaztato"
#define VERSION "1.0"
#define AUTHOR "DeRoiD"
 
new mp[33], puska = 0, ujra, bool:kpkor, mp2, korok, mp3, maxspeed, counterszam, terrorszam
new bool:verseny
new top1, top2, top3
new oles[33]
new maxoles
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /timeleft", "ido")
	register_clcmd("say timeleft", "ido")
	register_clcmd("say /top", "hud")
	register_event("DeathMsg","death","a")
	register_clcmd("verseny_inditasa", "verseny_inditasa")
	RegisterHam(Ham_Spawn, "player", "inditas", 1)
	register_logevent("ujkor", 2, "1=Round_Start")	
	register_logevent("kornull", 2, "0=World triggered", "1&Restart_Round_")
	register_logevent("kornull", 2, "0=World triggered", "1=Game_Commencing")
	register_logevent("korveg", 2, "0=World triggered", "1=Round_End")
	ujra = get_cvar_pointer("sv_restart")
	register_event("CurWeapon", "Event_Change_Weapon", "be", "1=1")
	maxspeed = get_cvar_pointer("sv_maxspeed")
	lol()
}
public ido(id)
	print_color(id, "!g[Információ]!y Még!t %d!y kör van hátra!", 35-korok)
public ujkor(id) {
	if(verseny)
	return PLUGIN_HANDLED
	if(kpkor == false)
	{
		puska = 0
		korok++
		if(korok < 35) {
			print_color(id, "!g[Információ]!y Játékosok!t %d!y/!g32!y  | IP: !t37.221.210.30:27018!y | Kör: !t%d!y/!g35 !y | !twww.fb.com/subb.server", get_playersnum(), korok)
			set_dhudmessage(42, 127, 255, -1.0, 0.20, 0, 6.0, 12.0)
			show_dhudmessage(id, "%d kör van hátra!", 35-korok)
 
		}
		else
		{
			mp3 = 5
			atvalt()
			set_pcvar_num(maxspeed, 0)
		}
	}
	return PLUGIN_HANDLED
}
public atvalt()
{
	set_hudmessage(42, 127, 255, -1.0, 0.20, 0, 6.0, 1.1)
	show_hudmessage(0, "%d másodperc múlva pálya váltás!", mp3)
	if(mp3 > 0)
	{
		client_cmd(0, "spk buttons/lightswitch2.wav")
		mp3--
		set_task(1.0, "atvalt")
	}
	else
	{
		server_cmd("changelevel ^"de_dust2_snow^"")	
	}
}	
public Event_Change_Weapon(id)
{
	new fgy = get_user_weapon(id)
	if(kpkor == true && fgy != CSW_DEAGLE)
	{
		engclient_cmd(id, "weapon_deagle")
	}
}
public lol() {
	//set_pcvar_num(ujra, 1)
	kpkor = true
	mp2 = 45
	set_task(1.0, "szam")
}
public szam(id) {
	client_print(0, print_center, "%d másodpercig bemelegĂtĹ‘ kör!", mp2)
	if(mp2 > 0)
	{
		mp2--
		set_task(1.0, "szam")
	}
	else
	{
		kpkor = false
		set_pcvar_num(ujra, 1)
	}
}
public korveg()
{
	counterszam = 0
	terrorszam = 0
	puska = 0
}
public kornull()
	korok = 0
public inditas(id) {
	if(!is_user_alive(id))
	return PLUGIN_HANDLED
	if(korok < 35) {
		if(kpkor == false)
		{
			if(user_has_weapon(id, CSW_C4))
			{
				strip_user_weapons(id)
				give_item(id, "weapon_knife")
				give_item(id, "weapon_c4")
			}
			else
			{
				strip_user_weapons(id)
				give_item(id, "weapon_knife")
			}
			give_item(id, "item_kevlar")
			give_item(id, "weapon_hegrenade")
			give_item(id, "weapon_flashbang")
			give_item(id, "weapon_deagle")
			cs_set_user_bpammo(id, CSW_DEAGLE, 35)
			if(cs_get_user_team(id) == CS_TEAM_CT)
				cs_set_user_defuse(id, 1)
			remove_task(id)
			mp[id] = 15
			fegyvermenu(id)
			set_task(1.0, "vissza", id)
			cs_set_user_money(id, 0)
		}
		else
		{
			strip_user_weapons(id)
			cs_set_user_money(id, 0)
			give_item(id, "weapon_deagle")
			cs_set_user_bpammo(id, CSW_DEAGLE, 35)
		}
	}
	return PLUGIN_HANDLED
}
public vissza(id)
{
	if(mp[id] > 0)
	{
		mp[id] -= 1
		set_task(1.0,"fegyvermenu", id)
		set_task(1.0, "vissza", id)
	}
	else
	{
		remove_task(id)
		print_color(id, "!g[Információ]!y Sajnos lejárt az idő, nem választottál semmit!")
		show_menu(id, 0, "^n", 1)
	}
}
public fegyvermenu(id)
{
	new players[32]
	get_players(players,terrorszam,"e","TERRORIST")
	get_players(players,counterszam,"e","CT")
	new cim[121], limit[121]
	format(cim, charsmax(cim), "\r.:[S]u\wB[B]a\y$$]:.\w Fegyvermenü \r- \y[\wMásodperc: \r%d\y]",mp[id])
	if(terrorszam >= 4 && counterszam >= 4 && puska <= 3)
	format(limit, charsmax(limit), "AWP \dĂ–sszesen %d darab maradt", 4-puska)
	else if(terrorszam < 4 && counterszam < 4 || counterszam < 4 || terrorszam < 4)
	format(limit, charsmax(limit), "AWP \d4v4-től van. (%dv%d)", terrorszam, counterszam)
	else if(puska >= 4)
	format(limit, charsmax(limit), "AWP \dElfogyott")
	new menu = menu_create(cim, "fegyvermenu_h" )
 
	menu_additem(menu,"Marverick \dM4A1","1",0)
	menu_additem(menu,"Alexander Kalasnyikov \dAK47","2",0)
	menu_additem(menu,limit,"3",0)
	menu_additem(menu,"St. Étienne \dFAMAS","4",0)
	menu_additem(menu,"SMG \dMP5 NAVY","5",0)
	menu_additem(menu,"Shotgun \dM3","6",0)
	menu_additem(menu,"Távcsöves puska \dSCOUT","7",0)
	menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
}
public fegyvermenu_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:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_m4a1")
			cs_set_user_bpammo(id, CSW_M4A1, 90)
			print_color(id, "!g[Információ]!y Te az!t M4A1-t!y választottad!")
		}
		case 2:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 90)
			print_color(id, "!g[Információ]!y Te az!t AK47-t!y választottad!")
		}
		case 3:{
			new players[32]
			get_players(players,terrorszam,"e","TERRORIST")
			get_players(players,counterszam,"e","CT")
			if(terrorszam >= 4 && counterszam >= 4 && puska < 4){
				remove_task(id)
				show_menu(id, 0, "^n", 1)
				puska++
				give_item(id, "weapon_awp")
				cs_set_user_bpammo(id, CSW_AWP, 90)
				print_color(id, "!g[Információ]!y Te az!t AWP-t!y választottad!")
			}
			else if(terrorszam < 4 && counterszam < 4)
				print_color(id, "!g[Információ]!y Az AWP-t csak!t 4v4!y-től tudod használni!")
			else if(puska >= 4)
				print_color(id, "!g[Információ]!y Sajnálom az!t AWP!y elfogyott!")
		}
		case 4:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_famas")
			cs_set_user_bpammo(id, CSW_M4A1, 90)
			print_color(id, "!g[Információ]!y Te a!t FAMAS-t!y választottad!")
		}
		case 5:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_mp5navy")
			cs_set_user_bpammo(id, CSW_MP5NAVY, 120)
			print_color(id, "!g[Információ]!y Te az!t MP5-t!y választottad!")
		}
		case 6:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_m3")
			cs_set_user_bpammo(id, CSW_M3, 50)
			print_color(id, "!g[Információ]!y Te az!t M3-t!y választottad!")
		}
		case 7:{
			remove_task(id)
			show_menu(id, 0, "^n", 1)
			give_item(id, "weapon_scout")
			cs_set_user_bpammo(id, CSW_SCOUT, 90)
			print_color(id, "!g[Információ]!y Te az!t SCOUT-t!y választottad!")
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}			
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 death(){
	new killer = read_data(1)
	new victim = read_data(2)
 
	if(killer == victim)
	{
		return PLUGIN_HANDLED
	}
 
	oles[killer]++
 
	if(oles[killer] >= maxoles && verseny)
	{
		new kname[32]
		get_user_name(killer, kname, charsmax(kname))
		set_dhudmessage(0, 255, 0, -1.0, 0.25, 0, 6.0, 12.0)
		show_dhudmessage(0, "%s nyert!", kname)
	}
	return PLUGIN_HANDLED
}
public verseny_inditasa(id) {
	if(get_user_flags(id) & ADMIN_IMMUNITY){
		if(!verseny)
		{
			verseny = true
			maxoles = 50
		}
	}
}
public hud() {
	new ps[32], num
	get_players(ps, num, "c")
 
	SortCustom1D(ps, num, "sort_bestplayer")
 
	top1 = ps[0]
	top2 = ps[1]
	top3 = ps[2]
 
	new top1neve[33], top2neve[32], top3neve[32]
	get_user_name(top1, top1neve, charsmax(top1neve))
	get_user_name(top2, top2neve, charsmax(top2neve))
	get_user_name(top3, top3neve, charsmax(top3neve))
	for(new i; i < num; i++)
	{
		if(verseny){
			set_dhudmessage(10, 10, 250, 0.03, 0.26, 0, 6.0, 5.0)
			show_dhudmessage(i, "1. %s - %d^n2. %s - %d^n3. %s - %d",top1neve, oles[top1], top2neve, oles[top2], top3neve, oles[top3])
		}
	}
}
public sort_bestplayer(id1, id2)
{
	if(oles[id1] > oles[id2])
	return -1;
	else if(oles[id1] < oles[id2])
	return 1;
 
	return 0;
}