LlSetClickAction
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Tutorials |
Contents |
Summary
Function: llSetClickAction( integer action );| 333 | Function ID |
| 0.0 | Delay |
| 10.0 | Energy |
Sets the action performed when a prim is clicked upon (aka click action).
| • integer | action | – | CLICK_ACTION_* flag |
When the cursor hovers over the prim, its image changes to reflect the action.
Constants
| Flag | Description | Cursor | |
|---|---|---|---|
| CLICK_ACTION_NONE | 0 | Performs the default action: when the prim is touched, touch events are triggered | |
| CLICK_ACTION_TOUCH | 0 | When the prim is touched, touch events are triggered | |
| CLICK_ACTION_SIT | 1 | When the prim is touched, the avatar sits upon it | |
| CLICK_ACTION_BUY | 2 | When the prim is touched, the buy dialog is opened | |
| CLICK_ACTION_PAY | 3 | When the prim is touched, the pay dialog is opened | |
| CLICK_ACTION_OPEN | 4 | When the prim is touched, the object inventory dialog is opened | |
| CLICK_ACTION_PLAY | 5 | Play or pause parcel media on touch | |
| CLICK_ACTION_OPEN_MEDIA | 6 | Play parcel media on touch, no pause |
Caveats
- When set in the root of an object the chosen CLICK_ACTION_* will be that for the children also even if they have their own llSetClickAction set (it will be over-ridden). However (in the case of touch for example) if the CLICK_ACTION_* is set in the root but not at all in the children (including not having touch event scripts in them (this creates a default CLICK_ACTION_TOUCH)) the effect of the roots CLICK_ACTION_* is not seen but the CLICK_ACTION_* is used on clicking. To both use and see the correct cursor the CLICK_ACTION_* flags must match in the children and root.
Important Issues
~ Search JIRA for related Bugs| | | VWR-10829 | [c] | Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon |
Examples
This is a great way to create a user interface that evolves with the process the script is taking the user through.
key sitter; list up_up_and_away; CoughsAndLolz() { integer count = 0; vector XYZ = llGetPos(); float X = XYZ.x; float Y = XYZ.y; do up_up_and_away = up_up_and_away + [PRIM_POSITION, <X,Y,4000.0>]; while((++count) < 400); } default { state_entry() { llSetClickAction(CLICK_ACTION_SIT); // Set in state entry to be sit on click. llSitTarget(<0.0,0.0,0.01>, ZERO_ROTATION); } changed(integer change) { if(change & CHANGED_LINK) { sitter = llAvatarOnSitTarget(); if(sitter) { // Someone is upon us. CoughsAndLolz(); llSetClickAction(CLICK_ACTION_TOUCH);// And so we change the click action to allow the touch_start. llSay(0, "Click me for a thrill"); } } } touch_start(integer detected) { if(sitter) { llSetLinkPrimitiveParams(LINK_SET, up_up_and_away); llUnSit(sitter); llDie(); } } }
Notes
With the CLICK_ACTION_* flag set to anything but CLICK_ACTION_NONE or CLICK_ACTION_TOUCH (default), the script won't trigger the touch* events anymore when the prim is clicked.
Deep Notes
History
Introduced in SL 1.19.1(0)
Issues
~ Search JIRA for related Issues| | | VWR-640 | [c] | Shift-drag to copy object does not copy all settings | |
| | | VWR-10829 | [c] | Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon |
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.

