diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 616fd11cc1..4dbcb00379 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -1413,7 +1413,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer public virtual void RequestTeleportLandmark(IClientAPI remoteClient, AssetLandmark lm, Vector3 lookAt) { ScenePresence sp = Scene.GetScenePresence(remoteClient.AgentId); - if (sp == null || sp.IsDeleted || sp.IsInTransit || sp.IsNPC) + if (sp == null || sp.IsDeleted || sp.IsInTransit || sp.IsChildAgent || sp.IsNPC) return; GridRegion info = Scene.GridService.GetRegionByUUID(UUID.Zero, lm.RegionID); diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index f94fbfb4c4..b1d041d78f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs @@ -547,7 +547,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer (lm.Gatekeeper == string.Empty) ? "local" : lm.Gatekeeper, lm.RegionID, lm.Position); ScenePresence sp = Scene.GetScenePresence(remoteClient.AgentId); - if (sp == null || sp.IsDeleted || sp.IsInTransit || sp.IsNPC) + if (sp == null || sp.IsDeleted || sp.IsInTransit || sp.IsChildAgent || sp.IsNPC) return; GridRegion info = Scene.GridService.GetRegionByUUID(UUID.Zero, lm.RegionID); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 620368bf39..4bb6cd4c0f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -1028,7 +1028,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (UUID.TryParse(agent, out UUID agentId)) { ScenePresence presence = World.GetScenePresence(agentId); - if (presence == null || presence.IsDeleted || presence.IsInTransit) + if (presence == null || presence.IsDeleted || presence.IsChildAgent || presence.IsInTransit) return; Vector3 pos = presence.AbsolutePosition; @@ -1071,12 +1071,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api private void TeleportAgent(string agent, int regionGridX, int regionGridY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) { - ulong regionHandle = Util.RegionGridLocToHandle((uint)regionGridX, (uint)regionGridY); - if (UUID.TryParse(agent, out UUID agentId)) { ScenePresence presence = World.GetScenePresence(agentId); - if (presence == null || presence.IsDeleted || presence.IsInTransit) + if (presence == null || presence.IsDeleted || presence.IsChildAgent || presence.IsInTransit) return; Vector3 pos = presence.AbsolutePosition; @@ -1086,6 +1084,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; } + ulong regionHandle = Util.RegionGridLocToHandle((uint)regionGridX, (uint)regionGridY); Util.FireAndForget( o => World.RequestTeleportLocation( presence.ControllingClient, regionHandle, @@ -1101,7 +1100,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (UUID.TryParse(agent, out UUID agentId)) { ScenePresence presence = World.GetScenePresence(agentId); - if (presence == null || presence.IsDeleted || presence.IsInTransit) + if (presence == null || presence.IsDeleted || presence.IsChildAgent || presence.IsInTransit) return; Vector3 pos = presence.AbsolutePosition;