block load
{
	es_xsetinfo emh_enable 0
	es_load EinsMenu
	if (server_var(emh_enable) equalto "0") do
	{
		es_msg #green EMH: EinsMenu not properly installed. Unloading EinsMenuHelper...
		es_xdelayed .2 es_xunload EinsMenuHelper
	}
	if (server_var(emh_enable) equalto "1") do
	{
		es_keygroupcreate emh_menulist
		es_xsetinfo emh_userid 0
		es_createplayerlist emh_playerlist
		es_foreachkey emh_userid in emh_playerlist "es_xdoblock EinsMenuHelper/CheckStatus"
		es_keygroupdelete emh_playerlist
	}
}

event player_connect
{
	es_setinfo emh_userid event_var(userid)
	es_xdoblock EinsMenuHelper/CheckStatus
}

event player_spawn
{
	es_setinfo emh_userid event_var(userid)
	es_xdoblock EinsMenuHelper/CheckStatus
}

event player_activate
{
	es_setinfo emh_userid event_var(userid)
	es_xdoblock EinsMenuHelper/CheckStatus
}

event player_disconnect
{
	es_keydelete emh_menulist event_var(userid)
}

block CheckStatus
{
	es_xsetinfo emh_check 0
	es_keygetvalue emh_check emh_menulist event_var(userid) check
	if (server_var(emh_check) equalto "0") do
	{
		es_keycreate emh_menulist event_var(userid)
		es_keysetvalue emh_menulist event_var(userid) check 1
		es_keysetvalue emh_menulist event_var(userid) menu 0
	}
}

block unload
{
	es_unload EinsMenu
	es_xsetinfo emh_enable 0
	es_keygroupdelete emh_menulist
}

event player_say
{
	if (event_var(text) equalto server_var(emh_trigger)) do
	{
		if (server_var(emh_allowdead) equalto "1") do
		{
			if (server_var(emh_adminonly) equalto "1") do
			{
				if (event_var(es_userteam) equalto "2") do
				{
					es_setinfo emh_userid event_var(userid)
					es_keysetvalue emh_menulist server_var(emh_userid) menu 1
					es_xdoblock EinsMenuHelper/DispMenu
				}
			}
			if (event_var(es_userteam) equalto "2") do
			{
				es_setinfo emh_userid event_var(userid)
				es_keysetvalue emh_menulist server_var(emh_userid) menu 1
				es_xdoblock EinsMenuHelper/DispMenu
			}
		}
		if (server_var(emh_allowdead) equalto "0") do
		{
			es_xsetinfo emh_dead 0
			es_getplayerprop emh_dead event_var(userid) "CCSPlayer.baseclass.pl.deadflag"
			if (server_var(emh_dead) equalto "0") do
			{
				if (event_var(es_userteam) equalto "2") do
				{
					if (event_var(es_steamid) in server_var(emh_admins)) do
					{
						es_setinfo emh_userid event_var(userid)
						es_keysetvalue emh_menulist server_var(emh_userid) menu 1
						es_xdoblock EinsMenuHelper/DispMenu
					}
				}
				if (event_var(es_userteam) equalto "2") do
				{
					es_setinfo emh_userid event_var(userid)
					es_keysetvalue emh_menulist server_var(emh_userid) menu 1
					es_xdoblock EinsMenuHelper/DispMenu
				}
			}
			if (server_var(emh_dead) equalto "1") do
			{
				es_tell event_var(userid) #green EMH: You must be alive to use the menu
			}
		}
	}
}

