LlGiveInventoryList
De DigiWiki.
Version du 11 août 2012 à 15:31 par Djphil (discuter | contributions)
// 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); } } }