API UO AllPrice - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.AllPrice

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

ClassicUO • Runtime API

Включает автоматический ввод цены после помещения предмета в инвентарь своего вендора. Команда сама не переносит предметы. Сначала включите режим, затем перетащите предмет. Цена отправляется только после соответствующего запроса сервера. Второй параметр фильтрует TYPE предмета.

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

UO.AllPrice() -> Unit
UO.AllPrice(price:Any) -> Unit
UO.AllPrice(price:Any, type:Any) -> Unit

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

Параметры

  • price — Первый параметр — целая цена за весь выставляемый item/стек, от 0 до 2147483647. 125 означает цену 125. 0 — явно нулевая цена (бесплатно, если разрешено сервером), не выключение. Отрицательное значение выключает режим; рекомендуется UO.AllPrice() без аргументов.
  • type — Второй необязательный параметр — TYPE/Graphic от 0 до 65535, число либо hex-строка, например 0x0EED. 0 или отсутствие — любые типы. Serial предмета и имя объекта не подходят. Цвет не фильтруется.

Возвращает

Unit: значения нет. Activate AllPrice сообщает о включении. Строка sent price сообщает об отправленном ответе, не о подтверждённом сервером принятии цены.

Поведение

  • Формы: UO.AllPrice(), UO.AllPrice(price), UO.AllPrice(price,type). В чате со стандартным префиксом: ,allprice 125 0x0EED. Для клавиши используйте Basic Command.
  • Режим действует на последующие переносы, пока его не выключат. Запрос цены, который уже висел до включения/переноса, автоматически не заполняется. Не отвечает на запросы переименования вендора/магазина.
  • Требуется известная клиенту принадлежность контейнера другому персонажу/NPC. Право управлять вендором и допустимость цены проверяет сервер. Обычный рюкзак персонажа, сундук на земле и земля не получают автоматическую цену.
  • Для стандартного вендора распознаётся запрос цены cliloc 1043303 независимо от языка клиента. Также поддержаны системные текстовые приглашения, начинающиеся с Type in a price, Enter a price, Enter the price, Введите цену или Введіть ціну. Неизвестное приглашение оставляется для ручного ответа.
  • Поддержаны ASCII и Unicode запросы сервера. Если приглашение не пришло за 10 секунд, отложенный ответ отменяется. При массовом переносе также останавливается очередь. Уже отправленные ответы не отзываются.
  • Предмет другого TYPE не получает цену. Если включён MassMove, следующая отправка ждёт обработки запроса цены; неизвестный или неподходящий запрос прекращает очередь, чтобы не перепутать предметы.
  • AllPrice() очищает отложенные цены и выключает режим. TerminateAll(), выход, смерть или смена карты также сбрасывают автоматическую цену. Эта команда не меняет цены уже выставленных товаров.

Примеры

Пример 1. Одна цена для последующих предметов любого типа

# Одна цена для последующих предметов любого типа
#
# Включает автоматический ввод цены после помещения предмета в инвентарь своего вендора. Команда
# сама не переносит предметы. Сначала включите режим, затем перетащите предмет. Цена
# отправляется только после соответствующего запроса сервера. Второй параметр фильтрует TYPE
# предмета.
#
# Unit: значения нет. Activate AllPrice сообщает о включении. Строка sent price сообщает об
# отправленном ответе, не о подтверждённом сервером принятии цены.

# price=125 — цена каждого item целиком. type отсутствует: подходят любые типы.
# После запуска вручную положите товар в инвентарь своего вендора. На запрос цены клиент ответит
# 125. Каждый следующий предмет получает такую же цену до выключения.
# Print только напоминает действие; эта процедура сама ничего не переносит.

SUB PriceNewGoods()
    UO.AllPrice(125)
    UO.Print('Drop goods into your vendor inventory')
END SUB

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

  • price=125 — цена каждого item целиком. type отсутствует: подходят любые типы.
  • После запуска вручную положите товар в инвентарь своего вендора. На запрос цены клиент ответит 125. Каждый следующий предмет получает такую же цену до выключения.
  • Print только напоминает действие; эта процедура сама ничего не переносит.

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

# Автоматическая цена только для заданного типа
#
# Включает автоматический ввод цены после помещения предмета в инвентарь своего вендора. Команда
# сама не переносит предметы. Сначала включите режим, затем перетащите предмет. Цена
# отправляется только после соответствующего запроса сервера. Второй параметр фильтрует TYPE
# предмета.
#
# Unit: значения нет. Activate AllPrice сообщает о включении. Строка sent price сообщает об
# отправленном ответе, не о подтверждённом сервером принятии цены.

# salePrice передаётся как price=250. itemType передаётся как type=0x0F7A, не serial отдельного
# товара.
# Цена 250 относится к целой выставляемой стопке. Команда не умножает цену на число единиц
# внутри неё.
# Другие типы остаются без автоматического ответа. Для них укажите цену вручную или включите
# AllPrice с другим фильтром.

SUB PriceOnlyOneType()
    VAR itemType = '0x0F7A'
    VAR salePrice = 250
    UO.AllPrice(salePrice, itemType)
END SUB

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

  • salePrice передаётся как price=250. itemType передаётся как type=0x0F7A, не serial отдельного товара.
  • Цена 250 относится к целой выставляемой стопке. Команда не умножает цену на число единиц внутри неё.
  • Другие типы остаются без автоматического ответа. Для них укажите цену вручную или включите AllPrice с другим фильтром.

Пример 3. Явно выставлять предметы бесплатно

# Явно выставлять предметы бесплатно
#
# Включает автоматический ввод цены после помещения предмета в инвентарь своего вендора. Команда
# сама не переносит предметы. Сначала включите режим, затем перетащите предмет. Цена
# отправляется только после соответствующего запроса сервера. Второй параметр фильтрует TYPE
# предмета.
#
# Unit: значения нет. Activate AllPrice сообщает о включении. Строка sent price сообщает об
# отправленном ответе, не о подтверждённом сервером принятии цены.

# price=0 — отправить серверу строку 0 как цену. Это не отмена диалога и не выключение.
# type=0x0F7A ограничивает бесплатную цену этим типом. Поведение бесплатной продажи зависит от
# правил сервера.

SUB FreeGoods()
    UO.AllPrice(0, '0x0F7A')
END SUB

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

  • price=0 — отправить серверу строку 0 как цену. Это не отмена диалога и не выключение.
  • type=0x0F7A ограничивает бесплатную цену этим типом. Поведение бесплатной продажи зависит от правил сервера.

Пример 4. Отключить автоматическое назначение цен

# Отключить автоматическое назначение цен
#
# Включает автоматический ввод цены после помещения предмета в инвентарь своего вендора. Команда
# сама не переносит предметы. Сначала включите режим, затем перетащите предмет. Цена
# отправляется только после соответствующего запроса сервера. Второй параметр фильтрует TYPE
# предмета.
#
# Unit: значения нет. Activate AllPrice сообщает о включении. Строка sent price сообщает об
# отправленном ответе, не о подтверждённом сервером принятии цены.

# Аргументов нет: выключается режим и удаляются ожидающие ответы.
# Уже установленная сервером цена не меняется. Следующий запрос цены пользователь заполняет сам.

SUB StopPricing()
    UO.AllPrice()
END SUB

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

  • Аргументов нет: выключается режим и удаляются ожидающие ответы.
  • Уже установленная сервером цена не меняется. Следующий запрос цены пользователь заполняет сам.