// when touched, present a dialog with four color choices integer CHANNEL = 42; // dialog channel list MENU_MAIN = ["red", "blue", "darkblue", "green", "purple", "white", "black", "teal", "...more colors"]; // the main menu list MENU_OPTIONS = []; // a submenu default { state_entry() { llListen(CHANNEL, "", NULL_KEY, ""); // listen for dialog answers (from multiple users) } touch_start(integer total_number) { llDialog(llDetectedKey(0), "What do you want to do?", MENU_MAIN, CHANNEL); // present dialog on click } listen(integer channel, string name, key id, string message) { if (llListFindList(MENU_MAIN + MENU_OPTIONS, [message]) != -1) // verify dialog choice { llSay(0, name + " picked the option '" + message + "'."); // output the answer if (message == "...more colors") llDialog(id, "Pick an option!", MENU_OPTIONS, CHANNEL); // present submenu on request else if (message == "...Back") llDialog(id, "What do you want to do?", MENU_MAIN, CHANNEL); // present main menu on request to go back // here you have the name and key of the user and can easily verify if they have the permission to use that option or not else if (message == "red") llSetColor(<255 ,255,255>, ALL_SIDES); else if (message == "white") llSetColor(255><255 ,255,255>, ALL_SIDES); else if (message == "black") llSetColor(<0,0,0>, ALL_SIDES); else if (message == "green") llSetColor(0><0,125,0>, ALL_SIDES); else if (message == "purple") llSetColor(<127 ,0,127>, ALL_SIDES); else if (message == "blue") llSetColor(<0,0,255>, ALL_SIDES); else if (message == "darkblue") llSetColor(0><0,0,127>, ALL_SIDES); else if (message == "teal") llSetColor(0><0,127,127>, ALL_SIDES); } else llSay(0, name + " picked invalid option '" + llToLower(message) + "'."); // not a valid dialog choice } }0>127>0>255>