LlGetLinkKey

From Second Life Wiki

Jump to: navigation, search

Function: key llGetLinkKey( integer linknum );

144 Function ID
0.0 Delay
10.0 Energy

Returns a key which is the key of the prim that is link number linknum in the current link set.

• integer linknum Link number (0: unlinked, 1: root prim, >1: other prims) or a LINK_* flag
Flag Description
LINK_ROOT 1 sends to root prim in a linked set
LINK_SET -1 sends to all prims
LINK_ALL_OTHERS -2 sends to all other prims
Flag Description
LINK_ALL_CHILDREN -3 sends to all children
LINK_THIS -4 sends to the prim the script is in

Caveats

Examples

Drag this script on to linked and unlinked prims, with avatars sitting or not, to see how llGetLinkKey relates to llGetKey, llGetLinkNumber, llGetNumberOfPrims, LINK_ROOT, etc.

// Return the name of a link num else the empty string.
 
string getLinkNumName(integer link)
{
    if (LINK_THIS == link) return "LINK_THIS";
    if (LINK_ALL_CHILDREN == link) return "LINK_ALL_CHILDREN";
    if (LINK_ALL_OTHERS == link) return "LINK_ALL_OTHERS";
    if (LINK_SET == link) return "LINK_SET";
    if (LINK_ROOT == link) return "LINK_ROOT";
    return "";
}
 
// Say the key of each linked prim.
 
default
{
    state_entry()
    {
        integer theLink = llGetLinkNumber();
 
        key theLinkKey = llGetKey();
        key owner = llGetOwner();
        key creator = llGetCreator();
 
        // Visit each link num.
 
        integer link;
        integer primmed = llGetNumberOfPrims();
        for (link = -5; link <= (primmed + 5); ++link)
        {
            key linkKey = llGetLinkKey(link);
 
            // Detail the key at the link num.
 
            string line = (string) linkKey; // large constant width
 
            if (linkKey == owner) line += " llGetOwner";
            if (linkKey == creator) line += " llGetCreator";
            if (linkKey == theLinkKey) line += " llGetKey";
 
            // Detail the link num.
 
            line += " @ " + (string) link;
            line += " " + getLinkNumName(link);
            if (link == theLink) line += " llGetLinkNumber";
            if (link == primmed) line += " llGetNumberOfPrims";
 
            // Say the detail if fun.
 
            if (linkKey != NULL_KEY)
            {
                llOwnerSay(line);
            }
        }
 
        // Always count the linked prims.
 
        llOwnerSay((string) primmed + " llGetNumberOfPrims");
        llOwnerSay("OK");
    }
}

See Also

Functions

•  llGetLinkNumber Returns the link number of the prim the script is in.
•  llGetKey
•  llGetLinkName

History

Bugs

• Open Bug    llGetLinkKey returns the wrong result when passed LINK_THIS
Personal tools