-
Notifications
You must be signed in to change notification settings - Fork 0
API UO AddType
ClassicUO / Basic IDE
Home · Все команды · Каталоги
Сохраняет понятное имя для графического типа предмета или тела mobile. Например, после UO.AddType("bandage", 0x0E21) можно искать или использовать бинты через имя "bandage", не повторяя числовой type в каждой строке. Это настройка соответствия имя → Graphic, а не создание предмета и не запоминание одного конкретного ID.
UO.AddType(name:Any) -> Unit
UO.AddType(name:Any, type:Any) -> Unit
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
name— Обязательная строка в кавычках — ваше имя типа. Пробелы по краям удаляются, регистр не важен: "Bandage" и "bandage" — одна запись. Пустая строка, числовое имя, слово any, символ | и управляющие символы запрещены. Это значение параметра, а не новая переменная или UO-команда: в последующих вызовах также нужны кавычки. -
type— Необязательный Integer 0..65535: Graphic/type, например 0x0E21 или 3617. Допустима строка с десятичным/шестнадцатеричным числом либо имя уже сохранённого типа; последнее копирует его текущее число, не создаёт связь между именами. ID вида 0x40001001, отрицательное число, дробь и неизвестное имя не принимаются. Если аргумент отсутствует, появляется курсор выбора: щёлкните по загруженному предмету, в том числе внутри контейнера, или mobile. Сохраняется Graphic выбранного объекта; поверхность земли и статический тайл не подходят.
Unit — возвращаемого значения нет. Пишите отдельной строкой, без VAR result = и без сравнения с True/1. Команда не возвращает выбранный type, serial или признак успешного выбора. При отмене мышью старая запись сохраняется; если имени раньше не было, оно остаётся неопределённым. Следующая строка скрипта выполняется и после обычной отмены, поэтому не запускайте действие автоматически, предполагая, что пользователь обязательно выбрал новый предмет.
- Форма AddType(name, type) сохраняет число сразу, без курсора и без сетевого действия. Повтор с тем же именем заменяет его тип. Ошибочное значение не уничтожает прежнюю запись. Форма AddType(name) ждёт выбора; Esc, замена курсора другим действием или неподходящая цель оставляют запись без изменения. Принудительная остановка скрипта прерывает ожидание и освобождает только принадлежащий ему курсор.
- Имена типов хранятся отдельно от AddObject: одинаковое слово может обозначать type в FindType и serial в UseObject. AddType("supply", 0x0E21) само по себе не делает UseObject("supply") допустимым. Для конкретного предмета применяйте AddObject/GetSerial; для семейства предметов — AddType и параметр type.
- Имена разрешаются в параметрах type у FindType (все формы), FindTypeEx, FindTypesArrayEx, FindList, FindNotoriety, GetWorldItems, UseType, UseFromGround, Count, CountGround, CountEx, EquipT, WaitTargetType, WaitTargetGround и WaitTargetObjectType. В масках типов GetMobiles/FindAnyType/WaitTarget можно комбинировать имена через | или массив; правила notoriety остаются отдельными. Слова human/near и другие фильтры FindMobile не переопределяются.
- Также поддерживаются графические параметры MassMove, MassPriceMove, AllPrice, MoveItems, AddIgnoreList/DeleteIgnoreList, SetBadObject, WaitTargetTile, полный Target, GetStaticArt и Morph. Это не замена любых числовых аргументов: количество, цена, цвет, слой, координаты, дистанция, serial и Basic GetType не читают эту таблицу. Wildcard -1 и 0xFFFF в поисковых командах сохраняют их собственный смысл; AddType не меняет условия поиска.
- Сохраняется только Graphic, без цвета, количества, контейнера, имени предмета, слоя или свойств. Два предмета одного типа разных цветов требуют отдельного color в поиске. Запись не подтверждает, что предмет сейчас существует, доступен или что сервер разрешит действие.
- В клиенте таблица относится к текущему состоянию Basic данного профиля и входит в обычное сохранение профиля. Новый чистый профиль не получает чужие имена. Имена доступны скриптам, использующим это состояние; словарь защищён при одновременном чтении и записи. Корректные старые записи AddType с числом переносятся автоматически; старая запись только с именем не содержала выбранного type и восстановить её нельзя.
Ниже описана реализация этого движка. Имена внутренних методов не являются дополнительными командами BASIC.
Обрабатывает ровно одну или две позиции AddType и передаёт их в AddType.
Команда возвращает Unit; больше не складывает неиспользуемые строки в общий список.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ExecuteLegacyManualAlias.
Проверяет строку name. Во второй форме разрешает число/готовое имя; в первой запрашивает IApiTypeSelectionBridge.SelectType.
Сохраняет запись только после корректного значения или выбора. Отмена не стирает прежний Graphic.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция AddType.
Использует SelectObject с принадлежащим запросу курсором. Читает Graphic выбранного живого объекта Entity на игровом потоке.
Возвращает nullable Integer: Graphic или отсутствие выбора. Это внутренний результат, не результат UO.AddType.
Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция SelectType.
В конкретных параметрах type сначала ищет строковое имя в state.Types, иначе использует числовое преобразование.
Возвращает Graphic. Не изменяет общее преобразование чисел, serial и Basic-функций.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ResolveType.
Разрешает имена внутри строк с | и массивов, затем применяет существующий разбор маски.
Не смешивает таблицу типов с notoriety; неизвестная маска не превращается в поиск всех объектов.
Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функция ParseTypeMask.
Имена разрешаются в параметрах графики, затем действуют обычные правила соответствующей команды. Создание имени не выполняет игровое действие.
SUB Main()
# Имя относится к типу всех таких стопок, а не к одной ID.
UO.AddType("gold_stack", 0x0EED)
VAR item = UO.FindType("gold_stack", -1, "ground", 2)
IF item = "" THEN
UO.Print("No loaded gold stack within 2 tiles")
RETURN
END IF
# 0 означает всю стопку; результат поиска — конкретный serial.
VAR moved = UO.MoveItem(item, 0, "backpack")
IF moved = 0 THEN
UO.Print("Move request failed")
END IF
END SUBРазбор параметров и выполнения:
- gold_stack — имя; 0x0EED — Graphic золота. FindType: -1 — любой цвет, ground — земля, 2 — радиус поиска. Возвращается строка serial или пустая строка.
- MoveItem получает найденный serial, 0 для всей стопки и backpack как назначение. Это одна стопка, а не все стопки в радиусе. Доступность переноса и реальный результат зависят от сервера; определение типа само ничего не переносит.
SUB Main()
UO.AddType("bandage", "0x0E21")
IF UO.Life() >= UO.MaxHP() THEN
RETURN
END IF
VAR bandage = UO.FindType("bandage", -1, "backpack", -1, TRUE)
IF bandage = "" THEN
UO.Print("No loaded bandages in backpack")
RETURN
END IF
# Сначала очередь self, затем использование найденного предмета.
UO.WaitTargetObject("self")
UO.UseObject(bandage)
END SUBРазбор параметров и выполнения:
- Строковое число 0x0E21 сохраняется как Integer Graphic. Life/MaxHP сравнивают HP персонажа. FindType ищет любой цвет рекурсивно в рюкзаке; -1 в distance использует стандартное поведение поиска.
- self — цель применения, bandage после FindType — переменная с serial. Очередь таргета готовится до использования предмета. Скрипт отправляет использование и не утверждает, что лечение уже завершилось; таймер/правила лечения зависят от сервера.
SUB Main()
# Здесь только настройка: щёлкните инструмент в контейнере.
# Esc сохраняет прежнее назначение; автоматического действия нет.
UO.AddType("my_tool")
END SUB
SUB UseSavedTool()
# Запускайте отдельно после успешной настройки my_tool.
VAR used = UO.UseType("my_tool", -1, "backpack")
IF used = 0 THEN
UO.Print("No matching loaded tool in backpack")
END IF
END SUBРазбор параметров и выполнения:
- В Main указан только name, поэтому открывается курсор. Сохраняется тип инструмента, не его ID и не цвет. UseSavedTool — обычная отдельная процедура BASIC, а не встроенная команда.
- UseType ищет экземпляр сохранённого типа любого цвета в рюкзаке и использует его; возвращает Integer serial или 0 при отсутствии. Если имя никогда не было определено, это ошибка аргумента, а не результат 0. После отмены назначения Main не вызывает UseSavedTool.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь