#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Vinnice + Vieni({S}noopy)"

#define Menu1_Keys MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0
#define Menu2_Keys MENU_KEY_1|MENU_KEY_2|MENU_KEY_0

new g_limit, g_timeleft
new round_num[2], g_cvar[6], g_chosen[5]

new const Menu_Prefix[] = "\d[SzerverNév] \w";
new const Chat_Prefix[] = "!g[SzerverNv] !n";

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("HLTV", "Ev_RoundStart", "a", "1=0", "2=0")
	
	register_menu("VotePMenu", Menu1_Keys, "menu_voteplayer")
	register_menu("VoteAMenu", Menu2_Keys, "menu_voteadmin")
	
	g_cvar[5] = register_cvar("limiton", "1")
	g_cvar[0] = register_cvar("cod_limit1","20")
	g_cvar[1] = register_cvar("cod_limit2","40")
	g_cvar[2] = register_cvar("cod_limit3","50")
	g_cvar[3] = register_cvar("cod_limit4","60")
	g_cvar[4] = register_cvar("cod_def_class","0")
	
	register_clcmd("say /limit","Ev_WroteLimit")
	register_clcmd("say /limitstart", "Ev_WroteStarting", ADMIN_KICK)
}

showMenu_Vote(id, Menu_Mod)
{
	static menu[2048]	
	new len
	
	if(is_user_connected(id) && !is_user_bot(id))
	{
		if(Menu_Mod == 0)
		{
			len += formatex(menu[len], charsmax(menu) - len, "\d|--------------------------------^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|%sSzintlimit szavazás^n", Menu_Prefix)
			len += formatex(menu[len], charsmax(menu) - len, "\d|>------------------------------->^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r1.\w Max %d szint^n", get_pcvar_num(g_cvar[0]))
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r2.\w Max %d szint^n", get_pcvar_num(g_cvar[1]))
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r3.\w Max %d szint^n", get_pcvar_num(g_cvar[2]))
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r4.\w Max %d szint^n", get_pcvar_num(g_cvar[3]))
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r5.\w Ne legyen limit^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|>------------------------------->^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r0.\y Kilépés^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|--------------------------------")
			
			set_pdata_int(id, 205, 0)
			show_menu(id, Menu1_Keys, menu, -1, "VotePMenu")
		}
		if(Menu_Mod == 1)
		{
			len += formatex(menu[len], charsmax(menu) - len, "\d|--------------------------------^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|%sSzavazás indító^n", Menu_Prefix)
			len += formatex(menu[len], charsmax(menu) - len, "\d|>------------------------------->^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\y   Biztosan szavazást indítasz?^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|>------------------------------->^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r1.\w Igen^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r2.\w Nem^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|>------------------------------->^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|\r0.\y Kilépés^n")
			len += formatex(menu[len], charsmax(menu) - len, "\d|--------------------------------")
			
			set_pdata_int(id, 205, 0)
			show_menu(id, Menu2_Keys, menu, -1, "VoteAMenu")
		}
	}
}

public menu_voteplayer(id, key)
{
	if(!is_user_connected(id) || is_user_bot(id) || key == 9 || g_timeleft == 1)
		return

	new name[32]
	get_user_name(id, name, 31)
	
	g_chosen[key]++
	client_printcolor(id, "%s!g%s!n szintlimit szavazata: !t%d", Chat_Prefix, name, key == 4 ? 0 : get_pcvar_num(g_cvar[key]))
}

public menu_voteadmin(id, key)
{
	if(!is_user_connected(id) || is_user_bot(id))
		return

	new name[32]
	get_user_name(id, name, 31)
	
	client_printcolor(id, "%sAdmin: !g%s!n szintlimit szavazst indtott!", Chat_Prefix, name)
	
	g_chosen[0] = 0
	g_chosen[1] = 0
	g_chosen[2] = 0
	g_chosen[3] = 0
	g_chosen[4] = 0
	g_timeleft = 0
	round_num[1] = 1
	
	showMenu_Vote(0, 0)
	set_task(10.0, "Ev_Timeleft")
}

public Ev_RoundStart(id) 
{
	round_num[0]++
	if(round_num[0] >= 2 && round_num[1] == 0)
	{
		g_timeleft = 0
		showMenu_Vote(id, 0)
		round_num[1] = 1
		set_task(10.0, "Ev_Timeleft")
	}

	new ClassName[65]
	
	cod_get_class_name(0, ClassName, 64)
	
	if(round_num[1] == 1)
		client_printcolor(id, "%sA jelenlegi szintlimit: !t%d", Chat_Prefix, g_limit)
		
	if(round_num[1] == 1 && cod_get_user_level(id) >= g_limit && g_limit != 0 )
	{
		cod_set_user_class(id, get_pcvar_num(g_cvar[4]))
		client_printcolor(id, "%sA szintlimit átállította kasztodat erre: !t%s", Chat_Prefix, ClassName)
	}
}

public Ev_WroteLimit(id) 
{
	new g_limitstr[5]
	num_to_str(g_limit, g_limitstr, 4)
	client_printcolor(id, "%sA jelenlegi limit !t%s!n!", Chat_Prefix, g_limit == 0 ? "nincs meghatrozva":g_limitstr)
}

public Ev_WroteStarting(id)
{	
	showMenu_Vote(id, 1)
}

public Ev_Timeleft(id)
{
	g_timeleft = 1
	
	if(g_chosen[4] >= g_chosen[3] && g_chosen[4] >= g_chosen[2] && g_chosen[4] >= g_chosen[1] && g_chosen[4] >= g_chosen[0])
		g_limit = 0
	else if(g_chosen[3] >= g_chosen[4] && g_chosen[3] >= g_chosen[2] && g_chosen[3] >= g_chosen[1] && g_chosen[3] >= g_chosen[0])
		g_limit = get_pcvar_num(g_cvar[3])
	else if(g_chosen[2] >= g_chosen[4] && g_chosen[2] >= g_chosen[3] && g_chosen[2] >= g_chosen[1] && g_chosen[2] >= g_chosen[0])
		g_limit = get_pcvar_num(g_cvar[2])
	else if(g_chosen[1] >= g_chosen[4] && g_chosen[1] >= g_chosen[2] && g_chosen[1] >= g_chosen[3] && g_chosen[1] >= g_chosen[0])
		g_limit = get_pcvar_num(g_cvar[1])
	else if(g_chosen[0] >= g_chosen[4] && g_chosen[0] >= g_chosen[2] && g_chosen[0] >= g_chosen[1] && g_chosen[0] >= g_chosen[3])
		g_limit = get_pcvar_num(g_cvar[0])
		
	client_printcolor(id, "%sA szintlimit(!t%d!n) a kvetkez krben rvnybe lp!", Chat_Prefix, g_limit)
}

stock client_printcolor(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, "!n", "^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
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
