Weekly Raffle
Top Free Scripts
Admin Login
Username:

Password:

Change Texture Menu
 
Script ID : 24
Published Date: 2009/5/28 4:18:53
Reads : 8776
Texture

Drop this script and up to 22 textures into a prim. Users select texture by touch menu. Can change on single face or all sides at once.

//Drop this script into an object with up to 22 textures inside.

//When anyone Touches they will get a menu with all the textures available. Button names in menu will be first 10 characters from that item's name. 

//NOTE: Texture Names may not exceed 24 characters or script error and menu fails.


integer side ALL_SIDES//ALL_SIDES or any face number 0 through 5

list texture_list;
list 
texture_list2;
key user NULL_KEY;

composelist()
{
    
integer currenttexture 0;
    
integer totaltextures llGetInventoryNumber(INVENTORY_TEXTURE);
    
    if(
totaltextures totaltextures <= 12)
    {
        
texture_list = [];
        do
        {
            
texture_list texture_list llGetInventoryName(INVENTORY_TEXTUREcurrenttexture);
            
currenttexture++;
        }
        while (
currenttexture currenttexture totaltextures);
    }
    
    if(
totaltextures 12 totaltextures <= 22)
    {
        
texture_list = ["Next Page"];
        do
        {
            
texture_list texture_list llGetInventoryName(INVENTORY_TEXTUREcurrenttexture);
            
currenttexture++;
        }
        while (
currenttexture currenttexture 11);
        
        
texture_list2 = ["Last Page"];
        do
        {
            
texture_list2 texture_list2 llGetInventoryName(INVENTORY_TEXTUREcurrenttexture);
            
currenttexture++;
        }
        while (
currenttexture >= 11 currenttexture totaltextures);
    }
    
    if(
totaltextures 22)
    {
        
llWhisper(0"You may only have a maximimum of 22 Textures. Please remove any extra ones.");
    }
    if(
totaltextures == 0)
    {
        
llWhisper(0"Please add up to 22 Textures inside this object.");
    }
}


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

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

    
touch_start(integer total_number)
    {
        
user llDetectedKey(0);
        
menu(user,"nnPlease select one below.",texture_list);
    }
    
    
listen(integer channel,string name,key id,string message)
    {
        if (
channel == menu_channel)
        {
            
llSetTimerEvent(0.0);
            
llListenRemove(menu_handler);
            if(
message == "Next Page")
            {
                
menu(user,"nnPlease select one below.",texture_list2);
            }
            else if(
message == "Last Page")
            {
                
menu(user,"nnPlease select one below.",texture_list);
            }
            else
            {
                
llSetTexture(messageside);
            }
        }
    }
    
    
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
        
}
    }
}

Printer Friendly Page Send this Script to a Friend

Disclaimer: While I do not mind if these scripts are used in things you sell, I do not wish for these scripts to be sold either on their own or in script packs.
Now Available
Halloween Ride Now Open
Search for Help
Monthly Free Item
Candy Cauldron Set


Limit one per avatar
Teleport Now!



Sponsor