aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs39
1 files changed, 38 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index 6f4e481..a4e473d 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -35,6 +35,7 @@ using Nini.Config;
35using Axiom.Math; 35using Axiom.Math;
36using libsecondlife; 36using libsecondlife;
37using OpenSim.Framework; 37using OpenSim.Framework;
38using OpenSim.Framework.Communications.Cache;
38using OpenSim.Region.Environment; 39using OpenSim.Region.Environment;
39using OpenSim.Region.Environment.Interfaces; 40using OpenSim.Region.Environment.Interfaces;
40using OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney; 41using OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney;
@@ -2696,7 +2697,43 @@ namespace OpenSim.Region.ScriptEngine.Common
2696 public void llGiveInventory(string destination, string inventory) 2697 public void llGiveInventory(string destination, string inventory)
2697 { 2698 {
2698 m_host.AddScriptLPS(1); 2699 m_host.AddScriptLPS(1);
2699 NotImplemented("llGiveInventory not yet oh no!"); 2700 bool found = false;
2701 LLUUID destId = LLUUID.Zero;
2702 LLUUID objId = LLUUID.Zero;
2703
2704 if(!LLUUID.TryParse(destination, out destId))
2705 {
2706 llSay(0, "Could not parse key " + destination);
2707 return;
2708 }
2709
2710 // move the first object found with this inventory name
2711 foreach (KeyValuePair<LLUUID, TaskInventoryItem> inv in m_host.TaskInventory)
2712 {
2713 if (inv.Value.Name == inventory)
2714 {
2715 found = true;
2716 objId = inv.Key;
2717 break;
2718 }
2719 }
2720
2721 // check if destination is an avatar
2722 if (World.GetScenePresence(destId) != null)
2723 {
2724 // destination is an avatar
2725 CachedUserInfo userInfo =
2726 World.CommsManager.UserProfileCacheService.GetUserDetails(destId);
2727 World.MoveTaskInventoryItem(destId,userInfo.RootFolder.ID, m_host, objId);
2728 }
2729 else
2730 {
2731 // destination is an object
2732 World.CopyTaskInventoryItem(destId, m_host, objId);
2733 }
2734
2735 if (!found)
2736 llSay(0, "Could not find object " + inventory);
2700 } 2737 }
2701 2738
2702 public void llRemoveInventory(string item) 2739 public void llRemoveInventory(string item)