Версия: 1.0
Платформа QSP позволяет с заданной периодичностью вызывать определённую локацию, что позволяет запускать некоторые события в реальном времени. Имя локации хранится в системной переменной $COUNTER
, интервал вызова в миллисекундах — в переменной SETTIMER
. Но работать со всем этим хозяйством не очень удобно: событий может быть несколько, возникать они могут в разные моменты игры, работать с их кодом в одной локации не очень-то удобно, плюс событие может быть как периодическим, так и разовым… и так далее.
Данный модуль берёт на себя все рутинные операции, предоставляя автору возможность в произвольных местах игры запускать и останавливать отдельные как разовые, так и периодические события.
otg_lib_timer.qsp | Сам модуль. |
example_timer.qsp | Пример работы с модулем. |
otg_lib_timer_help.html | Документация по работе с модулем (вы как раз её читаете) |
Первым делом необходимо подключить к своему проекту сам модуль. Для этого файл модуля нужно скопировать в тот же каталог, в котором находится основной проект, после чего в начало кода проекта добавить команду "ADDQST" (для QSP версии 5.7.0):
Подключение модуля:
ADDQST 'otg_lib_timer.qsp'
Все локации модуля начинаются с префикса "Таймер.", а переменные — с префикса "otg_", поэтому пересечения с данными основного проекта быть не должно.
Таймер.Событие | Добавляет или обновляет событие по таймеру. |
Таймер.Интервал | Изменяет интервал вызова события по таймеру. |
Таймер.Активировать | Включает или выключает выполнение указанного события. |
Таймер.Удалить | Удаляет указанное событие. |
Таймер.Запустить | Запускает обработку событий по таймеру. |
Таймер.Остановить | Приостанавливает обработку событий по таймеру. |
Добавляет или обновляет событие по таймеру.
Синтаксис:
GS 'Таймер.Событие', <Имя события>, <Код/Имя локации>, <Интервал>, <Тип>, <Отложить запуск>)
Параметры:
Имя события | Обязательный параметр. Имя события, которое потом можно использовать для остановки, запуска, или удаления события. |
Код/Имя локации | Обязательный параметр. В данном параметре можно передать либо исполняемый код события, либо имя локации, которая будет запускаться при вызове события. Чтобы вызывать именно определённую локацию, нужно перед её именем поставить символ "#" или "@". |
Интервал | Обязательный параметр. Интервал в миллисекундах вызова события. Для разового события — это просто время до запуска. |
Тип | Необязательный параметр. Данный параметр указывает периодическое ли это событие (0) или разовое (1). По умолчанию событие считается периодическим. |
Отложить запуск | Необязательный параметр. По умолчанию событие считается активным и для него сразу идёт отсчёт по таймеру, но если этот параметр установить в 1, то отсчёт времени для события можно будет запустить вручную командой Таймер.Активировать . |
Пример вывода на экран слова "Привет" каждые три секунды:
GS 'Таймер.Событие', 'СобытиеНа3секунды', {*NL 'Привет'}, 3000
Пример вызова определённой локации каждые 5 секунд:
GS 'Таймер.Событие', 'ВызовЛокацииНа5Секунд', '@ИмяЛокации', 5000
Пример разового вывода на экран фразы "Одного раза достаточно." через 10 секунд:
GS 'Таймер.Событие', 'РазовоеСобытие', {*NL 'Одного раза достаточно.'}, 10000, 1
Изменяет интервал вызова существующего события по таймеру. Отсчёт таймера при этом начинается заново.
Синтаксис:
GS 'Таймер.Интервал', <Имя события>, <Интервал>
Параметры:
Имя события | Обязательный параметр. Имя события, интервал вызова которого нужно изменить. |
Интервал | Обязательный параметр. Значение интервала. |
Пример изменения интервала события "РазовоеСобытие" на 7 секунд:
GS 'Таймер.Интервал', 'РазовоеСобытие', 7000
Включает или выключает выполнение указанного события. При включении таймер для данного события начинает отсчёт заново.
Синтаксис:
GS 'Таймер.Активировать', <Имя события>, <Активация>
Параметры:
Имя события | Обязательный параметр. Имя события, таймер для которого нужно остановить или запустить. |
Активация | Необязательный параметр. Если не указан, то событие будет активировано. Если в параметре передать 0, то таймер для события будет остановлен, если 1 — запущен заново. |
Пример:
GS 'Таймер.Активировать', 'РазовоеСобытие'
Удаляет указанное событие и все его параметры.
Синтаксис:
GS 'Таймер.Удалить', <Имя события>
Параметры:
Имя события | Обязательный параметр. Имя удаляемого события. |
Пример:
GS 'Таймер.Удалить', 'СобытиеНа3секунды'
Запускает обработку событий по таймеру. Отсчёт таймера для всех ранее созданных событий начинается именно с этой команды. Для событий созданных после запуска таймера отсчёт начинается тотчас же. Если до этого таймер был остановлен командой Таймер.Остановить
, то отсчёт продолжится, как будто остановки не было (если только принудительно не сбросить время для событий).
Синтаксис:
GS 'Таймер.Запустить', <Сбросить время>
Параметры:
Сбросить время | Необязательный параметр. Если в параметре передать 1, то для всех событий отсчёт таймера начнётся заново. |
Пример:
GS 'Таймер.Запустить'
Приостанавливает обработку всех событий по таймеру.
Синтаксис:
GS 'Таймер.Остановить'