Changed
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
| Flag | Description | Scope | |
|---|---|---|---|
| CHANGED_INVENTORY | 0x001 | Prim inventory has changed (owner adding inventory only). | prim |
| CHANGED_COLOR | 0x002 | Prim color or alpha parameters have changed. | prim |
| CHANGED_SHAPE | 0x004 | Prim shape has changed. | prim |
| CHANGED_SCALE | 0x008 | Prim scale has changed. | prim |
| CHANGED_TEXTURE | 0x010 | Prim texture parameters have changed. | prim |
| CHANGED_LINK | 0x020 | The number of prims making up the object or avatars seated on the object have changed. | object |
| CHANGED_ALLOWED_DROP | 0x040 | A user other than the owner (or the owner if the object is no-mod) has added inventory to the prim. | prim |
| CHANGED_OWNER | 0x080 | The object has changed owners. | object |
| CHANGED_REGION | 0x100 | The object has changed region. | object |
| CHANGED_TELEPORT | 0x200 | The avatar to whom this object is attached has teleported. | object |
| CHANGED_REGION_START | 0x400 | The region this object is in has just come online. | region |
| CHANGED_MEDIA | 0x800 | Prim Media has changed. | prim |
Caveats
- This event will trigger in any script using it (in its current running state) whether the script be in a child or root prim of a link_set. E.g. A changed event in a script in the wheel (child prim) of a car will trigger when any avatar sits on or stands from the seat (root prim) of that car.
Examples
default { changed(integer change) { //note that it's & and not &&... it's bitwise! if (change & CHANGED_INVENTORY) { llOwnerSay("The inventory has changed."); } if (change & CHANGED_COLOR) { llOwnerSay("The color or alpha changed."); } if (change & CHANGED_SHAPE) { llOwnerSay("The prims shape has changed."); } if (change & CHANGED_SCALE) { llOwnerSay("The prims size has changed."); } if (change & CHANGED_TEXTURE) { llOwnerSay("The prims texture or texture attributes have changed."); } if (change & CHANGED_LINK) { llOwnerSay("The number of links have changed."); } if (change & CHANGED_ALLOWED_DROP) { llOwnerSay("The inventory has changed as a result of a user without mod permissions "+ "dropping an item on the prim and it being allowed by the script."); } if (change & CHANGED_OWNER) { llOwnerSay("The owner of the object has changed."); } if (change & CHANGED_REGION) { llOwnerSay("The region the object is in has changed."); } if (change & CHANGED_TELEPORT) { llOwnerSay("The object has been teleported while attached."); } if (change & CHANGED_REGION_START) { llOwnerSay("The regions has just restarted."); } } }
For the same action to be called for multiple changes we can use the following syntax.
default { changed(integer change) { if(change & (CHANGED_OWNER | CHANGED_INVENTORY)) // Either of the changes will return true. llResetScript(); } }
Notes
- Always test the value of change unless you want your script to act upon any change that triggers it.
- New CHANGED_* flags, bugs and bug fixes could conceivably be added by LL at any time. Scripts should be written under the assumption that they will receive changed events not expected at the time or place of writing. For future proof scripts, use bitwise conditions as in the examples.
- See llGetOwner for a full discussion on " (change & CHANGED_OWNER) "
- If leaving a state from within a changed event that registers a change just before the state change, on return to that state the changed event will trigger. For example -
default { changed(integer change) { if(change & CHANGED_LINK) { integer links = 0; if(llGetObjectPrimCount(llGetKey()) < (links = llGetNumberOfPrims())) { llUnSit(llGetLinkKey(links)); state whatever; } else llOwnerSay("Some kind of linking or unlinking has changed me but, I am not being sat on."); // This will be chatted after returning to the default state. } } } state whatever { state_entry() { llSetTimerEvent(10.0); } timer() { state default; } }
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.

