Разбор работы системы - Graff46/ProcedureGenerationTasks GitHub Wiki
Класс динамических квестов
dynqst.script
Класс динамических квестов представляет собой класс написанный на Lua (Lua_bind) реализующий базовый функционал отдельного динамического квеста. Этот класс парсит *.ltx файл с базовым описанием дин. квеста и поддерживает его работу. У данного есть методы которые позволяю управлять дин. квестом другим скриптовым модулям (?API):
Конструктор класса. Он создает экземпляр класса, в конструктор передаются параметры:
- Строка СториИд цели
- Клиентский объект НПС который будет исполнителем
- Серверный объект НПС который будет работодателем
- Серверный объект основной цели дин. квеста
Метод set_state (без параметров) - запускает дин. квест. Устанавливает схему поведения исполнителю.
Метод progress принимает 1 обязательный параметр - строку с названием события для дин. квеста. Фактически определяет провал и выполнение квеста, строки для параметра: complete и fail. Вызывать данный метод понадобится когда понадобиться завершить квест, например, из эффектора (постусловия).
Метод changeTarget параметры: число ид объекта цели, строка сториИд объекта цели или иная строковая метка. Данный метод меняет текущую основную цель дин. квеста. Следует понимать, что данный метод используется другими модулями, лишний раз вызывать его самому нужно осторожно!
Метод step на данный момент не предназначен для "внешних" вызовов! Но знать о нём стоит, данный метод переключает "шаги" квеста, условные уровни, как правило уровни отличаются целью и являются мини-подзаданиями, количество и наличие уровней можно задать различными способами, например меняя цели дин. квеста по кондлистам или предикатам и эффекторам в *.ltx описании дин. квеста. Также именно этот метод вызывает эффекторы, при возвращении эффекторм истины переключает шаг.
Есть важный момент При запуске дин. квеста исполнителю в качастве первоочередной цели устанавливается работодатель, только "встретившись" с работодателем исполнитель начнет стремится к цели(ям) указанных в дин. квесте.
Схема поведения НПС
xr_targeter.script
Схема поведения для НПС исполнителей - скриптовая схема поведения как и все остальные основана на функционале планировщика. Не требует наличия секций в custom_data НПС, подключается/отключается автоматически. Позволяет НПС "выполнять" дин. квесты.
Включение схемы происходит при вызове метода set_state класса дин. квестов, выключение при завершении дин. квеста.
Схема считывает координаты НПС и цели, ведет НПС к цели, подразумевается работа в оффлайне (не реализованно). Схема обрабатывает случай когда цель взял в инвентарь другой НПС или ГГ, по умолчанию ведет НПС к "носителю" цели. Постоянно вызывает текущие предусловие, если предусловие станет истинным - вызывает метод step класса дин. квестов. (Как правило далее меняется цель или дин. квест завершается).