llCreateLink
function
Function syntax
llCreateLink(key target,// UUID of the target prim/object in the same region.integer parent// Boolean. IfTRUE, the script's object becomes the root prim; ifFALSE, target becomes the root.
);- Delay
- 0.1 s
- Energy
- 10
- Permission
PERMISSION_CHANGE_LINKS
Attempt to link the script’s object with target.
target must be modifiable and have the same owner.
This object must also be modifiable.
llCreateLink(NULL_KEY, 0);Specification
Section titled “Specification”The prims for the child object (target if parent is TRUE, script’s object if parent is FALSE) are inserted into the parent object’s link set starting at link number 2. For example, if the link order for the parent object is A1, A2, A3 and the link order of the child object is B1, B2, B3, then the link order of the resulting object will be A1, B1, B2, B3, A2, A3.
Caveats
Section titled “Caveats”- If target is not in the region, not a prim, or is attached to an avatar, an error is shouted on
DEBUG_CHANNEL. - If either the object or the target are not modifiable or of different owners, then an error is shouted on
DEBUG_CHANNEL. - If the the parent object and target are too far apart they will fail to link.
- The maximum distance is further explained here: Linkability Rules
- This function silently fails if called from a script inside an attachment.
Examples
Section titled “Examples”Example 1
21 collapsed lines
// Rez an object and link it as a child prim.string ObjectName = "Object Name Here";// NOTE: must be a name of an object in this object's inventory.
default{ touch_start(integer count) { // When the object is touched, make sure we can do this before trying. llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); } run_time_permissions(integer perm) { // Only bother rezzing the object if will be able to link it. if (perm & PERMISSION_CHANGE_LINKS) llRezObject(ObjectName, llGetPos() + <0,0,0.5>, ZERO_VECTOR, llGetRot(), 0); else llOwnerSay("Sorry, we can't link."); } object_rez(key id) { // NOTE: under some conditions, this could fail to work. // This is the parent object. Create a link to the newly-created child. llCreateLink(id, TRUE); }}Helper functions
Section titled “Helper functions”29 collapsed lines
// child prim keykey kChild = NULL_KEY;integer bLink = TRUE; // we suppose this script is on a linked objectdefault{
state_entry() { // get the permission to change the link llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS);
// get the child key kChild = llGetLinkKey(2); }
touch_start(integer nTotalCliquor) { if (bLink) { // break all my links, wait 1.5 sec llBreakAllLinks(); llSleep(1.5);
// i'm unlinked llSay(0, "Unlinked, click to link"); bLink = FALSE; } else { // redo my link llCreateLink(kChild, TRUE); llSleep(1.5);
6 collapsed lines
// i'm linked llSay(0, "Linked, click to unlink"); bLink = TRUE; } }}See also
Section titled “See also”Functions
Section titled “Functions”llBreakLink— Break a linkllBreakAllLinks— Break all links
Events
Section titled “Events”Articles
Section titled “Articles”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.