- Регистрация
- 4 Ноя 2013
- Сообщения
- 118
- Лучшие ответы
- 0
- Репутация
- 33
Доброго времени суток, уважаемые пользователи Pawno-info. Сегодня я решил поделиться своей теорией о таймерах. Итак, начнем
Предисловие
Существуют 2 типа таймеров:
1) SetTimer
2) SetTimerEx
Лично по мне SetTimer ближе и удобнее, особенно для новичков.
Время в таймерах измеряется в милисекундах => 1 секунда = 1000 МС
1 минута - 60000 МС и.т.д
SetTimer
SetTimer, как я уже говорил выше, самый простой из этих двух типов таймеров. Он отвечает за повтор определенного паблика/функции по окончании определенного кол-ва времени
Объявление таймера SetTimer происходит так:
Разберем написанное выше подробнее.
"FuncName" - название таймера [ПРИМЕЧАНИЕ: обязательно указание в ковычках ("")]
Далее time - время таймера, как я говорил выше, указывается в милисекундах.
И наконец repeating - определяет будет ли таймер стартовать снова по завершению своей работы. Repeating имеет тип переменной bool => может принимать значения ТОЛЬКО false и true
Разберем работу таймера SetTimer на примере:
Итак, что же мы видим в этой функции:
В public OnGameModeInit() создается таймер с названием Test
Периодичностью: 10 минут
С повторением функции после завершения.
Далее каждую минуту игрокам выводится в чат сообщение:
SetTimerEx
Этот таймер сложнее предыдущего тем,что к нему можно добавить определенные аргументы.
Таймер записывается так:
Первые 3 аргумента нам уже известны. 4 и 5 же нет.Разберем их:
Переменная const format[] может принимать значения "i", "s", "b", "f", "fis" и.т.д(использующие sscanf поймут о чем я говорю)
Кто не понял скажу так:
"i" - integer(целочисленная переменная)
"s" - string(Переменная, содержащая символы буквенные)
"b" - bool(true/false)
"f" - Float(с плавающей точкой, например, 3.14)
"fis" - float+integer+string(пример: 3.14, 6, "test")
второй параметр как раз таки содержит значение переменной, типа указанного ранее.
Так например:
Как же работает такой таймер? Разберем на примере.
Таким образом каждые 10 минут в консоль сообщение.
KillTimer
Из названия понятно, что функция KillTimer(namerid); убивает таймер(прекращает его работу)
Это можно сделать в случаях, когда при выполнении какого-то действия требуется остановить таймер.
Пример:
На этом урок окончен всем спасибо, жду отзывов и оценок.
Предисловие
Существуют 2 типа таймеров:
1) SetTimer
2) SetTimerEx
Лично по мне SetTimer ближе и удобнее, особенно для новичков.
Время в таймерах измеряется в милисекундах => 1 секунда = 1000 МС
1 минута - 60000 МС и.т.д
SetTimer
SetTimer, как я уже говорил выше, самый простой из этих двух типов таймеров. Он отвечает за повтор определенного паблика/функции по окончании определенного кол-ва времени
Объявление таймера SetTimer происходит так:
Код:
SetTimer("FuncName",time,repeating);
"FuncName" - название таймера [ПРИМЕЧАНИЕ: обязательно указание в ковычках ("")]
Далее time - время таймера, как я говорил выше, указывается в милисекундах.
И наконец repeating - определяет будет ли таймер стартовать снова по завершению своей работы. Repeating имеет тип переменной bool => может принимать значения ТОЛЬКО false и true
Разберем работу таймера SetTimer на примере:
Код:
public OnGameModeInit()
{
SetTimer("Test", 600000, true);
return true;
}
forward Test();
public Test(){
SendClientMessageToAll(0xFFFFFFAA, "Тестовый таймер завершил свою работу. Прошло 10 минут!");
return true;
}
В public OnGameModeInit() создается таймер с названием Test
Периодичностью: 10 минут
С повторением функции после завершения.
Далее каждую минуту игрокам выводится в чат сообщение:
Код:
Тестовый таймер завершил свою работу. Прошло пять минут!
Этот таймер сложнее предыдущего тем,что к нему можно добавить определенные аргументы.
Таймер записывается так:
Код:
SetTimerEx("FuncName",time,repeating,const format[], { Float,_}:...);
Переменная const format[] может принимать значения "i", "s", "b", "f", "fis" и.т.д(использующие sscanf поймут о чем я говорю)
Кто не понял скажу так:
"i" - integer(целочисленная переменная)
"s" - string(Переменная, содержащая символы буквенные)
"b" - bool(true/false)
"f" - Float(с плавающей точкой, например, 3.14)
"fis" - float+integer+string(пример: 3.14, 6, "test")
второй параметр как раз таки содержит значение переменной, типа указанного ранее.
Так например:
Код:
SetTimerEx("Test",600000,true,"s","testing");
Код:
public OnGameModeInit()
{
SetTimerEx("Test",600000,true,"s","testing");
return true;
}
forward Test(integ,const string[],Float:floatt);
public TimerPublic(integ,const string[],Float:floatt)
{
printf("Тестовый таймер завершил свою работу. Выводимое сообщение: %s", string);
return true;
}
KillTimer
Из названия понятно, что функция KillTimer(namerid); убивает таймер(прекращает его работу)
Это можно сделать в случаях, когда при выполнении какого-то действия требуется остановить таймер.
Пример:
Код:
Ко всем new:
new testtimer;
В public OnGameModeInit()
testtimer = SetTimer("Test",600000,true);
И в нужную функцию:
KillTimer(testtimer);
Последнее редактирование: