Skip to content

API UO GetShopList it

Codex edited this page Sep 23, 2026 · 1 revision

UO.GetShopList

ClassicUO / Basic IDE

Home · API · Trading

Legge gli articoli dell’ultima offerta attiva di un venditore NPC per controllare tipo, quantità e prezzo prima di comprare o vendere.

Sintassi esatta

UO.GetShopList() -> Any

Parametri

Nessun parametro.

Restituisce

Array of String, indici da 0: serial|graphic|hue|amount|price|name. Serial identifica la voce, graphic il tipo, hue il colore; questi tre campi usano 0x. Amount indica unità disponibili meno la bozza della finestra, price il prezzo unitario. Senza offerta array vuoto, non Boolean. Solo i primi cinque | separano campi; il resto è il nome e può contenere |.

Comportamento

  • Aprire prima acquisto o vendita con il NPC desiderato e aspettarne l’offerta. Non cerca venditori, apre commercio, imposta prezzi del proprio venditore o sposta oggetti tra contenitori. Nessun argomento ID venditore: usa l’ultima offerta.
  • Il gestore conserva offerta e bozza nella sessione senza grafica; riaprendo ripristina la finestra. Chiusura del negozio, risposta, chiusura server o disconnessione rimuovono l’offerta. Acquisto/vendita automatica Bad Newbie può elaborarla prima dello script.
  • La lettura non invia pacchetti. È una fotografia dei dati ricevuti, non garanzia di scorte. Amount conta unità, GetArrayLength(rows) voci. SendShopReply non accetta prezzi.
  • Una lista esplicita sostituisce la bozza. ID ripetuti sommano quantità fino al totale offerto. ID sconosciuto o quantità non valida/non positiva rifiuta l’intera risposta senza inviare e conserva l’offerta. Senza offerta SendShopReply segnala errore. "0" non annulla: usare "".

Funzioni interne: dalla chiamata al risultato

SessionShops controlla liste/prezzi completi e conserva l’offerta. Il bridge esegue nel thread di sessione. GetItems formatta righe, ParseSelection valida, Reply invia acquisto 0x3B o vendita 0x9F e chiude. ShopGump conserva selezione e scorrimento al distacco. La chiusura server non genera un’altra risposta.

1. GetShopList

Aprire prima acquisto o vendita con il NPC desiderato e aspettarne l’offerta. Non cerca venditori, apre commercio, imposta prezzi del proprio venditore o sposta oggetti tra contenitori. Nessun argomento ID venditore: usa l’ultima offerta.

Array of String, indici da 0: serial|graphic|hue|amount|price|name. Serial identifica la voce, graphic il tipo, hue il colore; questi tre campi usano 0x. Amount indica unità disponibili meno la bozza della finestra, price il prezzo unitario. Senza offerta array vuoto, non Boolean. Solo i primi cinque | separano campi; il resto è il nome e può contenere |.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione GetShopList.

2. SessionShop.GetItems

La lettura non invia pacchetti. È una fotografia dei dati ricevuti, non garanzia di scorte. Amount conta unità, GetArrayLength(rows) voci. SendShopReply non accetta prezzi.

Il gestore conserva offerta e bozza nella sessione senza grafica; riaprendo ripristina la finestra. Chiusura del negozio, risposta, chiusura server o disconnessione rimuovono l’offerta. Acquisto/vendita automatica Bad Newbie può elaborarla prima dello script.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/SessionShops.cs; funzione SessionShop.GetItems.

La lettura non invia pacchetti. È una fotografia dei dati ricevuti, non garanzia di scorte. Amount conta unità, GetArrayLength(rows) voci. SendShopReply non accetta prezzi.

Esempi

Leggere la prima voce

# Leggere la prima voce
#
# Legge gli articoli dell’ultima offerta attiva di un venditore NPC per controllare tipo,
# quantità e prezzo prima di comprare o vendere.
#
# Array of String, indici da 0: serial|graphic|hue|amount|price|name. Serial identifica la voce,
# graphic il tipo, hue il colore; questi tre campi usano 0x. Amount indica unità disponibili
# meno la bozza della finestra, price il prezzo unitario. Senza offerta array vuoto, non
# Boolean. Solo i primi cinque | separano campi; il resto è il nome e può contenere |.

SUB Main()
    # GetWord: 0 serial, 1 graphic, 2 hue, 3 quantità, 4 prezzo. Controllare lunghezza prima di
    # 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

Spiegazione dei parametri e dell’esecuzione:

  • GetWord: 0 serial, 1 graphic, 2 hue, 3 quantità, 4 prezzo. Controllare lunghezza prima di rows[0].

Comprare fino a dieci bende entro un prezzo

# Comprare fino a dieci bende entro un prezzo
#
# Legge gli articoli dell’ultima offerta attiva di un venditore NPC per controllare tipo,
# quantità e prezzo prima di comprare o vendere.
#
# Array of String, indici da 0: serial|graphic|hue|amount|price|name. Serial identifica la voce,
# graphic il tipo, hue il colore; questi tre campi usano 0x. Amount indica unità disponibili
# meno la bozza della finestra, price il prezzo unitario. Senza offerta array vuoto, non
# Boolean. Solo i primi cinque | separano campi; il resto è il nome e può contenere |.

SUB Main()
    # Solo ACQUISTO già aperto: 0x0E21 bende, prezzo massimo 5, quantità massima 10. Prima voce
    # adatta con il suo serial reale.

    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

Spiegazione dei parametri e dell’esecuzione:

  • Solo ACQUISTO già aperto: 0x0E21 bende, prezzo massimo 5, quantità massima 10. Prima voce adatta con il suo serial reale.

Contare le scorte di un tipo

# Contare le scorte di un tipo
#
# Legge gli articoli dell’ultima offerta attiva di un venditore NPC per controllare tipo,
# quantità e prezzo prima di comprare o vendere.
#
# Array of String, indici da 0: serial|graphic|hue|amount|price|name. Serial identifica la voce,
# graphic il tipo, hue il colore; questi tre campi usano 0x. Amount indica unità disponibili
# meno la bozza della finestra, price il prezzo unitario. Senza offerta array vuoto, non
# Boolean. Solo i primi cinque | separano campi; il resto è il nome e può contenere |.

SUB Main()
    # Funzione completa che somma amount del tipo scelto; vuoto restituisce 0. Sono unità
    # disponibili, non creature o oggetti indossati.

    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

Spiegazione dei parametri e dell’esecuzione:

  • Funzione completa che somma amount del tipo scelto; vuoto restituisce 0. Sono unità disponibili, non creature o oggetti indossati.

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

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

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

Clone this wiki locally