list llGetAnimationList(key id)
Returns a list of keys of all playing animations for avatar id.
llStopAnimation or llStartAnimation may be useful here.
// stops all currently running animations when clicked default { touch_start(integer num_detected) { llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm) { if(perm & PERMISSION_TRIGGER_ANIMATION) { list anims = llGetAnimationList(llGetPermissionsKey()); // get list of animations integer len = llGetListLength(anims); integer i; llSay(0, "Stopping " + (string)len + llGetSubString(" animations",0,-1 - (len == 1)));//strip the "s" when there is only 1 to stop. for (i = 0; i < len; ++i) llStopAnimation(llList2Key(anims, i)); llSay(0, "Done"); } } }
Another Example:
// gets the key of an animation as it starts it // -sendao key startAnim_FindKey( key who, string animname ) { if( llGetPermissions() & PERMISSION_TRIGGER_ANIMATION ) { list prelist = llGetAnimationList( who ); llStartAnimation(animname); list postlist = llGetAnimationList( who ); integer i; integer len = llGetListLength(prelist); prelist = llListSort( prelist, 1, 1 ); postlist = llListSort( postlist, 1, 1 ); for( i = 0; i < len; i++ ) { if( llList2Key( prelist, i ) != llList2Key( postlist, i ) ) return llList2Key(postlist, i); } if( i <= llGetListLength(postlist) ) return llList2Key( postlist, i ); } return NULL_KEY; }
A more efficient non-brain damaged replacement for llStartAnimation() by Edward Vellhi:
// that this replacement is needed is extremely lame. // llStartAnimation() should return the key since it can // obviously be derived anyway and thus not returning // it provides NO ADDITIONAL SECURITY and is one big // needless PITA since the key must be known to allow // seamless streaming of non-repeating animations. morons. // key startAnimation(key avatar, string animation) { list preKeys = llGetAnimationList(avatar); llStartAnimation(animation); list postKeys = llGetAnimationList(avatar); integer index; while (llListFindList(preKeys, [llList2Key(postKeys, index)]) >= 0) index++; return(llList2Key(postKeys, index)); }