Vegaslon and others contributed an osForceOtherSit() patch in git master commit 00b23e51aecab7902f0fe0a0b138698ad28caea2
which I think does what you need. Vegaslon then documented it at [1].
[1] http://opensimulator.org/index.php?title=OsForceOtherSit
On 02/09/14 16:16, Aine wrote:
I've been considering scripting a new couples dance ball for clubs in busy
regions where keeping the script count to a
minimum and script efficiency to a maximum is key.
The current most popular couples dance machine currently is the venerable "Franks
Couples Dance System" and its assorted
permutations which can handle multiple couples but requires one script per
**possible** dancer (so often this has 12-16
animation handler scripts), plus the master controller script, etc...not very
efficient at all. The version I envision
would be a single script that uses OSSL animation functions to handle all users
simultaneously. The only hurdle to
overcome in scripting this is the positioning of the couples in x,y axis in the
region since they need to be effectively
on poseballs but I want to make it a completely poseball-free system by having them
"sit" on the machine itself and then
use llSetLinkPrimitiveParamsFast() for the positioning.
Frank's machine rezzes a pair of poseballs near the initial toucher's location,
then the pair sits and the poseballs are
moved to do the positioning for each dance. To eliminate the poseball usage but
maintain the same basic functionality I
would need some way to know the couple's approximate location *prior* to
"sitting" on the dance machine (which then
makes them part of the linkset and lets me do all the positional dance
controls). The only solution I can come up with
using existing functions is one where one dancer has to first touch the machine to say
""I want to dance so store my
position and then when I sit put me back there" and then a right-click sit to
actually sit on the machine....not
something that's very intuitive or user-friendly plus requires multiple clicks.
The easiest solution I can think of is a
function that allows me to "force sit" the toucher rather than having him/her
have to do so, allowing the first dancer
to touch the device which then checks the location and then force-sits the avi
before immediately putting them right
back where they were. Then the partner touches the machine which repeats the
process but puts them in the correct
location based on the dance selected. Obviously there would be a few little
tricks to correctly matching couples but I
can manage all of that stuff with existing functions so the only stumbling
block is the lack of a force-sit command for
avatars.
The "force sit" function I'm proposing would be identical to the existing
osNpcSit() function but work on regular
agents. You'd specify the UUIDs of the avatar, the UUID of the target to sit
on, and use the equivalent of
OS_NPC_SIT_NOW as its option. Since the function exists already in NPC form, I
was hoping that it might require minimal
additional coding to enable it to work on a regular avatar -- possibly as
simple as commenting out the presumable check
in the current code that makes sure the agent is an NPC before allowing
osNpcSit() to do its thing.
I can envision other applications where this function could very useful (to be
able to seat someone who touches an
object). Needless to say it would need to be assigned at least a VeryHigh or
even Severe threat level due to its
potential for abuse unless it initiated a permission request check of some sort.
Is this feasible and is there any interest from someone with the necessary
coding expertise to implement it? Of can
someone think of a clever way around this hurdle using existing functions?
Cheers!
Aine
_______________________________________________
Opensim-dev mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
_______________________________________________
Opensim-dev mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev