diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 53 |
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 | // |