diff options
3 files changed, 28 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e9f9c2d..5c02d98 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -4657,6 +4657,28 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4657 | ScriptSleep(5000); | 4657 | ScriptSleep(5000); |
4658 | } | 4658 | } |
4659 | 4659 | ||
4660 | public void llTeleportAgent(string agent, string simname, LSL_Vector pos, LSL_Vector lookAt) | ||
4661 | { | ||
4662 | m_host.AddScriptLPS(1); | ||
4663 | UUID agentId = new UUID(); | ||
4664 | if (UUID.TryParse(agent, out agentId)) | ||
4665 | { | ||
4666 | ScenePresence presence = World.GetScenePresence(agentId); | ||
4667 | if (presence != null) | ||
4668 | { | ||
4669 | // agent must not be a god | ||
4670 | if (presence.UserLevel >= 200) return; | ||
4671 | |||
4672 | // agent must be over the owners land | ||
4673 | if (m_host.OwnerID == World.LandChannel.GetLandObject( | ||
4674 | presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) | ||
4675 | { | ||
4676 | World.RequestTeleportLocation(presence.ControllingClient, simname, new Vector3((float)pos.x, (float)pos.y, (float)pos.z), new Vector3((float)lookAt.x, (float)lookAt.y, (float)lookAt.z), (uint)TeleportFlags.ViaLocation); | ||
4677 | } | ||
4678 | } | ||
4679 | } | ||
4680 | } | ||
4681 | |||
4660 | public void llTextBox(string agent, string message, int chatChannel) | 4682 | public void llTextBox(string agent, string message, int chatChannel) |
4661 | { | 4683 | { |
4662 | IDialogModule dm = World.RequestModuleInterface<IDialogModule>(); | 4684 | IDialogModule dm = World.RequestModuleInterface<IDialogModule>(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 99bfc97..5b8c316 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs | |||
@@ -395,6 +395,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
395 | void llTargetOmega(LSL_Vector axis, double spinrate, double gain); | 395 | void llTargetOmega(LSL_Vector axis, double spinrate, double gain); |
396 | void llTargetRemove(int number); | 396 | void llTargetRemove(int number); |
397 | void llTeleportAgentHome(string agent); | 397 | void llTeleportAgentHome(string agent); |
398 | void llTeleportAgent(string agent, string simname, LSL_Vector pos, LSL_Vector lookAt); | ||
398 | void llTextBox(string avatar, string message, int chat_channel); | 399 | void llTextBox(string avatar, string message, int chat_channel); |
399 | LSL_String llToLower(string source); | 400 | LSL_String llToLower(string source); |
400 | LSL_String llToUpper(string source); | 401 | LSL_String llToUpper(string source); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 9c4437d..1366141 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | |||
@@ -1815,6 +1815,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
1815 | m_LSL_Functions.llTargetRemove(number); | 1815 | m_LSL_Functions.llTargetRemove(number); |
1816 | } | 1816 | } |
1817 | 1817 | ||
1818 | public void llTeleportAgent(string agent, string simname, LSL_Vector pos, LSL_Vector lookAt) | ||
1819 | { | ||
1820 | m_LSL_Functions.llTeleportAgent(agent, simname, pos, lookAt); | ||
1821 | } | ||
1822 | |||
1818 | public void llTeleportAgentHome(string agent) | 1823 | public void llTeleportAgentHome(string agent) |
1819 | { | 1824 | { |
1820 | m_LSL_Functions.llTeleportAgentHome(agent); | 1825 | m_LSL_Functions.llTeleportAgentHome(agent); |