// VARIABLES o CONSTANTES list MENU1 = []; list MENU2 = []; integer listener; integer MENU_CHANNEL = -1200553368; // Evento 1, limpieza de cualquier listado de bailes abierto previamente. Dialog(key id, list menu) { llListenRemove(listener); listener = llListen(MENU_CHANNEL, "", NULL_KEY, ""); llDialog(id, "Dance? ", menu, MENU_CHANNEL); } default // Evento 2, creación del menú, recopilación de nombres de bailes, { on_rez(integer num) { llResetScript(); } touch_start(integer total_number) { llRequestPermissions(llDetectedOwner(0), PERMISSION_TRIGGER_ANIMATION); integer i = 0; MENU1 = []; MENU2 = []; integer c = llGetInventoryNumber(INVENTORY_ANIMATION); if (c <= 12) { for (; i < c; ++i) MENU1 += llGetInventoryName(INVENTORY_ANIMATION, i); } else { for (; i < 11; ++i) MENU1 += llGetInventoryName(INVENTORY_ANIMATION, i); if(c > 22) c = 22; for (; i < c; ++i) MENU2 += llGetInventoryName(INVENTORY_ANIMATION, i); MENU1 += ">>"; MENU2 += "<<"; } Dialog(llDetectedKey(0), MENU1); } // Evento 3, espera la selección del baile para la ejecución de la animación elegida. listen(integer channel, string name, key id, string message) { if (channel == MENU_CHANNEL) { llListenRemove(listener); if (message == ">>") { Dialog(id, MENU2); } else if (message == "<<") { Dialog(id, MENU1); } else { llStartAnimation(message); llOwnerSay(message); } } } }