LlCreateLink
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Tutorials |
Contents |
Summary
Function: llCreateLink( key target, integer parent );| 141 | Function ID |
| 1.0 | Delay |
| 10.0 | Energy |
Attempt to link the script's object with target.
| • key | target | – | A prim in the same region. | |
| • integer | parent | – | If FALSE, then target becomes the root. If TRUE, then the script's object becomes the root. |
Requires the PERMISSION_CHANGE_LINKS permission, granted by the owner, to run.
target must be modifiable and have the same owner.
This object must also be modifiable.
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
- This function causes the script to sleep for 1.0 seconds.
- Do not depend upon the auto-grant status of permissions. Always use the run_time_permissions event.
- If the script lacks the permission PERMISSION_CHANGE_LINKS, the script will shout an error on DEBUG_CHANNEL and the operation fails (but the script continues to run).
- If PERMISSION_CHANGE_LINKS is granted by anyone other than the owner, then when the function is called an error will be shouted on DEBUG_CHANNEL.
- Once the PERMISSION_CHANGE_LINKS permission is granted there is no way to revoke it except from inside the script (for example, with a new llRequestPermissions call). Otherwise, the script will only lose the permission if it is reset or the object is derezzed (deleted, detached, or taken).
- 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 (based on their physical size), 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
// Create a new 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); } }
Useful Snippets
// child prim key key kChild = NULL_KEY; integer bLink = TRUE; // we suppose this script is on a linked object default { 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); // i'm linked llSay(0, "Linked, click to unlink"); bLink = TRUE; } } }
See Also
Events
| • | run_time_permissions | – | Permission receiving event | |
| • | changed | – | CHANGED_LINK |
Functions
| • | llGetPermissions | – | Get the permissions granted | |
| • | llGetPermissionsKey | – | Get the agent who granted permissions | |
| • | llRequestPermissions | – | Request permissions | |
| • | llBreakLink | – | Break a link | |
| • | llBreakAllLinks | – | Break all links |
Articles
| • | Script permissions | |||
| • | Linkability Rules |
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.

