Difference between revisions of "LlSitOnLink"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with "{{LSL_Function |func=llSitOnLink |func_desc=The avatar specified by agent_id is forced to sit on the sit target of the prim indicated by the link parameter. If the specified...")
 
(Add page to experience categories.)
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Experience Tools]]
{{LSL_Function
{{LSL_Function
|func=llSitOnLink
|func=llSitOnLink
|func_desc=The avatar specified by agent_id is forced to sit on the sit target of the prim indicated by the link parameter.  If the specified link is already occupied, the simulator searches down the chain of prims in the link set looking for an available sit target.   
|func_desc=The avatar specified by agent_id is forced to sit on the sit target of the prim indicated by the link parameter.  If the specified link is already occupied, the simulator searches down the chain of prims in the link set looking for an available sit target.   


|func_footnote=If successful, this method returns a value greater than zero indicating the link number the agent is seated upon.   
|func_footnote=If successful, this method returns 1.   


If the function fails, it returns a negative number constant.
If the function fails, it returns a negative number constant.
Line 20: Line 21:
|p2_type=integer|p2_name=link|p2_desc=Link number for the prim containing the desired sit target
|p2_type=integer|p2_name=link|p2_desc=Link number for the prim containing the desired sit target
|constants={{llSitOnLinkConstants}}
|constants={{llSitOnLinkConstants}}
|notes=This function pairs well with the [[llSetPrimitiveParams|primitive parameter]] PRIM_SCRIPTED_SITS_ONLY, which allows you to disallow non-scripted sits on a prim.
|notes=This function was introduced in conjunction with new [[llSetPrimitiveParams|primitive parameter]] constants: [[PRIM_ALLOW_UNSIT]], [[PRIM_SCRIPTED_SITS_ONLY]], and [[PRIM_SIT_TARGET]].
|also_functions=
* [[llLinkSitTarget]]
* [[llSitTarget]]
* [[llSetSitText]]
* [[llAvatarOnLinkSitTarget]]
* [[llAvatarOnSitTarget]]
* [[llUnSit]]
===Constants===
* [[PRIM_ALLOW_UNSIT]]
* [[PRIM_SCRIPTED_SIT_ONLY]]
* [[PRIM_SIT_TARGET]]
|inject-2={{Issues/BUG-40739}}
|examples=<source lang="lsl2">
integer gLinkId = LINK_THIS;
 
default
{
    touch_start(integer total_number)
    {
        llRequestExperiencePermissions(llDetectedKey(0), "");
    }
 
    experience_permissions(key agent_id)
    {
        integer sitTest = llSitOnLink(agent_id, gLinkId);
        if (sitTest != 1)
        {
            llInstantMessage(agent_id, "Cannot force agent " + (string)agent_id + " to sit due to reason id: " + (string)sitTest);
        }
    }
 
    experience_permissions_denied(key agent_id, integer reason)
    {
        llInstantMessage(agent_id, "Denied experience permissions for " + (string)agent_id + " due to reason id: " + (string)reason);
    }
}
</source>
|cat1=Experience
|cat2=Permissions/Experience
}}
}}
[[Category:Experience Tools]]

Latest revision as of 02:59, 19 October 2023

Summary

Function: Integer llSitOnLink( key agent_id, integer link );

The avatar specified by agent_id is forced to sit on the sit target of the prim indicated by the link parameter. If the specified link is already occupied, the simulator searches down the chain of prims in the link set looking for an available sit target.
Returns an Integer

• key agent_id UUID of the avatar being forced to sit
• integer link Link number for the prim containing the desired sit target

If successful, this method returns 1.

If the function fails, it returns a negative number constant.

Link constants that indicate a single prim may be used for the link parameter. These are LINK_ROOT and LINK_THIS. Other constants such as LINK_SET, LINK_CHILDREN, LINK_ALL_OTHERS will return an INVALID_LINK error.

This method must be called from an experience enabled script running on land that has enabled the experience key. If these conditions are not met this method returns a NOT_EXPERIENCE error.

The targeted avatar must also have accepted the experience. If the user is not participating in the experience this method returns NO_EXPERIENCE_PERMISSION. If the avatar id can not be found or is not over land that has enabled the experience this method returns INVALID_AGENT.

If there are no valid sit targets remaining in the linkset this method returns NO_SIT_TARGET and no action is taken with the avatar.

If the avatar does not have access to the parcel containing the prim running this script, this call fails.

Constant Value Description
SIT_NOT_EXPERIENCE -1 The script is not running as part of an experience with a valid experience key or the experience is not allowed at your location.
SIT_NO_EXPERIENCE_PERMISSION -2 The agent has not granted permission.
SIT_NO_SIT_TARGET -3 Unable to find an open sit target.
SIT_INVALID_AGENT -4 Unable to find specified agent.
SIT_INVALID_LINK -5 Unable to find specified link or the link constant would return multiple prims.
SIT_NO_ACCESS -6 The avatar does not have access to the parcel that the prim running this script is located in.
SIT_INVALID_OBJECT -7 This value is returned if the llSitOnLink is trying to force the user to sit on something that cannot be sat upon (such as an attachment).

Examples

integer gLinkId = LINK_THIS;

default
{
    touch_start(integer total_number)
    {
        llRequestExperiencePermissions(llDetectedKey(0), "");
    }

    experience_permissions(key agent_id)
    {
        integer sitTest = llSitOnLink(agent_id, gLinkId);
        if (sitTest != 1)
        {
            llInstantMessage(agent_id, "Cannot force agent " + (string)agent_id + " to sit due to reason id: " + (string)sitTest);
        }
    }

    experience_permissions_denied(key agent_id, integer reason)
    {
        llInstantMessage(agent_id, "Denied experience permissions for " + (string)agent_id + " due to reason id: " + (string)reason);
    }
}

Notes

This function was introduced in conjunction with new primitive parameter constants: PRIM_ALLOW_UNSIT, PRIM_SCRIPTED_SITS_ONLY, and PRIM_SIT_TARGET.

Deep Notes

Signature

function Integer llSitOnLink( key agent_id, integer link );