Jump to content

LlBreakLink

From OSgrid Wiki
Revision as of 16:11, 30 December 2017 by Osgridadmin (talk | contribs) (→Function: llBreakLink( integer linknum );)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Function: llBreakLink( integer linknum );

Delinks the prim with the given link number in a linked object set
• integer linknum – Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag
Requires the PERMISSION_CHANGE_LINKS permission, granted by the owner, to run.

Caveats
• 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. The script will only lose the permission if it is reset or the object derezzed (deleted, detached, or taken).
• This function removes sitting avatars from the object, even if not sitting on the unlinked prim.
• This function silently fails if called from a script inside an attachment.
• This function fails if the owner does not have edit permissions on the object containing the script, the system message "Delink failed because you do not have edit permission" is received by the owner.
• A prim with PERMISSION_CHANGE_LINKS can delink any prim in the linked object set even itself or the root
• The only LINK_* flag that linknum currently supports is LINK_ROOT. SVC-3510
-• Use llGetLinkNumber() as the parameter to unlink the script's prim, not LINK_THIS.
-• Use llBreakAllLinks() instead of using LINK_SET, LINK_ALL_CHILDREN, or LINK_ALL_OTHERS as the parameter for llBreakLink

Examples

<source lang="lsl">

//-- requests permission to change links, then breaks the link //-- between the prim and the rest of the object, on touch. default{

 state_entry(){
   llRequestPermissions( llGetOwner(), PERMISSION_CHANGE_LINKS );
 }

 touch_start( integer vIntTouched ){
   llBreakLink( llGetLinkNumber() );
 }

} </source>


See Also
Events
• run_time_permissions – Permission receiving event
• changed – CHANGED_LINK
Functions
• llGetLinkNumber – Returns the link number of the prim the script is in.
• llGetPermissions – Get the permissions granted
• llGetPermissionsKey – Get the agent who granted permissions
• llRequestPermissions – Request permissions
• llBreakAllLinks – Break all links
• llCreateLink – Link to another object