diff options
Diffstat (limited to '')
5 files changed, 57 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index c602307..254ed0f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -10493,6 +10493,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
10493 | case "4": | 10493 | case "4": |
10494 | ret = ret + new LSL_List(land.Area); | 10494 | ret = ret + new LSL_List(land.Area); |
10495 | break; | 10495 | break; |
10496 | case "5": | ||
10497 | ret = ret + new LSL_List(land.GlobalID); | ||
10498 | break; | ||
10496 | default: | 10499 | default: |
10497 | ret = ret + new LSL_List(0); | 10500 | ret = ret + new LSL_List(0); |
10498 | break; | 10501 | break; |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 5212e1b..7ce3716 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -648,6 +648,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
648 | // | 648 | // |
649 | CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); | 649 | CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); |
650 | 650 | ||
651 | TeleportAgent(agent, regionName, position, lookat); | ||
652 | } | ||
653 | |||
654 | private void TeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | ||
655 | { | ||
651 | m_host.AddScriptLPS(1); | 656 | m_host.AddScriptLPS(1); |
652 | UUID agentId = new UUID(); | 657 | UUID agentId = new UUID(); |
653 | if (UUID.TryParse(agent, out agentId)) | 658 | if (UUID.TryParse(agent, out agentId)) |
@@ -660,7 +665,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
660 | == World.LandChannel.GetLandObject( | 665 | == World.LandChannel.GetLandObject( |
661 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) | 666 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) |
662 | { | 667 | { |
663 | |||
664 | // Check for hostname , attempt to make a hglink | 668 | // Check for hostname , attempt to make a hglink |
665 | // and convert the regionName to the target region | 669 | // and convert the regionName to the target region |
666 | if (regionName.Contains(".") && regionName.Contains(":")) | 670 | if (regionName.Contains(".") && regionName.Contains(":")) |
@@ -670,7 +674,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
670 | if (regions != null && regions.Count > 0) | 674 | if (regions != null && regions.Count > 0) |
671 | { | 675 | { |
672 | GridRegion regInfo = regions[0]; | 676 | GridRegion regInfo = regions[0]; |
673 | regionName = regInfo.RegionName; | 677 | string[] parts = regInfo.RegionName.Split(new char[] { ':' }); |
678 | if (parts.Length > 2) | ||
679 | regionName = parts[2]; | ||
680 | else | ||
681 | regionName = parts[0]; | ||
674 | } | 682 | } |
675 | } | 683 | } |
676 | World.RequestTeleportLocation(presence.ControllingClient, regionName, | 684 | World.RequestTeleportLocation(presence.ControllingClient, regionName, |
@@ -683,13 +691,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
683 | } | 691 | } |
684 | } | 692 | } |
685 | 693 | ||
686 | // Teleport functions | ||
687 | public void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | 694 | public void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) |
688 | { | 695 | { |
689 | // High because there is no security check. High griefer potential | 696 | // High because there is no security check. High griefer potential |
690 | // | 697 | // |
691 | CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); | 698 | CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); |
692 | 699 | ||
700 | TeleportAgent(agent, regionX, regionY, position, lookat); | ||
701 | } | ||
702 | |||
703 | private void TeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | ||
704 | { | ||
693 | ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize)); | 705 | ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize)); |
694 | 706 | ||
695 | m_host.AddScriptLPS(1); | 707 | m_host.AddScriptLPS(1); |
@@ -718,6 +730,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
718 | osTeleportAgent(agent, World.RegionInfo.RegionName, position, lookat); | 730 | osTeleportAgent(agent, World.RegionInfo.RegionName, position, lookat); |
719 | } | 731 | } |
720 | 732 | ||
733 | public void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | ||
734 | { | ||
735 | // Threat level None because this is what can already be done with the World Map in the viewer | ||
736 | CheckThreatLevel(ThreatLevel.None, "osTeleportOwner"); | ||
737 | |||
738 | TeleportAgent(m_host.OwnerID.ToString(), regionName, position, lookat); | ||
739 | } | ||
740 | |||
741 | public void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | ||
742 | { | ||
743 | osTeleportOwner(World.RegionInfo.RegionName, position, lookat); | ||
744 | } | ||
745 | |||
746 | public void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) | ||
747 | { | ||
748 | CheckThreatLevel(ThreatLevel.None, "osTeleportOwner"); | ||
749 | |||
750 | TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat); | ||
751 | } | ||
752 | |||
721 | // Functions that get information from the agent itself. | 753 | // Functions that get information from the agent itself. |
722 | // | 754 | // |
723 | // osGetAgentIP - this is used to determine the IP address of | 755 | // osGetAgentIP - this is used to determine the IP address of |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index fbf601a..028bb42 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -86,6 +86,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
86 | void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | 86 | void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); |
87 | void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | 87 | void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); |
88 | void osTeleportAgent(string agent, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | 88 | void osTeleportAgent(string agent, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); |
89 | void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | ||
90 | void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | ||
91 | void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat); | ||
89 | 92 | ||
90 | // Animation commands | 93 | // Animation commands |
91 | void osAvatarPlayAnimation(string avatar, string animation); | 94 | void osAvatarPlayAnimation(string avatar, string animation); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 0342283..93d544b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -508,6 +508,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
508 | public const int PARCEL_DETAILS_OWNER = 2; | 508 | public const int PARCEL_DETAILS_OWNER = 2; |
509 | public const int PARCEL_DETAILS_GROUP = 3; | 509 | public const int PARCEL_DETAILS_GROUP = 3; |
510 | public const int PARCEL_DETAILS_AREA = 4; | 510 | public const int PARCEL_DETAILS_AREA = 4; |
511 | public const int PARCEL_DETAILS_ID = 5; | ||
511 | 512 | ||
512 | // constants for llSetClickAction | 513 | // constants for llSetClickAction |
513 | public const int CLICK_ACTION_NONE = 0; | 514 | public const int CLICK_ACTION_NONE = 0; |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index e289554..370bf1d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -227,6 +227,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
227 | m_OSSL_Functions.osTeleportAgent(agent, position, lookat); | 227 | m_OSSL_Functions.osTeleportAgent(agent, position, lookat); |
228 | } | 228 | } |
229 | 229 | ||
230 | public void osTeleportOwner(string regionName, vector position, vector lookat) | ||
231 | { | ||
232 | m_OSSL_Functions.osTeleportOwner(regionName, position, lookat); | ||
233 | } | ||
234 | |||
235 | public void osTeleportOwner(int regionX, int regionY, vector position, vector lookat) | ||
236 | { | ||
237 | m_OSSL_Functions.osTeleportOwner(regionX, regionY, position, lookat); | ||
238 | } | ||
239 | |||
240 | public void osTeleportOwner(vector position, vector lookat) | ||
241 | { | ||
242 | m_OSSL_Functions.osTeleportOwner(position, lookat); | ||
243 | } | ||
244 | |||
230 | // Avatar info functions | 245 | // Avatar info functions |
231 | public string osGetAgentIP(string agent) | 246 | public string osGetAgentIP(string agent) |
232 | { | 247 | { |