Skip to content
lsl.devlsl.devLSL Dev

LlAttachToAvatar

Looking for the current API? Open the llAttachToAvatar reference →

Wiki description

Attaches the object to the avatar who has granted permission to the script. The object is taken into the users inventory and attached to attach_point.

Function notes

If attach_point is zero, then the object attaches to the attach point it was most recently attached to.

Specification

Body
Constant # Name Comment
ATTACH_HEAD 2 Skull head
ATTACH_NOSE 17 Nose nose
ATTACH_MOUTH 11 Mouth mouth
''ATTACH_FACE_TONGUE'' 52 Tongue tongue
ATTACH_CHIN 12 Chin chin
''ATTACH_FACE_JAW'' 47 Jaw jaw
ATTACH_LEAR 13 Left Ear left ear
ATTACH_REAR 14 Right Ear right ear
''ATTACH_FACE_LEAR'' 48 Alt Left Ear left ear (extended)
''ATTACH_FACE_REAR'' 49 Alt Right Ear right ear (extended)
ATTACH_LEYE 15 Left Eye left eye
ATTACH_REYE 16 Right Eye right eye
''ATTACH_FACE_LEYE'' 50 Alt Left Eye left eye (extended)
''ATTACH_FACE_REYE'' 51 Alt Right Eye right eye (extended)
ATTACH_NECK 39 Neck neck
ATTACH_LSHOULDER 3 Left Shoulder left shoulder
ATTACH_RSHOULDER 4 Right Shoulder right shoulder
ATTACH_LUARM 20 L Upper Arm left upper arm
ATTACH_RUARM 18 R Upper Arm right upper arm
ATTACH_LLARM 21 L Lower Arm left lower arm
ATTACH_RLARM 19 R Lower Arm right lower arm
ATTACH_LHAND 5 Left Hand left hand
ATTACH_RHAND 6 Right Hand right hand
''ATTACH_LHAND_RING1'' 41 Left Ring Finger left ring finger
''ATTACH_RHAND_RING1'' 42 Right Ring Finger right ring finger
''ATTACH_LWING'' 45 Left Wing left wing
''ATTACH_RWING'' 46 Right Wing right wing
ATTACH_CHEST 1 Chest chest/sternum
ATTACH_LEFT_PEC 29 Left Pec left pectoral
ATTACH_RIGHT_PEC 30 Right Pec right pectoral
ATTACH_BELLY 28 Stomach belly/stomach/tummy
ATTACH_BACK 9 Spine back
''ATTACH_TAIL_BASE'' 43 Tail Base tail base
''ATTACH_TAIL_TIP'' 44 Tail Tip tail tip
ATTACH_AVATAR_CENTER 40 Avatar Center avatar center/root
ATTACH_PELVIS 10 Pelvis pelvis
''ATTACH_GROIN'' 53 Groin groin
ATTACH_LHIP 25 Left Hip left hip
ATTACH_RHIP 22 Right Hip right hip
ATTACH_LULEG 26 L Upper Leg left upper leg
ATTACH_RULEG 23 R Upper Leg right upper leg
ATTACH_RLLEG 24 R Lower Leg right lower leg
ATTACH_LLLEG 27 L Lower Leg left lower leg
ATTACH_LFOOT 7 Left Foot left foot
ATTACH_RFOOT 8 Right Foot right foot
''ATTACH_HIND_LFOOT'' 54 Left Hind Foot left hind foot
''ATTACH_HIND_RFOOT'' 55 Right Hind Foot right hind foot
HUD
Constant Comment
ATTACH_HUD_CENTER_2 31 HUD Center 2
ATTACH_HUD_TOP_RIGHT 32 HUD Top Right
ATTACH_HUD_TOP_CENTER 33 HUD Top
ATTACH_HUD_TOP_LEFT 34 HUD Top Left
ATTACH_HUD_CENTER_1 35 HUD Center
ATTACH_HUD_BOTTOM_LEFT 36 HUD Bottom Left
ATTACH_HUD_BOTTOM 37 HUD Bottom
ATTACH_HUD_BOTTOM_RIGHT 38 HUD Bottom Right
Special
Constant Comment
ATTACH_ANY_HUD -1 A special constant representing all HUD attachment points when filtering.

Caveats

  • Attach points can be occupied by multiple attachments.Multiple attachments per attach point were added as result of SCR-277
    • This was not always the case, previously if attach_point was occupied, the existing object was detached and the new attachment took it's place.
  • Objects attached to the head (and any attachment position within the head) will not be visible in First Person view (aka Mouselook) if "show attachments in mouselook" is disable.
  • If attach_point is zero but the object was never previously attached, it defaults to the right hand (ATTACH_RHAND).
  • If the object is already attached the function fails silently, regardless if the attach_point is a different attach point. -- SCR-137

Examples

