llUnSit

From Second Life Wiki
Revision as of 19:09, 4 July 2014 by Myst Leissa (talk | contribs) (Corrected my Screwup about Self-Targetting attachments being able to unsit you on any land, the real reason it was working was because I had land "Rights" to the test arena, not land "ownership")
Jump to navigation Jump to search

Summary

Function: llUnSit( key id );

The agent identified by id is forced to stand up if any of the following apply:

  1. The agent is sitting on the scripted object
  2. The agent is over land owned by the scripted object's owner and/or a group the owner has land rights for.
• key id avatar UUID that is in the same region

Examples

<lsl>// UnSit on Sit, Using a sit target default {

   state_entry()
   {
       llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); // Needed for llAvatarOnSitTarget to work. The vectors components must not all be set to 0.0
   }
   changed(integer change) // Triggered when various changes are sensed.
   {
       if(change & CHANGED_LINK) // When an agent sits on an object they become a new link.
       {
           key user = llAvatarOnSitTarget(); // Store the UUID of any agent sitting on the sit target.
           if(user) // An avatar is on the sit target.
               llUnSit(user); // Un-Sit the avatar.
       }
   }

}</lsl> <lsl>// UnSit on Sit, NOT using a sit target

default {

   changed(integer change) // Triggered when various changes are sensed.
   {
       if(change & CHANGED_LINK) // When an agent sits on an object they become a new link.
       {
           integer links = 0; // Create an integer type variable.
           if(llGetObjectPrimCount(llGetKey()) < (links = llGetNumberOfPrims())) // During the check store the number of links.
           // If the number of prims is fewer than the number of links, the last must be an avatar.
               llUnSit(llGetLinkKey(links)); // Use the key of the last link to be added (the avatar) to call llUnSit().
           else
               llOwnerSay("Some kind of linking or unlinking has changed me but, I am not being sat on.");
           // llUnSit() triggers the changed event too (the number of links is reduced by 1).
       }
   }

}</lsl> <lsl> unsit_all_avatars() {

   integer objectPrimCount = llGetObjectPrimCount(llGetKey());
   integer currentLinkNumber = llGetNumberOfPrims();
   for (; objectPrimCount < currentLinkNumber; --currentLinkNumber)
       llUnSit(llGetLinkKey(currentLinkNumber));

}

default {

   touch_start(integer num_detected)
   {
       unsit_all_avatars();
   }

}

</lsl>

See Also

Events

•  changed

Functions

•  llAvatarOnSitTarget
•  llSitTarget

Deep Notes

All Issues

~ Search JIRA for related Issues
   llSit() - scriptable ability to force an avatar to sit on an object

Signature

function void llUnSit( key id );

Haiku

Beauty at the bar
Not an empty seat in sight.
Owner clears me one.