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
Разбор параметров и выполнения:
- Аргументов нет: выключается режим и удаляются ожидающие ответы.
- Уже установленная сервером цена не меняется. Следующий запрос цены пользователь заполняет сам.