OnTouchSelectTexture
IMPORTANT NOTE: This menus control REQUIRED Nargus Dialog Control script. You MUST have all both the script and this one in the same prim for it to work.
Scripts
OnTouchSelectTexture.lsl <lsl> // ********** DIALOG FUNCTIONS ********** // Dialog constants integer lnkDialog = 14001; integer lnkDialogNotify = 14004; integer lnkDialogResponse = 14002; integer lnkDialogTimeOut = 14003;
integer lnkDialogReshow = 14011; integer lnkDialogCancel = 14012;
integer lnkMenuClear = 15001; integer lnkMenuAdd = 15002; integer lnkMenuShow = 15003;
string seperator = "||"; integer dialogTimeOut = 0; // ********** END DIALOG FUNCTIONS **********
string texturesDialog;
initTextures(){ // Please me reminded that Nargus Dialog script autometicly add Back/Next buttons for you. // Optimised dialog generator script. Much more memory efficient than usage of Dialog+Menus control function
llOwnerSay("Inventory change detected; re-initializing...");
texturesDialog = "Click BACK/NEXT to change page.\n" +
"Click a texture button to choose." +
seperator + (string)dialogTimeOut;
integer count = llGetInventoryNumber(INVENTORY_TEXTURE);
integer i;
for(; i<count; ++i){
string name = llGetInventoryName(INVENTORY_TEXTURE, i);
texturesDialog += seperator + name + seperator + llGetSubString(name, 0, 15);
}
texturesDialog += seperator + "CLOSE" + seperator;
llOwnerSay("Initializing completed.");
}
default{
state_entry(){
initTextures();
}
changed(integer changes){
if(changes & CHANGED_INVENTORY) initTextures();
}
link_message(integer sender_num, integer num, string str, key id){
if(num == lnkDialogResponse){
if(llGetInventoryType(str) == INVENTORY_TEXTURE) llSetTexture(str, ALL_SIDES);
}
}
touch_start(integer num_detected){
llMessageLinked(LINK_THIS, lnkDialog, texturesDialog, llDetectedOwner(0));
}
} </lsl>