OsSetLinkSitActiveRange

From OpenSimulator

Revision as of 22:53, 5 March 2024 by Manni (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
osSetLinkSitActiveRange(integer linkNumber, float range)
sets a limit on how far a avatar can be to have a sit request accepted, or disable sits
  • linkNumber is link number of the prim to change or one of LINK_SET,LINK_ROOT, LINK_ALL_OTHERS,LINK_ALL_CHILDREN or LINK_THIS
  • range > 0: if a avatar if far from the prim by more than that value, a sit request is silent ignored
  • range == 0: disables this limit. Region default is used. Current that is unlimited if a sit target is set or physics can sit the avatar, otherwise 10m
  • range < 0: sits are disabled. Requests are silently ignored

this value is stored on the prim, even if the script is removed

Threat Level None
Permissions Use of this function is always allowed by default
Extra Delay 0 seconds
Example(s)
// Example of osSetLinkSitActiveRange
 
vector target = <0.0, 0.3, 0.55>;  // Target position where avatars will sit
vector rotate = <0.0, 0.0, 90.0>;   // Rotation of the sitting avatar
float active_link_range = 5.0;     // Initial active link range
integer link = 2;                  // Link number of the prim
key avatar;                        // Key of the avatar currently sitting
 
// Function to debug and display active link range for an avatar
debug(string name)
{
    active_link_range = osGetLinkSitActiveRange(link);
    llOwnerSay("active_link_range for avatar " + name + " is " + (string)active_link_range);
}
 
default
{
    state_entry()
    {
        // Stand up any avatars currently sitting on the prim
        llUnSit(llAvatarOnSitTarget());
 
        // Set click action to allow sitting on the prim
        llSetClickAction(CLICK_ACTION_SIT);
 
        // Set the sit target and rotation for the linked prim
        llLinkSitTarget(link, target, llEuler2Rot((rotate * DEG_TO_RAD)));
 
        // Set the initial active sit range for the linked prim
        osSetLinkSitActiveRange(link, active_link_range);
    }
 
    changed(integer change)
    {
        // Check if a link has been changed
        if (change & CHANGED_LINK)
        {
            // Get the key of the avatar sitting on the prim
            key user = llAvatarOnSitTarget();
 
            // If an avatar is sitting on the prim
            if (user != NULL_KEY)
            {
                avatar = user;
                debug(osKey2Name(avatar)); // Debug and display active link range
            }
            // If no avatar is sitting on the prim
            else if (user == NULL_KEY)
            {
                debug(osKey2Name(avatar)); // Debug and display active link range
                avatar = NULL_KEY;
            }
            // Reset the script if an unexpected condition occurs
            else
            {
                llResetScript();
            }
        }
    }
}
Notes
This function was added in 0.9.2.0
Personal tools
General
About This Wiki