Здравствуйте форумчане.
Долго не хотел писать урок, но всё же решился, думаю многим пригодится.
Это будет мой очередной урок касающийся библиотеки YSI
А именно я вам объясню про таймеры.
Для начала нужно установить библиотеку YSI и подключить нужный нам инклуд:
PHP код:
#include <YSI\y_timers>
(Скачать библиотеку YSI 3.1 (кликабельно))
Для начала я приведу пару простых примеров использования стандартного таймера и таймера на y_timers
PHP код:
forward NameTimer1();
forward NameTimer2(playerid)
SetTimer("NameTimer1", 1000, 1);
SetTimerEx("NameTimer2", 500, 0, "i", 42);
public NameTimer1() {}
public NameTimer2(playerid) {}
Теперь тоже самое на y_timers
PHP код:
task NameTimer1[1000]()
{
//Таймер вызывается каждую секунду
}
ptask NameTimer2[500](playerid)
{
//Таймер вызывается каждую секунду для игрока (индивидуально)
}
Так, я показал небольшой примерчик, теперь нужно расписать функции (Для конкретики)
Функции
• task
Пример использования: task TimerName[1000]()
Если вызвать два таймера на одинаковое количество секунд, то они выполнятся поочерёдно
• ptask
Пример использования: ptask TimerName[1000](playerid)
Тоже самое, что и task, но имеет параметр playerid и вызывается у каждого игрока
• defer
Пример использования: defer TimerName(playerid);
defer TimerName[200](playerid); //Вызовет таймер на 200 секунде
Вызывается 1 раз и работает указанное время 1 раз (можно вызывать X раз)
• repeat
Пример использования: repeat TimerName();
repeat TimerName[100]();
Вызывает таймер который будет повторяться каждые n секунд
• stop
Пример использования: stop TName;
Остановит таймер при условии, что для него есть переменная.
Теперь подробный пример использования функций.
◘ использование task и ptask указанны в начале топика
defer
PHP код:
defer TimerName(playerid);
timer TimerName[15000](playerid){}
Примечание:
PHP код:
defer TimerName[2000]() //Вызовет таймер на 2 секунде его работы!
repeat
PHP код:
new Timer:TName; //Переменная для таймера
TName = repeat TimerName(); // Вызовет таймер (вставляем в нужное место)
timer TimerName[15000]() {} //Сам таймер
Примечание:
Также можно сделать так:
PHP код:
new Timer:TName[MAX_PLAYERS]; //Переменная для таймера
TName[playerid] = repeat TimerName(); // Вызовет таймер для игрока
timer TimerName[15000]() {} //Сам таймер
stop
PHP код:
new Timer:TName; //Переменная для таймераTName = repeat TimerName(); // Вызовет таймер
timer TimerName[15000]()
{
stop TName; //Остановит таймер
}
Чтобы наглядно посмотреть как работает одна из функций, можно использовать samp-server.exe
Пример defer:
PHP код:
new bool:yes;
main()
{
yes = true;
}
task Timer[5000]()
{
print("> Таймер 1 запустился!");
if(yes == true) return defer ASDa(), yes = false;
return true;
}
timer ASDa[3000]()
{
print(">> Таймер 2 вызвался 1 раз и больше работать не будет!"); //Пока не вызовут его ещё раз!
}
Так же можно проверить поочерёдность срабатывания таймера task
PHP код:
task Timer1[1000]()
{
print("> Таймер 1 сработал");
}
task Timer2[1000]()
{
print(">> Таймер 2 сработал");
}
task Timer3[1000]()
{
print(">>> Таймер 3 сработал");
}
Я сам ещё не до конца разобрался, поэтому не орите, а просто поправьте
Лично я использую Y_Timers потому, что он очень удобен и легок в использовании!
Всё, что не понятно пишите в комментариях, я объясню понятнее!