diff --git a/Core/Commands/Prims/TransferInventoryToObject.cs b/Core/Commands/Prims/TransferInventoryToObject.cs new file mode 100644 index 0000000..80561ab --- /dev/null +++ b/Core/Commands/Prims/TransferInventoryToObject.cs @@ -0,0 +1,74 @@ +using OpenMetaverse; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BSB.Commands.Prims +{ + class TransferInventoryToObject : CoreCommand_2arg + { + public override string[] ArgTypes { get { return new[] { "UUID", "UUID","True" }; } } + public override string[] ArgHints { get { return new[] { "Object we are sending to", "The item we are sending","Running script (Optional)" }; } } + public override string Helpfile { get { return "Transfers a item [ARG 2] to a objects inventory [ARG 1] (And if set with the script running state [ARG 3])"; } } + + public override bool CallFunction(string[] args) + { + if (base.CallFunction(args) == true) + { + if (UUID.TryParse(args[1], out UUID targetitem) == true) + { + if (UUID.TryParse(args[0], out UUID targetobject) == true) + { + InventoryItem itm = bot.GetClient.Inventory.FetchItem(targetitem, bot.GetClient.Self.AgentID, (5 * 1000)); + if (itm != null) + { + Dictionary objects_copy = bot.GetClient.Network.CurrentSim.ObjectsPrimitives.Copy(); + bool found = false; + foreach (KeyValuePair Obj in objects_copy) + { + if (Obj.Value.ID == targetobject) + { + bool script_state = false; + if (args.Length == 3) + { + if (itm.AssetType != AssetType.LSLText) + { + script_state = false; + InfoBlob = "Please omit the 3rd arg if not sending a script!"; + } + else + { + if (bool.TryParse(args[2], out script_state) == false) + { + return Failed("Unable to process arg 3"); + } + } + } + if (script_state == false) + { + bot.GetClient.Inventory.UpdateTaskInventory(Obj.Key, itm); + } + else + { + bot.GetClient.Inventory.CopyScriptToTask(Obj.Key, itm, true); + } + found = true; + break; + } + } + if (found == false) + { + return true; + } + return Failed("Unable to see object (Please wait and try again)"); + } + return Failed("Unable to find item"); + } + return Failed("Invaild object UUID"); + } + return Failed("Invaild item UUID"); + } + return false; + } + } +}