event es_client_command
{
	if (event_var(command) equalto server_var(emh_trigger)) do
	{
		if (server_var(emh_allowdead) equalto "1") do
		{
			es_setinfo emh_userid event_var(userid)
			es_keysetvalue emh_menulist server_var(emh_userid) menu 1
			es_xdoblock EinsMenuHelper/DispMenu
		}
		if (server_var(emh_allowdead) equalto "0") do
		{
			es_xsetinfo emh_dead 0
			es_getplayerprop emh_dead event_var(userid) "CCSPlayer.baseclass.pl.deadflag"
			if (server_var(emh_dead) equalto "0") do
			{
				es_setinfo emh_userid event_var(userid)
				es_keysetvalue emh_menulist server_var(emh_userid) menu 1
				es_xdoblock EinsMenuHelper/DispMenu
			}
			if (server_var(emh_dead) equalto "1") do
			{
				es_tell event_var(userid) #green EMH: You must be alive to use the menu
			}
		}
	}
	if (event_var(command) equalto "menuselect") do
	{
		if (event_var(commandstring) greaterthan "0") do
		{
			es_xsetinfo emh_menucheck 0
			es_keygetvalue emh_menucheck emh_menulist event_var(userid) menu
			if (server_var(emh_menucheck) notequalto "0") do
			{
				es_setinfo emh_userid event_var(userid)
				if (event_var(commandstring) equalto "1") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 1
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 9
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 16
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 23
				}
				if (event_var(commandstring) equalto "2") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 2
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 10
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 17
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 24
				}
				if (event_var(commandstring) equalto "3") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 3
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 11
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 18
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 25
				}
				if (event_var(commandstring) equalto "4") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 4
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 12
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 19
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 26
				}
				if (event_var(commandstring) equalto "5") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 5
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 13
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 20
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 27
				}
				if (event_var(commandstring) equalto "6") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 6
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 14
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 21
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 28
				}
				if (event_var(commandstring) equalto "7") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 7
					if (server_var(emh_menucheck) equalto "2") then es_xsetinfo emh_menuitem 15
					if (server_var(emh_menucheck) equalto "3") then es_xsetinfo emh_menuitem 22
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 29
				}
				if (event_var(commandstring) equalto "8") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem 8
					if (server_var(emh_menucheck) equalto "2") then if (server_var(emh_choices) lessthan "16") then es_xsetinfo emh_menuitem 0
					if (server_var(emh_menucheck) equalto "2") then if (server_var(emh_choices) notlessthan "16") then es_xsetinfo emh_menuitem back
					if (server_var(emh_menucheck) equalto "3") then if (server_var(emh_choices) lessthan "23") then es_xsetinfo emh_menuitem 0
					if (server_var(emh_menucheck) equalto "3") then if (server_var(emh_choices) notlessthan "23") then es_xsetinfo emh_menuitem back
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem 30
				}
				if (event_var(commandstring) equalto "9") do
				{
					if (server_var(emh_menucheck) equalto "1") then es_xsetinfo emh_menuitem next
					if (server_var(emh_menucheck) equalto "2") then if (server_var(emh_choices) lessthan "16") then es_xsetinfo emh_menuitem back
					if (server_var(emh_menucheck) equalto "2") then if (server_var(emh_choices) notlessthan "16") then es_xsetinfo emh_menuitem next
					if (server_var(emh_menucheck) equalto "3") then if (server_var(emh_choices) lessthan "23") then es_xsetinfo emh_menuitem back
					if (server_var(emh_menucheck) equalto "3") then if (server_var(emh_choices) notlessthan "23") then es_xsetinfo emh_menuitem next
					if (server_var(emh_menucheck) equalto "4") then es_xsetinfo emh_menuitem back
				}
				if (event_var(commandstring) equalto "10") do
				{
					es_keysetvalue emh_menulist event_var(userid) menu 0
					es_xsetinfo emh_menuitem exit
				}
				es_xsetinfo emh_money 0
				if (server_var(emh_menuitem) notequalto "exit") then es_getmoney emh_money event_var(userid)
				if (server_var(emh_menuitem) notequalto "exit") then es_xdoblock EinsMenuHelper/MenuCheck
			}
		}
	}
}

