llUnSit
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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>