Skip to content

API UO FindByNotoriety

Codex edited this page Sep 22, 2026 · 5 revisions

UO.FindByNotoriety

ClassicUO / Basic IDE

Оглавление · Алфавитный указатель · Search

Находит ближайшего другого персонажа/NPC с одним из указанных статусов notoriety. Полезна, когда нужно сначала выбрать противника, союзника или наблюдаемую цель, а уже потом отдельно решать, атаковать ли её или следовать за ней.

Точный синтаксис

UO.FindByNotoriety(distance:Any, notoriety:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any, notoriety27:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any, notoriety27:Any, notoriety28:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any, notoriety27:Any, notoriety28:Any, notoriety29:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any, notoriety27:Any, notoriety28:Any, notoriety29:Any, notoriety30:Any) -> Integer
UO.FindByNotoriety(distance:Any, notoriety:Any, notoriety2:Any, notoriety3:Any, notoriety4:Any, notoriety5:Any, notoriety6:Any, notoriety7:Any, notoriety8:Any, notoriety9:Any, notoriety10:Any, notoriety11:Any, notoriety12:Any, notoriety13:Any, notoriety14:Any, notoriety15:Any, notoriety16:Any, notoriety17:Any, notoriety18:Any, notoriety19:Any, notoriety20:Any, notoriety21:Any, notoriety22:Any, notoriety23:Any, notoriety24:Any, notoriety25:Any, notoriety26:Any, notoriety27:Any, notoriety28:Any, notoriety29:Any, notoriety30:Any, notoriety31:Any) -> Integer

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • distance — Горизонтальный радиус в клетках включительно: 5 допускает расстояние 0..5. Расстояние — max(abs(dx),abs(dy)), поэтому соседняя диагональ тоже 1. По умолчанию или при отрицательном числе берётся UO.FindDistance(), а не безлимитный поиск. 0 оставляет ту же клетку X/Y. Не длина маршрута; препятствия и этажи этим параметром не проверяются.
  • notoriety — Статус отношения к персонажу, полученный от сервера: 0 — неизвестный, 1 — Innocent, 2 — Ally, 3 — Gray, 4 — Criminal, 5 — Enemy, 6 — Murderer, 7 — Invulnerable. Число означает один статус; "5|6" или массив чисел — любой из перечисленных. Это не цвет одежды и не класс. Отрицательное число (обычно -1), 0xFFFF, "any", пустая строка или пустой массив отдельно отключают этот фильтр. Некорректная строка без допустимых чисел не находит никого. Порядок статусов приоритет не задаёт. Фильтр 5 выбирает Enemy, а не автоматически любого NPC/монстра; реальные значения зависят от сервера.Несколько значений объединяются как OR: число 5, строка "5|6" либо плоский массив чисел/числовых строк. Можно смешать плоский массив и отдельные аргументы. Порядок значений приоритет не задаёт. Нечисловые токены исключаются; полностью ошибочная маска не находит ничего. Вложенные массивы не являются числами и игнорируются как ошибочные элементы; многомерные маски не поддерживаются.
  • notoriety2 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety3 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety4 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety5 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety6 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety7 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety8 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety9 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety10 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety11 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety12 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety13 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety14 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety15 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety16 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety17 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety18 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety19 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety20 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety21 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety22 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety23 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety24 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety25 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety26 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety27 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety28 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety29 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety30 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.
  • notoriety31 — Необязательная дополнительная маска notoriety; те же формы, что у notoriety. Объединяется с предыдущими через OR, не задаёт отдельный радиус, hue, Z или приоритет.

Возвращает

Integer — serial выбранного mobile или 0, если подходящего нет. Это ID, а не graphic/type, число найденных объектов или TRUE/FALSE: используйте IF found <> 0 THEN, не found = TRUE. Найденный ID можно передать UO.AddObject, UO.Attack или UO.Follow, но каждое игровое действие вызывается отдельно.

