Difference between revisions of "LlUnSit"

From Second Life Wiki
Jump to navigation Jump to search
(Clarify function description)
m (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")
Line 5: Line 5:
|p1_type=key|p1_name=id
|p1_type=key|p1_name=id
|func_footnote
|func_footnote
|func_desc=The agent identified by {{LSLP|id}} is forced to stand up if any of the following apply:-
|func_desc=The agent identified by {{LSLP|id}} is forced to stand up if any of the following apply:
:1. The agent is sitting on the scripted object
# The agent is sitting on the scripted object
:2. The agent is wearing the scripted object
# The agent is over land owned by the scripted object's owner and/or a group the owner has land rights for.
:3. The agent is over land owned by the scripted object's owner
 
|return_text
|return_text
|spec
|spec
Line 67: Line 67:
}
}
</lsl>
</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>


|helpers
|helpers

Revision as of 19:09, 4 July 2014

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.