llAvatarOnSitTarget
function
Function syntax
key llAvatarOnSitTarget();- Returns
key- Energy
- 10
If the prim lacks a sit target or there is no avatar sitting on the prim, then
is returned.
Returns a key that is the UUID of the user seated on the prim.
key result = llAvatarOnSitTarget();Caveats
Section titled “Caveats”- A prim does not have a sit target unless
llSitTargethas been called with a nonzero vector as the first argument. - If the prim lacks a sit target or the avatar is seated upon a different prim, the only way to determine how many and which avatars are seated upon the object is to scan the link set (for an example of this, see llGetNumberOfPrims).
Examples
Section titled “Examples”Example 1
10 collapsed lines
default{ state_entry() { // set sit target, otherwise this will not work llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); }
changed(integer change) { if (change & CHANGED_LINK) { key av = llAvatarOnSitTarget(); if (av) // evaluated as true if key is valid and not NULL_KEY {5 collapsed lines
llSay(0, "Hello " + llKey2Name(av) + ", thank you for sitting down"); } } }}Helper functions
Section titled “Helper functions”//Gets the link number of a seated avatarinteger GetAgentLinkNumber(key avatar){ integer link_num = llGetNumberOfPrims(); while (link_num > 1) // Check only child prims. { if (llGetLinkKey(link_num) == avatar) // If it is the avatar we want { return link_num; // then return the link number } --link_num; // else go on with next child. } // Avatar wasn't found return FALSE; // 0 (zero) for easy testing.}13 collapsed lines
//It's sometimes useful to use a state change//useful when the prim is linked to an other prim//and useful with a dialog boxdefault{ state_entry() { //"Sit target is a prim property." llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); }
changed(integer change) { if (change & CHANGED_LINK) { key av_sit = llAvatarOnSitTarget(); if (av_sit) {10 collapsed lines
//Someone is on the sit target. state sitting; } } }}
state sitting{ state_entry() { //Open a dialog box when an avatar is sitting on the prim key av_menu = llAvatarOnSitTarget(); llListen(-99, "", av_menu, "Yes"); llDialog(av_menu, "\nDo you like this example?", ["Yes", "No" ] , -99); }
changed(integer change) { if (change & CHANGED_LINK) { key av_unsit = llAvatarOnSitTarget(); if (av_unsit == NULL_KEY) {13 collapsed lines
//No one is on the sit target. //"On state change all listens are removed automatically." state default; } } }
listen(integer channel, string name, key id, string message) { // If the user clicked the "Yes" button llWhisper(0, "Thank you"); }}The position of an avatar on a sit target can be determined with the use of llGetObjectDetails (see llSitTarget for an example).
See also
Section titled “See also”Functions
Section titled “Functions”Events
Section titled “Events”Articles
Section titled “Articles”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.