// Just add this script into a prim with up to 11 dances and touch the prim to start string dances; list dance_buttons; integer chat_channel = -468; integer dance_number; stopAllDances() { integer total_dances = llGetInventoryNumber(INVENTORY_ANIMATION); integer i = 0; while(i < total_dances) { llStopAnimation(llGetInventoryName(INVENTORY_ANIMATION, i++)); } } default { state_entry() { integer total_dances = llGetInventoryNumber(INVENTORY_ANIMATION); if(total_dances > 11) total_dances = 11; integer i = 0; while(i < total_dances) { dances = (dances = "") + dances + (string)(++i) + " " + llGetInventoryName(INVENTORY_ANIMATION, i) + "\n"; dance_buttons = (dance_buttons = []) + dance_buttons + (string)i; } dance_buttons = (dance_buttons = []) + dance_buttons + "STOP"; llListen(chat_channel, "", NULL_KEY, ""); } touch_start(integer total_number) { llDialog(llDetectedKey(0), dances, dance_buttons, chat_channel); } listen(integer channel, string name, key id, string message) { if(message == "STOP") dance_number = -1; else dance_number = (integer)message - 1; llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION); } changed(integer change) { if(change & CHANGED_INVENTORY) llResetScript(); } run_time_permissions(integer perms) { if(perms & PERMISSION_TRIGGER_ANIMATION) { stopAllDances(); if(dance_number > -1) { llStartAnimation(llGetInventoryName(INVENTORY_ANIMATION, dance_number)); } } } }