llUnSit

From Second Life Wiki
Revision as of 14:50, 4 July 2014 by Omei Qunhua (talk | contribs) (Clarify function description)
Jump to navigation Jump to search

Summary

Function: llUnSit( key id );
0.0 Forced Delay
10.0 Energy

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 wearing the scripted object
3. The agent is over land owned by the scripted object's owner
• 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> <lsl>

// Unsit the attached Avatar // Note this method is preferable to the RLV Command @unsit=force, due to it's success rate at actually completing

default {

 touch_start(integer num_detected)
 {
    if(llGetAttached()!=0) llUnSit(llGetOwner());
 }

}

</lsl>

See Also

Events

•  changed

Functions

•  llAvatarOnSitTarget
•  llSitTarget

Deep Notes

Signature

function void llUnSit( key id );

Haiku

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