Difference between revisions of "Simple Texture Changer (input list)(multiple prims & multiple sides).lsl"
(added script) |
(No difference)
|
Revision as of 08:03, 28 November 2009
<lsl> //*********************************************************************************************************** // * // --Simple Texture Changer (input list)(multiple prims & multiple side)-- * // * //*********************************************************************************************************** // www.lsleditor.org by Alphons van der Heijden (SL: Alphons Jano) //Creator: Bobbyb30 Swashbuckler //Attribution: None required, but it is appreciated. //Created: October 6, 2009 //Last Modified: November 28, 2009 //Released: Saturday, November 28, 2009 //License: Public Domain
//Status: Fully Working/Production Ready //Version: 1.0.1
//Name: Simple Texture Changer (input list)(multiple prims & multiple side).lsl //Purpose: To change the texture on certain prims on certain sides of a linked set. //Technical Overview: The script finds how many textures there are in the input list, and uses a timer to change the // texture on a side based on randomness or order. It changes all sides of the certain prim to the // specified texture //Description: A simple texture changer script that changes the texture on certain sides of certain prims in a linked // set to those in the input list. It allows for a random order, or a logical "next up" order. //Directions: Create a prim. Place the script in prim inventory. Modify the script parameters to suit your needs and // save.
//Compatible: Mono & LSL compatible //Other items required: None. //Notes: Uses a timer event. Should be low lag. Commented for easier following. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Adjustable global variables...you may change these //texture list...this list should have 2 or more textures list textures = [
"00000000-0000-0000-0000-0000f0000000", "00000000-0000-0000-0000-0000d0000000", "00000000-0000-0000-0000-0000e0000000"];//put your texture UUIDs/keys in here
//Please note there is a .2 second delay between prims. //"prim number, side number, side number...side number" //-1 equals all sides for that prim list sides = [
"0,1,2,5", "1,3,4,1"];//put in which sides you want the texture to be changed on.
float frequency = 2.0;//how often to change the texture in seconds. Shouldn't be below 2.0
//please note that the last and first texture will be shown less frequently than those in between integer random = TRUE;//whether to show the textures randomly, or in order integer duplicatecheck = TRUE;//if random is true, this will check to make sure the random selection is a new texture
/////////////////////////////////////////////////////////////
//global variables...do not change
integer numberoftextures;//number of textures in inventory
integer currenttexture;//inventory number of current texture
integer numberofsidestochange;//the length of the sides list
changetexture()//user fucntion to change texture {
integer counter; key texture = llList2String(textures,currenttexture);//gets texture key from list do { //also with another script list primdata = llCSV2List(llList2String(sides,counter)); integer prim = llList2Integer(primdata,0); integer primlistlength = llGetListLength(primdata);//speed hack could go here integer primlistcounter = 1;//start at 1 since the prim datalist's 1st entry is the prim do { //probably best to use llSetLinkPrimitiveParams //prim, texture, side llSetLinkTexture(prim,texture,llList2Integer(sides,primlistcounter)); }while(++primlistcounter < primlistlength); }while(++counter <numberofsidestochange);
}
default {
on_rez(integer start_param)//on rez reset...probably not needed. { llResetScript(); } state_entry() { llOwnerSay("Bobbyb's 'Simple Texture Changer (input list)(multiple prims & multiple side).lsl' (Public Domain 2009)"); llOwnerSay("Scripting made easy."); numberoftextures = llGetListLength(textures);//speed hack here numberofsidestochange = llGetListLength(sides);//length of the sides list...possible speed hack goes here //assume correct llOwnerSay("There are " + (string)numberoftextures + " pictures which I will change every " + (string)frequency + " seconds."); llOwnerSay("My current free memory is : " + (string)llGetFreeMemory() + " bytes. If it is below 2500 bytes, I may not work properly."); llSetTimerEvent(frequency); } timer() { if(random)//show pics randomly { integer randomtexture; if(duplicatecheck)//whether to make sure random doesn't repeat itself { do { randomtexture= llRound(llFrand(numberoftextures - 1));//generate random number }while(randomtexture == currenttexture);//make sure the random one isn't the same as the current one } else//no duplicate check randomtexture = llRound(llFrand(numberoftextures - 1));//generate random texture number currenttexture = randomtexture;//set the current one to the random one selected changetexture();//change the texture } else//not random, go in order { ++currenttexture; if(currenttexture == numberoftextures)//if current texture = number of textures, reset counter currenttexture = 0; changetexture();//change the texture } }
} </lsl>