Skip to content
lsl.devlsl.devLSL Dev

llSetTimerEvent

function
Function syntax
llSetTimerEvent(
  1. float sec// Interval in seconds between timer events (0.0 to disable).
);
Energy
10

Cause the timer event to be triggered a maximum of once every sec seconds. Passing in 0.0 stops further timer events.

How to use
llSetTimerEvent(0.0);
  • 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. So if you change to a state that has a timer() event, with the timer still running, it will fire in the new state.
  • Setting a new timer replaces the old timer and resets the timer clock.
  • If you repeatedly call this function at some interval less than sec the timer event will never fire.
  • The timer event is not an interrupt, it will not pause the execution of the currently running event to execute the timer. The current event must finish executing before the timer executes.
Example 1
6 collapsed lines
// default of counter is 0 upon script load
integer counter;
float gap = 2.0;
default
{
state_entry()
{
llSetTimerEvent(gap);
}
touch_start(integer total_number)
{
llSay(0, "The timer stops.");
llSetTimerEvent(0.0);
counter = 0;
}
9 collapsed lines
timer()
{
++counter;
llSay(0,
(string)counter+" ticks have passed in " + (string)llGetTime()
+ " script seconds.\nEstimated elapsed time: " + (string)(counter * gap));
}
}
Example 2
// random period in between (+15.0, +30.0]
// which means the resulting float could be 30.0 but not 15.0
llSetTimerEvent( 30.0 - llFrand(15.0) );
// same results for:
// llSetTimerEvent( 30.0 + llFrand(-15.0) );
Example 3
// The timer event will never fire.
default
{
state_entry()
{
llSetTimerEvent(5.0);
// Sensor every 2.5 seconds
llSensorRepeat("", NULL_KEY, FALSE, 0.0, 0.0, 2.5);
}
no_sensor()
{
llSetTimerEvent(5.0);
}
8 collapsed lines
timer()
{
llSay(0, "I will never happen.");
llSay(0, "Well, unless llSensorRepeat() magically finds something,"+
"or maybe there's 2.5+ seconds of lag and the timer()"+
"event queues.");
}
}
Example 4
7 collapsed lines
// Using a timer to simulate multiple timers
integer counter_a = 0;
integer counter_b = 0;
default
{
state_entry()
{
//Starting Timer Event
llSetTimerEvent(1.0);
}
22 collapsed lines
timer()
{
//Increment counters
counter_a++;
counter_b++;
if(counter_a >= 100)
{
//Resetting Counter A
counter_a = 0;
llOwnerSay("Counter a has reached 100");
}
if(counter_b >= 200)
{
//Resetting counter B
counter_b = 0;
llOwnerSay("Counter b has reached 200");
}
}
}
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.

From the Second Life Wiki

Community documentation adapted from LlSetTimerEvent, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.