LlGetInventoryKey

From Second Life Wiki

Jump to: navigation, search

Template:Needs Translation/LSL/es Template:Needs Translation/LSL/el Template:Needs Translation/LSL/he Template:Needs Translation/LSL/it Template:Needs Translation/LSL/ko Template:Needs Translation/LSL/nl Template:Needs Translation/LSL/hu Template:Needs Translation/LSL/no Template:Needs Translation/LSL/da Template:Needs Translation/LSL/sv Template:Needs Translation/LSL/tr Template:Needs Translation/LSL/pl Template:Needs Translation/LSL/pt Template:Needs Translation/LSL/ru Template:Needs Translation/LSL/uk Template:Needs Translation/LSL/zh-Hans Template:Needs Translation/LSL/zh-Hant

Contents

Summary

Buggy
Function: key llGetInventoryKey( string name );
175 Function ID
0.0 Delay
10.0 Energy

Returns a key that is the UUID of the inventory name

• string name an item in the prim's inventory

If item is not copy, mod, trans then the return is NULL_KEY.
Use llGetInventoryType instead of this function to verify the existence of inventory.

Caveats

  • If name is missing from the prim's inventory then an error is shouted on DEBUG_CHANNEL.
  • New empty notecards will return NULL_KEY[1]. Edit and save them to work around this.

Important Issues

~ Search JIRA for related Bugs
New Feature - A new feature of the product, which has yet to be developed. Open - The issue is open and ready for the assignee to start work on it.    llGetInventoryKey() returns NULL_KEY when referencing a notecard that is empty

Examples

string item = "Default";
 
default
{
    state_entry()
    {
        llOwnerSay("Touch to get information about \"" + item + "\".");
    }
 
    touch_start(integer total_number)
    {
        integer type = llGetInventoryType(item);
        integer index = llListFindList([ INVENTORY_NONE, 
            INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_LANDMARK, INVENTORY_CLOTHING, 
            INVENTORY_OBJECT, INVENTORY_NOTECARD, INVENTORY_SCRIPT, INVENTORY_BODYPART, 
            INVENTORY_ANIMATION, INVENTORY_GESTURE], [type]);
        string name = llList2String(["does not exist", 
            "texture", "sound", "landmark", "clothing",
            "object", "notecard", "script", "body part",
            "animation", "gesture"], index);
 
        llOwnerSay("Type: " + name);
 
        if(type == INVENTORY_NONE)
            return;
 
        integer owner_perms = llGetInventoryPermMask(item, MASK_OWNER);
        list perms;
        if(owner_perms & PERM_COPY)
            perms += "Copy";
 
        if(owner_perms & PERM_MODIFY)
            perms += "Modify";
 
        if(owner_perms & PERM_TRANSFER)
            perms += "Transfer";
 
        if(owner_perms & PERM_MOVE)
            perms += "Move";
 
        llOwnerSay("Perms: " + llList2CSV(perms));
 
        integer temp = PERM_COPY | PERM_MODIFY | PERM_TRANSFER;
        if((owner_perms & temp) != temp)
            return;
 
        llOwnerSay("Key: " + (string)llGetInventoryKey(item));
    }
}
 

Notes

The UUID returned is that of the asset to which the inventory item points, it is not the UUID of the inventory item itself. The assets themselves are immutable (they never change, they are only ever created and deleted); this allows multiple inventory handles to refer to the same asset without having to duplicate the asset. When it appears an asset is being modified, it is saved as a new asset. The consequence of this is that multiple copies of items in inventory all share the same asset UUID.

See Also

Functions

•  llGetInventoryName Returns the inventory item's name
•  llGetInventoryType Tests to see if an inventory item exists and returns its type
•  llGetInventoryNumber Returns the number of items of a specific type in inventory
•  llGetInventoryPermMask Returns the inventory item's permissions
•  llGetInventoryCreator Returns the inventory item's creator

Deep Notes

History

  • 0.2 - Introduced during the closed beta period.
  • 1.2 - Restricted to full perm inventory items only.
  • 1.24 - Objects and scripts no longer return their actual UUID but a hash (i.e. pseudo UUID which is consistent with the object/script) instead. -- SVC-3670[c]

The preceding version numbers are approximations.

Issues

~ Search JIRA for related Issues
Bug - A problem which impairs or prevents the functions of the product. Resolved - A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.    llGetInventoryKey() returns NULL_KEY when it shouldn't
New Feature - A new feature of the product, which has yet to be developed. Open - The issue is open and ready for the assignee to start work on it.    llGetInventoryKey() returns NULL_KEY when referencing a notecard that is empty

Footnotes

  1. ^ This happens because new notecards (as inventory items) do not have an attached asset, strictly speaking they do not exist until modified (and saved).
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.
Personal tools
In other languages