aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs28
1 files changed, 27 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index e2bdd59..5700be5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2712,7 +2712,33 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2712 public void llDetachFromAvatar() 2712 public void llDetachFromAvatar()
2713 { 2713 {
2714 m_host.AddScriptLPS(1); 2714 m_host.AddScriptLPS(1);
2715 NotImplemented("llDetachFromAvatar"); 2715
2716 if (m_host.ParentGroup.RootPart.AttachmentPoint == 0)
2717 return;
2718
2719 TaskInventoryItem item;
2720
2721 lock (m_host.TaskInventory)
2722 {
2723 if (!m_host.TaskInventory.ContainsKey(InventorySelf()))
2724 return;
2725 else
2726 item = m_host.TaskInventory[InventorySelf()];
2727 }
2728
2729 if (item.PermsGranter != m_host.OwnerID)
2730 return;
2731
2732 if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
2733 {
2734 SceneObjectGroup grp = m_host.ParentGroup;
2735 UUID itemID = grp.GetFromAssetID();
2736
2737 ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
2738
2739 m_ScriptEngine.World.DetachSingleAttachmentToInv(itemID,
2740 presence.ControllingClient);
2741 }
2716 } 2742 }
2717 2743
2718 public void llTakeCamera(string avatar) 2744 public void llTakeCamera(string avatar)