Skip to content

API UO SendShopReply de

Codex edited this page Sep 23, 2026 · 1 revision

UO.SendShopReply

ClassicUO / Basic IDE

Home · API · Trading

Sendet eine Artikelauswahl an das zuletzt aktive NPC-Angebot. Das Angebot bestimmt Kauf oder Verkauf.

Genaue Syntax

UO.SendShopReply(reply:Any) -> Unit

Parameter

  • reply — String "serial:quantity"; Positionen durch |, ; oder Komma trennen, = ist statt : erlaubt. Serial ist die Positions-ID aus GetShopList (dezimal oder 0x), nicht Typ oder Händler-ID. Quantity: positive ganze Einheitenzahl, keine Stapelzahl; fehlt sie, gilt 1. "accept" ohne Beachtung der Großschreibung oder "1" bestätigt den Entwurf; leerer String bricht mit leerer Antwort ab.

Rückgabewert

Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach Gegenstände, Gold oder Servermeldung prüfen.

Verhalten

  • Zuerst im Spiel Kauf oder Verkauf beim gewünschten NPC öffnen und sein Angebot abwarten. Die Befehle suchen keinen Händler, öffnen keinen Handel, setzen keine eigenen Händlerpreise und verschieben keine Containerartikel. Keine Händler-ID als Argument: das letzte Angebot gilt.
  • Der Manager hält Angebot und Entwurf auch ohne Grafik im Spielzustand. Erneutes Öffnen stellt die Ansicht wieder her. Schließen des Shops selbst, Antwort, Serverschließung oder Trennung entfernt das Angebot. Bad Newbie kann es durch automatischen Kauf/Verkauf schon vorher bearbeiten.
  • Lesen sendet keine Pakete. Die Daten sind eine Momentaufnahme, keine Bestandsgarantie. Amount zählt Einheiten, GetArrayLength(rows) Positionen. SendShopReply akzeptiert keinen Preis.
  • Eine explizite Liste ersetzt den Entwurf. Wiederholte IDs summieren Mengen bis zur gesamten angebotenen Menge. Unbekannte ID oder ungültige/nichtpositive Menge verwirft die ganze Antwort vor dem Senden und erhält das Angebot. Ohne Angebot meldet SendShopReply einen Fehler. "0" bricht nicht ab: "" verwenden.

Interne Funktionen: vom Aufruf zum Ergebnis

SessionShops prüft vollständige Listen/Preise und speichert das Angebot. Die Bridge arbeitet im Sitzungsthread. GetItems formatiert Zeilen, ParseSelection prüft die Auswahl, Reply sendet Kauf 0x3B oder Verkauf 0x9F und schließt das Angebot. ShopGump erhält Auswahl und Scrollposition beim Ablösen. Serverschließungen erzeugen keine erneute Antwort.

1. SendShopReply

Zuerst im Spiel Kauf oder Verkauf beim gewünschten NPC öffnen und sein Angebot abwarten. Die Befehle suchen keinen Händler, öffnen keinen Handel, setzen keine eigenen Händlerpreise und verschieben keine Containerartikel. Keine Händler-ID als Argument: das letzte Angebot gilt.

String "serial:quantity"; Positionen durch |, ; oder Komma trennen, = ist statt : erlaubt. Serial ist die Positions-ID aus GetShopList (dezimal oder 0x), nicht Typ oder Händler-ID. Quantity: positive ganze Einheitenzahl, keine Stapelzahl; fehlt sie, gilt 1. "accept" ohne Beachtung der Großschreibung oder "1" bestätigt den Entwurf; leerer String bricht mit leerer Antwort ab.

Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion SendShopReply.

2. SessionShop.ParseSelection/Reply

Eine explizite Liste ersetzt den Entwurf. Wiederholte IDs summieren Mengen bis zur gesamten angebotenen Menge. Unbekannte ID oder ungültige/nichtpositive Menge verwirft die ganze Antwort vor dem Senden und erhält das Angebot. Ohne Angebot meldet SendShopReply einen Fehler. "0" bricht nicht ab: "" verwenden.

Der Manager hält Angebot und Entwurf auch ohne Grafik im Spielzustand. Erneutes Öffnen stellt die Ansicht wieder her. Schließen des Shops selbst, Antwort, Serverschließung oder Trennung entfernt das Angebot. Bad Newbie kann es durch automatischen Kauf/Verkauf schon vorher bearbeiten.

