InteractEntities
Команда предназначена для патрулирования по маршруту, заданному набором точек HotSpots, в поисках заданного Entity и последующего с ним взаимодействия.
Описание алгоритма
- Бот перемещается между точками HotSpots, производя поиск ближайшего Entity, удовлетворяющего критериям поиска.
- Патрулирование может производиться в режиме игнорирования боя IgnoreCombat.
- Область поиска Entity может быть ограничена опциями CustomRegions, ReactionRange и ReactionZRange.
- Патрулирование может производиться в режиме игнорирования боя IgnoreCombat.
- Когда целевое Entity найдено, бот следует к нему по кратчайшему пути.
- В отличие от штатной команды InteractNPC возможно взаимодействие с движущимися Entity.
- В случае, если взаимодействие прервано нападением противников, оно повторяется после выхода из боя.
- После завершения взаимодействия или исчерпания попыток, целевая Entity временно помещается в черный список для предотвращения повторных безуспешных попыток взаимодействия с ним.
- После исчезновения всех Entity, удовлетворяющих критериям поиска, бот возобновляет патрулирование.
Настройки команды
| Наименование | Описание |
|---|---|
| Настройки идентификации Entity (категория “Entity”) | |
| EntityID EntityIdType EntityNameType EntitySetType |
Идентификация Entity производится сочетанием четырех перечисленных слева свойств, которые подробно описаны в разделе Идентификация Entity. |
| Дополнительные фильтры Entity (категория “Entity Search Options”) | |
| HealthCheck | Дополнительная проверка уровня здоровья Entity (HP). - True : Игнорируются Entity с нулевым количеством очков здоровья (HP) либо, имеющие флаг IsDead; - False : Здоровье Entity (HP) не проверяется. |
| HoldTargetEntity | Флаг удержания Entity. - True : Бот продолжает следовать к ранее найденному Entity, даже в том случае, если будет обнаружено Entity поближе; - False : Бот постоянно производит поиск и следует к ближайшему Entity. |
| Область поиска Entity (категория “Search Area”) | |
| ReactionRange | Максимальное допустимое расстояние от Entity до персонажа. Entity на большем расстоянии игнорируются. Опция отключается при установке значения 0. При этом поиск производится среди всех видимых боту Entity. |
| ReactionZRange | Максимальная допустимая разница по высоте (ZAxis) между Entity и персонажем. Entity игнорируются, если находятся выше (ниже) заданной величины относительно персонажа. Опция отключается при установке значения 0. При этом поиск производится среди всех видимых боту Entity. |
| RegionCheck | Флаг, активирующий дополнительную проверку внутриигрового региона (не то же самое, что CustomRegion), в котором находится Entity. - True : Поиск Entity производится в том же регионе, в котором находится персонаж; - False : Проверка региона при поиске Entity не производится. |
| CustomRegions | Набор CustomRegion‘ов, задающих область поиска Entity. Подробное описание приведено в разделе CustomRegionSet. |
| Опции взаимодействия (категория “Interaction”) | |
| Dialogs | Ответы в окне диалога с Entity. |
| InteractDistance | Максимальное допустимое расстояние, на котором возможно взаимодейтсвие с целевой Entity. В пределах заданного расстояния также отключается режим игнорирования боя, если задан флаг IgnoreCombat. При установке значения более 5 на Mapper соответствующая область отображается окружностью, центром которой является целевая Entity. |
| InteractTime | Время взаимодействия в миллисекундах. |
| InteractOnce | Флаг, запрещающий повторное взаимодействие с Entity. После взаимодействия Entity бессрочно помещается в черный списо. |
| InteractionTimeout | Время запрета на повторное взаимодействие с Entity. Опция игнорируется если установлен флаг InteractOnce |
| Управление боем (категория “Manage Combat Options”) | |
| IgnoreCombat | Флаг, предписывающий активировать режим игнорирования боя IgnoreCombat при следовании к целевой Entity. |
| IgnoreCombatCondition | Дополнительное условие, управляющее режимом прерывания боя. Если условие на выполняется, то режим игнорирования боя не активируется. |
| IgnoreCombatMinHP | Величина минимального здоровья персонажа HP (в процентах), при котором может быть активирован режим игнорирования боя. Если здоровье персонажа опустится ниже указанной величины, то персонаж вступи в бой. При значении -1 команда не меняетт системное значение IgnoreCombatMinHP при активации режима игнорирования боя. |
| AbortCombatDistance | Расстояние от Entity, за пределами которого бой принудительно прерывается. Бой снова активируются на расстоянии CombatDistance от целевой Entity. При значении меньшем CombatDistance или при выключенном флаге IgnoreCombat, опция отключается. |
| Прерывание команды (категория “Interruptions”) | |
| EntitySearchTime | Время поиска в миллисекундах, в течение которого бот пытается обнаружить заданную Entity, удовлетворяющую критериям поиска. Команда прерывается, если до истечения заданного времени Entity не будет обнаружен. Опция отключается при установке значения 0. При этом поиск продолжается неограниченное время. |
| Прочие настройки (категория “Optional”) | |
| ResetCurrentHotSpot | Флаг, предписывающий двигаться к ближайшему HotSpot‘у после взаимодействия со всеми видимыми целевыми Entity (их исчезновения). Если флаг не установлен, бот “запоминает” последний HotSpot, к которому двигался перед обнаружением Entity, и, после взаимодействия со всеми видимыми Entity (их исчезновения), продолжает движение к этому HotSpot’у. |
Внутренние условия
Перед запуском команды проверяется истинность одного из условий:
- Задана опция EntityID.
- Опции EntityNameType имеет значение Empty.
Завершение команды
Команда самостоятельно не завершается, если не задан флаг StopOnApproached.
Принудительное завершение команды возможно одним из способов, перечисленных в статье.
Аналоги
Похожие команды, входящие в базовый функционал бота: