Skip to content

API UO Sell

Codex edited this page Sep 22, 2026 · 6 revisions

UO.Sell

ClassicUO / Basic IDE

Home · Все команды · Константы и значения

Создаёт, обновляет либо удаляет правило автоматической продажи в основном списке Default текущего профиля Bad Newbie. Команда настраивает будущую обработку предложения NPC-продавца; сама не произносит buy/sell, не открывает магазин и не подтверждает сделку. Полный порядок действий: списки магазина.

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

UO.Sell(type:Any) -> Unit
UO.Sell(type:Any, color:Any) -> Unit
UO.Sell(type:Any, color:Any, quantity:Any) -> Unit

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

Параметры

  • type — Graphic товара 0..65535: например 0x0F7A — Black Pearl, 0x0F51 — кинжал. Это не serial продавца/предмета и не body персонажа. Отрицательное число или число больше 65535 отвергается. Здесь 0xFFFF — конкретный graphic, не маска всех товаров.
  • color — Hue товара: отрицательное число либо 0xFFFF — любой; 0 — только неокрашенные предметы. Для точного hue используйте 0..65534. Цвета вне этого диапазона не используйте: положительное значение преобразуется к ushort. По умолчанию -1.
  • quantity — Количество ЕДИНИЦ товара на одно полученное предложение магазина, не число стопок и не желаемый остаток в рюкзаке. Положительное ограничивается 65535. 0/отрицательное удаляет совпадающее правило type+color из Default; это не «всё количество». По умолчанию 1.

Возвращает

Unit — значения нет. Вызывайте отдельной строкой, без VAR result = и без IF. Окончание вызова означает окончание настройки, а не успешную сделку. При отсутствии профиля или недопустимом graphic правило не создаётся; числового результата ошибки нет. Фактическую сделку проверяйте по содержимому рюкзака, золоту и ответу сервера.

Поведение

  • Sell принимает от 1 до 3 аргументов; пропущенные справа color=-1, quantity=1.
  • Ключ правила — graphic и маска hue в Default. Повторный вызов заменяет количество и остальные поля этого правила; он не добавляет ещё один лимит поверх предыдущего. Без цены/имени прежние ограничения этих полей снимаются.
  • Новое/обновлённое правило Enabled=true. Общий переключатель покупки/продажи устанавливается по наличию правил, профиль сохраняется. Сам выключенный Default-список автоматически не включается: в настройках должны быть включены и общий режим, и список. Другие именованные списки не изменяются.
  • Обработка начинается при поступлении списка товаров. Лимит расходуется суммарно по строкам, сопоставленным одному правилу. Для каждой позиции используется первое подходящее включённое правило. Повторное открытие магазина даёт новое предложение и новый лимит, пока правило активно.
  • Работает в Full с Bad Newbie; в Classic эта автоматизация отключена. Не подставляйте в параметры имя NPC или название сохранённого списка. AutoBuyEx добавляет фильтры цены/имени при покупке; ClearShopList сбрасывает обе автоматизации целиком.

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

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

1. ExecuteLegacyManualAlias

Читает позиционные аргументы и передаёт их в SetAutoBuyRule либо SetAutoSellRule.

Скрипту возвращается Unit; речь и ожидание не вызываются.

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

2. SetAutoShopRule

Находит совпадающее правило Default, обновляет/удаляет его, сохраняет профиль.

Количество <=0 удаляет, >0 включает правило.

Исходник проекта: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функция SetAutoShopRule.

3. SelectVendorItems

Позднее сопоставляет полученные от NPC строки включённым правилам с общим лимитом на правило.

Выбирает serial и количество для запроса; результат сделки определяет сервер.

Исходник проекта: src/ClassicUO.Client/Game/Managers/BackNewbieAutomationManager.cs; функция SelectVendorItems.

Настройка и последующая сделка — разные этапы. В скрипте ниже нет ожидания фиктивного результата Buy/Sell.

Примеры

Пример 1. Разрешить продажу одного кинжала

SUB Main()
    # Проверьте товар перед включением: правило сохраняется в профиле.
    UO.Sell(0x0F51)
    # Теперь откройте Sell у NPC, который покупает этот предмет.
END SUB

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

  • 0x0F51 — graphic кинжала, любой hue, 1 — единица за одно предложение. Команда не выбирает конкретный serial и не проверяет полезность/ценность вещи. Выберите точный type/color своего товара.

Пример 2. Продавать только робу определённой окраски

SUB Main()
    # Graphic робы, точный hue 0x0044, до 5 единиц за предложение.
    UO.Sell(0x1F03, 0x0044, 5)
    # Откройте Sell; роба иного hue не подходит этому правилу.
END SUB

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

  • 0x1F03 — пример стандартного graphic робы, 0x0044 — пример hue. Замените оба на свой товар. 5 — единицы, не цена; параметры минимальной цены и имени Sell/AutoSell не принимают. Сервер должен включить вещь в предложение продажи.

Пример 3. Отключить продажу двух типов перед походом к NPC

SUB RemoveSaleRule(itemType, hue)
    # Нулевое количество удаляет именно совпадающее правило.
    UO.Sell(itemType, hue, 0)
END SUB

SUB Main()
    RemoveSaleRule(0x0F51, -1)     # Кинжалы любого hue.
    RemoveSaleRule(0x1F03, 0x0044) # Только заданная окраска робы.
END SUB

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

  • Имя процедуры произвольное; itemType и hue — её параметры. Другие правила, покупка и пользовательские именованные списки сохраняются. Если другой включённый список тоже продаёт эти предметы, отключите соответствующее правило в нём через настройки.

Shop lists / Списки покупки и продажи

Shop lists / Списки покупки и продажи

Clone this wiki locally