Projektquelle: src/ClassicUO.Client/Game/Managers/SessionShops.cs; Funktion SessionShop.ParseSelection/Reply.

Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach Gegenstände, Gold oder Servermeldung prüfen.

Beispiele

Bis zu drei Einheiten auswählen

# Bis zu drei Einheiten auswählen
#
# Sendet eine Artikelauswahl an das zuletzt aktive NPC-Angebot. Das Angebot bestimmt Kauf oder
# Verkauf.
#
# Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach
# Gegenstände, Gold oder Servermeldung prüfen.

SUB Main()
    # Bis zu 3 Einheiten der ersten tatsächlichen Position. Ein Kaufangebot kauft, ein
    # Verkaufsangebot verkauft: Richtung vorher prüfen.

    VAR rows = UO.GetShopList()
    IF GetArrayLength(rows) = 0 THEN
        RETURN
    END IF
    VAR amount = CInt(GetWord(rows[0], 3, "|"))
    IF amount > 3 THEN
        amount = 3
    END IF
    IF amount > 0 THEN
        UO.SendShopReply(GetWord(rows[0], 0, "|") + ":" + CStr(amount))
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • Bis zu 3 Einheiten der ersten tatsächlichen Position. Ein Kaufangebot kauft, ein Verkaufsangebot verkauft: Richtung vorher prüfen.

Auswahl innerhalb eines Budgets

# Auswahl innerhalb eines Budgets
#
# Sendet eine Artikelauswahl an das zuletzt aktive NPC-Angebot. Das Angebot bestimmt Kauf oder
# Verkauf.
#
# Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach
# Gegenstände, Gold oder Servermeldung prüfen.

SUB Main()
    # Nur KAUF: Budget 30, Typ 0x0E21. Je eine Einheit pro passender Position mit positivem Preis im
    # Restbudget; | verbindet eine gemeinsame Antwort.

    VAR budget = 30
    VAR reply = ""
    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 <= budget AND amount > 0 THEN
                IF reply <> "" THEN
                    reply = reply + "|"
                END IF
                reply = reply + GetWord(row, 0, "|") + ":1"
                budget = budget - price
            END IF
        END IF
    NEXT
    IF reply <> "" THEN
        UO.SendShopReply(reply)
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • Nur KAUF: Budget 30, Typ 0x0E21. Je eine Einheit pro passender Position mit positivem Preis im Restbudget; | verbindet eine gemeinsame Antwort.

Fensterentwurf bestätigen

# Fensterentwurf bestätigen
#
# Sendet eine Artikelauswahl an das zuletzt aktive NPC-Angebot. Das Angebot bestimmt Kauf oder
# Verkauf.
#
# Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach
# Gegenstände, Gold oder Servermeldung prüfen.

SUB Main()
    # Zuerst im Shop Mengen auswählen. "accept" bestätigt den auch ohne Grafik erhaltenen Entwurf.
    # Ohne Auswahl ist die Antwort leer; "1" ist ein Bestätigungsalias.

    UO.SendShopReply("accept")
END SUB

Erläuterung der Parameter und Ausführung:

  • Zuerst im Shop Mengen auswählen. "accept" bestätigt den auch ohne Grafik erhaltenen Entwurf. Ohne Auswahl ist die Antwort leer; "1" ist ein Bestätigungsalias.

Angebot abbrechen

# Angebot abbrechen
#
# Sendet eine Artikelauswahl an das zuletzt aktive NPC-Angebot. Das Angebot bestimmt Kauf oder
# Verkauf.
#
# Unit: kein Wert, Boolean, Gesamtpreis oder Kaufnachweis. Der Server entscheidet; danach
# Gegenstände, Gold oder Servermeldung prüfen.

SUB Main()
    # Ein leerer String sendet eine leere Antwort und schließt das Angebot. GetShopList
    # unterscheidet ein leeres nicht von einem fehlenden Angebot.

    IF GetArrayLength(UO.GetShopList()) > 0 THEN
        UO.SendShopReply("")
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • Ein leerer String sendet eine leere Antwort und schließt das Angebot. GetShopList unterscheidet ein leeres nicht von einem fehlenden Angebot.

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

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

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

Clone this wiki locally