Skip to content

API UO GetShopList es

Codex edited this page Sep 23, 2026 · 1 revision

UO.GetShopList

ClassicUO / Basic IDE

Home · API · Trading

Lee los artículos de la última oferta activa de un vendedor NPC para comprobar tipo, cantidad y precio antes de comprar o vender.

Sintaxis exacta

UO.GetShopList() -> Any

Parámetros

Sin parámetros.

Devuelve

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 |.

Comportamiento

  • 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 "".

Funciones internas: de la llamada al resultado

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.

1. GetShopList

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.

2. 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.

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.

Ejemplos

Leer la primera entrada

# 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 SUB

Explicació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

# 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 SUB

Explicació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

# 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 FUNCTION

Explicació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 / Списки покупки и продажи

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

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally