Skip to content

FR UO Topic trade

Codex edited this page Oct 12, 2026 · 4 revisions

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

Commerce

Accueil · C# · IDE · UO API · A–Z · Exemples · Langues

Fenêtre d'échange sécurisé entre joueurs : participant, conteneur, statut, confirmation et annulation.

Sections

Sujet Commandes et explications
IsTrade UO.IsTrade
Adversaire commercial UO.GetTradeOpponent · UO.GetTradeOpponentName
Conteneur commercial UO.GetTradeContainer
ConfirmTrade UO.ConfirmTrade
CancelTrade UO.CancelTrade

Toutes les commandes du thème

Commerce sécurisé

UO.IsTrade · UO.TradeCount · UO.TradeCheck · UO.TradeContainer · UO.GetTradeContainer · UO.TradeOpponent · UO.GetTradeOpponent · UO.TradeName · UO.GetTradeOpponentName · UO.ConfirmTrade · UO.CancelTrade

Exemples sur le sujet

Chaque carte de commande possède plusieurs scénarios indépendants : code direct, fonctions et classes. Vous trouverez ci-dessous une sélection de courts scénarios ; des restrictions et une analyse complète sont à prévoir.

UO.GetTradeContainer

Paramètres, résultat et tous les scénarios

var value = UO.GetTradeContainer(1, 1);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

UO.ConfirmTrade

Paramètres, résultat et tous les scénarios

var result = UO.ConfirmTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

Référence complète des commandes


UO.CancelTrade

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

Signatures C#

dynamic UO.CancelTrade(object? tradeNum);

Annule l'échange sélectionné et ferme sa fenêtre.

Paramètres

  • tradeNum — Entier : numéro de fenêtre actuel de 1 à TradeCount(). 0 et les valeurs négatives ne sont pas autorisées. Ce n'est pas serial.

Valeur de retour

int : 1 (condition remplie) - la fenêtre est trouvée, fermée et une demande d'annulation est envoyée via la fermeture ; 0 (condition non remplie) - pas de fenêtre. Cela n'attend pas une réponse du serveur. Annuler à nouveau la fenêtre fermée n’envoie pas le deuxième paquet.

Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

