llGetInventoryKey

From Second Life Wiki
Revision as of 11:22, 30 July 2009 by EddyFragment Robonaught (talk | contribs) (edited minor grammar)
Jump to navigation Jump to search

Summary

Function: key llGetInventoryKey( string name );
0.0 Forced Delay
10.0 Energy

Returns a key that is the UUID of the inventory name

• string name an item in the inventory of the prim this script is in

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.

Examples

<lsl>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

Notes

The UUID returned is that of the asset to which the inventory item name points, it is not the UUID of the inventory asset. By having multiples of the same inventory item this function will point to a single asset without needing the asset to be duplicated.

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
The preceding version numbers are approximations.

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).

Signature

function key llGetInventoryKey( string name );