//-- rez object on ground, drop in this script, it will request permissions to attach,
//-- and then attach to the left hand if permission is granted. if permission is denied,
//-- then the script complains.
default
{
    state_entry()
    {
        llRequestPermissions( llGetOwner(), PERMISSION_ATTACH );
    }

    run_time_permissions( integer vBitPermissions )
    {
        if ( vBitPermissions & PERMISSION_ATTACH )     
            llAttachToAvatar( ATTACH_LHAND );     
        else     
            llOwnerSay( "Permission to attach denied" );
    }

    on_rez(integer rez)
    {
        if (!llGetAttached() )        //reset the script if it's not attached.
            llResetScript();      
    }

    attach(key id)
    {
        // The attach event is called on both attach and detach, but 'id' is only valid on attach
        if (id)
            llOwnerSay( "The object is attached to " + llKey2Name(id) );
        else 
            llOwnerSay( "The object is not attached");
    }
}

See also: functions

See also: events

Shared wiki helpers

The original page also injects shared parameter notes, caveats or issue information through these helpers. Their conditional MediaWiki logic is not reproduced here; inspect the preserved helper source for additional material.

Template:LSL Function/permission

Original shared helper source (conditional wiki logic is not evaluated)
{{#if:

{{{{#if:{{#var:DEBUG_CHANNEL}}||:DEBUG_CHANNEL}}|}}

{{#vardefine:header_footnote|{{#var:header_footnote}}{{#if:{{{1|<noinclude>*</noinclude>}}}|To run this function the script must request the [[{{{1}}}]] {{#if:{{{2|}}}|or [[{{{2}}}]]}} permission with [[llRequestPermissions]]{{#ifeq:{{{grant|anyone}}}|anyone||&#32;and it must be granted by {{{grant|anyone}}}}}.}}}}

{{#vardefine:caveats|{{#var:caveats}}{{#if:{{{1|<noinclude>*</noinclude>}}}|{{PBR}}
<div style="border: 1px dotted rgba(0,0,0,0.5);">{{Collapsible_Table/Simple|title=<h5 style="margin:0;">Permissions</h5>|table-style=width:100%;|autocollapse=*|content={{!}}<div>
* Do not depend upon the auto-grant status of permissions. '''Always''' use the [[run_time_permissions]] event.
* If the script lacks {{#if:{{{2|}}}|both the permissions [[{{{1}}}]] and [[{{{2}}}]]|the permission [[{{{1}}}]]}}, the script will shout an error on {{#var:DEBUG_CHANNEL}} and the operation fails (but the script continues to run).{{#ifeq:{{{grant|anyone<noinclude>*</noinclude>}}}|anyone||
* If [[{{{1}}}]] {{#if:{{{2|}}}|or [[{{{2}}}]]}} is granted by anyone other than {{{grant|anyone}}}, then when the function is called an error will be shouted on {{#var:DEBUG_CHANNEL}}.}}
{{{caveats|}}}{{LSL Function/permission/caveat switch|{{{1}}}}}{{#if:{{{2|}}}|{{LSL Function/permission/caveat switch|{{{2}}}}}}}</div>}}</div>}}}}

{{#vardefine:also_events|{{#var:also_events}}
{{LSL DefineRow||[[run_time_permissions]]|Permission receiving event}}}}
{{#vardefine:also_functions|{{#var:also_functions}}
{{LSL DefineRow||[[llGetPermissions]]|Get the permissions granted}}
{{LSL DefineRow||[[llGetPermissionsKey]]|Get the agent who granted permissions}}
{{LSL DefineRow||[[llRequestPermissions]]|Request permissions}}}}
{{#vardefine:also_articles|{{#var:also_articles}}
{{LSL DefineRow||[[:Category:LSL Permissions/Script|Script permissions]]|}}}}

<includeonly>{{#if:{{{nc|}}}||{{#vardefine:hidden-text|{{#var:hidden-text}}
{{#if:{{#pos:{{#var:moded}}|r}}{{#pos:{{#var:moded}}|u}}||[[Category:LSL Requires Permissions]]}}
}}}}</includeonly>

}}<noinclude>
{| {{Prettytable}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|header_footnote}}
|-
{{VarPair|caveats}}
|-
{{VarPairTable|also_events}}
|-
{{VarPairTable|also_functions}}
|-
{{VarPairTable|also_articles}}
|}
</noinclude>

Template:Issues/VWR-12525

Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|VWR-12525|[[llAttachToAvatar]]() can cause parentless [[attachments]] that can subsequently crash the client when selected|type=bug|resolution=fixed}}

Template:Issues/SCR-137

Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|SCR-137|Allow [[llAttachToAvatar]]() to switch attachment locations|type=nf}}

Template:Issues/SVC-890

Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|SVC-890|[[llAttachToAvatar]] can cause a stack/heap collision in certain circumstances|type=bug}}

Template:Issues/SCR-277

Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|SCR-277|Add companion command to  [[llAttachToAvatar]]() to allow attaching multiple items in same attachment point|type=nf|fc=*|resolution=fixed}}
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.