LlGetLinkKey
Function: key llGetLinkKey( integer linknum );
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: child 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 |
| LINK_ALL_CHILDREN | -3 | sends to all children, (everything but the root) |
| LINK_THIS | -4 | sends to the prim the script is in |
Caveats
• Do provide a non-negative linknum between 0 and llGetNumberOfPrims inclusive, such as LINK_ROOT.
• Don't provide LINK_THIS as the linknum, instead call llGetKey, per bug SVC-600.
• Don't nonsensically provide a linknum that may refer to multiple prims, such as LINK_SET, LINK_ALL_OTHERS, or LINK_ALL_CHILDREN.
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.
| <source lang="lsl">
// 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");
}
} </source> |
See Also
Functions
• llGetLinkNumber – Returns the link number of the prim the script is in.
• llGetKey
• llGetLinkName
Deep Notes
Issues
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it. SVC-600[c] llGetLinkKey returns the wrong result when passed LINK_THIS