List Example

Written by Kitsune
// Bromley College
// Linden Script Exhibition
 
// Code for poster 38
 
list SCAN = []; // define an empty list
integer ItemNumber; // reference number of selected item
integer ItemTotal; // total number of items
string Item; // the selected item
 
default
{
    state_entry()
    {
        llSetTimerEvent( 0 ); //disable timer
    }
 
    touch_start(integer total_number) // wait for touch and scan for agents
    {
        llSensor("", NULL_KEY, AGENT, 96, PI);
    }
 
    sensor(integer total_number)
    // write scan results into a list one by one
    {
        integer i;
        for (i = 0; i < total_number; i++)
        {
            SCAN = SCAN + [llDetectedName(i)];
        }
        llSay(0, "Scanning complete " + (string)i + " avatar(s) detected and stored in list. Touch poster again to view list. ");
        if(i==total_number) // if scan complete
        {
             state playback;
        }
    }
}
 
state playback
{
    touch_start(integer total_number) // on touch display list contents one by one with a half second delay between each item
    {
        ItemTotal = llGetListLength(SCAN);
        llSetTimerEvent( 0.5 );
    }    
 
    timer ()
    {
        Item = llList2String(SCAN, ItemNumber); // Get Item from list
        llSay(0, "List Item " + (string)ItemNumber + ": " + (string)Item);
        // Output Item
        ItemNumber++;
        // Point to next Item in list
 
        if (ItemNumber == ItemTotal)
        // if all items displayed reset
        {
            ItemNumber = 0;
            llResetScript();
        }
    }
}
 
// End of code;