Difference between revisions of "User:Toady Nakamura/Prim Contents Lister"

From Second Life Wiki
Jump to navigation Jump to search
m (added script)
 
m
Line 1: Line 1:
From an SL wiki [https://wiki.secondlife.com/wiki/Float_Box_Contents] which lists it to hover text.   
From an SL wiki [https://wiki.secondlife.com/wiki/Float_Box_Contents] which lists it to hover text.   
But it's easier to use if it outputs to the local chat, so I modded it to do that
But it's easier to use if it outputs to the local chat, so I modded it to do that
and also to wait and not repeat every 5 seconds the way he had it!   
and also to wait and not repeat every 5 seconds the way he had it!   
If it doesn't show all the items the first time it tells you touch the box and it will keep telling!





Revision as of 12:46, 13 November 2013

From an SL wiki [1] which lists it to hover text. But it's easier to use if it outputs to the local chat, so I modded it to do that and also to wait and not repeat every 5 seconds the way he had it!

If it doesn't show all the items the first time it tells you touch the box and it will keep telling!



<lsl> // FLOAT BOX CONTENTS -- Rolig Loon -- November 2009 // //Modified Toady Nakamura 11/13/13 // Leave the header!! // Free to copy, modify, or distribute. // Please do not sell this script. Be nice.

list contents = []; default {

   state_entry()
   {
       // this is a list of all the possible inventory types, as constants.
       list list_types = [INVENTORY_NONE, INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_LANDMARK,
       INVENTORY_CLOTHING, INVENTORY_OBJECT, INVENTORY_NOTECARD, INVENTORY_SCRIPT,
       INVENTORY_BODYPART, INVENTORY_ANIMATION, INVENTORY_GESTURE];

       // this list is of the string names corresponding to the one above.
       list list_names = ["None", "Texture", "Sound", "Landmark", "Clothing", "Object", "Notecard",
       "Script", "Body Part", "Animation", "Gesture"];

       integer all = llGetInventoryNumber(INVENTORY_ALL);
       integer i;
       for (i=0;i<=all-1;++i)
       {
       integer detected_type = llGetInventoryType(llGetInventoryName(INVENTORY_ALL,i)); // look up which type this object is.
       integer type_index = llListFindList(list_types,[detected_type]); // where in list_types is this type?
       string type_name = llList2String(list_names, type_index); // get the corresponding entry in the names list.
       contents += type_name + ": " + llGetInventoryName(INVENTORY_ALL,i) + "\n "; //Display type of content item and its name
       }
       llSetTimerEvent(1);  
       llOwnerSay("This box lists contents when you reset the script, add or take something from contents, and / or touch the box.");
   }

   changed(integer change)
   {
       if (change & CHANGED_INVENTORY)  // If something is added to or removed from box inventory
       {
           llResetScript();
       }
   }
   
   touch_start(integer numb)
   {
       llSetTimerEvent(1.0);
   }

   timer()
   {
       contents = llList2List(contents,1,-1) + llList2String(contents,0); // Move item 0 to the end of the list
       list temp = llList2List(contents,-8,-1); // Display only the last eight items 
       llOwnerSay("THIS BOX CONTAINS: \n " + llDumpList2String(temp,""));
       llSetTimerEvent(0.0);
   }

} </lsl>