block load
{
	es_xsetinfo hns_whistle "Version 1.2"
	es_makepublic hns_whistle
	es_xsetinfo hns_whistle_dls 0
	es_xsetinfo hns_whistle_keyid 0
	es_xsetinfo hns_whistle_temp 0
	es_xsetinfo hns_whistle_er 0
	es_xsetinfo hns_whistle_idead 0
	es_xsetinfo hns_whistle_pname 0
	es_xsetinfo hns_whistle_msga 0
	es_xsetinfo hns_whistle_msgb 0
	es_xsetinfo hns_whistle_msgc 0
	es_xsetinfo hns_whistle_args 0
	es_xsetinfo hns_whistle_cuid 0
	es_xsetinfo hns_whistle_cuna 0
	es_xregcmd fake_whistle whistle/whistle3 "Causes the player specified to whistle."
	es_xregcmd whistle whistle/whistle2 "Cause the console or a player to whistle."
	es_xregclientcmd whistle whistle/whistle "Causes the player to whistle."
	es_doblock whistle/config
	es_keycreate hns_whistle
}

block unload
{
	es_keydelete hns_whistle
}

block config
{
	// The number of whistles a player is aloud per round
	es_xsetinfo hns_whistle_limit 10
	// The sound to play when a player whistles (default="hideandseek/whistle.mp3")
	es_xsetinfo hns_whistle_sound "hideandseek/whistle.mp3"
	// Distance sound travels (default=0.7)
	es_xsetinfo hns_whistle_distance 0.7

	// The name said when console whistles (default="The Console")
	es_xsetinfo hns_whistle_console "The Console"
	// The sound to play when the console whistles (default="hideandseek/whistle.mp3")
	es_xsetinfo hns_whistle_console_sound "hideandseek/whistle.mp3"
}

block whistle
{
	es_xgetcmduserid hns_whistle_er
	es getplayerinfo hns_whistle_idead server_var(hns_whistle_er) isdead
	if (server_var(hns_whistle_idead) == 0) do
	{
		es_keygetvalue hns_whistle_keyid hns_whistle server_var(hns_whistle_er)
		if (server_var(hns_whistle_keyid) < server_var(hns_whistle_limit)) do
		{
			if (event_var(es_userteam) = 2) do
			{
				es_math hns_whistle_keyid + 1
				es_keysetvalue hns_whistle server_var(hns_whistle_er) server_var(hns_whistle_keyid)
				es_getplayername hns_whistle_pname server_var(hns_whistle_er)
				es_format hns_whistle_msga "#green%1#lightgreen whistled!"  server_var(hns_whistle_pname)
				es_msg #multi server_var(hns_whistle_msga)
				es_emitsound player server_var(hns_whistle_er) server_var(hns_whistle_sound) 1.0 server_var(hns_whistle_distance)
			}
		}
		else do
		{
			es_tell server_var(hns_whistle_er) #lightgreen "You have reached the whistle limit for this round!"
		}
	}
	else do
	{
		es_tell server_var(hns_whistle_er) #lightgreen "You can not whistle when dead!"
	}
}

block whistle2
{
	es_format hns_whistle_msgb "#green%1#lightgreen whistled!"  server_var(hns_whistle_console)
	es_msg #multi server_var(hns_whistle_msgb)
	es_cexec_all play server_var(hns_whistle_console_sound)
}

block whistle3
{
	es_getargs hns_whistle_args
	es_getuserid hns_whistle_cuid server_var(hns_whistle_args)
	es_getplayername hns_whistle_cuna server_var(hns_whistle_cuid)
	es_format hns_whistle_msgc "#green%1#lightgreen whistled!" server_var(hns_whistle_cuna)
	es_msg #multi server_var(hns_whistle_msgc)
	es_emitsound player server_var(hns_whistle_cuid) server_var(hns_whistle_sound) 1.0 server_var(hns_whistle_distance)
}

event es_map_start
{
	es_format hns_whistle_dls "sound/%1" server_var(hns_whistle_sound)
	es_stringtable downloadables server_var(hns_whistle_dls)
	es_format hns_whistle_dls "sound/%1" server_var(hns_whistle_console_sound)
	es_stringtable downloadables server_var(hns_whistle_dls)
}

event round_start
{
	es_keydelete hns_whistle
	es_keycreate hns_whistle
}

event player_spawn
{
	es_soon es_keysetvalue hns_whistle event_var(userid) 0
}
