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.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index d11d377..d3ba675 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -872,6 +872,59 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
872 872
873 TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat, true); 873 TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat, true);
874 } 874 }
875 ///<summary>
876 /// Allows a script IN the target prim to force an avatar to sit on it using normal methods
877 /// as if called by the client.
878 /// Silent fail if agent (or target if overloaded) not found.
879 /// Does work if passed key (or keys if overloaded).
880 /// </summary>
881 /// <param name="avatar"></param>
882 public void osForceSit(string avatar)
883 {
884 CheckThreatLevel(ThreatLevel.VeryHigh, "osForceSit");
885
886 m_host.AddScriptLPS(1);
887
888 ForceSit(avatar, m_host.UUID);
889 }
890 /// <summary>
891 /// Overload method of osForceSit(string avatar) to allow a script NOT in the target prim to force
892 /// an avatar to sit on the target prim using normal methods as if called by the client.
893 /// </summary>
894 /// <param name="avatar"></param>
895 /// <param name="target"></param>
896 public void osForceSit(string avatar, string target)
897 {
898 CheckThreatLevel(ThreatLevel.VeryHigh, "osForceSit");
899
900 m_host.AddScriptLPS(1);
901
902 UUID targetID = new UUID(target);
903
904 ForceSit(avatar, targetID);
905
906
907 }
908
909 public void ForceSit(string avatar, UUID targetID)
910 {
911 UUID agentID;
912
913 if (!UUID.TryParse(avatar, out agentID))
914 return;
915
916 ScenePresence presence = World.GetScenePresence(agentID);
917
918 SceneObjectPart part = World.GetSceneObjectPart(targetID);
919
920 if (presence != null &&
921 part != null &&
922 part.SitTargetAvatar == UUID.Zero)
923 presence.HandleAgentRequestSit(presence.ControllingClient,
924 agentID,
925 targetID,
926 part.SitTargetPosition);
927 }
875 928
876 // Functions that get information from the agent itself. 929 // Functions that get information from the agent itself.
877 // 930 //