Идентификация игровых сущностей Entity
Entity - это внутриигровая сущность, являющаяся частью игрового процесса или декорацией. К Entity относятся все игровые или неигровые персонажи, спутники, противники и босы подземелий, порталы и т.д.
С помощью Entity реализованы некоторые игровые механики, например, горящие области или ядовитые испарения, причиняющие персонажу урон в бою.
Следует отметить, что бот видит Entity в некотором радиусе вокруг персонажа. Entity за его пределами удаляются из памяти игры и подгружаются при приближении персонажа к ним.
Внутриигровые Entity имеют множество характеристик, но для их идентификации удобно использовать текстовые идентификаторы:
- InternalName - Краткий внутриигровой идентификатор из цифр, латинских букв и символа
"_"
.
Для многих однотипных Entity он повторяется (например, для NPC противников).
У Entity игрока в данном свойстве отображаетсяник_персонажа
; - NameUntranslated - Полный внутриигровой идентификатор из латинских букв, цифр, символов
"."
и"_"
. Часто содержит указание на тип сущности, идентификатор карты (локации), порядковый номер и Entity.InternalName.
У Entity игрока в данном свойстве отображается его полное имя в форматеник_персонажа@имя_аккаунта
;
В плагине EntityTools для идентификации Entity используется комбинация признаков:
Наименование | Описание |
---|---|
EntityID | Текстовый идентификатор Entity. |
EntityIdType | Переключатель способа интерпретации EntityID: - Simple : Простая текстовая строка. В начале и в конце строки допускается использование символа подстановки "*" , заменяющего произвольное число алфавитно-цифровых символов;- Regex : Регулярное выражение, составленное по правилам .Net Framework. |
EntityNameType | Переключатель, которые задает свойство Entity, с которым сопоставляется идентификатор EntityID: - InternalName : EntityID сопоставляется с Entity.InternalName; - NameUntranslated : EntityID сопоставляется с Entity.NameUntranslated; - Empty : безымянное Entity, у которого все вышеуказанные идентификаторы пусты. Такие Entity обычно являются частью анимации боевых умений. |
EntitySetType | Дополнительная опция, используемая в некоторых командах и условиях и позволяющая изменить множество Entity, в котором производится поиск: - Complete : Все видимые боту Entity (значение по умолчанию). Если опция отсутствует, то поиск производится в данном множестве; - Contacts : Видимые боту Entity, с которыми можно произвести взаимодействие. Как правило это дружественные NPC, торговцы и т.п. |
Окно выбора Entity
Вышеуказанные признаки можно вручную задать в настройках команды или условия, а также использовать в качестве образца Entity. Для этого предназначено окно EntitySelectForm.
Основная часть окна занята таблицей, содержащей перечень Entity, окружающих персонажа.
Следует отметить, что бот видит не всех Entity на карте, а лишь тех, которые расположены от него на небольшом расстоянии, которое зависит от вида Entity. Обычно оно составляет 600-800 единиц.
По центру в нижней части окна расположено поле редактирования EntityID.
Добавить идентификатор EntityID из таблицы можно перетащив соответствующую строку в поле редактирования, удерживая клавишу Ctrl
.
При этом в поле редактирования будет добавлен идентификатор, заданный признаком EntityNameType.
Слева от поля редактирования EntityID расположены переключатели признаков EntityIdType и EntityNameType.
Справа от поля редактирования EntityID расположены кнопки:
Reload
обновляет список Entity.Test
проверяет комбинацию признаков Entity и переводит фокус на строку таблицы с Entity, соответствующей заданной комбинации признаков.Select
завершает редактирование признаков Entity. Если поле редактирования EntityID пусто, то будет выбран идентификатор Entity из активной строки таблицы.Cancel
закрывает окно. При этом никакие изменения идентифицирующих Entity признаков не сохраняются.