Top Free Scripts
Script ID : 18
Audience : Default
Version 1.00.01
Published Date: 2008/4/1 8:21:58
Reads : 17042
Agent/Avatar

Drop this script and up to 22 objects into a prim. Users Touch for dialog menu, select an item, and that item is given to user.

Objects you are giving away should be Copy/Transfer. This is great for Party Drinks, Vending Machines, and Food Items.

Button names in menu will be first 10 characters from that item's name.

list object_list;
list 
object_list2;
key user NULL_KEY;

composelist()
{
    
integer currentobject 0;
    
integer totalobjects llGetInventoryNumber(INVENTORY_OBJECT);
    
    if(
totalobjects totalobjects <= 12)
    {
        
object_list = [];
        do
        {
            
object_list object_list llGetInventoryName(INVENTORY_OBJECTcurrentobject);
            
currentobject++;
        }
        while (
currentobject currentobject totalobjects);
    }
    
    if(
totalobjects 12 totalobjects <= 22)
    {
        
object_list = ["Next Page"];
        do
        {
            
object_list object_list llGetInventoryName(INVENTORY_OBJECTcurrentobject);
            
currentobject++;
        }
        while (
currentobject currentobject 11);
        
        
object_list2 = ["Last Page"];
        do
        {
            
object_list2 object_list2 llGetInventoryName(INVENTORY_OBJECTcurrentobject);
            
currentobject++;
        }
        while (
currentobject >= 11 currentobject totalobjects);
    }
    
    if(
totalobjects 22)
    {
        
llWhisper(0"You may only have a maximum of 22 Objects. Please remove any extra ones.");
    }
    if(
totalobjects == 0)
    {
        
llWhisper(0"Please add up to 22 Objects to give away. They should be Copy/Transfer.");
    }
}


//The Menu
integer menu_handler;
integer menu_channel;
menu(key user,string title,list object_list)
{
    
menu_channel = (integer)(llFrand(99999.0) * -1); //random channel
    
menu_handler llListen(menu_channel,"","","");
    
llDialog(user,title,object_list,menu_channel);
    
llSetTimerEvent(30.0); //menu channel open for 30 seconds
}

default
{
    
state_entry()
    {
        
composelist(); //make list from inventory objects
    
}

    
touch_start(integer total_number)
    {
        
user llDetectedKey(0);
        
menu(user,"nnPlease select one below.",object_list);
    }
    
    
listen(integer channel,string name,key id,string message)
    {
        if (
channel == menu_channel
        {            
            if(
message == "Next Page")
            {
                
menu(user,"nnPlease select one below.",object_list2);
            }
            else if(
message == "Last Page")
            {
                
menu(user,"nnPlease select one below.",object_list);
            }
            else
            {
                
llGiveInventory(user,message); //Give Object
                
llSetTimerEvent(0.0);
                
llListenRemove(menu_handler);
            }
        }
    }
    
    
timer() //Close the Menu Listen or we'll get laggy
    
{
        
llSetTimerEvent(0.0); 
        
llListenRemove(menu_handler);
    }
    
    
changed(integer change
    {
        if (
change CHANGED_INVENTORY//inventory has changed
        
{
            
llSleep(0.5);
            
composelist(); //rebuild the list
        
}
    }
}

0
|  Links 
Printer Friendly Page Send this Script to a Friend
Search for Help
New Product
Free Item
Sponsor

Site Info
Total Hits