aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs38
1 files changed, 35 insertions, 3 deletions
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