PickUpMissionExt
Команда предназначена для взятия квестового задания (миссии) у конкретного неигрового персонажа - квестодателя (NPC) или у вспомогательной внутриигровой диалоговой подсистемы (Remote).
Описание алгоритма
- Проверяется отсутствие миссии в журнале активных и выполненных задач персонажа. Если миссия есть в журнале - команда завершается.
- Если задан квестодатель-NPC, проверяется текущая карта и регион в котором находится персонаж. При несоответствии карты/региона - команда завершается.
- Персонаж перемещается к квестодателю-NPC и производит взаимодействие с ним, либо активирует внутриигровую диалоговую подсистему Remote.
- Если задан RequiredRewardItem, то проверяется его наличие в составе наград за выполнение миссии.
В случае отсутствия необходимого предмета, выполняется переход к команде с идентификатором TargetActionOnRequiredRewardMissing. - Персонаж принимает миссию и команда завершается.
Настройки команды
Наименование | Описание |
---|---|
Настройки миссии (категория “Mission Options”) |
|
MissionId | Текстовый идентификатор миссии состоящий из алфавитно-цифровых символов. В начале и в конце строки допускается использование символа подстановки * , заменяющего произвольное число алфавитно-цифровых символов. |
Giver | Комплексная опция, идентифицирующая квестодателя, который выдает миссию. Подробное описание приведено в статье MissionGiverInfo. |
ContactHaveMission | Переключатель, активирующий проверку на наличие у квестодателя-NPC квестового задания: - Any : любой тип миссии (значение по умолчанию) - Main : миссия, относящаяся к Приключению (Adventure) - RepeatablesOnly : повторяемая миссия (дейлик) - Event : Миссия, связанная с временными событиями - Disable : проверка отключена Активация данной опции позволяет исключить лишние перемещения персонажа, поскольку позволяет определить отсутствие у квестодателя-NPC миссии не приближаясь к нему в плотную и не выполняя взаимодействия. Следует отметить, что проверка будет работать некорректно, если иконка над персонажем отличается от стандартных иконок квестовых заданий, например, иконка магазина. |
Настройки взаимодействия (категория “Interaction”) |
|
Dialogs | Последовательность ответов в диалоге с квестодателем, которую необходимо пройти перед получением возможности принять миссию. Опция не обязательна. |
InteractDistance | Максимальное допустимое расстояние, на котором возможно взаимодейтсвие с квестодателем-NPC. |
ReactionZRange | Максимальная допустимая разница по высоте (ZAxis) между квестодателем-NPC и персонажем. Минимальное допустимое значение : 5 . |
SkipOnFail | Флаг, предписывающий завершить команду после безуспешной попытки принять заданную миссию. |
CloseContactDialog | Флаг, предписывающий закрывать диалог с квестодателем после взятия миссии. По умолчанию не установлен. |
Настройки управления боем (категория “Manage Combat Options”) |
|
IgnoreCombat | Флаг, предписывающий активировать режим игнорирования боя IgnoreCombat при следовании к квестодателю-NPC. Режим игнорирования боя отключается только при штатном завершении команды. В случае принудительного прерывания команды режим игнорирования боя может продолжать действовать и влиять на выполнение quester-профиля. |
IgnoreCombatCondition | Дополнительное условие, управляющее режимом прерывания боя. Если условие на выполняется, то режим игнорирования боя не активируется. |
IgnoreCombatMinHP | Величина минимального здоровья персонажа HP (в процентах), при котором может быть активирован режим игнорирования боя. Если здоровье персонажа опустится ниже указанной величины, то персонаж вступи в бой. При значении -1 команда не меняетт системное значение IgnoreCombatMinHP при активации режима игнорирования боя. |
Дополнительные настройки (категория “Optional”) |
|
RequiredRewardItem | Идентификатор предмета, который должен быть в наградах за выполнение миссии. Пустая строка отключает проверку. Миссия не будет принята при отсутствии заданного предмета. В начале и в конце строки допускается использование символа подстановки * , заменяющего произвольное число алфавитно-цифровых символов.Чтобы выбрать нужный предмет в игре должно быть открыто диалоговое окно принятия миссии. |
TargetActionOnRequiredRewardMissing | Идентификатор команды скрипта, которая будет выполнена в случае, если в наградах за выполнение миссии не будет найден обязательный предмет RequiredRewardItem. |
Мастер настройки (GatherInfo)
Мастер настройки вызывается автоматически при добавлении новой команды, или при нажатии кнопки [GatherInfo]. Для настройки команды выполните следующие действия:
- В quester-редакторе в диалоговом окне SelectForm выберите типа квестодателя:
- NPC : неигровой персонаж-квестодатель, расположенный в определенном месте игрового мира;
- Remote : дистанционная диалоговая система, доступная из любой точки игрового мира. Обычно с таких миссий начинаются кампании.
- Идентифицируйте квестодателя.
- Идентификация квестодателя-NPC производится в игровом окне. Для этого нужно подвести игрового персонажа вплотную к соответствующему NPC, направить на него игровую камеру и нажать F12.
Информация о выбранном NPC будет занесена в опцию Giver.
- Идентификация дистанционного квестодателя (Remote) производится в диалоговорм окне GetAnId в quester-редакторе.
После идентификации квестодателя-NPC игровой персонаж самостоятельно произведет взаимодействие с ним и дождётся появления внутриигрового диалогового окна.
- Идентификация квестодателя-NPC производится в игровом окне. Для этого нужно подвести игрового персонажа вплотную к соответствующему NPC, направить на него игровую камеру и нажать F12.
- В окне quester-редактора в диалоговом окне SelectForm выберите пункт диалога, соответствующий принимаемому квестовому заданию.
Если закрыть окно SelectForm без выбора пункта диалога - откроется стандартное окно выбора миссии.
После выбора пункта диалога в редакторе, бот активирует в игре соответствующий пункт диалога, что приводит к открытию экрана принятия миссии. На этом этапе возможно подвисание до 3 секунд, связанное с необходимостью “ожидания отклика” игрового интерфейса и обновления игрового журнала заданий.
Бот попытается самостоятельно извлечь идентификатор MissionId. - Если боту не удалось извлечь идентификатор MissionId, в quester-редакторе отобразится диалоговое окно Get a mission id, в котором необходимо выбрать нужную миссию.
- В quester-редакторе в диалоговом окне Get an item id, можно выбрать один из предметов, выдаваемых в качестве награды за выполнение миссии.
По умолчанию открывается вкладка с наградами за выполнение миссии, однако, для поиска нужного предмета можно переключиться другую вкладку.
Идентификатор выбранной награды заносится в опцию RequiredRewardItem.
Если закрыть окно, то опция RequiredRewardItem останется незаполненной, а проверка - отключится.
Внутренние условия
Перед запуском команды проверяется истинность следующих условий:
- Миссия, заданная опцией MissionId, отсутствует в журнале активных или выполненных задач персонажа.
- Персонаж и квестодатель-NPC находятся на одной карте и в одном регионе.
Команда пропускается, если хотя бы одно из условие не выполняется.
Завершение команды
Команда завершается:
- после взаимодействия с квестодателем и принятия заданной миссии;
- при отсутствии RequiredRewardItem в списке наград за выполнение миссии.
Принудительное завершение команды возможно одним из способов, перечисленных в статье.
Аналоги
Отличия от команд PickUpMission и InteractNPC, встроенных в базовый функционал бота:
- возможность проверки наличия в наградах за миссию заданного предмета и отказ от принятия миссии при его отсутствии.
- встроенная проверка наличий миссии в журнале активных или завершенных задач персонажа;
- встроенная проверка карты и региона, в которых находится квестодатель-NPC. Команда прерывается, если персонаж находится на иной карте или в ином регионе;
- возможность активировать режим игнорирования боя;
- встроенная проверка наличия квестовых заданий у заданного квестодателя-NPC ContactHaveMission;
- удобный мастер настройки (GatherInfo)