WhoAddedWhat
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:
<lsl>// 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 } } } }
}</lsl>
(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.)