block load
{
	es_xset se_check 0
	es_xexists se_check command entspawn
	if (server_var(se_check) == 0) then es_xregcmd entspawn entspawn/entspawn "Spawn entities"
}

block entspawn
{
	es_xset se_type 0
	es_xset se_spawn 0
	es_xset se_error 0
	es_xset se_args 0
	es_xset se_userid 0
	es_xset se_x 0
	es_xset se_y 0
	es_xset se_z 0
	es_xset se_pitch 0
	es_xset se_yaw 0
	es_xset se_model 0
	es_xset se_freeze 0
	es_xgetargc se_args
	if (server_var(se_args) < 2) do
	{
		es_xset se_error 1
		es_xdbgmsg 0 entspawn <physics/dynamic/give> <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
	}
	if (server_var(se_error) == 0) do
	{
		es_xgetargv se_type 1
		if (server_var(se_type) == "physics") do
		{
			if (server_var(se_args) < 3) do
			{
				es_xset se_error 1
				es_xdbgmsg 0 entspawn physics <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
			}
		}
		else do
		{
			if (server_var(se_type) == "dynamic") do
			{
				if (server_var(se_args) < 3) do
				{
					es_xset se_error 1
					es_xdbgmsg 0 entspawn dynamic <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
				}
			}
			else do
			{
				if (server_var(se_type) == "give") do
				{
					if (server_var(se_args) < 3) do
					{
						es_xset se_error 1
						es_xdbgmsg 0 entspawn give <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
					}	
				}
				else do
				{
					es_xset se_error 1
					es_xdbgmsg 0 entspawn <physics/dynamic/give> <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
				}
			}
		}
	}
	if (server_var(se_error) == 0) do
	{
		es_xgetargv se_spawn 2
		if (server_var(se_spawn) == "player") do
		{
			if (server_var(se_args) < 5) do
			{
				es_xset se_error 1
				es_dbgmsg 0 entspawn server_var(se_type) player <userid> <model/entity> [freeze]
			}
			if (server_var(se_error) == 0) do
			{
				es_xgetargv se_userid 3
				es_xset se_userid2 0
				es_getuserid se_userid2 server_var(se_userid)
				if (server_var(se_userid) == 0) then es_xset se_userid2 1
				if (server_var(se_userid2) != server_var(se_userid)) do
				{
					es_xset se_error 1
					es_xdbgmsg 0 Invalid userid.
				}
				else do
				{
					es_xgetargv se_model 4
					es_getplayerlocation se_x se_y se_z server_var(se_userid)
					es playerget viewangle server_var(se_userid) se_pitch se_yaw
				}
				if (server_var(se_args) > 5) then es_xgetargv se_freeze 5
			}
		}
		else do
		{
			es_xgetuserid se_userid
			if (server_var(se_userid) == 0) do
			{
				es_xset se_error 1
				es_xdbgmsg 0 No valid players on the server.
			}
			if (server_var(se_spawn) == "location") do
			{
				if (server_var(se_args) < 7) do
				{
					es_xset se_error 1
					es_dbgmsg 0 entspawn server_var(se_type) location <x> <y> <z> <model/entity> [pitch] [yaw] [freeze]
				}
				else do
				{
					es_xgetargv se_x 3
					es_xgetargv se_y 4
					es_xgetargv se_z 5
					es_xgetargv se_model 6
					if (server_var(se_args) > 8) do
					{

						es_xgetargv se_pitch 7
						es_xgetargv se_yaw 8
						if (server_var(se_args) > 9) then es_xgetargv se_freeze 9
					}
					else do
					{
						if (server_var(se_args) > 7) then es_xgetargv se_freeze 7
					}
				}
			}
			else do
			{
				es_xdbgmsg 0 entspawn <physics/dynamic/give> <location/player> <x/userid> [y] [z] <model/entity> [pitch] [yaw] [freeze]
			}
		}
	}
	if (server_var(se_error) == 0) do
	{
		es_xset se_x2 0
		es_xset se_y2 0
		es_xset se_z2 0
		es_xset se_pitch2 0
		es_xset se_yaw2 0
		es playerget viewangle server_var(se_userid) se_pitch2 se_yaw2
		es_getplayerlocation se_x2 se_y2 se_z2 server_var(se_userid)
		es_set se_ztemp server_var(se_z)
		es_xmath se_ztemp + 10
		es_setpos server_var(se_userid) server_var(se_x) server_var(se_y) server_var(se_z)
		es_setang server_var(se_userid) 90 0
		if (server_var(se_type) == "physics") then es_xprop_physics_create server_var(se_userid) server_var(se_model)
		if (server_var(se_type) == "dynamic") then es_xprop_dynamic_create server_var(se_userid) server_var(se_model)
		if (server_var(se_type) == "give") then es_xentcreate server_var(se_userid) server_var(se_model)
		es_set se_index server_var(eventscripts_lastgive)
		es_xset se_vec 0
		es_format se_vec "%1,%2,%3" server_var(se_x) server_var(se_y) server_var(se_z)
		es_xset se_ang 0
		es_xset se_movetype 0
		es_getindexprop se_movetype server_var(se_index) "CBaseEntity.movetype"
		es_format se_ang "%1,%2,0" server_var(se_pitch) server_var(se_yaw)
		es_setindexprop server_var(se_index) "CBaseEntity.movetype" 0
		es_physics active teleport server_var(se_index) server_var(se_vec)
		es_setindexprop server_var(se_index) "CBaseEntity.m_vecOrigin" server_var(se_vec)
		es_setindexprop server_var(se_index) "CBaseEntity.m_angRotation" server_var(se_ang)
		if (server_var(se_freeze) != 1) then es_xsetindexprop server_var(se_index) "CBaseEntity.movetype" server_var(se_movetype)
		es_setpos server_var(se_userid) server_var(se_x2) server_var(se_y2) server_var(se_z2)
		es_setang server_var(se_userid) server_var(se_pitch2) server_var(se_yaw2)
	}
}