-
Notifications
You must be signed in to change notification settings - Fork 0
API UO FindType
Оглавление · Алфавитный указатель · Search
ClassicUO • Runtime API
Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету, контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры, не подбирает предмет и не атакует найденную цель.
UO.FindType(type:Any) -> String
UO.FindType(type:Any, color:Any) -> String
UO.FindType(type:Any, color:Any, container:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, range:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, recursive:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any, includeIgnored:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any, includeIgnored:Any, includeSelf:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any, includeIgnored:Any, includeSelf:Any, aliveOnly:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any, includeIgnored:Any, includeSelf:Any, aliveOnly:Any, visibleOnly:Any) -> String
UO.FindType(type:Any, color:Any, container:Any, distance:Any, notoriety:Any, nearest:Any, maxZ:Any, mobileOnly:Any, itemOnly:Any, includeIgnored:Any, includeSelf:Any, aliveOnly:Any, visibleOnly:Any, nameMask:Any) -> String
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
type— Graphic предмета или body персонажа: целое число либо числовая строка, например 0x0EED для золота, 0x0190 для мужского персонажа. Отрицательное значение или 0xFFFF снимает фильтр типа. -
color— Hue/цвет: целое число или числовая строка. -1 либо 0xFFFF означает любой цвет; 0 — конкретно hue 0. Особенность двухаргументной формы: строки "ground", "backpack", "my" на второй позиции выбирают область поиска вместо цвета. "my" включает обход загруженных подконтейнеров. -
container— Область поиска: "ground" — мир, "backpack" — верхний уровень своего рюкзака, "my" — рюкзак с загруженными подконтейнерами в короткой форме; также можно передать serial контейнера или сохранённое имя объекта. Контейнеры не открываются автоматически. Расширенные формы 7–14 аргументов перебирают прямое содержимое заданного контейнера и не имеют флага recursive. -
range— Четвёртый аргумент четырёхаргументной формы: расстояние в клетках. Отрицательное значение использует общую настройку FindDistance; 0 оставляет только совпадения на той же клетке. У предмета в контейнере учитывается положение контейнера в мире. -
distance— Расстояние в клетках на позиции 4 в формах от пяти аргументов. -1 использует FindDistance; число 0 и выше задаёт явный предел. Это радиус поиска, а не длина проложенного маршрута. -
recursive— ТОЛЬКО пятый аргумент формы из пяти аргументов: 1/TRUE — искать также в загруженных подконтейнерах, 0/FALSE — только верхний уровень. Это не notoriety. Переход к форме из шести аргументов меняет смысл позиции 5. -
notoriety— Позиция 5 в формах 6–14 аргументов. Репутация персонажа: 0 unknown, 1 innocent, 2 ally, 3 attackable, 4 criminal, 5 enemy, 6 murderer, 7 invulnerable. Можно передать число, строку "3|6" или массив значений. -1, 0xFFFF либо "any" отключает фильтр. При активном фильтре предметы исключаются: у них нет notoriety. -
nearest— Позиция 6: 1/TRUE — выбирать ближайшего подходящего персонажа, а в расширенной форме 7–14 — ближайшего кандидата любого разрешённого вида; при равной дистанции используется serial. 0/FALSE сохраняет порядок перебора. В форме из шести аргументов при переходе к поиску предметов используется обычный порядок поиска предметов. -
maxZ— Позиция 7: максимальная абсолютная разница высоты Z с собственным персонажем. 0 — та же высота; -1 берёт FindVertical. Для предметов внутри контейнера проверяется высота контейнера. Это не номер этажа. -
mobileOnly— Позиция 8: 1/TRUE — оставить только персонажей и мобов; 0/FALSE — разрешить также предметы. Если аргумент отсутствует, FALSE. -
itemOnly— Позиция 9: 1/TRUE — оставить только предметы; 0/FALSE — разрешить также персонажей. Если отсутствует, FALSE. Одновременные mobileOnly=TRUE и itemOnly=TRUE дают пустой результат. -
includeIgnored— Позиция 10: 1/TRUE — разрешить объекты из IgnoreList; 0/FALSE — исключить их. По умолчанию FALSE. Сам IgnoreList команда не изменяет. -
includeSelf— Позиция 11: 1/TRUE — разрешить собственного персонажа среди кандидатов mobile; 0/FALSE — исключить. По умолчанию FALSE. На предметы не влияет. -
aliveOnly— Позиция 12: 1/TRUE — исключить мёртвых персонажей; 0/FALSE — разрешить оба состояния. По умолчанию FALSE. Этот фильтр не проверяет здоровье предметов. -
visibleOnly— Позиция 13: 1/TRUE — требовать положительную проверку IsVisible; 0/FALSE — не применять её. По умолчанию FALSE. Команда всё равно работает только с объектами, известными клиенту. -
nameMask— Позиция 14: текстовая часть имени без учёта регистра. Строка "orc|troll" разрешает любое из двух совпадений; разделителями также могут быть запятая и точка с запятой. Пустая строка, "any" или "-1" снимает фильтр. Это поиск подстроки, не регулярное выражение и не маска с *. Если аргумент отсутствует, фильтр отключён.
String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
- Существуют формы с 1–14 аргументами, но это не одна длинная сигнатура с произвольно пропускаемыми параметрами. Выберите точную строку синтаксиса; аргументы передаются позиционно.
- Формы 1–5 используют обычный поиск и обновляют FindItem / FindCount / список результатов. Для форм 6–14 используйте непосредственно возвращённую строку: фильтрация персонажей выполняется отдельным путём и не обещает обновления этих общих значений.
- У коротких форм по умолчанию поиск идёт в мире, любой цвет, расстояние FindDistance, без рекурсии. Строка "my" — специальная сокращённая форма для рюкзака с подконтейнерами.
- Форма из шести аргументов сначала ищет подходящего персонажа; при отсутствии фильтра notoriety и подходящего персонажа возможен поиск предметов. Формы 7–14 объединяют разрешённых кандидатов и применяют дополнительные фильтры.
- Изменение количества аргументов с пяти на шесть особенно важно: recursive заменяется на notoriety, а nearest становится шестым аргументом. Значение 1 на позиции 5 тогда означает innocent, а не рекурсивный обход.
# Найти золото в верхнем уровне рюкзака и обработать отсутствие результата
#
# Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету,
# контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного
# объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры,
# не подбирает предмет и не атакует найденную цель.
#
# String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с
# пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
SUB Main()
# 1: type=0x0EED — ищем золото.
# 2: color=-1 — любой hue.
# 3: container="backpack" — только прямое содержимое своего рюкзака.
# gold получает строку serial. Проверка gold="" отделяет отсутствие предмета от найденного
# объекта. Info(gold) выводит информацию; золото не перемещается.
VAR gold = UO.FindType(0x0EED, -1, 'backpack')
IF gold = '' THEN
UO.Print('Gold was not found in the loaded backpack')
ELSE
UO.Print('Gold serial: ' + gold)
UO.Info(gold)
END IF
END SUBРазбор параметров и выполнения:
- 1: type=0x0EED — ищем золото.
- 2: color=-1 — любой hue.
- 3: container="backpack" — только прямое содержимое своего рюкзака.
- gold получает строку serial. Проверка gold="" отделяет отсутствие предмета от найденного объекта. Info(gold) выводит информацию; золото не перемещается.
# Рекурсивно искать предмет в загруженных сумках рюкзака
#
# Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету,
# контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного
# объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры,
# не подбирает предмет и не атакует найденную цель.
#
# String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с
# пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
SUB Main()
# 1: wantedType содержит graphic 0x0EED.
# 2: -1 снимает фильтр цвета.
# 3: "backpack" выбирает корневой контейнер.
# 4: -1 использует текущий FindDistance.
# 5: recursive=1 включает обход подконтейнеров; это пятиаргументная форма. Содержимое закрытой
# сумки, которое сервер ещё не прислал, так не загружается.
# AddObject сохраняет найденный serial под именем found_gold только после проверки результата.
VAR wantedType = 0x0EED
VAR recursive = 1
VAR found = UO.FindType(wantedType, -1, 'backpack', -1, recursive)
IF found <> '' THEN
UO.AddObject('found_gold', found)
UO.Print('Saved object: ' + found)
ELSE
UO.Print('No matching item in loaded containers')
END IF
END SUBРазбор параметров и выполнения:
- 1: wantedType содержит graphic 0x0EED.
- 2: -1 снимает фильтр цвета.
- 3: "backpack" выбирает корневой контейнер.
- 4: -1 использует текущий FindDistance.
- 5: recursive=1 включает обход подконтейнеров; это пятиаргументная форма. Содержимое закрытой сумки, которое сервер ещё не прислал, так не загружается.
- AddObject сохраняет найденный serial под именем found_gold только после проверки результата.
# Найти ближайшего персонажа с одной из двух репутаций
#
# Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету,
# контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного
# объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры,
# не подбирает предмет и не атакует найденную цель.
#
# String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с
# пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
SUB Main()
# 1: body=-1 разрешает любой body.
# 2: color=-1 разрешает любой цвет.
# 3: "ground" означает загруженных мировых объектов.
# 4: radius=10 ограничивает расстояние десятью клетками.
# 5: reputation="3|6" — attackable или murderer. Это notoriety, не recursive.
# 6: nearest=1 просит выбрать ближайшего. Фильтр репутации исключает предметы. Пример только
# показывает информацию и не атакует цель.
VAR body = -1
VAR radius = 10
VAR reputation = '3|6'
VAR nearest = 1
VAR found = UO.FindType(body, -1, 'ground', radius, reputation, nearest)
IF found <> '' THEN
UO.Print('Matching mobile: ' + found)
UO.Info(found)
ELSE
UO.Print('No matching mobile within the radius')
END IF
END SUBРазбор параметров и выполнения:
- 1: body=-1 разрешает любой body.
- 2: color=-1 разрешает любой цвет.
- 3: "ground" означает загруженных мировых объектов.
- 4: radius=10 ограничивает расстояние десятью клетками.
- 5: reputation="3|6" — attackable или murderer. Это notoriety, не recursive.
- 6: nearest=1 просит выбрать ближайшего. Фильтр репутации исключает предметы. Пример только показывает информацию и не атакует цель.
# Все четырнадцать параметров: живой видимый моб с подходящим именем
#
# Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету,
# контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного
# объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры,
# не подбирает предмет и не атакует найденную цель.
#
# String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с
# пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
SUB Main()
# 1 body=-1 и 2 hue=-1 не ограничивают тип и цвет.
# 3 scope="ground" — поиск в мире; 4 radius=5 — не дальше пяти клеток.
# 5 reputation=-1 разрешает любую notoriety; 6 nearest=1 выбирает ближайшего.
# 7 maxZ=16 допускает абсолютную разницу высоты до 16 единиц.
# 8 mobileOnly=1 исключает предметы; 9 itemOnly=0 не запрещает мобов.
# 10 includeIgnored=0 сохраняет действие IgnoreList.
# 11 includeSelf=0 исключает своего персонажа.
# 12 aliveOnly=1 и 13 visibleOnly=1 оставляют живых видимых кандидатов.
# 14 names="orc|troll" требует подстроку orc либо troll в уже известном клиенту имени. Все
# фильтры должны выполняться одновременно.
VAR body = -1
VAR hue = -1
VAR scope = 'ground'
VAR radius = 5
VAR reputation = -1
VAR nearest = 1
VAR maxZ = 16
VAR mobileOnly = 1
VAR itemOnly = 0
VAR includeIgnored = 0
VAR includeSelf = 0
VAR aliveOnly = 1
VAR visibleOnly = 1
VAR names = 'orc|troll'
VAR found = UO.FindType(body, hue, scope, radius, reputation, nearest, maxZ, mobileOnly, itemOnly, includeIgnored, includeSelf, aliveOnly, visibleOnly, names)
IF found = '' THEN
UO.Print('No loaded mobile satisfies every filter')
ELSE
UO.Print('Selected serial: ' + found)
END IF
END SUBРазбор параметров и выполнения:
- 1 body=-1 и 2 hue=-1 не ограничивают тип и цвет.
- 3 scope="ground" — поиск в мире; 4 radius=5 — не дальше пяти клеток.
- 5 reputation=-1 разрешает любую notoriety; 6 nearest=1 выбирает ближайшего.
- 7 maxZ=16 допускает абсолютную разницу высоты до 16 единиц.
- 8 mobileOnly=1 исключает предметы; 9 itemOnly=0 не запрещает мобов.
- 10 includeIgnored=0 сохраняет действие IgnoreList.
- 11 includeSelf=0 исключает своего персонажа.
- 12 aliveOnly=1 и 13 visibleOnly=1 оставляют живых видимых кандидатов.
- 14 names="orc|troll" требует подстроку orc либо troll в уже известном клиенту имени. Все фильтры должны выполняться одновременно.
# Сокращённая форма поиска в рюкзаке
#
# Ищет среди уже загруженных клиентом предметов и персонажей. Можно искать по типу, цвету,
# контейнеру, расстоянию и дополнительным фильтрам. Результат — hex-строка serial выбранного
# объекта; пустая строка означает отсутствие совпадения. Команда сама не открывает контейнеры,
# не подбирает предмет и не атакует найденную цель.
#
# String: например, "0x40001234". Если ничего не найдено — "". Проверяйте результат сравнением с
# пустой строкой. Не путайте его с количеством найденных объектов или числом шагов до них.
SUB Main()
# 1 wantedType=0x0EED — золото.
# 2 "my" — специальная строка двухаргументной формы: выбирает рюкзак, включает рекурсию и любой
# цвет. Здесь второй аргумент не является hue.
# Для верхнего уровня вместо "my" передайте "backpack"; для мира — "ground". Число на второй
# позиции, напротив, будет фильтром цвета.
VAR wantedType = 0x0EED
VAR found = UO.FindType(wantedType, 'my')
IF found <> '' THEN
UO.Print('Found in backpack or a loaded subcontainer: ' + found)
ELSE
UO.Print('Nothing found')
END IF
END SUBРазбор параметров и выполнения:
- 1 wantedType=0x0EED — золото.
- 2 "my" — специальная строка двухаргументной формы: выбирает рюкзак, включает рекурсию и любой цвет. Здесь второй аргумент не является hue.
- Для верхнего уровня вместо "my" передайте "backpack"; для мира — "ground". Число на второй позиции, напротив, будет фильтром цвета.
ClassicUO - Bad Newbie & Basic IDE Edition