diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 39 |
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; | |||
35 | using Axiom.Math; | 35 | using Axiom.Math; |
36 | using libsecondlife; | 36 | using libsecondlife; |
37 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
38 | using OpenSim.Framework.Communications.Cache; | ||
38 | using OpenSim.Region.Environment; | 39 | using OpenSim.Region.Environment; |
39 | using OpenSim.Region.Environment.Interfaces; | 40 | using OpenSim.Region.Environment.Interfaces; |
40 | using OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney; | 41 | using 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) |