#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <nvault>
 
#define PLUGIN "Fragverseny Plugin"
#define VERSION "1.3"
#define AUTHOR "6almasok"
 
new kezdesido[32],befejido[32],ujvegeter[33][32],ujkezdoido[33][32],nobughud[33]
new bool:fragverse[33]
new bool:setdebug[33]
new bool:nincstobb[33]
new Hudbj,vault
new oles[33]
 
new top1, top2, top3;
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
	register_clcmd("say /fragverseny","verseny")
	register_clcmd("KEZDES_IDO", "kezd_kuld")
	register_clcmd("VEGETERESI_IDO", "befej_kuld")
	register_event("DeathMsg","death","a")
 
	vault = nvault_open("frag_verseny")
 
	Hudbj = CreateHudSyncObj()
}
public death()
{
	new killer = read_data(1)
	new victim = read_data(2)
	if(fragverse[killer] == true)
	{
	if(killer == victim)
	{
	oles[killer]++
	}
	}
}
public verseny(id)
{
if(get_user_flags(id)&ADMIN_CFG)
{
	new cim[121]
	new almenu[121]
	new almenu1[121]
	new Idoo[10];
	get_time("%H:%M:%S", Idoo, charsmax(Idoo))
	format(cim, charsmax(cim), "Fragverseny Beállítasok^n\rIdő: \d%s",Idoo)
	new menu = menu_create(cim, "ido_menu_h" )
 
	if(fragverse[id] == false)
	{
		format(almenu, charsmax(almenu),"\wKezdési Idő: [\d%s\w] \y(Pl.: 18:00)", ujkezdoido[id])
		menu_additem(menu,almenu,"1",0)
		format(almenu1, charsmax(almenu1),"\wVégetérési Idő: [\d%s\w] \y(Pl.: 20:00)", ujvegeter[id])
		menu_additem(menu,almenu1,"2",0)
		menu_additem(menu,"\dFragverseny Indítása","3",0)
	}
	else if(fragverse[id] == true)
	{
		format(almenu, charsmax(almenu),"\wJelenleg megy a fragverseny!", ujkezdoido[id])
		menu_additem(menu,almenu,"1",0)
		menu_additem(menu,"\rFragverseny Leállítása!","3",0)
	}
	menu_setprop(menu, MPROP_EXIT, "Kilépés");
	menu_display(id, menu, 0);
}
}
public ido_menu_h(id, menu, item)
{
if( item == MENU_EXIT )
{
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
new data[9], szName[64], name[32]
get_user_name(id, name, 31)
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:
{
	if(fragverse[id] == false)
	{
	client_cmd(id, "messagemode KEZDES_IDO")
	}
	else if(fragverse[id] == true)
	{
	verseny(id)
	}
}
case 2:
{
	if(fragverse[id] == false)
	{
	client_cmd(id, "messagemode VEGETERESI_IDO")
	}
	else if(fragverse[id] == true)
	{
	verseny(id)
	}
}
case 3:
{
	if(fragverse[id] == false)
	{
	idozonacheck(id)
	setdebug[id] = true
	nobughud[id] = 0
	nobughud[id]++
	idozonacheck(id)
	setdebug[id] = true
	nobughud[id] = 0
	nobughud[id]++
	ColorChat(id, GREEN,"^1Elindítottad a számlálót, ha annyi lesz az idő amennyit beütöttél akkor elindul a fragverseny!")
	}
	else if(fragverse[id] == true)
	{
	rakerdezes(id)
	}
	}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public rakerdezes(id)
{
	new cim[121]
	format(cim, charsmax(cim), "\rBiztosan leakarod állítani a fragversenyt?")
	new menu = menu_create(cim, "rakerd_menu_h" )	
 
	menu_additem(menu,"Igen","1",0)
	menu_additem(menu,"Nem","2",0)
 
	menu_setprop(menu, MPROP_EXIT, "Kilépes");
	menu_display(id, menu, 0);
}
public rakerd_menu_h(id, menu, item)
{
if( item == MENU_EXIT )
{
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
new data[9], szName[64], name[32]
get_user_name(id, name, 31)
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:
{
	if(fragverse[id] == true)
	{
	setdebug[id] = false
	fragverse[id] = false
	nobughud[id] = 0
	leallitotta(id)
	}
}
case 2:
{
	verseny(id)
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public leallitotta(id)
{
	set_hudmessage(255, 0, 0, -1.0, 0.15, 2, 6.0, 10.0)
	show_hudmessage(0, "Egy admin leállította a fragversenyt!^nNincs nyertes!")
}
public idozonacheck(id)
{
	new Idoo[10];
	get_time("%H:%M", Idoo, charsmax(Idoo))
 
	if(setdebug[id] == true)
	set_task(1.0, "idozonacheck",id);
 
	if(nobughud[id] >= 1 && fragverse[id] == false)
	{
		set_hudmessage(0, 255, 0, -1.0, 0.10, 0, 1.0, 1.0)
		show_hudmessage(0, "Fragverseny elkezdődik %s-kor...",ujkezdoido[id])
	}
 
	if(fragverse[id] == true)
	masikhud(id)
 
 
	if(equal(Idoo, ujkezdoido[id]))
	{
		fragverse[id] = true
		nobughud[id] = 0
	}
	else if(equal(Idoo, ujvegeter[id]))
	{
		setdebug[id] = false
		fragverse[id] = false
		nobughud[id] = 0
		setdebug[id] = false
		fragverse[id] = false
		vegevan(id)
		nobughud[id] = 0
	}
 
	return PLUGIN_CONTINUE;		
}
public vegevan(id)
{
	nincstobb[id] = true
 
	if(nincstobb[id] == true)
	{
	set_task(1.0, "alegjobbak",id);
	}
}
public alegjobbak(id)
{
	nincstobb[id] = false
	new players[32], num;
	get_players(players, num);
	SortCustom1D(players, num, "sors_legelsouj")
 
	top1 = players[0]
	top2 = players[1]
	top3 = players[2]
 
	new top1neve[33], top2neve[33], top3neve[33];
	get_user_name(top1, top1neve, charsmax(top1neve))
	get_user_name(top2, top2neve, charsmax(top2neve))
	get_user_name(top3, top3neve, charsmax(top3neve))
 
	if(num == 1)
	{
		set_hudmessage(0, 255, 0, -1.0, 0.05, 0, 6.0, 30.0)
		ShowSyncHudMsg(0, Hudbj, "A fragverseny véget ért^nHelyezések:^n1. %s",top1neve)
	}
	else if(num == 2)
	{
		set_hudmessage(0, 255, 0, -1.0, 0.05, 0, 6.0, 30.0)
		ShowSyncHudMsg(0, Hudbj, "A fragverseny véget ért^nHelyezések:^n1. %s || 2. %s",top1neve, top2neve)
	}
	else if(num >= 3)
	{
		set_hudmessage(0, 255, 0, -1.0, 0.05, 0, 6.0, 30.0)
		ShowSyncHudMsg(0, Hudbj, "A fragverseny véget ért^nHelyezések:^n1. %s || 2. %s || 3. %s ",top1neve, top2neve, top3neve)
	}
	client_print(0, print_chat, "")
}	
public sors_legelsouj(id1, id2)
{
	if(oles[id1] > oles[id2])
	return -1;
	else if(oles[id1] < oles[id2])
	return 1;
 
	return 0;
}
public masikhud(id)
{
	if(fragverse[id] == true)
	{
	new players[32], num;
	get_players(players, num);
	SortCustom1D(players, num, "sors_legelso")
 
	top1 = players[0]
	top2 = players[1]
	top3 = players[2]
 
	new top1neve[33], top2neve[33], top3neve[33];
	get_user_name(top1, top1neve, charsmax(top1neve))
	get_user_name(top2, top2neve, charsmax(top2neve))
	get_user_name(top3, top3neve, charsmax(top3neve))
 
	if(num == 1)
	{
		set_hudmessage(0, 85, 255, -1.0, 0.05, 0, 6.0, 1.0)
		ShowSyncHudMsg(0, Hudbj, "Jelenleg Fragverseny van, tart: %s-%s^n ^n1. %s KILL's: %d",ujkezdoido[id],ujvegeter[id],top1neve, oles[top1])
	}
	else if(num == 2)
	{
		set_hudmessage(0, 85, 255, -1.0, 0.05, 0, 6.0, 1.0)
		ShowSyncHudMsg(0, Hudbj, "Jelenleg Fragverseny van, tart: %s-%s^n ^n1. %s KILL's: %d || 2. %s KILL's: %d",ujkezdoido[id],ujvegeter[id], top1neve, oles[top1], top2neve, oles[top2])
	}
	else if(num >= 3)
	{
		set_hudmessage(0, 85, 255, -1.0, 0.05, 0, 6.0, 1.0)
		ShowSyncHudMsg(0, Hudbj, "Jelenleg Fragverseny van, tart: %s-%s^n ^n1. %s KILL's: %d || 2. %s KILL's: %d || 3. %s KILL's :%d",ujkezdoido[id],ujvegeter[id], top1neve, oles[top1], top2neve, oles[top2],top3neve, oles[top3])
	}
	}
	client_print(0, print_chat, "")
}
public sors_legelso(id1, id2)
{
	if(oles[id1] > oles[id2])
	return -1;
	else if(oles[id1] < oles[id2])
	return 1;
 
	return 0;
}
public kezd_kuld(id)
{
	read_args(kezdesido, charsmax(kezdesido))
	remove_quotes(kezdesido)
	new hossz = strlen(kezdesido)
 
	if(hossz < 5)
	{
		ColorChat(id, GREEN,"^1Helytelen karakter ^4formátum!")
		client_cmd(id, "messagemode KEZDES_IDO")
		if(hossz >= 6)
		{
			ColorChat(id, GREEN,"^1Helytelen karakter ^4formátum!")
			client_cmd(id, "messagemode KEZDES_IDO")
		}
	}
	else
	{
		ujkezdoido[id] = kezdesido
		verseny(id)
	}
	return PLUGIN_CONTINUE
}
public befej_kuld(id)
{
	read_args(befejido, charsmax(befejido))
	remove_quotes(befejido)
	new hossz = strlen(befejido)
 
	if(hossz < 5)
	{
		ColorChat(id, GREEN,"^1Helytelen karakter ^4formátum!")
		client_cmd(id, "messagemode VEGETERESI_IDO")
		if(hossz >= 6)
		{
			ColorChat(id, GREEN,"^1Helytelen karakter ^4formátum!")
			client_cmd(id, "messagemode VEGETERESI_IDO")
		}
	}
	else
	{
		ujvegeter[id] = befejido
		verseny(id)
	}
	return PLUGIN_CONTINUE
}
public mentes(id)
{
	new vaultkey[64],vaultdata[256], name[32]
	get_user_name(id, name, 31)
	format(vaultkey,63,"%s-FRAG", name)
	format(vaultdata,255,"%i#", oles[id])
	nvault_set(vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public betoltes(id)
{
	new vaultkey[64],vaultdata[256], name[32]
	get_user_name(id, name, 31)
	format(vaultkey,63,"%s-FRAG", name)
	format(vaultdata,255,"%i#",oles[id])
	nvault_get(vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ")
	new m_o[32]
	parse(vaultdata, m_o, 31)
	oles[id] = str_to_num(m_o)
	return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
	if(fragverse[id] == false)
	{
		oles[id] = 0
	}
	mentes(id)
}
public client_connect(id)
{
	if(fragverse[id] == false)
	{
		oles[id] = 0
	}
	betoltes(id)
}