Поведение

  • Поиск читает только mobiles, уже загруженные клиентом; уничтоженные записи и Ignore исключены. Сам вызов не открывает target, не атакует, не идёт к цели и не запрашивает у сервера удалённые объекты.
  • Расстояние — геометрическое max(abs(dx),abs(dy)), не длина маршрута. Близость не гарантирует отсутствие стены или доступность другого этажа. Состояние может измениться после возврата.
  • Жизнь, скрытность и линия обзора автоматически не проверяются. Если они важны, используйте GetMobiles с aliveOnly/visibleOnly либо свои проверки. Наличие у сервера статуса Enemy не делает любого NPC подходящим.
  • Не изменяет FindItem, FindCount или GetFoundItems. Эти поля могут содержать результаты предыдущей другой команды: используйте непосредственно возвращённый ID.
  • Минимум два аргумента: distance, notoriety. Максимум 32: радиус и до 31 маски. Для большего числа значений передайте плоский массив одним аргументом. Удаление фильтра: -1/any/0xFFFF/пустая строка или пустой массив отдельно. Если рядом указаны конкретные коды, они сохраняют ограничение.
  • Исключает self. Соблюдает UO.FindVertical() как предел разности Z; параметра maxZ в этой команде нет. Всегда выбирает ближайшего, при равенстве — меньший serial. Аргумент после notoriety — ещё notoriety, не nearest и не body.

Внутренние функции: последовательность выполнения

Ниже описана реализация этого движка. Имена внутренних методов не являются дополнительными командами BASIC.

1. RegisterCompactSearchApi

Регистрирует точное число аргументов и имена параметров.

Параметры не превращаются в параметры другой команды с похожим названием.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция RegisterCompactSearchApi.

2. FindFilteredMobileSerial

Подготавливает маску и ограничения запроса.

Возвращает первый подходящий serial или Integer 0.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция FindFilteredMobileSerial.

3. ParseIntMask

Преобразует скаляры и элементы плоской маски в множество целых чисел.

Полностью ошибочная маска получает маркер отсутствия совпадений; вложенный массив не превращается в 0.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ParseIntMask.

4. CombineMask

Объединяет отдельные аргументы и элементы переданных плоских массивов.

Первый distance не включается в маску.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция CombineMask.

5. FilterMobiles

Исключает self/Ignore, проверяет расстояние, Z и разрешённые notoriety.

Результат сортируется по расстоянию, затем serial; FindItem не обновляется.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция FilterMobiles.

Примеры показывают готовые процедуры и полные пользовательские функции; внутренние C#-методы отдельно из BASIC не вызываются.

Примеры

Пример 1. Выбрать ближайшую цель и сохранить её имя

SUB Main()
    # 12 — радиус, 5|6 — Enemy или Murderer, а не body.
    VAR found = UO.FindByNotoriety(12, "5|6")
    IF found <> 0 THEN
        UO.AddObject("opponent", found)
        UO.Print("Selected: " + UO.GetName(found))
    END IF
END SUB

Разбор параметров и выполнения:

  • Сохранённый opponent можно использовать позже; этот пример не атакует. Также действует текущий FindVertical, даже если цель близка по X/Y.

Пример 2. Список статусов из массива плюс отдельный код

SUB Main()
    DIM allowed[0]
    allowed[0] = 5
    VAR found = UO.FindByNotoriety(8, allowed, 6)
    # Это уже отдельное игровое действие, а не часть поиска.
    IF found <> 0 AndAlso NOT UO.IsDead(found) THEN
        UO.Attack(found)
    END IF
END SUB

Разбор параметров и выполнения:

  • allowed содержит Enemy, отдельный 6 добавляет Murderer. Статусы объединяются, а не сортируются по приоритету. Пример запрашивает атаку одного найденного живого mobile; правила сервера определяют допустимость.

Пример 3. Полная функция поиска на одинаковой высоте

SUB Main()
    VAR found = FindOpponentAtSameLevel(10)
    IF found <> 0 THEN
        UO.AddObject("same_level", found)
    END IF
END SUB

FUNCTION FindOpponentAtSameLevel(radius)
    # Сохраняем настройку этого runtime и восстанавливаем её после поиска.
    VAR previous = UO.FindVertical()
    TRY
        UO.FindVertical(0)
        RETURN UO.FindByNotoriety(radius, "5|6")
    FINALLY
        UO.FindVertical(previous)
    END TRY
END FUNCTION

Разбор параметров и выполнения:

  • radius — радиус X/Y в клетках. FindVertical(0) требует одинаковую Z; это не проверка этажа или стен. Функция возвращает ID/0, а Finally сохраняет настройку других частей скрипта.

Clone this wiki locally