//I had problems applying some of the early ankle lock scripts to //other joint and limb specific animations. This limb locking script //allows you to alternate between two different "holding" poses //without constantly refreshing the same animation, and to work with //your AO timer instead of fighting against it. You should use two //limb specific holding poses (poses that only affect the arm, wrist, //and shoulder) that are slightly different for subtle hand and //position changes while your AO animates the rest of your body. string hold_anim = "YOUR_FIRST_ANIMATION"; //put the name of your first animation here string alt_anim = "YOUR_SECOND_ANIMATION"; //put the name of your second animation here //If you want to use this as an ankle lock, you'll need to spend $20L //uploading two copies of the same ankle locking pose. Even if the two //animations have different names, you'll need to make sure hold_anim //and alt_anim also have two different UUIDs, or bad things may happen. float time2switch = 5.0; //seconds between first and second animations //time2switch should be adjusted to your personal tolerance between //your AO timer and the possible number of seconds you want to wait //before the limb locker kicks back in. Try to keep time2switch above //3 seconds unless you plan on renaming the variable to time2twitch. integer toggle; default { state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); llSetTimerEvent(time2switch); llStartAnimation(alt_anim); } on_rez(integer param) { llResetScript(); } changed(integer change) //The script needs to be reset to recognize the new owner { if(change & 128) llResetScript(); } 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(alt_anim); } } timer() { if (toggle) { llStartAnimation(alt_anim); llStopAnimation(hold_anim); } else { llStartAnimation(hold_anim); llStopAnimation(alt_anim); } toggle = !toggle; } }