llGetLinkNumber

From Second Life Wiki
Revision as of 14:57, 25 August 2018 by Lou Netizen (talk | contribs) (Added a note about using double negation to get a link number that can be used with an unlinked prim or the root of a linkset.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Summary

Function: integer llGetLinkNumber( );
0.0 Forced Delay
10.0 Energy

Returns an integer that is the link number of the prim containing the script.

0 means the prim is not linked, 1 the prim is the root, 2 the prim is the first child, etc. Links are numbered in the reverse order in which they were linked -- if you select a box, a sphere and a cylinder in that order, then link them, the cylinder is 1, the sphere is 2 and the box is 3. The last selected prim has the lowest link number.

Caveats

  • By design may equal llGetNumberOfPrims, e.g., when prim is last, object contains multiple prims, and no sitting avatars

Examples

default
{
    state_entry()
    {
        llOwnerSay((string) llGetLinkNumber());
        llOwnerSay((string) llGetNumberOfPrims());
    }
}

A non-obvious feature is using double-negation to obtain a link number zero (for an unlinked prim) or one (for the root of a linkset). Unlike constants like LINK_ROOT, this number can be used directly with functions like llGetLinkPrimitiveParams without first determining whether a prim is part of a linkset:

default
{
    state_entry()
    {
        integer rootLinkNum = !!llGetLinkNumber();
        // returns 0 in an unlinked prim, 1 in a linkset

        integer isFullBright = llList2Integer(llGetLinkPrimitiveParams(rootLinkNum,[PRIM_FULLBRIGHT, ALL_SIDES]),0);
        // TRUE if all sides of an unlinked prim or the root of a linkset are set to full bright, FALSE otherwise
    }
}

See Also

Functions

•  llGetKey
•  llGetNumberOfPrims

Deep Notes

Signature

function integer llGetLinkNumber();