Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

AO Overriding Pose Ball

Jesse Barnett
500,000 scoville units
Join date: 21 May 2006
Posts: 4,160
10-09-2006 10:52
Animation Overrider Overrider Pose Ball

I have always thought it kind of silly that we have to type "/ao off" when we sit on a pose ball and "/ao on" when we stand back up. Well, maybe it isn't as silly as having to make an overrider for an overrider:-) But now I have come far enough along in my scripting to cobble together my own pose ball script. Per the wiki it is not possible to start an animation by it's key BUT you can stop one with it's key. You can use llGetAnimationList to get that key.

Just make a pose ball and texture as desired, drop an animation in it and this script.

pose ball script:

//AO Overrider Pose Ball Script V 1.2
//Updated 11/09/2006
//Created by Jesse Barnett
//Edited to check if there is an animation to stop
//and Sit Position is stored in Object Description
//Drop this in a prim along with an animation. Store the sit position in the Object description
//Example; <0.0, 0.0, 1.0>
//If you change this then reset the script by using right click/reset for changes to apply immediately. If you forget then it will display
//"reset script" when you sit. Just stand and sit again for changes to take efect

integer perm;//permissions
string anim2run;//animation in inventory
vector sit_pos;//adjust as needed in object description Example: <0.0, 0.0, 1.0>
list anim2stop;//default or AO sit animation
float sleep = 0.5;//duration of llSleep in seconds

if((sit_pos + (vector)llGetObjectDesc()) != (sit_pos* 2))
//This checks to see if the description field matchs the stored position
llSitTarget(sit_pos, ZERO_ROTATION);

if(llGetListLength(anim2stop) > 0)
//If there is a name in the list then it stops that animation

llOwnerSay("Script Reset.");
anim2run=llGetInventoryName(INVENTORY_ANIMATION,0) ;
sit_pos = (vector)llGetObjectDesc();

touch_start(integer num_detected) {

changed(integer change){
if (change & CHANGED_LINK)
if (llAvatarOnSitTarget() != NULL_KEY){
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);

if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(anim2run)>0)
llSetAlpha(1.0, ALL_SIDES);
run_time_permissions(integer perm){
anim2stop = [];//Clears the list
llSleep(sleep);//need sleep to give avatar time to cycle from stand to default sit to AO sit
anim2stop = llGetAnimationList(llAvatarOnSitTarget());
stop_anim();//This runs the subroutine up top .
llSetAlpha(0.0, ALL_SIDES);

I (who is a she not a he) reserve the right to exercise selective comprehension of the OP's question at anytime.
From: someone
I am still around, just no longer here. See you across the aisle. Hope LL burns in hell for archiving this forum
Nada Epoch
The Librarian
Join date: 4 Nov 2002
Posts: 1,423
Discussion Thread
10-10-2006 12:20
i've got nothing. ;)
Detect Surface
Registered User
Join date: 19 Jul 2005
Posts: 34
10-16-2006 14:35
Jessie!!!!!!!!! For god sake lol come to my place and I'll give you a job lolol haha

Good to see you're still about hun!!


Escort DeFarge
Join date: 18 Nov 2004
Posts: 681
04-09-2007 09:48
Hi Jesse,

Good thought... but here's the "but"... most AOs repeatedly trigger animations according to agent state (about every 0.1-0.2 seconds)... and that is likely to interfere with this and cause it "not to work". How did your tests go with this script?