Quote:
Originally Posted by SuperViper
pawn Код:
InitializeCountdown(playerid) { new string[128], playersName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playersName, MAX_PLAYER_NAME); format(string, sizeof(string), "Countdown started by (%d) %s", playerid, playersName); SendClientMessageToAll(-1, string); SendClientMessageToAll(-1, "3"); SetTimer("Countdown_Two", 1000, 0); SetTimer("Countdown_One", 2000, 0); SetTimer("Countdown_Go", 3000, 0); }
forward Countdown_Two(); public Countdown_Two() { return SendClientMessageToAll(-1, "2"); }
forward Countdown_One(); public Countdown_One() { return SendClientMessageToAll(-1, "1"); }
forward Countdown_Go(); public Countdown_Go() { return SendClientMessageToAll(-1, "Go!"); }
To start it, put InitializeCountdown(playerid) somewhere in a command or something.
|
This is...madness. Why would you make 3 separate callbacks for this? It's just so messy, not to mention how you invoke multiple timers at a time! Here is an alternative example:
pawn Код:
public Countdown(count)
{
new string[5];
if(count)
{
format(string, sizeof(string), "%i", count);
SetTimerEx("Countdown", 1000, false, "i", count - 1);
}
else format(string, sizeof(string), "Go!");
SendClientMessageToAll(0xFFFFFF, string);
return 1;
}
Which can be invoked by simply doing this in the context of your choice:
pawn Код:
new string[64], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(string, sizeof(string), "Countdown started by (%d) %s", playerid, name);
SendClientMessageToAll(0xFFFFFF, string);
Countdown(5);