WhoAddedWhat

From Second Life Wiki
Revision as of 20:17, 11 April 2015 by Lady Sumoku (talk | contribs) (Replaced old <LSL> block with <source lang="lsl2">)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.

To enable you to tell what has been added to a script in the event of CHANGED_ALLOWED_DROP you can use the following code:

// Scripted by Laronzo Fitzgerald

list content[]; // a list of all items already added to the object

if (change & (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY))
{
    integer n = llGetInventoryNumber(INVENTORY_ALL);            

    while(n)
    {
         integer valid = llGetListLength(contents);
         if(valid != 0)
         {
              string added = llGetInventoryName(INVENTORY_ALL, --n);
              integer index = llListFindList(content, [added]);
              if(!(~index))
              {
                   integer type = llGetInventoryType(added);

                   if(type != 10 && (string)type != "") // don't add the object's script to the list of items!
                   {
		        content += added; // add the new item to the checklist of inventory items
                        // Do anything else you want related to the new item here
                   }
              }
         }
    }
}

(This code contains an obvious bug: if "content" is empty, then "if (valid != 0)" is not true, and the "n" in "while(n)" doesn't get changed -> endless loop.) (Weird code: if "content" is empty (which is always the case at startup), then nothing can get added to "content".) (Also: the var is named "content", but also 1 time "contents" is used.)

llAllowInventoryDrop