object? result = UO.CancelTrade(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var result = UO.CancelTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.
return  RunScenario();
 object? RunScenario()
{
    var tradeNumber = 2;
    if (Truth(UO.TradeCount() >= tradeNumber))
    {
        var result = UO.CancelTrade(tradeNumber);
        UO.Print(Convert.ToString(result));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var expectedPartner = UO.GetTradeOpponent(1);
        var result = ApplyToPartner(1, expectedPartner);
        UO.Print(Convert.ToString(result));
        return null;
    }

    dynamic ApplyToPartner(dynamic tradeNumber, dynamic expectedPartner)
    {
        if (Truth(expectedPartner == 0))
        {
            return false;
        }

        if (Truth(UO.GetTradeOpponent(tradeNumber) != expectedPartner))
        {
            return false;
        }

        return UO.CancelTrade(tradeNumber);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.CancelTrade(tradeNum) — UO.CancelTrade(Any)

Paramètres: tradeNum (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "canceltrade": return new InjectionValue(bridge.CancelTrade(Arg(0)));

UO.ConfirmTrade

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

Signatures C#

dynamic UO.ConfirmTrade(object? tradeNum);

Définit l’indicateur de consentement personnalisé sur l’échange sélectionné.

Paramètres

  • tradeNum — Entier : numéro de fenêtre actuel de 1 à TradeCount(). 0 et les valeurs négatives ne sont pas autorisées. Ce n'est pas serial.

Valeur de retour

int : 1 (condition remplie) - la fenêtre est trouvée et son propre accord est activé (ou a déjà été activé) ; 0 (condition non remplie) - pas de fenêtre. Ne confirme pas le transfert des éléments par le serveur. Rappeler ne supprime pas le consentement.

Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

object? result = UO.ConfirmTrade(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var result = UO.ConfirmTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.
return  RunScenario();
 object? RunScenario()
{
    var tradeNumber = 2;
    if (Truth(UO.TradeCount() >= tradeNumber))
    {
        var result = UO.ConfirmTrade(tradeNumber);
        UO.Print(Convert.ToString(result));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var expectedPartner = UO.GetTradeOpponent(1);
        var result = ApplyToPartner(1, expectedPartner);
        UO.Print(Convert.ToString(result));
        return null;
    }

    dynamic ApplyToPartner(dynamic tradeNumber, dynamic expectedPartner)
    {
        if (Truth(expectedPartner == 0))
        {
            return false;
        }

        if (Truth(UO.GetTradeOpponent(tradeNumber) != expectedPartner))
        {
            return false;
        }

        return UO.ConfirmTrade(tradeNumber);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.ConfirmTrade(tradeNum) — UO.ConfirmTrade(Any)

Paramètres: tradeNum (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "confirmtrade": return new InjectionValue(bridge.ConfirmTrade(Arg(0)));

UO.GetTradeContainer

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

Signatures C#

dynamic UO.GetTradeContainer(object? tradeNum, object? num);

Renvoie le numérique serial de l'un des deux conteneurs d'échange.

Paramètres

  • tradeNum — Entier : numéro de fenêtre actuel de 1 à TradeCount(). 0 et les valeurs négatives ne sont pas autorisées. Ce n'est pas serial.
  • num - 1 - propre conteneur, 2 - conteneur du partenaire. Les valeurs restantes renvoient 0.

Valeur de retour

int : 32 bit serial conteneur ; 0 s'il n'y a pas de fenêtre ou un numéro incorrect. Ce n'est pas type. Le bit de poids fort est conservé : check != 0, pas > 0 ou == true.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

object? result = UO.GetTradeContainer(1, 1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.GetTradeContainer(1, 1);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var ours = UO.GetTradeContainer(1, 1);
    var theirs = UO.GetTradeContainer(1, 2);
    UO.Print(Hex(ours) + " / " + Hex(theirs));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Hex(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return 0;
        }

        return UO.GetTradeContainer(index, 1);
    }

    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.GetTradeContainer(tradeNum, num) — UO.GetTradeContainer(Any,Any)

Paramètres: tradeNum (Any), num (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "gettradecontainer": return new InjectionValue(bridge.GetTradeContainer(Arg(0), Arg(1)));

UO.GetTradeOpponent

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

Signatures C#

dynamic UO.GetTradeOpponent(object? tradeNum);

Renvoie le numérique serial du caractère partenaire.

Paramètres

  • tradeNum — Entier : numéro de fenêtre actuel de 1 à TradeCount(). 0 et les valeurs négatives ne sont pas autorisées. Ce n'est pas serial.

Valeur de retour

int : caractère serial de la fenêtre LocalSerial ; 0 s'il n'y a pas de fenêtre. Pas un conteneur ni un bool ; vérifiez != 0.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

object? result = UO.GetTradeOpponent(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.GetTradeOpponent(1);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(1); index <= total - 0; index += (int)(1))
    {
        var value = UO.GetTradeOpponent(index);
        UO.Print(Convert.ToString(index) + ": " + Hex(value));
    }

    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Hex(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return 0;
        }

        return UO.GetTradeOpponent(index);
    }

    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.GetTradeOpponent(tradeNum) — UO.GetTradeOpponent(Any)

Paramètres: tradeNum (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "gettradeopponent": return new InjectionValue(bridge.GetTradeOpponent(Arg(0)));

UO.GetTradeOpponentName

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

Signatures C#

dynamic UO.GetTradeOpponentName(object? tradeNum);

Renvoie le nom du partenaire reçu ainsi que la fenêtre d'échange.

Paramètres

  • tradeNum — Entier : numéro de fenêtre actuel de 1 à TradeCount(). 0 et les valeurs négatives ne sont pas autorisées. Ce n'est pas serial.

Valeur de retour

string : nom du package d’ouverture de l’échange ; chaîne vide s'il n'y a pas de fenêtre ou de nom. Ne demande plus le nom.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

object? result = UO.GetTradeOpponentName(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.GetTradeOpponentName(1);
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(1); index <= total - 0; index += (int)(1))
    {
        var value = UO.GetTradeOpponentName(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return "";
        }

        return UO.GetTradeOpponentName(index);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.GetTradeOpponentName(tradeNum) — UO.GetTradeOpponentName(Any)

Paramètres: tradeNum (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "gettradeopponentname": return new InjectionValue(bridge.GetTradeOpponentName(Arg(0)));

UO.IsTrade

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

Signatures C#

int UO.IsTrade();

Vérifie une fenêtre d’échange sécurisée ouverte.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int : 1 (condition remplie) - il y a un échange ouvert ; 0 (condition non remplie) - non.

Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.IsTrade();
UO.Print("IsTrade: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.IsTrade();
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • avant/après - deux instantanés distincts avec un intervalle de 500 millisecondes. La pause n'attend pas un échange précis ; Entre les lectures, l'état peut changer plusieurs fois.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.IsTrade();
    await Delay(500);
    var after = UO.IsTrade();
    UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeState();
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeState()
    {
        return UO.IsTrade();
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.IsTrade() — UO.IsTrade()

Paramètres: Aucun paramètre.

Résultat: int / Integer.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "istrade": return new InjectionValue(bridge.IsTrade());

UO.TradeCheck

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

Signatures C#

int UO.TradeCheck(object? windowIndex);
dynamic UO.TradeCheck(object? tradeNum, object? num);
int UO.TradeCheck(object? windowIndex, object? checkbox, object? stateValue);

Lit les indicateurs de consentement ; le formulaire à trois paramètres modifie également sa propre case à cocher.

Paramètres

  • windowIndex — Entier : index de la fenêtre actuelle de 0 à TradeCount()-1. Un index négatif ou manquant produit un résultat vide. Ce n'est pas serial.
  • tradeNum — Entier : index de la fenêtre actuelle de 0 à TradeCount()-1. Un index négatif ou manquant produit un résultat vide. Ce n'est pas serial.
  • num — Forme à deux paramètres uniquement : 1 — propre drapeau, 2 — drapeau du partenaire ; d'autres significations donnent 0. TradeNum commence ici par 0.
  • checkbox — Forme à trois paramètres uniquement : 0 — votre propre drapeau, 1 — celui de votre partenaire. Le drapeau de quelqu'un d'autre est seulement lu ; une autre signification est donnée par 0.
  • stateValue — Uniquement avec checkbox=0 : 0/false supprime le consentement, tout nombre non nul/true inclut. Si checkbox=1 la valeur est ignorée.

Valeur de retour

int : 1 (condition remplie) - la case sélectionnée est cochée ; 0 (condition non remplie) - retirée, la fenêtre est manquante ou le côté est incorrect. Le formulaire d'enregistrement renvoie le statut plutôt que l'indication d'une transaction réussie : décocher la case renvoie 0.

Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.TradeCheck(0);
UO.Print("TradeCheck: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • UO.TradeCheck(0) et UO.TradeCheck(0,1) lisent leur accord de la première fenêtre ; UO.TradeCheck(0,2) - celui de quelqu'un d'autre. Il n'y a pas d'enregistrement ni de confirmation automatique.
var own = UO.TradeCheck(0);
var sameOwn = UO.TradeCheck(0, 1);
var other = UO.TradeCheck(0, 2);
UO.Print(Convert.ToString(own) + "/" + Convert.ToString(sameOwn) + "/" + Convert.ToString(other));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • UO.TradeCheck(0,0,false) retire son consentement. UO.TradeCheck(0,1,false) ne lit que le consentement du partenaire : false ne peut pas changer le côté de quelqu'un d'autre. Nous attendons le résultat 0 après retrait.
return  RunScenario();
 object? RunScenario()
{
    var cleared = UO.TradeCheck(0, 0, false);
    var other = UO.TradeCheck(0, 1, false);
    UO.Print(Convert.ToString(cleared) + "/" + Convert.ToString(other));
    return null;
}

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var accepted = BothAccepted(0);
        if (Truth(Truth(accepted) == true))
        {
            UO.Print("Both boxes are checked; server completion is not known");
        }

        return null;
    }

    dynamic BothAccepted(dynamic index)
    {
        if (Truth(index < 0) || Truth(index >= UO.TradeCount()))
        {
            return false;
        }

        var own = UO.TradeCheck(index, 1);
        var other = UO.TradeCheck(index, 2);
        return Truth(Truth(own) == true) && Truth(Truth(other) == true);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.TradeCheck(windowIndex) — UO.TradeCheck(Any)

Paramètres: windowIndex (Any)

Résultat: int / Integer.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public int TradeCheck(InjectionValue windowIndex)

            => bridge.TradeCheck(NumberConversions.ToInt(windowIndex), 0, 0, false);

UO.TradeCheck(tradeNum, num) — UO.TradeCheck(Any,Any)

Paramètres: tradeNum (Any), num (Any)

Résultat: dynamic / Any.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "tradecheck":

                    // The compatibility reader uses participants 1/2; the legacy

                    // one/three-argument forms use checkbox indices 0/1.

                    int tradeSide = Arg(1);

                    return new InjectionValue(tradeSide is 1 or 2

                        ? bridge.TradeCheck(Arg(0), tradeSide - 1, 0, false) : 0);

UO.TradeCheck(windowIndex, checkbox, stateValue) — UO.TradeCheck(Any,Any,Any)

Paramètres: windowIndex (Any), checkbox (Any), stateValue (Any)

Résultat: int / Integer.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public int TradeCheck(InjectionValue windowIndex, InjectionValue checkbox, InjectionValue stateValue)

            => bridge.TradeCheck(NumberConversions.ToInt(windowIndex), NumberConversions.ToInt(checkbox), NumberConversions.ToInt(stateValue), true);

UO.TradeContainer

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

Signatures C#

string UO.TradeContainer(object? windowIndex);

Renvoie serial de son conteneur d'échange sous forme de chaîne hexadécimale.

Paramètres

  • windowIndex — Entier : index de la fenêtre actuelle de 0 à TradeCount()-1. Un index négatif ou manquant produit un résultat vide. Ce n'est pas serial.

Valeur de retour

string : hexadécimal de la forme « 0x40000011 » ; "0x00000000" s'il n'y a pas de fenêtre. Il s'agit du ID de son conteneur, pas du bool et non de la chaîne vide.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.TradeContainer(0);
UO.Print("TradeContainer: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.TradeContainer(0);
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeContainer(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "0x00000000";
        }

        return UO.TradeContainer(index);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.TradeContainer(windowIndex) — UO.TradeContainer(Any)

Paramètres: windowIndex (Any)

Résultat: string / String.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public string TradeContainer(InjectionValue windowIndex) => NumberConversions.ToHex(bridge.TradeContainer(NumberConversions.ToInt(windowIndex)));

UO.TradeCount

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

Signatures C#

int UO.TradeCount();

Renvoie le nombre de fenêtres d'échange ouvertes.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int : nombre de fenêtres de 0. Il s'agit d'une quantité, pas de bool ; pour vérifier la disponibilité, utilisez > 0.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.TradeCount();
UO.Print("TradeCount: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.TradeCount();
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • avant/après - deux instantanés distincts avec un intervalle de 500 millisecondes. La pause n'attend pas un échange précis ; Entre les lectures, l'état peut changer plusieurs fois.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.TradeCount();
    await Delay(500);
    var after = UO.TradeCount();
    UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeState();
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeState()
    {
        return UO.TradeCount();
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.TradeCount() — UO.TradeCount()

Paramètres: Aucun paramètre.

Résultat: int / Integer.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public int TradeCount() => bridge.TradeCount();

UO.TradeName

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

Signatures C#

string UO.TradeName(object? windowIndex);

Renvoie le nom du partenaire de la fenêtre d'échange par index à partir de zéro.

Paramètres

  • windowIndex — Entier : index de la fenêtre actuelle de 0 à TradeCount()-1. Un index négatif ou manquant produit un résultat vide. Ce n'est pas serial.

Valeur de retour

string : nom du partenaire enregistré ; chaîne vide s'il n'y a pas de fenêtre/nom. Le nom de l'élément conteneur n'est pas utilisé.

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.TradeName(0);
UO.Print("TradeName: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.TradeName(0);
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeName(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "";
        }

        return UO.TradeName(index);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.TradeName(windowIndex) — UO.TradeName(Any)

Paramètres: windowIndex (Any)

Résultat: string / String.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public string TradeName(InjectionValue windowIndex) => bridge.TradeName(NumberConversions.ToInt(windowIndex));

UO.TradeOpponent

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

Signatures C#

string UO.TradeOpponent(object? windowIndex);

Renvoie serial du conteneur partenaire sous forme de chaîne hexadécimale ; ce n'est pas un caractère ID.

Paramètres

  • windowIndex — Entier : index de la fenêtre actuelle de 0 à TradeCount()-1. Un index négatif ou manquant produit un résultat vide. Ce n'est pas serial.

Valeur de retour

string : hexadécimal serial du conteneur ID2 de quelqu'un d'autre ; "0x00000000" s'il n'y a pas de fenêtre. Pour un caractère ID, utilisez GetTradeOpponent(index + 1).

Comportement

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade nombre de fenêtres avec 1 ; TradeContainer/TradeOpponent/TradeName et toutes les formes de TradeCheck - à partir de 0. Il s'agit d'une compatibilité évidente de ce client : les ouvrages de référence externes pour différents moteurs utilisent des points de référence différents.
  • La lecture s'effectue sur le fil du jeu en utilisant les fenêtres live du monde actuel. Les fenêtres fermées ne comptent pas. Les appels de lecture n'envoient pas de paquets et n'attendent pas de réponse. L'ordre de UI peut changer lors de l'ouverture, de la fermeture et du déplacement de la fenêtre vers le haut ; le numéro n'est pas un identifiant permanent.
  • ConfirmTrade et son enregistrement TradeCheck envoient le paquet uniquement lorsque le consentement change. Le consentement de quelqu'un d'autre est déterminé par le serveur. CancelTrade envoie l'annulation une fois. 1/true est un état/traitement local et ne constitue pas une garantie de finalisation de l'échange. Les noms et les deux accords ne prouvent pas que la composition des éléments n'a pas changé.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.

var result = UO.TradeOpponent(0);
UO.Print("TradeOpponent: " + Convert.ToString(result));

1. Lecture ou action directe - script direct

Paramètres et déroulement de l’exécution :

  • L'appel est effectué une seule fois, le résultat est stocké dans valeur/résultat. 0 est le premier index, 1 est le premier nombre (voir la syntaxe de cette commande). HEX affiche le serial numérique ; Convert.ToString — nombre ou chaîne.
var value = UO.TradeOpponent(0);
UO.Print(Convert.ToString(value));

2. Autres scripts et options - Fonction de script

Paramètres et déroulement de l’exécution :

  • total — instantané du nombre de fenêtres ; index - index/numéro actuel. L'exemple d'énumération ne confirme rien. Dans GetTradeContainer deux appels lisent leur conteneur (1) et celui de quelqu'un d'autre (2) de la première fenêtre (1).
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeOpponent(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3. Assistant complet avec toutes les fonctionnalités - Classe de script

Paramètres et déroulement de l’exécution :

  • L'assistant est donné dans son intégralité et est en fait appelé depuis Main. Les vérifications Range/ID réduisent le risque d'erreur, mais plusieurs appels ne sont pas atomiques : la fenêtre peut changer entre eux. Pour l'action expectedPartner — caractère serial enregistré ; il ne s’agit pas d’une révision du prix ou du contenu de l’échange.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "0x00000000";
        }

        return UO.TradeOpponent(index);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.TradeOpponent(windowIndex) — UO.TradeOpponent(Any)

Paramètres: windowIndex (Any)

Résultat: string / String.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

public string TradeOpponent(InjectionValue windowIndex) => NumberConversions.ToHex(bridge.TradeOpponent(NumberConversions.ToInt(windowIndex)));

Clone this wiki locally