-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetShopList es
ClassicUO / Basic IDE
Lee los artículos de la última oferta activa de un vendedor NPC para comprobar tipo, cantidad y precio antes de comprar o vender.
UO.GetShopList() -> Any
Sin parámetros.
Array of String, índices desde 0: serial|graphic|hue|amount|price|name. Serial identifica la entrada, graphic el tipo y hue el color; estos tres campos usan 0x. Amount es unidades disponibles menos el borrador de la ventana; price es precio unitario. Sin oferta devuelve un array vacío, no Boolean. Solo los primeros cinco | separan campos; el resto es el nombre y puede contener |.
- Abra primero la compra o venta con el NPC deseado y espere su oferta. No busca vendedores, abre comercio, fija precios de un vendedor propio ni mueve objetos entre cofres. No hay argumento ID de vendedor: se usa la última oferta.
- El gestor conserva oferta y borrador en la sesión sin gráficos; reabrir restaura la ventana. Cerrar la tienda, responder, cierre del servidor o desconexión elimina la oferta. La compra/venta automática Bad Newbie puede atenderla antes del script.
- Leer no envía paquetes. Es una instantánea recibida, no garantía de stock. Amount cuenta unidades; GetArrayLength(rows), entradas. SendShopReply no recibe precios.
- La lista explícita sustituye el borrador. ID repetidos suman cantidades hasta la cantidad total ofrecida. ID desconocido o cantidad inválida/no positiva rechaza toda la respuesta sin enviar y conserva la oferta. Sin oferta, SendShopReply informa un error. "0" no cancela: use "".
SessionShops valida listas/precios completos y guarda la oferta. El bridge trabaja en el hilo de sesión. GetItems forma filas, ParseSelection valida, Reply envía compra 0x3B o venta 0x9F y cierra. ShopGump conserva selección y desplazamiento al separarse. El cierre del servidor no provoca otra respuesta.
Abra primero la compra o venta con el NPC deseado y espere su oferta. No busca vendedores, abre comercio, fija precios de un vendedor propio ni mueve objetos entre cofres. No hay argumento ID de vendedor: se usa la última oferta.
Array of String, índices desde 0: serial|graphic|hue|amount|price|name. Serial identifica la entrada, graphic el tipo y hue el color; estos tres campos usan 0x. Amount es unidades disponibles menos el borrador de la ventana; price es precio unitario. Sin oferta devuelve un array vacío, no Boolean. Solo los primeros cinco | separan campos; el resto es el nombre y puede contener |.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función GetShopList.
Leer no envía paquetes. Es una instantánea recibida, no garantía de stock. Amount cuenta unidades; GetArrayLength(rows), entradas. SendShopReply no recibe precios.
El gestor conserva oferta y borrador en la sesión sin gráficos; reabrir restaura la ventana. Cerrar la tienda, responder, cierre del servidor o desconexión elimina la oferta. La compra/venta automática Bad Newbie puede atenderla antes del script.
Código del proyecto: src/ClassicUO.Client/Game/Managers/SessionShops.cs; función SessionShop.GetItems.
Leer no envía paquetes. Es una instantánea recibida, no garantía de stock. Amount cuenta unidades; GetArrayLength(rows), entradas. SendShopReply no recibe precios.
# Leer la primera entrada
#
# Lee los artículos de la última oferta activa de un vendedor NPC para comprobar tipo, cantidad
# y precio antes de comprar o vender.
#
# Array of String, índices desde 0: serial|graphic|hue|amount|price|name. Serial identifica la
# entrada, graphic el tipo y hue el color; estos tres campos usan 0x. Amount es unidades
# disponibles menos el borrador de la ventana; price es precio unitario. Sin oferta devuelve un
# array vacío, no Boolean. Solo los primeros cinco | separan campos; el resto es el nombre y
# puede contener |.
SUB Main()
# GetWord: 0 serial, 1 graphic, 2 hue, 3 cantidad, 4 precio. Compruebe longitud antes de
# rows[0].
VAR rows = UO.GetShopList()
IF GetArrayLength(rows) = 0 THEN
RETURN
END IF
VAR serial = GetWord(rows[0], 0, "|")
VAR itemType = GetWord(rows[0], 1, "|")
VAR amount = CInt(GetWord(rows[0], 3, "|"))
VAR price = CDbl(GetWord(rows[0], 4, "|"))
UO.Print(serial + " / " + itemType + " / " + CStr(amount) + " / " + CStr(price))
END SUBExplicación de los parámetros y la ejecución:
- GetWord: 0 serial, 1 graphic, 2 hue, 3 cantidad, 4 precio. Compruebe longitud antes de rows[0].
# Comprar hasta diez vendas con precio limitado
#
# Lee los artículos de la última oferta activa de un vendedor NPC para comprobar tipo, cantidad
# y precio antes de comprar o vender.
#
# Array of String, índices desde 0: serial|graphic|hue|amount|price|name. Serial identifica la
# entrada, graphic el tipo y hue el color; estos tres campos usan 0x. Amount es unidades
# disponibles menos el borrador de la ventana; price es precio unitario. Sin oferta devuelve un
# array vacío, no Boolean. Solo los primeros cinco | separan campos; el resto es el nombre y
# puede contener |.
SUB Main()
# Solo oferta de COMPRA ya abierta: 0x0E21 vendas, precio máximo 5, cantidad máxima 10. Usa la
# primera coincidencia y su serial real.
VAR rows = UO.GetShopList()
FOR VAR i = 0 TO GetArrayLength(rows) - 1
VAR row = rows[i]
IF GetWord(row, 1, "|") = "0x0E21" THEN
VAR price = CDbl(GetWord(row, 4, "|"))
VAR amount = CInt(GetWord(row, 3, "|"))
IF price > 0 AND price <= 5 AND amount > 0 THEN
IF amount > 10 THEN
amount = 10
END IF
UO.SendShopReply(GetWord(row, 0, "|") + ":" + CStr(amount))
RETURN
END IF
END IF
NEXT
END SUBExplicación de los parámetros y la ejecución:
- Solo oferta de COMPRA ya abierta: 0x0E21 vendas, precio máximo 5, cantidad máxima 10. Usa la primera coincidencia y su serial real.
# Contar existencias de un tipo
#
# Lee los artículos de la última oferta activa de un vendedor NPC para comprobar tipo, cantidad
# y precio antes de comprar o vender.
#
# Array of String, índices desde 0: serial|graphic|hue|amount|price|name. Serial identifica la
# entrada, graphic el tipo y hue el color; estos tres campos usan 0x. Amount es unidades
# disponibles menos el borrador de la ventana; price es precio unitario. Sin oferta devuelve un
# array vacío, no Boolean. Solo los primeros cinco | separan campos; el resto es el nombre y
# puede contener |.
SUB Main()
# Función completa que suma amount del tipo elegido; vacío devuelve 0. Son unidades disponibles,
# no criaturas ni objetos equipados.
VAR available = CountOfferedType("0x0E21")
IF available < 10 THEN
UO.Print("Bandage stock below 10: " + CStr(available))
END IF
END SUB
FUNCTION CountOfferedType(itemType)
VAR total = 0
VAR rows = UO.GetShopList()
FOR VAR i = 0 TO GetArrayLength(rows) - 1
IF GetWord(rows[i], 1, "|") = itemType THEN
total = total + CInt(GetWord(rows[i], 3, "|"))
END IF
NEXT
RETURN total
END FUNCTIONExplicación de los parámetros y la ejecución:
- Función completa que suma amount del tipo elegido; vacío devuelve 0. Son unidades disponibles, no criaturas ni objetos equipados.
Shop lists / Списки покупки и продажи
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь