//////////////////////////////////////////// // Animation Script v1.2.1 // // Written by Xylor Baysklef //////////////////////////////////////////// /////////////// CONSTANTS /////////////////// list ANIMATIONS = [ "Club Dance 1" ]; list ANIMATIONS2 = [ "Club Dance 2" ]; list ANIMATIONS3 = [ "Club Dance 3" ]; list ANIMATIONS4 = [ "Club Dance 4" ]; ///////////// END CONSTANTS ///////////////// ///////////// GLOBAL VARIABLES /////////////// //integer gToggle = 0; integer gAnimNumber; integer gTotalAnims; string gAnimName = "type"; /////////// END GLOBAL VARIABLES ///////////// default { state_entry() { //llSay(0, "Init..."); llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); ANIMATIONS += ANIMATIONS2; ANIMATIONS2 = []; gTotalAnims = llGetListLength(ANIMATIONS); gAnimNumber = -1; llListen(0, "", llGetOwner(), ""); } on_rez(integer param) { //llGiveInventory(llGetOwner(), "Animation Names"); llResetScript(); } listen(integer channel, string name, key id, string mesg) { string preamble = llGetSubString(mesg, 0, 3); if (preamble != "anim" && preamble != "stop") return; integer perm = llGetPermissions(); if ( !(perm & PERMISSION_TRIGGER_ANIMATION)) { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); return; } list parsed = llParseString2List(mesg, [ " " ], []); //llSay(0, (string)parsed); string anim = llList2String(parsed, 1); if (preamble == "stop") { //llSay(0, "Stopping: " + llGetAnimation(llGetOwner())); //llStopAnimation(llGetAnimation(llGetOwner())); if (anim == "") anim = gAnimName; if (anim == "all") { integer i; llSay(0, "Stopping all animations... please wait."); for (i=0; i<gTotalAnims; i++) llStopAnimation(llList2String(ANIMATIONS, i)); llSay(0, "Done."); return; } //llSay(0, "Stopping: " + anim); llStopAnimation(anim); return; } gAnimName = anim; //llSay(0, "Animation: " + gAnimName); llStartAnimation(gAnimName); } run_time_permissions(integer perm) { //llStopAnimation(gAnimName); //gToggle = 0; } attach(key id) { integer perm = llGetPermissions(); if (id != NULL_KEY) { if (! (perm & PERMISSION_TRIGGER_ANIMATION)) { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } } else { if (perm & PERMISSION_TRIGGER_ANIMATION) { llStopAnimation(gAnimName); } } } touch_start(integer total_number) { if (llDetectedKey(0) != llGetOwner()) return; integer perm = llGetPermissions(); if (perm & PERMISSION_TRIGGER_ANIMATION) { if (gAnimNumber != -1) { llStopAnimation( llList2String(ANIMATIONS, gAnimNumber) ); } gAnimNumber++; if (gAnimNumber == gTotalAnims) gAnimNumber = 0; gAnimName = llList2String(ANIMATIONS, gAnimNumber); llStartAnimation( gAnimName ); llSay(0, "Animation: " + gAnimName); } else { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } } }