Skip to content

API UO SendShopReply fr

Codex edited this page Sep 23, 2026 · 1 revision

UO.SendShopReply

ClassicUO / Basic IDE

Home · API · Trading

Envoie une sélection à la dernière offre active du PNJ. L’offre détermine achat au PNJ ou vente au PNJ.

Syntaxe exacte

UO.SendShopReply(reply:Any) -> Unit

Paramètres

  • reply — String "serial:quantity" ; séparer les lignes par |, ; ou virgule ; = peut remplacer :. Serial est l’ID de ligne de GetShopList, décimal ou 0x, pas le type ni le vendeur. Quantity est un entier positif d’unités, pas de piles ; omission = 1. "accept" sans distinction de casse ou "1" confirme le brouillon ; chaîne vide annule par une réponse vide.

Retour

Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ; vérifier ensuite objets, or ou messages.

Comportement

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

Fonctions internes : de l’appel au résultat

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.

1. SendShopReply

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.

String "serial:quantity" ; séparer les lignes par |, ; ou virgule ; = peut remplacer :. Serial est l’ID de ligne de GetShopList, décimal ou 0x, pas le type ni le vendeur. Quantity est un entier positif d’unités, pas de piles ; omission = 1. "accept" sans distinction de casse ou "1" confirme le brouillon ; chaîne vide annule par une réponse vide.

Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction SendShopReply.

2. SessionShop.ParseSelection/Reply

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

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.ParseSelection/Reply.

Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ; vérifier ensuite objets, or ou messages.

Exemples

Choisir trois unités au plus

# Choisir trois unités au plus
#
# Envoie une sélection à la dernière offre active du PNJ. L’offre détermine achat au PNJ ou
# vente au PNJ.
#
# Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ;
# vérifier ensuite objets, or ou messages.

SUB Main()
    # Jusqu’à 3 unités de la première ligne réelle. Achat dans une offre d’achat, vente dans une
    # offre de vente : vérifier le sens.

    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

Explication des paramètres et du déroulement:

  • Jusqu’à 3 unités de la première ligne réelle. Achat dans une offre d’achat, vente dans une offre de vente : vérifier le sens.

Choisir selon un budget

# Choisir selon un budget
#
# Envoie une sélection à la dernière offre active du PNJ. L’offre détermine achat au PNJ ou
# vente au PNJ.
#
# Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ;
# vérifier ensuite objets, or ou messages.

SUB Main()
    # ACHAT uniquement : budget 30, type 0x0E21. Une unité par ligne correspondante si prix positif
    # et compatible avec le reste du budget ; | assemble une seule réponse.

    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

Explication des paramètres et du déroulement:

  • ACHAT uniquement : budget 30, type 0x0E21. Une unité par ligne correspondante si prix positif et compatible avec le reste du budget ; | assemble une seule réponse.

Confirmer le brouillon

# Confirmer le brouillon
#
# Envoie une sélection à la dernière offre active du PNJ. L’offre détermine achat au PNJ ou
# vente au PNJ.
#
# Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ;
# vérifier ensuite objets, or ou messages.

SUB Main()
    # Choisir d’abord les quantités dans le magasin. "accept" confirme ce brouillon, conservé sans
    # affichage. Sans sélection, réponse vide ; "1" est un alias de confirmation.

    UO.SendShopReply("accept")
END SUB

Explication des paramètres et du déroulement:

  • Choisir d’abord les quantités dans le magasin. "accept" confirme ce brouillon, conservé sans affichage. Sans sélection, réponse vide ; "1" est un alias de confirmation.

Annuler l’offre

# Annuler l’offre
#
# Envoie une sélection à la dernière offre active du PNJ. L’offre détermine achat au PNJ ou
# vente au PNJ.
#
# Unit : aucune valeur, aucun Boolean, total ni confirmation d’achat. Le serveur décide ;
# vérifier ensuite objets, or ou messages.

SUB Main()
    # La chaîne vide envoie une réponse vide et ferme l’offre. GetShopList ne distingue pas offre
    # vide et offre absente.

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

Explication des paramètres et du déroulement:

  • La chaîne vide envoie une réponse vide et ferme l’offre. GetShopList ne distingue pas offre vide et offre absente.

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

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

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

Clone this wiki locally