Версия: 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 'Таймер.Остановить'