-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetShopList de
ClassicUO / Basic IDE
Liest Artikel des zuletzt aktiven NPC-Händlerangebots, um Typ, Menge und Preis vor Kauf oder Verkauf zu prüfen.
UO.GetShopList() -> Any
Keine Parameter.
Array of String, Index ab 0: serial|graphic|hue|amount|price|name. Serial ist die Positions-ID, graphic der Typ, hue die Farbe; diese drei Felder sind hexadezimal mit 0x. Amount sind verfügbare Einheiten abzüglich Fensterentwurf, price der Stückpreis. Ohne Angebot ist das Array leer, kein Boolean. Nur die ersten fünf | trennen Felder; der restliche Text ist der Name und darf | enthalten.
- 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.
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.
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.
Array of String, Index ab 0: serial|graphic|hue|amount|price|name. Serial ist die Positions-ID, graphic der Typ, hue die Farbe; diese drei Felder sind hexadezimal mit 0x. Amount sind verfügbare Einheiten abzüglich Fensterentwurf, price der Stückpreis. Ohne Angebot ist das Array leer, kein Boolean. Nur die ersten fünf | trennen Felder; der restliche Text ist der Name und darf | enthalten.
Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion GetShopList.
Lesen sendet keine Pakete. Die Daten sind eine Momentaufnahme, keine Bestandsgarantie. Amount zählt Einheiten, GetArrayLength(rows) Positionen. SendShopReply akzeptiert keinen Preis.
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.GetItems.
Lesen sendet keine Pakete. Die Daten sind eine Momentaufnahme, keine Bestandsgarantie. Amount zählt Einheiten, GetArrayLength(rows) Positionen. SendShopReply akzeptiert keinen Preis.
# Erste Position auslesen
#
# Liest Artikel des zuletzt aktiven NPC-Händlerangebots, um Typ, Menge und Preis vor Kauf oder
# Verkauf zu prüfen.
#
# Array of String, Index ab 0: serial|graphic|hue|amount|price|name. Serial ist die
# Positions-ID, graphic der Typ, hue die Farbe; diese drei Felder sind hexadezimal mit 0x.
# Amount sind verfügbare Einheiten abzüglich Fensterentwurf, price der Stückpreis. Ohne Angebot
# ist das Array leer, kein Boolean. Nur die ersten fünf | trennen Felder; der restliche Text ist
# der Name und darf | enthalten.
SUB Main()
# GetWord: 0 serial, 1 graphic, 2 hue, 3 Menge, 4 Preis. Vor rows[0] Arraylänge prüfen.
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 SUBErläuterung der Parameter und Ausführung:
- GetWord: 0 serial, 1 graphic, 2 hue, 3 Menge, 4 Preis. Vor rows[0] Arraylänge prüfen.
# Bis zu zehn Bandagen mit Preisgrenze kaufen
#
# Liest Artikel des zuletzt aktiven NPC-Händlerangebots, um Typ, Menge und Preis vor Kauf oder
# Verkauf zu prüfen.
#
# Array of String, Index ab 0: serial|graphic|hue|amount|price|name. Serial ist die
# Positions-ID, graphic der Typ, hue die Farbe; diese drei Felder sind hexadezimal mit 0x.
# Amount sind verfügbare Einheiten abzüglich Fensterentwurf, price der Stückpreis. Ohne Angebot
# ist das Array leer, kein Boolean. Nur die ersten fünf | trennen Felder; der restliche Text ist
# der Name und darf | enthalten.
SUB Main()
# Nur ein bereits geöffnetes KAUF-Angebot: 0x0E21 Bandagen, Stückpreis höchstens 5, Menge
# höchstens 10. Verwendet die erste passende Position und deren echte ID.
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 SUBErläuterung der Parameter und Ausführung:
- Nur ein bereits geöffnetes KAUF-Angebot: 0x0E21 Bandagen, Stückpreis höchstens 5, Menge höchstens 10. Verwendet die erste passende Position und deren echte ID.
# Bestand eines Typs zählen
#
# Liest Artikel des zuletzt aktiven NPC-Händlerangebots, um Typ, Menge und Preis vor Kauf oder
# Verkauf zu prüfen.
#
# Array of String, Index ab 0: serial|graphic|hue|amount|price|name. Serial ist die
# Positions-ID, graphic der Typ, hue die Farbe; diese drei Felder sind hexadezimal mit 0x.
# Amount sind verfügbare Einheiten abzüglich Fensterentwurf, price der Stückpreis. Ohne Angebot
# ist das Array leer, kein Boolean. Nur die ersten fünf | trennen Felder; der restliche Text ist
# der Name und darf | enthalten.
SUB Main()
# Die vollständige Hilfsfunktion summiert amount aller passenden Typen, bei leerem Angebot 0. Es
# sind verfügbare Einheiten, keine Kreaturen oder getragenen Gegenstände.
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 FUNCTIONErläuterung der Parameter und Ausführung:
- Die vollständige Hilfsfunktion summiert amount aller passenden Typen, bei leerem Angebot 0. Es sind verfügbare Einheiten, keine Kreaturen oder getragenen Gegenstände.
Shop lists / Списки покупки и продажи
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь