llGetInventoryType

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: integer llGetInventoryType( string name );

Returns an integer that is the type of the inventory item name

• string name name of an inventory item

If name does not exist, INVENTORY_NONE is returned (no errors or messages are generated), making this function ideal for testing the existence of a certain item in inventory.

Flag Inventory Type
INVENTORY_NONE -1 Item does not exist.
INVENTORY_ALL Any inventory type.
INVENTORY_TEXTURE 0 texture
INVENTORY_SOUND 1 sound
INVENTORY_LANDMARK 3 landmark
INVENTORY_CLOTHING 5 clothing
INVENTORY_OBJECT 6 object
Flag Inventory Type
INVENTORY_NOTECARD 7 notecard
INVENTORY_SCRIPT 10 script
INVENTORY_BODYPART 13 body part
INVENTORY_ANIMATION 20 animation
INVENTORY_GESTURE 21 gesture
INVENTORY_SETTING 56 setting
INVENTORY_MATERIAL 57 material

Examples

string get_type_info(integer inputInteger)
{
    if (inputInteger == INVENTORY_TEXTURE)
        return "INVENTORY_TEXTURE";
 
    else if (inputInteger == INVENTORY_SOUND)
        return "INVENTORY_SOUND";
 
    else if (inputInteger == INVENTORY_LANDMARK)
        return "INVENTORY_LANDMARK";
 
    else if (inputInteger == INVENTORY_CLOTHING)
        return "INVENTORY_CLOTHING";
 
    else if (inputInteger == INVENTORY_OBJECT)
        return "INVENTORY_OBJECT";
 
    else if (inputInteger == INVENTORY_NOTECARD)
        return "INVENTORY_NOTECARD";
 
    else if (inputInteger == INVENTORY_SCRIPT)
        return "INVENTORY_SCRIPT";
 
    else if (inputInteger == INVENTORY_BODYPART)
        return "INVENTORY_BODYPART";
 
    else if (inputInteger == INVENTORY_ANIMATION)
        return "INVENTORY_ANIMATION";
 
    else if (inputInteger == INVENTORY_GESTURE)
        return "INVENTORY_GESTURE";
 
    else if (inputInteger == INVENTORY_SETTING)
        return "INVENTORY_SETTING";
 
//  else
        return "<!-- inventory type unknown --!>";
}

default
{
    touch_start(integer num_detected)
    {
        integer totalItems = llGetInventoryNumber(INVENTORY_ALL);

        integer index;
        while (index < totalItems)
        {
            string itemName = llGetInventoryName(INVENTORY_ALL, index);
            integer type = llGetInventoryType(itemName);

            // PUBLIC_CHANNEL has the integer value 0
            llSay(PUBLIC_CHANNEL,
                "'" + itemName + "' (" + get_type_info(type) + ")");

            ++index;
        }
    }
}

Useful Snippets

string InventoryName(string name, integer type)
{//finds an item in a case insensitive fashion of the given type and returns its true name.
    integer a = llGetInventoryType(name); 
    if(!~a)//a == INVENTORY_NONE
    {//it should be noted that INVENTORY_NONE == INVENTORY_ALL == -1; which is why '!~a' works.
        string lc_name = llToLower(name);
        a = llGetInventoryNumber(type);
        while(a)
        {//(a = ~-a) is equivalent to --a, but runs faster.
            if(llToLower(name = llGetInventoryName(type, a = ~-a)) == lc_name)
            {//we found a match ^_^
                return name;
            }
        }
    }
    else if((a == type) ^ (!~type))//return name, as long as a == type or type == INVENTORY_ALL
    {//we already know that a != INVENTORY_NONE, but just in case we use xor instead of or.
        return name;
    }
    return "";//no match ~_~
}

integer InventoryExists(string name, integer type)
{//only included to show how this type of check could be done if the value of 'type' is not constant and could be INVENTORY_ALL.
    return (llGetInventoryType(name) == type) ^ (!~type);
}//Since INVENTORY_ALL == INVENTORY_NONE, the extra part on the end is required to invert the result.

See Also

Functions

•  llGetInventoryAcquireTime Returns the time the item was added to the prim's inventory
•  llGetInventoryName Returns the inventory item's name
•  llGetInventoryNumber Returns the number of items of a specific type in inventory
•  llGetInventoryCreator Returns the inventory item's creator
•  llGetInventoryPermMask Returns the inventory item's permissions
•  llGetInventoryKey Returns the inventory item's UUID (if full perm)

Deep Notes

Search JIRA for related Issues

Tests

•  llGetInventoryType_Test

Signature

function integer llGetInventoryType( string name );

Haiku

Sleepy afternoon
A large, inventory finds
enjoying the type