diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs index a7772967ed..5ed760da53 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs @@ -217,7 +217,7 @@ namespace OpenSim.Region.Framework.Interfaces /// The inventory item. Null if no such item was found. /// TaskInventoryItem GetInventoryItem(string name); - + TaskInventoryItem GetInventoryItem(string name, int assetType); /// /// Get inventory items by name. /// diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 74689e1a11..947028beab 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1095,6 +1095,22 @@ namespace OpenSim.Region.Framework.Scenes return null; } + public TaskInventoryItem GetInventoryItem(string name, int type) + { + m_items.LockItemsForRead(true); + foreach (TaskInventoryItem item in m_items.Values) + { + if (item.Type == type && item.Name == name) + { + m_items.LockItemsForRead(false); + return item; + } + } + m_items.LockItemsForRead(false); + + return null; + } + public List GetInventoryItems(string name) { List items = new List(); diff --git a/OpenSim/Region/Framework/Scenes/Scripting/ScriptUtils.cs b/OpenSim/Region/Framework/Scenes/Scripting/ScriptUtils.cs index c653bdbba1..dea41422c3 100644 --- a/OpenSim/Region/Framework/Scenes/Scripting/ScriptUtils.cs +++ b/OpenSim/Region/Framework/Scenes/Scripting/ScriptUtils.cs @@ -46,9 +46,9 @@ namespace OpenSim.Region.Framework.Scenes.Scripting /// public static UUID GetAssetIdFromItemName(SceneObjectPart part, string name, int type) { - TaskInventoryItem item = part.Inventory.GetInventoryItem(name); + TaskInventoryItem item = part.Inventory.GetInventoryItem(name, type); - if (item != null && item.Type == type) + if (item != null) return item.AssetID; else return UUID.Zero; @@ -98,8 +98,8 @@ namespace OpenSim.Region.Framework.Scenes.Scripting if (part.Inventory != null) { - TaskInventoryItem item = part.Inventory.GetInventoryItem(identifier); - if (item != null && item.Type == (int)type) + TaskInventoryItem item = part.Inventory.GetInventoryItem(identifier, (int)type); + if (item != null) return item.AssetID; } @@ -114,15 +114,15 @@ namespace OpenSim.Region.Framework.Scenes.Scripting TaskInventoryItem item; if (part.Inventory != null) { - item = part.Inventory.GetInventoryItem(identifier); - if (item != null && item.Type == (int)type) + item = part.Inventory.GetInventoryItem(identifier, (int)type); + if (item != null) return item.AssetID; } if (part.LocalId != host.LocalId && host.Inventory != null) { - item = host.Inventory.GetInventoryItem(identifier); - if (item != null && item.Type == (int)type) + item = host.Inventory.GetInventoryItem(identifier, (int)type); + if (item != null) return item.AssetID; } return UUID.Zero;