aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-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 5700be5..a6080d6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2706,7 +2706,33 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2706 public void llAttachToAvatar(int attachment) 2706 public void llAttachToAvatar(int attachment)
2707 { 2707 {
2708 m_host.AddScriptLPS(1); 2708 m_host.AddScriptLPS(1);
2709 NotImplemented("llAttachToAvatar"); 2709
2710 if (m_host.ParentGroup.RootPart.AttachmentPoint == 0)
2711 return;
2712
2713 TaskInventoryItem item;
2714
2715 lock (m_host.TaskInventory)
2716 {
2717 if (!m_host.TaskInventory.ContainsKey(InventorySelf()))
2718 return;
2719 else
2720 item = m_host.TaskInventory[InventorySelf()];
2721 }
2722
2723 if (item.PermsGranter != m_host.OwnerID)
2724 return;
2725
2726 if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
2727 {
2728 SceneObjectGroup grp = m_host.ParentGroup;
2729
2730 ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
2731
2732 m_ScriptEngine.World.AttachObject(presence.ControllingClient,
2733 grp.LocalId, (uint)attachment, Quaternion.Identity,
2734 Vector3.Zero, false);
2735 }
2710 } 2736 }
2711 2737
2712 public void llDetachFromAvatar() 2738 public void llDetachFromAvatar()