attach
event
Event syntax
attach(key avatar// UUID of the avatar the object is attached to, orNULL_KEYif detached.
) { … }Triggered whenever the object is attached to or detached from an avatar. Passes the UUID key of the avatar if attached, or NULL_KEY if detached.
Triggered in an object when the object attaches or detaches from agent.
attach(key avatar){
}Specification
Section titled “Specification”Triggered
Section titled “Triggered”- When the object is attached to an avatar
- From the ground
- From inventory
- When the avatar wearing the object logs in
- When object is detached (id ==
)
- Dropped to the ground
- Derezzed to inventory
- <s>When the avatar wearing the object logs out</s> (does not occur with current versions, but scripters should anticipate the possibility)
Not Triggered
Section titled “Not Triggered”- When the avatar wearing the object teleports
- Use
CHANGED_TELEPORTto detect when the avatar teleports - When the avatar wearing the object moves from one region to another
- Use
CHANGED_REGIONto detect when the avatar changes region - When the attachment is detached after being attached with
llAttachToAvatarTemp. - There is no way to detect this at this moment.
Caveats
Section titled “Caveats”- When detached to inventory, an object is only given limited time to execute its attach events. If these events are active when the script derezzes but have not completed, execution will finish when the object is next rezzed. http://forums-archive.secondlife.com/54/8b/65518/1.html#post689314 If the script is busy handling a different event at detach time, an attach event with id=
NULL_KEYcan happen on the next rez, followed by one with the wearer’s key. To verify a real detach, check that id ==NULL_KEYANDllGetAttached()== 0. - If the script is busy with a complex event handler before it is taken to inventory, the event queue can overflow, leaving no room to capture new events. The queue is preserved, so attach and on_rez may not be triggered the next time the object is rezzed. To guard against this possibility,
llGetAttachedcan be checked in other events. - When detaching an object,
llGetAttached() returns 0, but the same happens when dropping an object from an attachment point to the ground. No other indicative event is triggered in the latter case; in particular, theon_rezevent is not triggered for attachment drops. If you need to distinguish a drop from a detach, a possible hack is to checkllGetObjectPrimCount(llGetKey()). If it’s zero, it can be assumed that the object is being detached; otherwise, that it is being dropped. - There is a bug when an attach event is in a script in a child prim. When the object is attached, a detached event is first triggered, and then an attached event is triggered. When the object is detached, no event is triggered.
Examples
Section titled “Examples”The following is a simplified example of the attach event. The variable id will be the key of the avatar the scripted object is attached to otherwise it will take on the value of
. The conditional if statement is used to determine the value of the variable id.
default{ attach(key id) { if (id) // is a valid key and not NULL_KEY { llSay(0, "I have been attached!"); } else { llSay(0, "I have been detached!"); } }}on_rez will be triggered prior to attach when attaching from inventory or during login.
Known issues
Section titled “Known issues”From the issue templates included by the wiki article:
- SVC-6687 (bug): Attach event doesn’t trigger in a child-prim when detaching the object
See also
Section titled “See also”Functions
Section titled “Functions”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.