llSetTimerEvent

From Second Life Wiki
Revision as of 21:54, 27 September 2013 by Strife Onizuka (talk | contribs) (Took me a bit to puzzle out what you meant.)
Jump to navigation Jump to search

Summary

Function: llSetTimerEvent( float sec );

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:
  • 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.
All Issues ~ Search JIRA for related Bugs

Examples

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

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

}

</lsl>

Notes

See Also

Events

•  timer

Functions

•  llSensorRepeat
•  llGetRegionTimeDilation
•  llGetTime

Deep Notes

Search JIRA for related Issues

Signature

function void llSetTimerEvent( float sec );