From 7ac111627f476e06b3793b1afd73e1a030b3a2a5 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 12 Aug 2025 22:26:46 +0100 Subject: [PATCH] some changes to llMapDestination --- OpenSim/Framework/IClientAPI.cs | 2 +- .../ClientStack/Linden/UDP/LLClientView.cs | 3 ++- .../Server/IRCClientView.cs | 2 +- .../OptionalModules/World/NPC/NPCAvatar.cs | 2 +- .../Shared/Api/Implementation/LSL_Api.cs | 17 ++++++----------- .../Shared/Api/Runtime/LSL_Constants.cs | 2 ++ 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index d092ebe7e5..afe301bbeb 100755 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -1396,7 +1396,7 @@ namespace OpenSim.Framework void SendRegionHandle(UUID regoinID, ulong handle); void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y); - void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt); + void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt, int options); void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data); void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data); diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 4720bb6621..87a6848b54 100755 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -3683,7 +3683,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(reply, ThrottleOutPacketType.Land); } - public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt) + public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt, int options) { ScriptTeleportRequestPacket packet = (ScriptTeleportRequestPacket)PacketPool.Instance.GetPacket(PacketType.ScriptTeleportRequest); @@ -3691,6 +3691,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Data.SimName = Utils.StringToBytes(simName); packet.Data.SimPosition = pos; packet.Data.LookAt = lookAt; + packet.Options = [ new(){Flags = (uint)options } ]; OutPacket(packet, ThrottleOutPacketType.Task); } diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 6de7376fca..2c76bca019 100755 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -1534,7 +1534,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } - public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt) + public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt, int options) { } diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index de93c2383b..f7b4668913 100755 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -1181,7 +1181,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC return string.Empty; } - public void SendScriptTeleportRequest (string objName, string simName, Vector3 pos, Vector3 lookAt) + public void SendScriptTeleportRequest (string objName, string simName, Vector3 pos, Vector3 lookAt, int options) { } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 7750ba9b8d..18988fb4e0 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -13955,24 +13955,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void llMapDestination(string simname, LSL_Vector pos, LSL_Vector lookAt) { DetectParams detectedParams = m_ScriptEngine.GetDetectParams(m_item.ItemID, 0); - if (detectedParams == null) + if (detectedParams is null) { - if (m_host.ParentGroup.IsAttachment == true) + if (m_host.ParentGroup.IsAttachment) { - detectedParams = new DetectParams - { - Key = m_host.OwnerID - }; - } - else - { - return; + detectedParams = new DetectParams { Key = m_host.OwnerID }; } + else + return; } ScenePresence avatar = World.GetScenePresence(detectedParams.Key); avatar?.ControllingClient.SendScriptTeleportRequest(m_host.Name, - simname, pos, lookAt); + simname, pos, lookAt, ScriptBaseClass.BEACON_FOCUS_MAP | ScriptBaseClass.BEACON_SHOW_MAP); ScriptSleep(m_sleepMsOnMapDestination); } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 0b94fc1dea..b2ab76c560 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs @@ -1117,5 +1117,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public const int SIM_STAT_SCRIPT_RUN_PCT = 25; public const int SIM_STAT_AI_MS = 26; + public const int BEACON_SHOW_MAP = 0x1; + public const int BEACON_FOCUS_MAP = 0x2; } }