Difference between revisions of "HPL3/Scripting/Scripting Guide/Timers"

From Frictional Wiki
Jump to navigation Jump to search
Line 23: Line 23:
 
===Breakdown===
 
===Breakdown===
  
* We called the function and gave it three arguments: The internal name of the timer, the time (in seconds) of the timer, and the function callback which will be called once the timer is done.
+
* We called the function and gave it three arguments: The internal name of the timer (<code>JumpVeryHigh</code>), the time in seconds (<code>5</code>) of the timer, and the function callback which will be called once the timer is done (<code>Timer_JumpVeryHigh</code>).
* Our timer callback is called "Timer_JumpVeryHigh" and has one parameter called asTimer - this is the internal name of the timer. In our case, the internal name will be "JumpVeryHigh".  
+
* Our timer callback is called <code>Timer_JumpVeryHigh</code> and has one parameter called <code>asTimer</code> - this is the internal name of the timer. In our case, the internal name will be <code>JumpVeryHigh</code>.  
  
 
We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.
 
We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.

Revision as of 22:20, 13 August 2020


Timers are set up to wait for a selected amount of time before executing code. It can be very useful if you want to wait a specified amount of time for something to happen in the level, such as intense countdown or to spawn / despawn particles in a dynamic way.

Creating Timers

In order to add timer to a map, we need to use the function Map_AddTimer. Let's see an example:

////////////////////////////
// Run first time starting map
void OnStart()
{
	Map_AddTimer("JumpVeryHigh", 5.0f, "Timer_JumpVeryHigh");
}

//...somewhere else in the code

void Timer_JumpVeryHigh(const tString&in asTimer)
{
	MyHelper_MakeThePlayerJumpVeryHigh();
}

Breakdown

  • We called the function and gave it three arguments: The internal name of the timer (JumpVeryHigh), the time in seconds (5) of the timer, and the function callback which will be called once the timer is done (Timer_JumpVeryHigh).
  • Our timer callback is called Timer_JumpVeryHigh and has one parameter called asTimer - this is the internal name of the timer. In our case, the internal name will be JumpVeryHigh.

We can do more than just create a timer, we can remove timers as well, or check if a timer is already running. For example, if we enter this area, create a timer of 5 seconds. However, if a timer has already been created, we don’t need to create that timer again, right? So we can use Map_TimerExists for that.

Timers are very easy to use as you can see, and it will help us to understand the concept of Sequences in the next episode.

See Also