This is the source code of an included piece of LSL that I use frequently. It implements simple back and next buttons to select from more that 12 options in a dialog.
If you don’t use (or want to use) the Firestorm preprocessor, copy the code between the hash directives and replace the #include that led you to this page with the code you find here (that’s essentially what the preprocessor does for you automatically).
#ifndef __DIALOG_PLUS #define __DIALOG_PLUS //Created by Ugleh Ulrik //This sort of script should cost, but for you free :) //Edited by Taff Nouvelle to put the buttons in correct order. //Edited by BluesToday Resident to conform to 1TBS and variable naming for globals list order_buttons (list buttons) { return llList2List (buttons, -3, -1) + llList2List (buttons, -6, -4) + llList2List (buttons, -9, -7) + llList2List (buttons, -12, -10); } integer g_menu_idx; DialogPlus (key avatar, string message, list buttons, integer channel, integer CurMenu) { if (12 < llGetListLength (buttons)) { list lbut = buttons; list Nbuttons = []; if (CurMenu == -1) { CurMenu = 0; g_menu_idx = 0; } if ((Nbuttons = (llList2List (buttons, (CurMenu * 10), ((CurMenu * 10) + 9)) + ["Back", "Next"])) == ["Back", "Next"]) { DialogPlus (avatar, message, lbut, channel, g_menu_idx = 0); } else { llDialog (avatar, message, order_buttons (Nbuttons), channel); } } else { llDialog (avatar, message, order_buttons (buttons), channel); } } #endif // __DIALOG_PLUS