diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 83 |
1 files changed, 48 insertions, 35 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index f88338d..b43e8e7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3925,8 +3925,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3925 | public void llGiveInventory(string destination, string inventory) | 3925 | public void llGiveInventory(string destination, string inventory) |
3926 | { | 3926 | { |
3927 | m_host.AddScriptLPS(1); | 3927 | m_host.AddScriptLPS(1); |
3928 | 3928 | bool found = false; | |
3929 | UUID destId = UUID.Zero; | 3929 | UUID destId = UUID.Zero; |
3930 | UUID objId = UUID.Zero; | ||
3931 | int assetType = 0; | ||
3932 | string objName = String.Empty; | ||
3930 | 3933 | ||
3931 | if (!UUID.TryParse(destination, out destId)) | 3934 | if (!UUID.TryParse(destination, out destId)) |
3932 | { | 3935 | { |
@@ -3934,16 +3937,28 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3934 | return; | 3937 | return; |
3935 | } | 3938 | } |
3936 | 3939 | ||
3937 | TaskInventoryItem item = m_host.Inventory.GetInventoryItem(inventory); | 3940 | // move the first object found with this inventory name |
3941 | lock (m_host.TaskInventory) | ||
3942 | { | ||
3943 | foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory) | ||
3944 | { | ||
3945 | if (inv.Value.Name == inventory) | ||
3946 | { | ||
3947 | found = true; | ||
3948 | objId = inv.Key; | ||
3949 | assetType = inv.Value.Type; | ||
3950 | objName = inv.Value.Name; | ||
3951 | break; | ||
3952 | } | ||
3953 | } | ||
3954 | } | ||
3938 | 3955 | ||
3939 | if (item == null) | 3956 | if (!found) |
3940 | { | 3957 | { |
3941 | llSay(0, String.Format("Could not find object '{0}'", inventory)); | 3958 | llSay(0, String.Format("Could not find object '{0}'", inventory)); |
3942 | throw new Exception(String.Format("The inventory object '{0}' could not be found", inventory)); | 3959 | throw new Exception(String.Format("The inventory object '{0}' could not be found", inventory)); |
3943 | } | 3960 | } |
3944 | 3961 | ||
3945 | UUID objId = item.ItemID; | ||
3946 | |||
3947 | // check if destination is an object | 3962 | // check if destination is an object |
3948 | if (World.GetSceneObjectPart(destId) != null) | 3963 | if (World.GetSceneObjectPart(destId) != null) |
3949 | { | 3964 | { |
@@ -3973,23 +3988,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3973 | if (agentItem == null) | 3988 | if (agentItem == null) |
3974 | return; | 3989 | return; |
3975 | 3990 | ||
3976 | byte[] bucket = new byte[17]; | ||
3977 | bucket[0] = (byte)item.Type; | ||
3978 | byte[] objBytes = agentItem.ID.GetBytes(); | ||
3979 | Array.Copy(objBytes, 0, bucket, 1, 16); | ||
3980 | |||
3981 | GridInstantMessage msg = new GridInstantMessage(World, | ||
3982 | m_host.UUID, m_host.Name + ", an object owned by " + | ||
3983 | resolveName(m_host.OwnerID) + ",", destId, | ||
3984 | (byte)InstantMessageDialog.TaskInventoryOffered, | ||
3985 | false, item.Name + "\n" + m_host.Name + " is located at " + | ||
3986 | World.RegionInfo.RegionName+" "+ | ||
3987 | m_host.AbsolutePosition.ToString(), | ||
3988 | agentItem.ID, true, m_host.AbsolutePosition, | ||
3989 | bucket); | ||
3990 | |||
3991 | if (m_TransferModule != null) | 3991 | if (m_TransferModule != null) |
3992 | { | ||
3993 | byte[] bucket = new byte[] { (byte)assetType }; | ||
3994 | |||
3995 | GridInstantMessage msg = new GridInstantMessage(World, | ||
3996 | m_host.UUID, m_host.Name + ", an object owned by " + | ||
3997 | resolveName(m_host.OwnerID) + ",", destId, | ||
3998 | (byte)InstantMessageDialog.TaskInventoryOffered, | ||
3999 | false, objName + "\n" + m_host.Name + " is located at " + | ||
4000 | World.RegionInfo.RegionName + " " + | ||
4001 | m_host.AbsolutePosition.ToString(), | ||
4002 | agentItem.ID, true, m_host.AbsolutePosition, | ||
4003 | bucket); | ||
4004 | |||
3992 | m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); | 4005 | m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); |
4006 | } | ||
3993 | 4007 | ||
3994 | ScriptSleep(3000); | 4008 | ScriptSleep(3000); |
3995 | } | 4009 | } |
@@ -6397,23 +6411,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
6397 | if (folderID == UUID.Zero) | 6411 | if (folderID == UUID.Zero) |
6398 | return; | 6412 | return; |
6399 | 6413 | ||
6400 | byte[] bucket = new byte[17]; | ||
6401 | bucket[0] = (byte)AssetType.Folder; | ||
6402 | byte[] objBytes = folderID.GetBytes(); | ||
6403 | Array.Copy(objBytes, 0, bucket, 1, 16); | ||
6404 | |||
6405 | GridInstantMessage msg = new GridInstantMessage(World, | ||
6406 | m_host.UUID, m_host.Name + ", an object owned by " + | ||
6407 | resolveName(m_host.OwnerID) + ",", destID, | ||
6408 | (byte)InstantMessageDialog.InventoryOffered, | ||
6409 | false, category + "\n" + m_host.Name + " is located at " + | ||
6410 | World.RegionInfo.RegionName + " " + | ||
6411 | m_host.AbsolutePosition.ToString(), | ||
6412 | folderID, true, m_host.AbsolutePosition, | ||
6413 | bucket); | ||
6414 | |||
6415 | if (m_TransferModule != null) | 6414 | if (m_TransferModule != null) |
6415 | { | ||
6416 | byte[] bucket = new byte[] { (byte)AssetType.Folder }; | ||
6417 | |||
6418 | GridInstantMessage msg = new GridInstantMessage(World, | ||
6419 | m_host.UUID, m_host.Name + ", an object owned by " + | ||
6420 | resolveName(m_host.OwnerID) + ",", destID, | ||
6421 | (byte)InstantMessageDialog.TaskInventoryOffered, | ||
6422 | false, category + "\n" + m_host.Name + " is located at " + | ||
6423 | World.RegionInfo.RegionName + " " + | ||
6424 | m_host.AbsolutePosition.ToString(), | ||
6425 | folderID, true, m_host.AbsolutePosition, | ||
6426 | bucket); | ||
6427 | |||
6416 | m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); | 6428 | m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); |
6429 | } | ||
6417 | } | 6430 | } |
6418 | 6431 | ||
6419 | public void llSetVehicleType(int type) | 6432 | public void llSetVehicleType(int type) |