integer channel;
integer listen_handle;
key Avatar;
list sub_menu;
list main_menu = ["grayscale", "reds", "pinks", "violets", "dk_blues", "lt_blues", "yellows", "dk_greens", "lt_greens", "oranges"];
init() {
llListenRemove(listen_handle);
Avatar = llGetOwner();
channel = llFloor(llFrand(2000000)); //random channel so multiple scripts don't interfere with each other
listen_handle = llListen(channel, "", Avatar, "");
}
default
{
on_rez(integer s) { init(); }
state_entry() { init(); }
listen(integer channel, string name, key id, string message) {
if (llListFindList(main_menu, [message]) != -1) {
if (message == "grayscale") sub_menu = grayscale;
else if (message == "reds") sub_menu = reds;
else if (message == "pinks") sub_menu = pinks;
else if (message == "violets") sub_menu = violets;
else if (message == "dk_blues") sub_menu = dk_blues;
else if (message == "lt_blues") sub_menu = lt_blues;
else if (message == "yellows") sub_menu = yellows;
else if (message == "dk_greens") sub_menu = dk_greens;
else if (message == "lt_greens") sub_menu = lt_greens;
else if (message == "oranges") sub_menu = oranges;
llDialog(Avatar, "\n\nSelect a color", llList2ListStrided(sub_menu, 0, -1, 2), channel);
return;
}
integer index = llListFindList(sub_menu, [message]);
if (index != -1) {
vector color_vector = llList2Vector(sub_menu, index+1);
if (llGetLinkNumber() == 1) llSetLinkColor(LINK_SET, color_vector, ALL_SIDES); //If it's root prim, do whole set
else llSetColor(color_vector, ALL_SIDES); //otherwise, just do that prim
}
}
touch_start(integer s) {
if (llDetectedKey(0) == Avatar) {
llDialog(Avatar, "\n\nSelect a color group", main_menu, channel);
}
}
}
is the script as it stands right now i mean there are more for its function. but since i purchased it i don't really feel comfortable pasting their script on the forums for all to discuss if that makes sense? but hope this helps! you guys have been very awesome with your responses