SetTimerEx

From SA-MP Wiki

Jump to: navigation, search


Sets a timer to call a function after the specified interval. This variant ('Ex') can pass parameters (such as a player ID) to the function.


Parameters:
(funcname[], interval, repeating, const format[], {Float,_}:...)
funcname[]Name of the public function to call.
intervalInterval in milliseconds (1 second = 1000 MS).
repeatingBoolean (true/false (or 1/0)) that states whether the timer should be called repeatedly (can only be stopped with KillTimer) or only once.
format[]Special format indicating the types of values the timer will pass.
{Float,_}:...Indefinite number of arguments to pass (must follow format specified in previous parameter).


ReturnsThe ID of the timer that was started. Timer IDs start at 0. Timer IDs are never re-used.


Image:32px-Ambox_warning_orange.png Notes:
  • Because timer IDs are never used twice, you can use KillTimer() on a previously stored timer ID and it won't matter if it's running or not.
  • Timer intervals are not accurate (roughly 25% off). There are fixes available for this on the SA-MP forums.


Image:32px-Circle-style-warning.png Important Note: The function to be called must be public. That means it has to be forwarded.


Format Syntax

Placeholder Meaning
i Stands for an integer parameter.
d Exactly the same as i.
a Passes an array, the next parameter must be an integer ("i") with the array's size. [CURRENTLY UNUSABLE]
s Stands for a string parameter. [CURRENTLY UNUSABLE]
f Stands for a float parameter.
b Stands for a boolean parameter.


Example:

SetTimerEx("EndAntiSpawnKill", 5000, false, "i", playerid);
// EndAntiSpawnKill - The function that will be called
// 5000 - 5000 MS (5 seconds). This is the interval. The timer will be called after 5 seconds.
// false - Not repeating. Will only be called once.
// "i" - I stands for integer (whole number). We are passing an integer (a player ID) to the function.
// playerid - The value to pass. This is the integer specified in the previous parameter.

Implementation:

// The event callback (OnPlayerSpawn) - we will start a timer here
public OnPlayerSpawn(playerid)
{
    // Anti-Spawnkill (5 seconds)
 
    // Set their health very high so they can't be killed
    SetPlayerHealth(playerid, 999999);
 
    // Notify them
    SendClientMessage(playerid, -1, "You are protected against spawn-killing for 5 seconds.");
 
    // Start a 5 second timer to end the anti-spawnkill
    SetTimerEx("EndAntiSpawnKill", 5000, false, "i", playerid);
}
 
// Forward (make public) the function so the server can 'see' it
forward EndAntiSpawnKill(playerid);
 
// The timer function - the code to be executed when the timer is called goes here
public EndAntiSpawnKill(playerid)
{
    // 5 seconds has passed, so let's set their health back to 100
    SetPlayerHealth(playerid, 100);
 
    // Let's notify them also
    SendClientMessage(playerid, -1, "You are no longer protected against spawn-killing.");
    return 1;
}

Related Functions

The following functions may be useful, as they are related to this function in one way or another.

Personal tools
In other languages