Difference between revisions of "LlSetTimerEvent"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
Kireji Haiku (talk | contribs) m (added info about timers in different states and edited example script to include PUBLIC_CHANNEL when talking on channel 0) |
m |
||
Line 14: | Line 14: | ||
|constants | |constants | ||
|examples= | |examples= | ||
{{ | {{LSL Tip|Timers inside Second Life are either running, when you set the time inside the [[llSetTimerEvent]] function call to a positive float, or they are not running, when you set the time inside the [[llSetTimerEvent]] function call to 0.0. Each state in your script only has one timer, and timers keep running even when switching states. For the sake of readability I personally tend to write llSetTimerEvent( (float)FALSE ); when stopping a timer, because I read it as "stop timer". Some other scripters will argue though, that 0.0 will be just fine too and I'm crazy.}} | ||
<lsl> | <lsl> | ||
// default of counter is 0 upon script load | // default of counter is 0 upon script load |
Revision as of 15:53, 5 October 2012
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: llSetTimerEvent( float sec );107 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Cause the timer event to be triggered a maximum of once every sec seconds. Passing in 0.0 stops further timer events.
• float | sec | – | Any positive non-zero value to enable, zero (0.0) to disable. |
Caveats
- The time between timer events can be longer, this is caused by:
- Time dilation - See llGetRegionTimeDilation for more information.
- Default event delay - Only so many events can be triggered per second.
- Event Execution - If the execution of an event takes too long.
- The timer persists across state changes, but gets removed when the script is reset
Examples
Important: Timers inside Second Life are either running, when you set the time inside the llSetTimerEvent function call to a positive float, or they are not running, when you set the time inside the llSetTimerEvent function call to 0.0. Each state in your script only has one timer, and timers keep running even when switching states. For the sake of readability I personally tend to write llSetTimerEvent( (float)FALSE ); when stopping a timer, because I read it as "stop timer". Some other scripters will argue though, that 0.0 will be just fine too and I'm crazy. |
<lsl> // default of counter is 0 upon script load integer counter;
default {
state_entry() { // llResetTime();
llSetTimerEvent(2.0); }
touch_start(integer total_number) { // PUBLIC_CHANNEL has the integer value 0 llSay(PUBLIC_CHANNEL, "The timer stops.");
llSetTimerEvent(0.0); counter = 0; }
timer() { ++counter; llSay(PUBLIC_CHANNEL, (string)counter+" ticks have passed in " + (string)llGetTime() + " script seconds.\nEstimated elapsed time: " + (string)(counter * gap)); }
}
</lsl>Notes
- Notes on minimum practical llSetTimerEvent values, Second Life forum, 2011-03-21