# llSetTimerEvent

*LSL function*

```lsl
void llSetTimerEvent(float sec);
```

- `float sec`: Interval in seconds between timer events (0.0 to disable).

- Energy: 10

Cause the [timer](/events/timer/) event to be triggered a maximum of once every **sec** seconds. Passing in 0.0 stops further timer events.

```lsl title="How to use" frame="terminal"
llSetTimerEvent(0.0);
```

## Caveats

- The time between timer events can be longer, this is caused by:
- **Time dilation** - See [llGetRegionTimeDilation](/functions/llGetRegionTimeDilation/) for more information.
- **[Default event delay](https://wiki.secondlife.com/wiki/LSL_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](/events/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.

## Examples

<details open>
<summary>Example 1</summary>

```lsl collapse={1-6, 18-26}
// 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;
    }

    timer()
    {
        ++counter;
        llSay(0,
            (string)counter+" ticks have passed in " + (string)llGetTime()
            + " script seconds.\nEstimated elapsed time: " + (string)(counter * gap));
    }
}
```

</details>

<details>
<summary>Example 2</summary>

```lsl
//  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) );
```

</details>

<details>
<summary>Example 3</summary>

```lsl collapse={16-23}
// 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);
    }

    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.");
    }
}
```

</details>

<details>
<summary>Example 4</summary>

```lsl collapse={1-7, 13-34}
// Using a timer to simulate multiple timers
integer counter_a = 0;
integer counter_b = 0;

default
{
    state_entry()
    {
        //Starting Timer Event
        llSetTimerEvent(1.0);
    }

    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");
        }

    }
}
```

</details>

## Notes

- [Notes on minimum practical llSetTimerEvent values](http://community.secondlife.com/t5/LSL-Scripting/quot-on-mouselook-quot/m-p/768291#M545), Second Life forum, 2011-03-21

## See also

### Functions

- [llSensorRepeat](/functions/llSensorRepeat/)
- [llGetRegionTimeDilation](/functions/llGetRegionTimeDilation/)
- [llGetTime](/functions/llGetTime/)

### Events

- [timer](/events/timer/)

---

*Source: [LlSetTimerEvent](https://wiki.secondlife.com/wiki/LlSetTimerEvent) on the Second Life Wiki. Content from the Second Life Wiki article LlSetTimerEvent (revision 1214214, 2023-07-05), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llSetTimerEvent/
