Add 2 OSSL functions to the LinkInventory collection

Add Functions:
+ osGiveLinkInventoryList(integer linkNumber, key destination, string category, list inventory)
Give a group of items located in a child prim inventory

+ osRemoveLinkInventory(integer linkNumber, string name)
Remove an item from a child prim inventory

LSL Script example:
<pre><code>
default
{
    touch_start(integer a){

        integer linkNumber = llDetectedLinkNumber(0);
        list linkInventoryNames = osGetLinkInventoryNames(linkNumber, INVENTORY_ALL);
        osGiveLinkInventoryList(linkNumber, llDetectedKey(0), llGetLinkName(linkNumber), linkInventoryNames);

        for(integer i = 0; i < llGetListLength(linkInventoryNames); i++){
            osRemoveLinkInventory(linkNumber, llList2String(linkInventoryNames, i));
        }
    }
}
</code></pre>
This commit is contained in:
Adil El Farissi
2024-02-25 07:14:49 +00:00
parent f4e14aba6d
commit 60214e6e81
4 changed files with 140 additions and 0 deletions

View File

@@ -1515,12 +1515,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_OSSL_Functions.osGetLinkInventoryDesc(linkNumber, itemNameOrId);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void osRemoveLinkInventory(LSL_Integer linkNumber, LSL_String name)
{
m_OSSL_Functions.osRemoveLinkInventory(linkNumber, name);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void osGiveLinkInventory(LSL_Integer linkNumber, LSL_Key destination, LSL_String inventory)
{
m_OSSL_Functions.osGiveLinkInventory(linkNumber, destination, inventory);
}
public void osGiveLinkInventoryList(LSL_Integer linkNumber, LSL_Key destination, LSL_String category, LSL_List inventory)
{
m_OSSL_Functions.osGiveLinkInventoryList(linkNumber, destination, category, inventory);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public LSL_Key osGetLastChangedEventKey()
{