LlGetAnimation
De DigiWiki.
Version du 25 juin 2012 à 23:53 par Djphil (discuter | contributions)
// A simple animation override example. // Make the avatar run in mid-air when jumping. key gOwner; // the wearer's key string gLastAnimation; // last llGetAnimation value seen // User functions Initialize(key id) { if (id == NULL_KEY) { // detaching llSetTimerEvent(0.0); // stop the timer } else { // attached, or reset while worn llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION); gOwner = id; } } // Event handlers default { state_entry() { // in case the script was reset while already attached if (llGetAttached() != 0) { Initialize(llGetOwner()); } } attach(key id) { Initialize(id); } run_time_permissions(integer perm) { if (perm & PERMISSION_TRIGGER_ANIMATION) { llSetTimerEvent(0.25); // start polling } } timer() { string newAnimation = llGetAnimation(gOwner); if (gLastAnimation != newAnimation) { // any change? if (newAnimation == "Jumping") { // You can stop the built-in animation if you like, if // it might interfere with your own. Be aware that an // avatar can become stuck, and some llGetAgentInfo results // can be inaccurate, if you stop built-ins indiscriminately. // Always test. // // llStopAnimation("jump"); llStartAnimation("run"); } else if (gLastAnimation == "Jumping") { // just finished jumping // "run" is looped, so we have to stop it when we are done. llStopAnimation("run"); } gLastAnimation = newAnimation; // store away for next time } } }


