Difference between revisions of "Texture Changer (inventory)(all prims & all sides)(params).lsl"
Jump to navigation
Jump to search
(added script) |
m (<lsl> tag to <source>) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
<source lang="lsl2"> | |||
//*********************************************************************************************************** | //*********************************************************************************************************** | ||
// * | // * | ||
Line 13: | Line 14: | ||
//Status: Fully Working/Production Ready | //Status: Fully Working/Production Ready | ||
//Version: 1.0. | //Version: 1.0.2 | ||
//Name: Texture Changer (inventory)(all prims & all sides)(params).lsl | //Name: Texture Changer (inventory)(all prims & all sides)(params).lsl | ||
Line 52: | Line 53: | ||
changetexture()//user fucntion to change texture; | changetexture()//user fucntion to change texture; | ||
{ | { | ||
string texture = llGetInventoryName(INVENTORY_TEXTURE,currenttexture);//gets texture key | |||
//PRIM_TEXTURE:integer face, string name, vector repeats, vector offsets, float rotation | |||
llSetLinkPrimitiveParams(LINK_SET,[PRIM_TEXTURE,ALL_SIDES, texture, scale, offset, rot]); | |||
} | } | ||
default | default | ||
{ | { | ||
on_rez(integer start_param)//on rez reset...probably not needed. | |||
{ | |||
llResetScript(); | |||
} | |||
state_entry() | |||
{ | |||
llOwnerSay("Bobbyb's 'Texture Changer (inventory)(all prims & all sides)(params).lsl' (Public Domain 2009)"); | |||
llOwnerSay("Because knowledge should be free."); | |||
numberoftextures = llGetInventoryNumber(INVENTORY_TEXTURE);//number of textures in inventory | |||
numberofprims = llGetNumberOfPrims(); | |||
if(numberoftextures <= 0)//no textures | |||
llOwnerSay("No textures were found in my inventory. Please add textures."); | |||
else if(numberoftextures == 1)//only 1 texture | |||
llOwnerSay("I only found 1 picture in my inventory. I need more in order to change them."); | |||
//for 2 random isn't needed...but I'm too lazy to add that in | |||
else//more than 1 texture found... | |||
{ | |||
llOwnerSay("I found " + (string)numberoftextures + " pictures which I will change every " | |||
+ (string)frequency + " seconds on " + (string)numberofprims + " prims."); | |||
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)); | |||
//llOwnerSay("r" + (string)randomtexture);//debug | |||
}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 | |||
//llOwnerSay("c" + (string)currenttexture);//debug | |||
} | |||
else//not random, go in order | |||
{ | |||
++currenttexture; | |||
if(currenttexture == numberoftextures)//if current texture = number of textures, reset counter | |||
currenttexture = 0; | |||
changetexture();//change the texture | |||
//llOwnerSay("c" + (string)currenttexture);//debug | |||
} | |||
} | |||
changed(integer change) | |||
{ | |||
if(change & CHANGED_INVENTORY)//new or removed inventory...update texture count | |||
{ | |||
llOwnerSay("Inventory change detected."); | |||
numberoftextures = llGetInventoryNumber(INVENTORY_TEXTURE); | |||
llOwnerSay("I found " + (string)numberoftextures + " pictures which I will change every " | |||
+ (string)frequency + " seconds on " + (string)numberofprims + " prims."); } | |||
else if(change & CHANGED_LINK)//new or removed prims...update prim count | |||
{ | |||
llOwnerSay("Object links changed."); | |||
numberofprims = llGetNumberOfPrims(); | |||
llOwnerSay("This object has " + (string)numberofprims + " prims."); | |||
} | |||
} | |||
} | } | ||
</source> |
Latest revision as of 09:34, 25 January 2015
//***********************************************************************************************************
// *
// --Texture Changer (inventory)(all prims & all sides)(params).lsl-- *
// *
//***********************************************************************************************************
// www.lsleditor.org by Alphons van der Heijden (SL: Alphons Jano)
//Creator: Bobbyb30 Swashbuckler
//Attribution: None required, but it is appreciated.
//Created: November 12, 2008
//Last Modified: November 28, 2009
//Released: Saturday, November 28, 2009
//License: Public Domain
//Status: Fully Working/Production Ready
//Version: 1.0.2
//Name: Texture Changer (inventory)(all prims & all sides)(params).lsl
//Purpose: To change the texture on all the prims and all of their sides based on the textures in inventory.
//Technical Overview: The script finds how many textures there are in inventory, and uses a timer to change the
// texture on a side based on randomness or order. It takes into account inventory changes. It uses
// a user defined list to determine which sides to change.
//Description: A simple texture changer script that changes the texture on all the sides of all the prims in a
// linked prim set to those in inventory. It allows for a random order, or a logical "next up" order.
//Directions: Create a prim. Place pictures in prim inventory. Place script in prim inventory. Modify script parameters
// to suit your needs. If you add pictures, and the script does not reset, manually reset the script.
//Compatible: Mono & LSL compatible
//Other items required: More than 1 texture in inventory.
//Notes: Uses a timer event. Should be low lag. Commented for easier following. This will change the all the sides
// of linked prims to the *same* texture.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Adjustable global variables...you may change these
//Please note there is a .2 second delay between prims.
//all prims all sides
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
vector scale = <1,1,1>;//scale of the texture
vector offset = <0,0,0>;//offset of the texture
float rot = 0;//rotation of the texture
/////////////////////////////////////////////////////////////
//global variables...do not change
integer numberoftextures;//number of textures in inventory
integer currenttexture;//inventory number of current texture
integer numberofprims;//the number of prims there are
changetexture()//user fucntion to change texture;
{
string texture = llGetInventoryName(INVENTORY_TEXTURE,currenttexture);//gets texture key
//PRIM_TEXTURE:integer face, string name, vector repeats, vector offsets, float rotation
llSetLinkPrimitiveParams(LINK_SET,[PRIM_TEXTURE,ALL_SIDES, texture, scale, offset, rot]);
}
default
{
on_rez(integer start_param)//on rez reset...probably not needed.
{
llResetScript();
}
state_entry()
{
llOwnerSay("Bobbyb's 'Texture Changer (inventory)(all prims & all sides)(params).lsl' (Public Domain 2009)");
llOwnerSay("Because knowledge should be free.");
numberoftextures = llGetInventoryNumber(INVENTORY_TEXTURE);//number of textures in inventory
numberofprims = llGetNumberOfPrims();
if(numberoftextures <= 0)//no textures
llOwnerSay("No textures were found in my inventory. Please add textures.");
else if(numberoftextures == 1)//only 1 texture
llOwnerSay("I only found 1 picture in my inventory. I need more in order to change them.");
//for 2 random isn't needed...but I'm too lazy to add that in
else//more than 1 texture found...
{
llOwnerSay("I found " + (string)numberoftextures + " pictures which I will change every "
+ (string)frequency + " seconds on " + (string)numberofprims + " prims.");
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));
//llOwnerSay("r" + (string)randomtexture);//debug
}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
//llOwnerSay("c" + (string)currenttexture);//debug
}
else//not random, go in order
{
++currenttexture;
if(currenttexture == numberoftextures)//if current texture = number of textures, reset counter
currenttexture = 0;
changetexture();//change the texture
//llOwnerSay("c" + (string)currenttexture);//debug
}
}
changed(integer change)
{
if(change & CHANGED_INVENTORY)//new or removed inventory...update texture count
{
llOwnerSay("Inventory change detected.");
numberoftextures = llGetInventoryNumber(INVENTORY_TEXTURE);
llOwnerSay("I found " + (string)numberoftextures + " pictures which I will change every "
+ (string)frequency + " seconds on " + (string)numberofprims + " prims."); }
else if(change & CHANGED_LINK)//new or removed prims...update prim count
{
llOwnerSay("Object links changed.");
numberofprims = llGetNumberOfPrims();
llOwnerSay("This object has " + (string)numberofprims + " prims.");
}
}
}