-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetShopList fr
ClassicUO / Basic IDE
Lit les articles de la dernière offre active d’un vendeur PNJ pour vérifier type, quantité et prix avant achat ou vente.
UO.GetShopList() -> Any
Aucun paramètre.
Array of String, indices depuis 0 : serial|graphic|hue|amount|price|name. Serial identifie la ligne, graphic le type, hue la couleur ; ces trois champs utilisent 0x. Amount est la quantité disponible moins le brouillon de la fenêtre, price le prix unitaire. Sans offre, tableau vide, pas Boolean. Seuls les cinq premiers | délimitent les champs ; le reste est le nom, qui peut contenir |.
- Ouvrir d’abord l’achat ou la vente auprès du PNJ voulu et attendre son offre. Ces commandes ne cherchent pas le vendeur, n’ouvrent pas le commerce, ne fixent pas les prix d’un vendeur personnel et ne déplacent pas les objets entre coffres. Aucun argument ID de vendeur : la dernière offre est utilisée.
- Le gestionnaire garde offre et brouillon dans la session sans affichage. Rouvrir restaure la fenêtre. Fermer le magasin lui-même, répondre, fermeture serveur ou déconnexion supprime l’offre. L’achat/vente automatique Bad Newbie peut la traiter avant le script.
- La lecture n’envoie aucun paquet. C’est un instantané reçu, pas une garantie du stock. Amount compte les unités ; GetArrayLength(rows) compte les lignes. SendShopReply ne reçoit pas de prix.
- Une liste explicite remplace le brouillon. Les ID répétés additionnent les quantités, limitées à la quantité totale proposée. ID inconnu, quantité invalide ou non positive rejette toute la réponse sans envoi et conserve l’offre. Sans offre, SendShopReply signale une erreur. "0" n’annule pas : utiliser "".
SessionShops valide les listes/prix complets et garde l’offre. Le bridge utilise le thread de session. GetItems forme les lignes, ParseSelection valide la sélection, Reply envoie achat 0x3B ou vente 0x9F puis ferme. ShopGump conserve sélection et défilement au détachement. Une fermeture serveur ne renvoie pas de réponse.
Ouvrir d’abord l’achat ou la vente auprès du PNJ voulu et attendre son offre. Ces commandes ne cherchent pas le vendeur, n’ouvrent pas le commerce, ne fixent pas les prix d’un vendeur personnel et ne déplacent pas les objets entre coffres. Aucun argument ID de vendeur : la dernière offre est utilisée.
Array of String, indices depuis 0 : serial|graphic|hue|amount|price|name. Serial identifie la ligne, graphic le type, hue la couleur ; ces trois champs utilisent 0x. Amount est la quantité disponible moins le brouillon de la fenêtre, price le prix unitaire. Sans offre, tableau vide, pas Boolean. Seuls les cinq premiers | délimitent les champs ; le reste est le nom, qui peut contenir |.
Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction GetShopList.
La lecture n’envoie aucun paquet. C’est un instantané reçu, pas une garantie du stock. Amount compte les unités ; GetArrayLength(rows) compte les lignes. SendShopReply ne reçoit pas de prix.
Le gestionnaire garde offre et brouillon dans la session sans affichage. Rouvrir restaure la fenêtre. Fermer le magasin lui-même, répondre, fermeture serveur ou déconnexion supprime l’offre. L’achat/vente automatique Bad Newbie peut la traiter avant le script.
Source du projet: src/ClassicUO.Client/Game/Managers/SessionShops.cs; fonction SessionShop.GetItems.
La lecture n’envoie aucun paquet. C’est un instantané reçu, pas une garantie du stock. Amount compte les unités ; GetArrayLength(rows) compte les lignes. SendShopReply ne reçoit pas de prix.
# Lire les champs de la première ligne
#
# Lit les articles de la dernière offre active d’un vendeur PNJ pour vérifier type, quantité et
# prix avant achat ou vente.
#
# Array of String, indices depuis 0 : serial|graphic|hue|amount|price|name. Serial identifie la
# ligne, graphic le type, hue la couleur ; ces trois champs utilisent 0x. Amount est la quantité
# disponible moins le brouillon de la fenêtre, price le prix unitaire. Sans offre, tableau vide,
# pas Boolean. Seuls les cinq premiers | délimitent les champs ; le reste est le nom, qui peut
# contenir |.
SUB Main()
# GetWord : 0 serial, 1 graphic, 2 hue, 3 quantité, 4 prix. Vérifier la taille avant 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 SUBExplication des paramètres et du déroulement:
- GetWord : 0 serial, 1 graphic, 2 hue, 3 quantité, 4 prix. Vérifier la taille avant rows[0].
# Acheter dix bandages au plus avec plafond de prix
#
# Lit les articles de la dernière offre active d’un vendeur PNJ pour vérifier type, quantité et
# prix avant achat ou vente.
#
# Array of String, indices depuis 0 : serial|graphic|hue|amount|price|name. Serial identifie la
# ligne, graphic le type, hue la couleur ; ces trois champs utilisent 0x. Amount est la quantité
# disponible moins le brouillon de la fenêtre, price le prix unitaire. Sans offre, tableau vide,
# pas Boolean. Seuls les cinq premiers | délimitent les champs ; le reste est le nom, qui peut
# contenir |.
SUB Main()
# Offre d’ACHAT déjà ouverte uniquement : 0x0E21 bandages, prix maximal 5, quantité maximale 10.
# Première ligne correspondante, avec son vrai serial.
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 SUBExplication des paramètres et du déroulement:
- Offre d’ACHAT déjà ouverte uniquement : 0x0E21 bandages, prix maximal 5, quantité maximale 10. Première ligne correspondante, avec son vrai serial.
# Compter le stock d’un type
#
# Lit les articles de la dernière offre active d’un vendeur PNJ pour vérifier type, quantité et
# prix avant achat ou vente.
#
# Array of String, indices depuis 0 : serial|graphic|hue|amount|price|name. Serial identifie la
# ligne, graphic le type, hue la couleur ; ces trois champs utilisent 0x. Amount est la quantité
# disponible moins le brouillon de la fenêtre, price le prix unitaire. Sans offre, tableau vide,
# pas Boolean. Seuls les cinq premiers | délimitent les champs ; le reste est le nom, qui peut
# contenir |.
SUB Main()
# Fonction complète : somme de amount pour le type demandé ; offre vide = 0. Ce sont des unités
# disponibles, pas des créatures ni des objets portés.
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 FUNCTIONExplication des paramètres et du déroulement:
- Fonction complète : somme de amount pour le type demandé ; offre vide = 0. Ce sont des unités disponibles, pas des créatures ni des objets portés.
Shop lists / Списки покупки и продажи
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь