2019-12-18, 07:39 PM
(This post was last modified: 2019-12-18, 07:46 PM by JustMichael.)
Okay, so timers come in two forms, one being a regular timer and another being a repeater. A regular timer has a keyword associated with it called `defer` which means to delay a call to a function, now you can defer a function for n times, n being the number of milliseconds you wish to delay.
An example of this would go as follows:
We than have repeatable timers. These timers run until manually stopped, and they can be stopped by using the `stop` keyword. To create a repeatable timer, you instead use the `repeat` keyword instead of the `defer` keyword. Here is an example:
I hope this is enough to make you understand when to use them and how to use them. Feel free to ask anymore questions :)
An example of this would go as follows:
Code:
main()
{
? ? // uses the 'defer' keyword to associated it with YSI,
? ? // and a function name and it's parameters is required afterwards?
? ? defer CheckPlayer(12);
? ? // You can override the delay set on the timer function, which is enclosed
? ? // in square brackets `[500]` by also putting square brackets with a new timer
? ? // delay inbetween?
? ? defer CheckPlayer[1000](12); // this will override the delay in the function and instead wait 1 second
? ??
}
// The 'timer' is a keyword that YSI uses to associated this function with YSI
// The number enclosed within square brackets `[500]` is the number of seconds the timer
// will be delayed for
timer CheckPlayer[500](playerid)
{
? ? // Perform some checks, or what you would normally do if this was a standard timer (SetTimer(Ex))
? ? if(IsPlayerConnected(playerid)) {
? ? ? ? printf("The player is connected");
? ? }
}
We than have repeatable timers. These timers run until manually stopped, and they can be stopped by using the `stop` keyword. To create a repeatable timer, you instead use the `repeat` keyword instead of the `defer` keyword. Here is an example:
Code:
static Timer: repeatable_timer;
main()
{
? ? // Here we are storing the timer globally, so it can later be stopped else
? ? // where in the script. Though this is only needed if the timer is to ever be stopped
? ? // timers are generally managed internally to YSI, so will be stopped when the server exits
? ? // or when the gamemode ends.
? ? repeatable_timer = repeat CheckPlayer(12);
? ? // We can also override the default delay for the function
? ? repeatable_timer = repeat CheckPlayer[1000](12); // The delay value is overridden to run every 1 second
}
// The 'timer' is a keyword that YSI uses to associated this function with YSI
// The number enclosed within square brackets `[500]` is the number of seconds the timer
// will be delayed for
timer CheckPlayer[500](playerid)
{
// Perform some checks, or what you would normally do if this was a standard timer (SetTimer(Ex))
if(IsPlayerConnected(playerid)) {
printf("The player is connected");
}
// Lets now stop the repeatable timer just as an example
stop repeatable_timer;
}
I hope this is enough to make you understand when to use them and how to use them. Feel free to ask anymore questions :)
Remember to always refer to J0sh as `J0sh...`
@ Networks/Servers
San Andreas Gaming Network (Owner/Founder)
San Andreas Gaming (Owner/Founder)
Grand Theft Cop's n Robber's (Owner)
Britannia Roleplay (Owner/Founder) [Retired]
Alpine RP (Owner/Founder)
Aluminium Network (Maintainer) [Disbanded]
AlphaDM (Tech Support) [Disbanded]
# Services
forum.open.mp (Forum Manager) (Formerly Burgershot.gg)
open.mp (Member)
~ Languages/Frameworks
Pawn, C, C, C#, Javascript, Typescript, Lua, Python, Go, Rust, PHP, SQL,
Angular, React, Vue, Svelte, Laravel, Rocket
@ Networks/Servers
San Andreas Gaming Network (Owner/Founder)
San Andreas Gaming (Owner/Founder)
Grand Theft Cop's n Robber's (Owner)
Britannia Roleplay (Owner/Founder) [Retired]
Alpine RP (Owner/Founder)
Aluminium Network (Maintainer) [Disbanded]
AlphaDM (Tech Support) [Disbanded]
# Services
forum.open.mp (Forum Manager) (Formerly Burgershot.gg)
open.mp (Member)
~ Languages/Frameworks
Pawn, C, C, C#, Javascript, Typescript, Lua, Python, Go, Rust, PHP, SQL,
Angular, React, Vue, Svelte, Laravel, Rocket