IXR Framework (LUA Фреймворк)
IMPORTANT
Статус: Поддерживается
Минимальная версия: 1.4.0
Модуль таймеров IXR TIMERS
Позволяет создавать хранимые в сохранениях игры таймеры с полезной нагрузкой в виде скрипт функции которая будет выполнена по истичении таймера.
Обьект таймера записывается в сохранении игры.
lua
--// Создать таймер
TimerCreate(name, loop, auto_play, left_milliseconds, callable_fn, ...)
args:
name (string)(required) - уникальное имя таймера.
loop (bool)(required) - флаг циклического повтора.
auto_play (bool)(required) - флаг автоматического запуска.
left_milliseconds (int)(required) - время до срабатывания в миллисекундах.
callable_fn (function)(...) - функция вызываемая по окончании таймера (принимает аргументы переданные как ...).
... (аргументы для callable_fn функции)
retval: (table) возвращаемые как ООП методы созданного таймера
self:name(): string - получить имя таймера.
self:exists(): bool - проверить существование таймера.
self:play(): bool - запустить таймер.
self:stop(): bool - остановить таймер.
self:delete(): bool - удалить таймер.
--// Проверить существование таймера по имени
IsTimerExists(name)
args:
name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер существует иначе false
--// Запуск таймера по имени (игнорируется если таймера нет или он уже запущен)
TimerPlay(name)
args:
name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер запустился иначе false
--// Остановка таймера по имени (игнорируется если таймера нет или он еще не запущен)
TimerStop(name)
args:
name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер остановлен иначе false
--// Удаление таймера по имени (игнорируется если таймера нет)
TimerDelete(name)
args:
name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер удален иначе falseПримеры:
lua
--// выставляем ожидание события новой игры
function on_game_start(callbackRegistrator)
RegisterScriptCallback("new_game_created", this.on_new_game_started)
end
function on_new_game_started()
--// здесь можно определить таймеры как вариант в начале новой игры
end
--// Автоматически запустится и будет повторяться каждые 5 секунд.
TimerCreate
(
"my-timer-01", true, true, 5000,
function (a, b)
...
end,
"Переменная А", "Переменная Б"
)
--// Автоматически запустится и сработает единожды через 5 секунд.
TimerCreate
(
"my-timer-02", false, true, 5000,
function (a, b)
...
end,
"Переменная А", "Переменная Б"
)
--// Создаем таймер который сработает единожды через 5 секунд но он не запущен сразу после создания (запускаем его позже по мере необходимости - позволяет делать сложные отложенные цепочки действий т.к таймеры можно вкладывать друг в друга).
TimerCreate
(
"my-timer-02", false, false, 5000,
function (a, b)
...
end,
"Переменная А", "Переменная Б"
):play()
--// Проверить существование таймера по имени
if IsTimerExists("my-timer-02") then
...
end
--// Запуск таймера по имени
TimerPlay("my-timer-02")
--// Остановка таймера по имени
TimerStop("my-timer-02")
--// Удаление таймера по имени
TimerStop("my-timer-02")