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;