integer animation_qty; // Number of animations available
integer animation_current; // Inventory number of current animation
string animation_name; // Name of current animation
string new_animation_name; // Name of next animation.
integer is_sitting;
integer offline;
key avatar;
out() {
llWhisper(0, "play: " + animation_name + " (" + (string)(animation_current + 1) + " of " + (string)animation_qty + ")");
}
update_inventory() {
offline = TRUE;
animation_qty = llGetInventoryNumber(INVENTORY_ANIMATION);
if (animation_qty > 0) {
llOwnerSay("Total animations loaded in this stand: " + (string)animation_qty);
animation_current = 0;
llSitTarget(<0.0, 0.0, 1.0>, ZERO_ROTATION);
animation_name = llGetInventoryName(INVENTORY_ANIMATION, animation_current);
set_anim(animation_current);
offline = FALSE;
} else {
llOwnerSay("No Animations Found.. Offline");
}
}
set_anim(integer inventory_number) {
new_animation_name = llGetInventoryName(INVENTORY_ANIMATION,inventory_number);
avatar = llAvatarOnSitTarget();
if (avatar != NULL_KEY) {
llStopAnimation(animation_name);
llStartAnimation(new_animation_name);
out();
}
animation_name = new_animation_name;
}
default {
state_entry() {
llSetSitText( "Stand" );
is_sitting = FALSE;
update_inventory();
}
touch_start(integer num) {
if(avatar == llDetectedKey(0)) {
animation_current++;
if ((animation_current + 1) > animation_qty) {
animation_current = 0;
}
set_anim(animation_current);
}
}
on_rez(integer start_param) {
llResetScript();
}
changed(integer change) {
if(change & CHANGED_LINK) {
if (!offline) {
avatar = llAvatarOnSitTarget();
if(avatar != NULL_KEY) {
llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
} else {
if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && is_sitting) {
is_sitting = FALSE;
llStopAnimation(animation_name);
}
avatar = NULL_KEY;
}
}
}
if(change & CHANGED_INVENTORY) { update_inventory(); }
if(change & CHANGED_OWNER) { llResetScript(); }
}
run_time_permissions(integer perm) {
if(perm & PERMISSION_TRIGGER_ANIMATION) {
is_sitting = TRUE;
llStopAnimation("sit");
llStopAnimation("sit_generic");
llStopAnimation("sit_female");
set_anim(animation_current);
}
}
}