CODE
string ani_name = "sleep"; // Put name of animation here
key sitter;
default
{
state_entry()
{
llSetSitText("Animate");
llSetAlpha(1.0,ALL_SIDES);
llSitTarget(<0,0,0.1>,llGetRot());
llSetText(ani_name,<1,1,1>,1.0);
}
changed(integer thechange) {
if (thechange & CHANGED_LINK) {
key now = llAvatarOnSitTarget();
if (now != NULL_KEY) {
llRequestPermissions(llAvatarOnSitTarget(),PERMISSION_TRIGGER_ANIMATION);
sitter = now;
} else {
llStopAnimation(ani_name); // Remove if this causes error in some SL vers
llSay(-8888,((string)sitter)+"booton");
llSetAlpha(1.0,ALL_SIDES);
llSetText(ani_name,<1,1,1>,1.0);
}
}
}
run_time_permissions(integer perms) {
if (perms & PERMISSION_TRIGGER_ANIMATION) {
llSetAlpha(0.0,ALL_SIDES);
llSetText("",<1,1,1>,1);
llSay(-8888,((string)sitter)+"bootoff"); // Lockmeister AO disable signal
llSleep(0.3); // Wait for AO to detect state and start its animation
list n = llGetAnimationList(sitter); // Stop all animations on avatar
integer t;
for (t=0; t<llGetListLength(n); t++) llStopAnimation(llList2Key(n,t));
llStartAnimation(ani_name); // Run our own animation
}
}
}