Активный
- Тема Автор
- #1
Таймеры позволяют выполнять код через определенные промежутки времени. Разберем работу с ними.
SetTimer
Создает одноразовый таймер:
SetTimerEx
Таймер с параметрами:
Примеры использования
KillTimer
Остановка таймера:
Важные моменты:
- Используйте forward для объявления функций таймеров
- Храните ID таймеров для возможности их остановки
- Не создавайте слишком много таймеров одновременно
- Время указывается в миллисекундах
Практикуйтесь с таймерами для создания динамичных систем!
SetTimer
Создает одноразовый таймер:
Код:
SetTimer("MyFunction", 5000, false); // вызов через 5 секунд один раз
SetTimer("MyFunction", 1000, true); // вызов каждую секунду
SetTimerEx
Таймер с параметрами:
Код:
SetTimerEx("GiveMoney", 30000, false, "ii", playerid, 1000);
// Вызов функции GiveMoney через 30 секунд с параметрами playerid и 1000
Примеры использования
Код:
// Автоматическое сохранение каждые 5 минут
public OnGameModeInit()
{
SetTimer("AutoSave", 300000, true);
return 1;
}
forward AutoSave();
public AutoSave()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
SavePlayerData(i);
}
}
print("Автосохранение выполнено");
}
// Задержка перед спавном
public OnPlayerSpawn(playerid)
{
SetTimerEx("DelayedSpawn", 2000, false, "i", playerid);
return 1;
}
forward DelayedSpawn(playerid);
public DelayedSpawn(playerid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SendClientMessage(playerid, -1, "Добро пожаловать!");
}
// Обратный отсчет
new countdown = 10;
forward Countdown();
public Countdown()
{
if(countdown > 0)
{
new string[32];
format(string, sizeof(string), "Осталось: %d секунд", countdown);
SendClientMessageToAll(-1, string);
countdown--;
}
else
{
SendClientMessageToAll(-1, "Время вышло!");
KillTimer(countdownTimer);
}
}
KillTimer
Остановка таймера:
Код:
new Timer:timer = SetTimer("MyFunction", 1000, true);
// ...
KillTimer(timer);
Важные моменты:
- Используйте forward для объявления функций таймеров
- Храните ID таймеров для возможности их остановки
- Не создавайте слишком много таймеров одновременно
- Время указывается в миллисекундах
Практикуйтесь с таймерами для создания динамичных систем!