Difference between revisions of "LlGiveInventoryList"

From Second Life Wiki
Jump to navigation Jump to search
(a slightly cleaner way keeping the script out of the give list. No extra search, and a bit more obvious how it works. Plus you don't get a warning when this script isn't full perm.)
(the script is typically used to unpacking boxes sold by venders. By having it use next owner permissions the owner can check the perms at the same time as testing. NEXT is more useful than OWNER)
Line 20: Line 20:
     {
     {
         list        inventory;
         list        inventory;
        string      name;
         integer    num = llGetInventoryNumber(INVENTORY_ALL);
         integer    num = llGetInventoryNumber(INVENTORY_ALL);
         integer    i;
        string      script = llGetScriptName();
         integer    i = 0;
   
   
         for (i = 0; i < num; ++i) {
         for (; i < num; ++i) {
             name = llGetInventoryName(INVENTORY_ALL, i);
             string name = llGetInventoryName(INVENTORY_ALL, i);
             //Don't give them the selling script.
             //Don't give them the selling script.
             if(name != llGetScriptName())
             if(name != script)
             {
             {
                 if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
                 if(llGetInventoryPermMask(name, MASK_NEXT) & PERM_COPY)
                 {
                 {
                     inventory += name;
                     inventory += name;

Revision as of 09:02, 22 December 2008

Summary

Function: llGiveInventoryList( key avatar, string folder, list inventory );
3.0 Forced Delay
10.0 Energy

Gives inventory items to avatar in a folder

• key avatar
• string folder
• list inventory a list of items in the inventory of the prim this script is in

Caveats

  • This function causes the script to sleep for 3.0 seconds.
  • If inventory is missing from the prim's inventory then an error is shouted on DEBUG_CHANNEL.
  • Avatar must be, or have recently been, within the same Region as sending object.
  • Does not create a folder when avatar is a prim UUID.
    • The prim must be in the same region.

Examples

<lsl>// When a user clicks this object, this script will give a folder containing everything in the objects inventory // This can serve as a unpacker script for boxed objects

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_NEXT) & 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);
       }
   }
}</lsl>

See Also

Events

Functions

Deep Notes

Signature

function void llGiveInventoryList( key avatar, string folder, list inventory );