Remember that LSL is just a front end to functionality run by the sim. A prim with a sit target doesn't even need a script to stay inside for a sit target to work. And changing a sit target doesn't currently move avatars once seated, special-casing it for this one function is going to be trouble. Best to leave that part alone.
Much closer to workable, but you know something? You're going to have to check those permissions anyway, if you want a script that behaves well.
Automatic animation stopping is a function of the client, it doesn't happen if the client is running on a non-Linden code base or if the packet monster eats that message, so good practice is still to explicitly stop them. The permissions go away (ETA: i worded that poorly, it's more that both permissions and presence are requirements to do animation stuff) if the client crashes, so permissions checking (and presence checking!) is still good practice to keep the script from shouting error messages.
Those are syntactic sugar rather than semantic changes.
Much closer to workable, but you know something? You're going to have to check those permissions anyway, if you want a script that behaves well.
Automatic animation stopping is a function of the client, it doesn't happen if the client is running on a non-Linden code base or if the packet monster eats that message, so good practice is still to explicitly stop them. The permissions go away (ETA: i worded that poorly, it's more that both permissions and presence are requirements to do animation stuff) if the client crashes, so permissions checking (and presence checking!) is still good practice to keep the script from shouting error messages.
Those are syntactic sugar rather than semantic changes.
Interesting. What happens if you change a sit target under a sitting avatar, and then run a new animation? Is that a problem?
"Automatic animation stopping is a function of the client."
Why does it have to be automatic? Does not llStopAnimation() do this server side?
lf llSitWithAnim() needs to stop an animation, and you think having the client do it automatically is problematic, should not llSitWithAnim() call llStopAnimation() as needed?
I don't know exactly how a sit works in SL, but it seems to me that the client sends a sit request... the server checks to see what animation is to be triggered, and sends that UUID out to the clients that need to see it, and then tells the clients to perform the sit... the clients already know the sit targets, yes? If there is a sit target change, the target is sent ahead of the animation UUID and the trigger.
I suppose there is no guarantee that the new target will arrive before the animation+trigger... but isn't that already the case?