LlGiveInventoryList

De DigiWiki.

Version du 11 août 2012 à 15:31 par Djphil (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
// When any user clicks this object, this script will give a folder containing everything in the objects inventory
// This could be used to give away multiple freebies at once.
 
default
{
    touch_start(integer total_number)
    {
        list        inventory;
        integer     num = llGetInventoryNumber(INVENTORY_ALL);
        string      script = llGetScriptName();
        integer     i = 0;
 
        for (; i < num; ++i) {
            string name = llGetInventoryName(INVENTORY_ALL, i);
            //Don't give them the selling script.
            if(name != script)
            {
                if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
                {
                    inventory += name;
                }
                else
                {
                    llSay(0, "Don't have permissions to give you \""+name+"\".");
                }
            }
        }
 
        if (llGetListLength(inventory) < 1)
        {
            llSay(0, "No items to offer."); 
        }
        else
        {
            // give folder to agent, use name of object as name of folder we are giving
            llGiveInventoryList(llDetectedKey(0), llGetObjectName(), inventory);
        }
    }
}

This script illustrates how to use llGiveInventoryList and llGiveInventory together to unpack no-copy items from a box. Copiable items will end up in a folder. No-copy items are transferred separately.

default
{
     touch_start(integer total_number)
     {
          if(llDetectedKey(0) == llGetOwner())
          {
               string InvenName;
               integer InvenNumber = llGetInventoryNumber(INVENTORY_ALL);
               list InvenList = [];
               integer y;
               for(y = 0; y < InvenNumber; y++)
               {
                    InvenName = llGetInventoryName(INVENTORY_ALL, y);
                    if(!llGetInventoryPermMask(InvenName,PERM_COPY))
                    {
                         llGiveInventory(llGetOwner(),InvenName);
                    }
                    else
                    {
                         InvenList += [InvenName];
                    }
               }
               llGiveInventoryList(llGetOwner(), llGetObjectName(), InvenList);
          }
     }
}
Outils personnels
donate
Google Ads