block MenuCheck
{
	if (server_var(emh_menuitem) notequalto "next") do
	{
		if (server_var(emh_menuitem) notequalto "back") do
		{
			if (server_var(emh_menuitem) notgreaterthan server_var(emh_choices)) do
			{
				es_xsetinfo emh_formatcost 0
				es_xsetinfo emh_formataction 0
				es_xsetinfo emh_formatnoaction 0
				es_format emh_formatcost "emh_choice%1_cost" server_var(emh_menuitem)
				es_format emh_formataction "EinsMenu/action%1" server_var(emh_menuitem)
				es_format emh_formatnoaction "EinsMenu/noaction%1" server_var(emh_menuitem)
				if (server_var(emh_money) lessthan server_var(server_var(emh_formatcost))) do 
				{
					es_doblock server_var(emh_formatnoaction)
				}
				if (server_var(emh_money) notlessthan server_var(server_var(emh_formatcost))) do
				{
					es_math emh_money - server_var(server_var(emh_formatcost))
					es_setplayerprop server_var(emh_userid) "CCSPlayer.m_iAccount" server_var(emh_money)
					es_doblock server_var(emh_formataction)
				}
			}
			es_cexec server_var(emh_userid) slot10
			if (server_var(emh_menuitem) greaterthan server_var(emh_choices)) then es_xdoblock EinsMenuHelper/DispMenu
		}
		if (server_var(emh_menuitem) equalto "back") do
		{
			if (server_var(emh_menucheck) equalto "2") then es_keysetvalue emh_menulist server_var(emh_userid) menu 1
			if (server_var(emh_menucheck) equalto "3") then es_keysetvalue emh_menulist server_var(emh_userid) menu 2
			if (server_var(emh_menucheck) equalto "4") then es_keysetvalue emh_menulist server_var(emh_userid) menu 3
			es_xdoblock EinsMenuHelper/DispMenu
		}
	}
	if (server_var(emh_menuitem) equalto "next") do
	{
		if (server_var(emh_choices) greaterthan "8") do
		{
			if (server_var(emh_menucheck) equalto "1") then es_keysetvalue emh_menulist server_var(emh_userid) menu 2
			if (server_var(emh_menucheck) equalto "2") then es_keysetvalue emh_menulist server_var(emh_userid) menu 3
			if (server_var(emh_menucheck) equalto "3") then es_keysetvalue emh_menulist server_var(emh_userid) menu 4
			es_xdoblock EinsMenuHelper/DispMenu
		}
		if (server_var(emh_choices) notgreaterthan "8") do
		{
			es_keysetvalue emh_menulist server_var(emh_userid) menu 1
			es_xdoblock EinsMenuHelper/DispMenu
		}
	}

}

block DispMenu
{
	es_xsetinfo emh_menucheck 0
	es_keygetvalue emh_menucheck emh_menulist event_var(userid) menu
	if (server_var(emh_menucheck) equalto "1") do
	{
		es_xsetinfo emh_num 0
		es_xsetinfo emh_text 0
		es_xdoblock EinsMenuHelper/DispMenu2
		if (server_var(emh_choices) greaterthan "8") then es_xformat emh_text "%1\n->%2\n9. Next\n0. Exit\n%3" server_var(emh_header) server_var(emh_text) server_var(emh_footer)
		if (server_var(emh_choices) notgreaterthan "8") then es_xformat emh_text "%1\n->%2\n0. Exit\n%3" server_var(emh_header) server_var(emh_text) server_var(emh_footer)
		es_menu 0 server_var(emh_userid) server_var(emh_text)
	}
	if (server_var(emh_menucheck) equalto "2") do
	{
		if (server_var(emh_choices) greaterthan "8") do
		{
			es_xsetinfo emh_num 8
			es_xsetinfo emh_text2 0
			es_xdoblock EinsMenuHelper/DispMenu3
			if (server_var(emh_choices) greaterthan "15") then es_format emh_text2 "%1\n->%2\n8. Back\n9. Next\n0. Exit\n%3" server_var(emh_header) server_var(emh_text2) server_var(emh_footer)
			if (server_var(emh_choices) notgreaterthan "15") then es_format emh_text2 "%1\n->%2\n9. Back\n0. Exit\n%3" server_var(emh_header) server_var(emh_text2) server_var(emh_footer)
			es_menu 0 server_var(emh_userid) server_var(emh_text2)
		}
	}
	if (server_var(emh_menucheck) equalto "3") do
	{
		if (server_var(emh_choices) greaterthan "15") do
		{
			es_xsetinfo emh_num 15
			es_xsetinfo emh_text2 0
			es_xdoblock EinsMenuHelper/DispMenu4
			if (server_var(emh_choices) greaterthan "22") then es_format emh_text2 "%1\n->%2\n8. Back\n9. Next\n0. Exit\n%3" server_var(emh_header) server_var(emh_text2) server_var(emh_footer)
			if (server_var(emh_choices) notgreaterthan "22") then es_format emh_text2 "%1\n->%2\n9. Back\n0. Exit\n%3" server_var(emh_header) server_var(emh_text2) server_var(emh_footer)
			es_menu 0 server_var(emh_userid) server_var(emh_text2)
		}
	}
	if (server_var(emh_menucheck) equalto "4") do
	{
		if (server_var(emh_choices) greaterthan "22") do
		{
			es_xsetinfo emh_num 22
			es_xsetinfo emh_text2 0
			es_xdoblock EinsMenuHelper/DispMenu5
			es_format emh_text2 "%1\n->%2\n9. Back\n0. Exit\n%3" server_var(emh_header) server_var(emh_text2) server_var(emh_footer)
			es_menu 0 server_var(emh_userid) server_var(emh_text2)
		}
	}
}

