aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
authorVegaslon2014-10-09 09:46:17 -0400
committerJustin Clark-Casey (justincc)2014-10-11 00:04:25 +0100
commit79a4d1ea8d6e51ed3d001b70e7da325a89ce92c8 (patch)
tree11b0b365abdc0f037ba1aef3c115510ad7c56710 /OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
parentminor: add --default-user option to "load oar" help long description. Do oth... (diff)
downloadopensim-SC-79a4d1ea8d6e51ed3d001b70e7da325a89ce92c8.zip
opensim-SC-79a4d1ea8d6e51ed3d001b70e7da325a89ce92c8.tar.gz
opensim-SC-79a4d1ea8d6e51ed3d001b70e7da325a89ce92c8.tar.bz2
opensim-SC-79a4d1ea8d6e51ed3d001b70e7da325a89ce92c8.tar.xz
Implements osForceSit(string avatar) & overload osForceSit(string avatar, string target)
Allows a script IN the target prim to force an avatar to sit on it using normal methods as if called by the client. Overload method of osForceSit() to allow a script NOT in the target prim to force an avatar to sit on the target prim using normal methods as if called by the client. This patch is based on previous work from http://opensimulator.org/mantis/view.php?id=4492 and also includes the suggestions from justincc including change of threat level Thank you Christos Lightling.
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 //