//////////////////////////////////////////////////////////////////// // RenderWorks Unpacker With Landmark & Group 1.0 (Touch) ////////// //////////////////////////////////////////////////////////////////// // OpenSource Script For SecondLife and OpenSimulator ////////////// // Licensed under Creative Commons Attribution 4.0 International /// //////////////////////////////////////////////////////////////////// // This script by RenderWorks may be used in any manner, modified // // and republished. Unless specified otherwise, our scripts are //// // always open source. Objects made with these scripts may be // // sold with no restrictions. ////////////////////////////////////// //////////////////////////////////////////////////////////////////// string rez_msg = "Thank you for purchasing! Please, Touch me, to unpack !"; // Message when rezzed. string mnu_msg = "#Thank you for purchasing#\nPlease, select an option below:\n UNPACK: Get your file\n***GROUP: Get free gifts, previews, news ..."; // Message on the menu. string unp_msg = "Unpacking, please wait..."; // Message when unpack button is pressed. string upd_msg = "Finished unpacking!"; // Message when unpack button is pressed. string grp_msg = "Click the following link to join our group:"; // Message before group link. key grp_key = ""; // Group UUID. key owner; // Key of the owner. //////////////////////////////////////////////////////////////////// default { state_entry() // Script has started. { // Set the 'owner' value to the owner of the object. owner = llGetOwner(); // Say the rezzed message (rez_msg). llOwnerSay(rez_msg); // Listen for messages llListen(-2487,"",owner,""); } //////////////////////////////////////////////////////////////////// on_rez(integer r) // Object has been rezzed. { // Reset the script. llResetScript(); } //////////////////////////////////////////////////////////////////// touch_start(integer t) // Object was touched. { if(llDetectedKey(0) == llGetOwner()) // If the owner is the toucher. { // Open the menu. llDialog(owner,"\n"+mnu_msg,["Unpack"],-2487); } } //////////////////////////////////////////////////////////////////// listen(integer channel, string name, key id, string message) // Get messages from the menu. { if(message == "Unpack") // If the message is 'unpack'. { // Say the begin unpack message (unp_msg). llOwnerSay(unp_msg); // Remember the script name. string thisScript = llGetScriptName(); // Remember the items in the inventory. list inventoryItems; // The inventory item number. integer inventoryNumber = llGetInventoryNumber(INVENTORY_ALL); // The current inventory item number. integer index; for ( ; index < inventoryNumber; ++index ) // Process all inventory items. { //Set 'itemName' to the inventory name. string itemName = llGetInventoryName(INVENTORY_ALL, index); if (itemName != thisScript) // If the item name is not the name of this script. { if (llGetInventoryPermMask(itemName, MASK_OWNER) & PERM_COPY) // If the item is copyable. { //Continue processing. inventoryItems += itemName; } } } // Give the inventory to the owner in a folder called the object's name. llGiveInventoryList(owner, llGetObjectName(), inventoryItems); // Say the finished unpack message (upd_msg). llOwnerSay(upd_msg); } if(message == "Landmark") // If the message is 'Landmark'. { if(llGetInventoryName(INVENTORY_LANDMARK, 0)) // If a landmark exists. { // Give the inventory to the owner. llGiveInventory(owner, llGetInventoryName(INVENTORY_LANDMARK, 0)); } else // If there is no landmark. { // Tell the owner there is no landmark. llOwnerSay("Sorry! I couldn't find the landmark to give you."); } } if(message == "Group") // If the message is 'Group'. { // Say the group message (grp_msg), followed by the group link. llOwnerSay(grp_msg+" secondlife:///app/group/"+(string)grp_key+"/about"); } } } ////////////////////////////////////////////////////////////////////