block DispMenu2
{
	es_math emh_num + 1
	es_xsetinfo emh_formattitle 0
	es_xsetinfo emh_formatcost 0
	es_format emh_formattitle "emh_choice%1_title" server_var(emh_num)
	es_format emh_formatcost "emh_choice%1_cost" server_var(emh_num)
	if (server_var(emh_text) notequalto "0") then es_xformat emh_text "%1\n->%2. %3" server_var(emh_text) server_var(emh_num) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_text) equalto "0") then es_xformat emh_text "%1. %2" server_var(emh_num) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_num) lessthan server_var(emh_choices)) do
	{
		if (server_var(emh_num) lessthan "8") do
		{
			es_xdoblock EinsMenuHelper/DispMenu2
		}
	}
}

block DispMenu3
{
	es_math emh_num + 1
	es_setinfo emh_num_temp server_var(emh_num)
	es_math emh_num_temp - 8
	es_xsetinfo emh_formattitle 0
	es_xsetinfo emh_formatcost 0
	es_format emh_formattitle "emh_choice%1_title" server_var(emh_num)
	es_format emh_formatcost "emh_choice%1_cost" server_var(emh_num)
	if (server_var(emh_text2) notequalto "0") then es_xformat emh_text2 "%1\n->%2. %3" server_var(emh_text2) server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_text2) equalto "0") then es_xformat emh_text2 "%1. %2" server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_num) lessthan server_var(emh_choices)) do
	{
		if (server_var(emh_num) lessthan "15") do
		{
			es_xdoblock EinsMenuHelper/DispMenu3
		}
	}
}

block DispMenu4
{
	es_math emh_num + 1
	es_setinfo emh_num_temp server_var(emh_num)
	es_math emh_num_temp - 15
	es_xsetinfo emh_formattitle 0
	es_xsetinfo emh_formatcost 0
	es_format emh_formattitle "emh_choice%1_title" server_var(emh_num)
	es_format emh_formatcost "emh_choice%1_cost" server_var(emh_num)
	if (server_var(emh_text2) notequalto "0") then es_xformat emh_text2 "%1\n->%2. %3" server_var(emh_text2) server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_text2) equalto "0") then es_xformat emh_text2 "%1. %2" server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_num) lessthan server_var(emh_choices)) do
	{
		if (server_var(emh_num) lessthan "22") do
		{
			es_xdoblock EinsMenuHelper/DispMenu4
		}
	}
}

block DispMenu5
{
	es_math emh_num + 1
	es_setinfo emh_num_temp server_var(emh_num)
	es_math emh_num_temp - 22
	es_xsetinfo emh_formattitle 0
	es_xsetinfo emh_formatcost 0
	es_format emh_formattitle "emh_choice%1_title" server_var(emh_num)
	es_format emh_formatcost "emh_choice%1_cost" server_var(emh_num)
	if (server_var(emh_text2) notequalto "0") then es_xformat emh_text2 "%1\n->%2. %3" server_var(emh_text2) server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_text2) equalto "0") then es_xformat emh_text2 "%1. %2" server_var(emh_num_temp) server_var(server_var(emh_formattitle)) server_var(server_var(emh_formatcost))
	if (server_var(emh_num) lessthan server_var(emh_choices)) do
	{
		if (server_var(emh_num) lessthan "30") do
		{
			es_xdoblock EinsMenuHelper/DispMenu5
		}
	}
}