FR UO Topic diagnostics introspection - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Diagnostic et introspection

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

Inspection des objets, tuiles et gommes, vérification des noms, paramètres et signatures API. La présence d'une signature ne confirme pas la possibilité d'une action de jeu dans l'état actuel.

Sections

Sujet Commandes et explications
Help UO.Help
Dump UO.Dump
Info UO.Info
InfoTile UO.InfoTile
InfoGump UO.InfoGump
API Name Exists UO.ApiNameExists
API Signature Exists UO.ApiSignatureExists
API Parameter Exists UO.ApiParameterExists
Version UO.Version

Toutes les commandes du thème

Inspection

UO.Help · UO.Dump · UO.Info · UO.InfoColor · UO.GetInfo · UO.ExtendedInfo · UO.InfoTile · UO.InfoGump · UO.InfoGumps · UO.ApiNameExists · UO.ApiParameterExists · UO.ApiSignatureExists · UO.Version · UO.ClientInfo

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

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

UO.InfoGump();

UO.ApiNameExists

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

return UO.ApiNameExists("UO.GetType");

Référence complète des commandes


UO.ApiNameExists

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

Signatures C#

int UO.ApiNameExists(object? name);

Vérifie l'enregistrement du nom de la fonction native appelée.

Paramètres

  • name - Obligatoire string : Le nom exact enregistré, pas l'expression appelante. Les espaces de cas et de bord ne sont pas importants ; UO. n’est pas ajouté automatiquement. Un nom vide ou inconnu donne 0. Les procédures utilisateurs ne sont pas prises en compte.

Valeur de retour

int : 1 signifie que le nom est enregistré, 0 qu’il ne l’est pas. En C#, utilisez result != 0 ou result == 0. Comparer int à true ou false est invalide. L’enregistrement ne confirme aucune action du serveur.

Comportement

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.ApiNameExists("UO.GetType");
UO.Print("ApiNameExists: " + Convert.ToString(result));

1. UO.ApiNameExists - 1 - script direct

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

  • Le premier exemple teste le nom du jeu avec un UO explicite. et renvoie 1. Le nom exact testé et le nombre d'arguments lorsqu'il est requis sont visibles dans l'appel.
return UO.ApiNameExists("UO.GetType");

2. UO.ApiNameExists — 2 — fonction de script

Seul l’enregistrement des noms natifs est vérifié. Convert.ToInt32 est une méthode .NET, pas une entrée de l’API UO ; ApiNameExists renvoie donc 0. La méthode reste disponible en C# normal.

return  RunScenario();
 object? RunScenario()
{
    var name = "Convert.ToInt32";
    return UO.ApiNameExists(name);
    return null;
}

3. UO.ApiNameExists - 3 - classe de scénario

Chaque résultat numérique est comparé à 0 ; && combine ensuite deux valeurs bool. Pour ces noms, le résultat est false.

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()
    {
        return HasBoth("GetType", "UO.GetType");
        return null;
    }

    dynamic HasBoth(dynamic first, dynamic second)
    {
        return UO.ApiNameExists(first) != 0 && UO.ApiNameExists(second) != 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.ApiNameExists(name) — UO.ApiNameExists(String)

Paramètres: name (String)

Résultat: int / Integer.

Pendant un appel:

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

public int ApiNameExists(string name)

        {

            string normalized = NormalizeApiName(name);

            return metadata.NativeSubrutines.Any(definition =>

                definition.Name.Equals(normalized, StringComparison.OrdinalIgnoreCase)) ? 1 : 0;

        }

UO.ApiParameterExists

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

Signatures C#

int UO.ApiParameterExists(object? name);

Vérifie si une valeur d'exécution ou un objet nommé est enregistré.

Paramètres

  • name - Obligatoire string : Le nom exact enregistré, pas l'expression appelante. Les espaces de cas et de bord ne sont pas importants ; UO. n’est pas ajouté automatiquement. Un nom vide ou inconnu donne 0. Les procédures utilisateurs ne sont pas prises en compte.

Valeur de retour

int : 1 signifie que le nom est enregistré, 0 qu’il ne l’est pas. En C#, utilisez result != 0 ou result == 0. Comparer int à true ou false est invalide. L’enregistrement ne confirme aucune action du serveur.

Comportement

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.ApiParameterExists("backpack");
UO.Print("ApiParameterExists: " + Convert.ToString(result));

1. UO.ApiParameterExists - 1 - script direct

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

  • Le premier exemple teste le nom du jeu avec un UO explicite. et renvoie 1. Le nom exact testé et le nombre d'arguments lorsqu'il est requis sont visibles dans l'appel.
return UO.ApiParameterExists("UO.GetHP");

2. UO.ApiParameterExists — 2 — fonction de script

Le sélecteur enregistré backpack est vérifié et renvoie 1. Cela ne vérifie ni les paramètres des méthodes C# ni l’existence d’un sac à dos dans le monde du jeu.

return  RunScenario();
 object? RunScenario()
{
    var name = "backpack";
    return UO.ApiParameterExists(name);
    return null;
}

3. UO.ApiParameterExists - 3 - classe de scénario

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

  • Le troisième exemple contient une fonction d'assistance complète. Il compare la forme courte supprimée ou l'arité non prise en charge avec la forme disponible. Les paramètres nom, premier, deuxième et nombre de passes/comptes restent inchangés. Le résultat est 0 pour les contrôles d'appel et 0:1 pour les contrôles de valeur.
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()
    {
        return CompareNames("GetHP", "UO.GetHP");
        return null;
    }

    dynamic CompareNames(dynamic first, dynamic second)
    {
        return Convert.ToString(UO.ApiParameterExists(first)) + ":" + Convert.ToString(UO.ApiParameterExists(second));
    }
}

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.ApiParameterExists(name) — UO.ApiParameterExists(String)

Paramètres: name (String)

Résultat: int / Integer.

Pendant un appel:

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

public int ApiParameterExists(string name)

        {

            string value = (name ?? string.Empty).Trim();

            if (value.Length == 0)

                return 0;



            if (Metadata.ShortcutVariables.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase)))

                return 1;



            return metadata.IntrinsicVariableExists(value) ? 1 : 0;

        }

UO.ApiSignatureExists

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

Signatures C#

int UO.ApiSignatureExists(object? name, object? argumentCount);

Teste l'enregistrement d'un nom avec le nombre d'arguments donné.

Paramètres

  • name - Obligatoire string : Le nom exact enregistré, pas l'expression appelante. Les espaces de cas et de bord ne sont pas importants ; UO. n’est pas ajouté automatiquement. Un nom vide ou inconnu donne 0. Les procédures utilisateurs ne sont pas prises en compte.
  • argumentCount — Obligatoire int : le nombre total d'arguments de position, y compris les arguments facultatifs explicitement transmis. Une quantité négative ou non prise en charge donne 0. Les types des arguments eux-mêmes ne sont pas vérifiés.

Valeur de retour

int : 1 signifie que le nom est enregistré, 0 qu’il ne l’est pas. En C#, utilisez result != 0 ou result == 0. Comparer int à true ou false est invalide. L’enregistrement ne confirme aucune action du serveur.

Comportement

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.ApiSignatureExists("UO.GetType", 1);
UO.Print("ApiSignatureExists: " + Convert.ToString(result));

1. UO.ApiSignatureExists - 1 - script direct

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

  • Le premier exemple teste le nom du jeu avec un UO explicite. et renvoie 1. Le nom exact testé et le nombre d'arguments lorsqu'il est requis sont visibles dans l'appel.
return UO.ApiSignatureExists("UO.GetType",1);

2. UO.ApiSignatureExists — 2 — fonction de script

Les formes de UO.FindType avec un et zéro argument sont vérifiées. Le résultat est la chaîne "1:0" ; la forme sans argument n’est pas enregistrée.

return  RunScenario();
 object? RunScenario()
{
    return Convert.ToString(UO.ApiSignatureExists("UO.FindType", 1)) + ":" + Convert.ToString(UO.ApiSignatureExists("UO.FindType", 0));
    return null;
}

3. UO.ApiSignatureExists - 3 - classe de scénario

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

  • Le troisième exemple contient une fonction d'assistance complète. Il compare la forme courte supprimée ou l'arité non prise en charge avec la forme disponible. Les paramètres nom, premier, deuxième et nombre de passes/comptes restent inchangés. Le résultat est 0 pour les contrôles d'appel et 0:1 pour les contrôles de valeur.
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()
    {
        return CheckForm("UO.GetType", 0);
        return null;
    }

    dynamic CheckForm(dynamic name, dynamic count)
    {
        return UO.ApiSignatureExists(name, count);
    }
}

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.ApiSignatureExists(name, argumentCount) — UO.ApiSignatureExists(String,Integer)

Paramètres: name (String), argumentCount (Integer)

Résultat: int / Integer.

Pendant un appel:

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

public int ApiSignatureExists(string name, int argumentCount)

            => metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount) ? 1 : 0;

UO.ClientInfo

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

Signatures C#

dynamic UO.ClientInfo();

Lit de brèves informations sur le client en cours d’exécution.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

Tableau de trois string : [0] - nom du produit, [1] - version du client en cours d'exécution, [2] - répertoire client. Les indices commencent par 0. Ce n'est pas la chaîne JSON, ni un dictionnaire.

Comportement

  • Les données sont lues à partir de RuntimeProductName, RuntimeProductVersion et ClientPath. La commande ne change rien et n'envoie rien au serveur.
  • Utilisez ArrayLength avant l'indexation dans une fonction d'assistance générale. Ne confondez pas les informations du client avec les statistiques du personnage ou la version du serveur.
  • Lit les informations sur le client ClassicUO actuel.

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.ClientInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Lire les trois champs - script direct

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

  • 0 - produit, 1 - version, 2 - catalogue. La valeur de la version est prise au démarrage ; dans l'exemple, il n'est pas corrigé.
var info = UO.ClientInfo();
UO.Print("Product: " + info[0]);
UO.Print("Client version: " + info[1]);
UO.Print("Client folder: " + info[2]);

2. Boucle à travers le tableau - fonction de script

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

  • ArrayLength renvoie le nombre de champs. Le dernier index valide est égal à la longueur moins 1.
return  RunScenario();
 object? RunScenario()
{
    var info = UO.ClientInfo();
    var i = 0;
    while (Truth(i < ArrayLength(info)))
    {
        UO.Print(Convert.ToString(i) + ": " + info[i]);
        i = i + 1;
    }

    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Fonction complète de récupération de signature client - Classe de script

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

  • ClientCaption renvoie une chaîne de titre et de version. Le tableau d'origine n'est pas modifié.
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()
    {
        UO.Print(ClientCaption());
        return null;
    }

    dynamic ClientCaption()
    {
        var info = UO.ClientInfo();
        if (Truth(ArrayLength(info) < 2))
        {
            return "Client information unavailable";
        }

        return info[0] + " / " + info[1];
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    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.ClientInfo() — UO.ClientInfo()

Paramètres: Aucun paramètre.

Résultat: dynamic / Array.

Pendant un appel:

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

case "clientinfo":

                    return new InjectionValue(new[]

                    {

                        new InjectionValue(bridge.RuntimeProductName),

                        new InjectionValue(bridge.RuntimeProductVersion),

                        new InjectionValue(bridge.ClientPath)

                    });

UO.Dump

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

Signatures C#

void UO.Dump();
void UO.Dump(object? @object);

Imprime un instantané de diagnostic d'un objet connu du client.

Paramètres

  • object - Facultatif serial/lien. Sans argument, bridge.LastTarget est utilisé.

Valeur de retour

void - aucune valeur de retour.

Comportement

  • Le message contient serial sous la forme 0xXXXXXXX, nom, graphic/type, hue et X/Y/Z. Les champs sont lus à partir du modèle local ; un objet manquant donne un nom vide et des champs nuls. La commande ne demande pas les dernières propriétés du serveur.

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.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

UO.Print("Calling UO.Dump");
UO.Dump();

1. Instantané de la dernière cible - script direct

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

  • Un argument manquant signifie LastTarget.
UO.Dump();

2. Self-shot - fonction script

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

  • Tous les champs sont spécifiques à votre propre personnage.
return  RunScenario();
 object? RunScenario()
{
    UO.Dump("self");
    return null;
}

3. Instantané de l'objet inspecté - Classe de script

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

  • Le test Exists sépare un modèle manquant d'un objet avec zéro champ.
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 id = UO.LastTarget();
        if (Truth(UO.Exists(id)))
        {
            UO.Dump(id);
        }

        return null;
    }

    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.Dump() — UO.Dump()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

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

case "dump":

                {

                    int id = Arg(0, bridge.LastTarget);

                    SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");

                    break;

                }

UO.Dump(object) — UO.Dump(Any)

Paramètres: object (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "dump":

                {

                    int id = Arg(0, bridge.LastTarget);

                    SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");

                    break;

                }

UO.ExtendedInfo

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

Signatures C#

dynamic UO.ExtendedInfo();

Renvoie quatre champs de la configuration actuelle de la connexion client.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

Array [ClientPath:string, CurrentProfilePath:string, GameServerAddress:string, GameServerPort:int].

Comportement

  • L'ordre des champs est fixe. ClientPath et CurrentProfilePath sont des chemins clients. GameServerAddress et GameServerPort lisent les paramètres globaux.GlobalSettings.IP/Port : Il s'agit de l'adresse configurée, sans vérifier la session réelle du peer manager. La liste ne contient pas de mot de passe et ne demande aucune information au serveur. Des valeurs vides sont possibles avant de sélectionner un profil/une connexion.

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.ExtendedInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Champs de sortie - script direct

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

  • Le tableau contient des types mixtes, donc Convert.ToString est utilisé.
var info = UO.ExtendedInfo();
for (int i = (int)(0); i <= ArrayLength(info)-1; i += (int)(1))
{
    UO.Print(Convert.ToString(info[i]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Imprimer l'adresse et le port - fonction script

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

  • Les indices 2 et 3 sont l'adresse et le port.
return  RunScenario();
 object? RunScenario()
{
    var info = UO.ExtendedInfo();
    UO.Print(Convert.ToString(info[2]) + ":" + Convert.ToString(info[3]));
    return null;
}

3. Lire le chemin du profil - Classe de script

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

  • Index 1 — CurrentProfilePath, pas ClientPath.
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 info = UO.ExtendedInfo();
        var path = info[1];
        UO.Print(path);
        return null;
    }
}

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.ExtendedInfo() — UO.ExtendedInfo()

Paramètres: Aucun paramètre.

Résultat: dynamic / Any.

Pendant un appel:

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

case "extendedinfo":

                    return new InjectionValue(new[] { new InjectionValue(bridge.ClientPath), new InjectionValue(bridge.CurrentProfilePath), new InjectionValue(bridge.GameServerAddress), new InjectionValue(bridge.GameServerPort) });

UO.GetInfo

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

Signatures C#

string UO.GetInfo(object? arg);

Renvoie le nom du caractère uniquement pour le sélecteur de caractère exact.

Paramètres

  • arg - string. La valeur exacte sensible à la casse des appels de caractères GetName("self"); toute autre valeur n'est pas reconnue.

Valeur de retour

string — le nom de votre personnage pour le caractère ; chaîne littérale UNKNOWN pour tous les autres arguments. S'il n'y a aucun caractère, le nom peut être vide.

Comportement

  • La comparaison StringComparison.Ordinal est sensible à la casse. Seul le sélecteur de caractères est pris en charge. La commande n'effectue pas de requêtes réseau : elle lit le nom à partir du modèle de caractère local. La fenêtre FillInfoWindow est contrôlée séparément.

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.GetInfo("character");
UO.Print("GetInfo: " + Convert.ToString(result));

1. Nom du personnage - script direct

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

  • Le caractère littéral exact se lit self.
var name = UO.GetInfo("character");
UO.Print(name);

2. Autre cas - Fonction de script

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

  • Le caractère ne correspond pas et renvoie UNKNOWN.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.GetInfo("Character");
    UO.Print(value);
    return null;
}

3. Sélecteur inconnu - classe de script

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

  • Le profil n’est pas pris en charge par cette implémentation.
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 = UO.GetInfo("profile");
        UO.Print(value);
        return null;
    }
}

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.GetInfo(arg) — UO.GetInfo(String)

Paramètres: arg (String)

Résultat: string / String.

Pendant un appel:

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

private string GetInfo(string arg)

        {

            if (arg.Equals("character", StringComparison.Ordinal))

                return GetName("self");



            return "UNKNOWN";

        }

UO.Help

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

Signatures C#

void UO.Help();

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.

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.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

UO.Print("Calling UO.Help");
UO.Help();

1. Appel direct - script direct

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

  • Affiche un indice local sur C# IDE.
UO.Help();

2. Option explicite - fonction de script

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

  • ExecuteLegacyManualAlias affiche une ligne sur UO.*, le préfixe de discussion configuré et Options > C# IDE > Manuel via SystemMessage. Aucune demande d'aide n'est envoyée au serveur.
return  RunScenario();
 object? RunScenario()
{
    UO.Help();
    UO.OpenIDE();
    return null;
}

3. Fonction d'assistance complète - Classe de script

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

  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.
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()
    {
        UO.Help();
        UO.Print("Options > C# IDE > Manual");
        return null;
    }
}

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.Help() — UO.Help()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

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

case "help": SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual."); break;

UO.Info

Signatures C#

string UO.Info();
string UO.Info(object? serial);
string UO.Info(object? type, object? x, object? y);
string UO.Info(object? type, object? x, object? y, object? z);

Comportement et résultat

Le contexte décide de l’affichage : les commandes du chat graphique ouvrent un tableau avec champs, valeurs, Ctrl+C et défilement. Un script C# reçoit du texte sans fenêtre ni cible, même si le jeu est affiché. Seules les données connues du client sont accessibles.

Sans argument, Info et InfoTile activent une cible dans le chat graphique. Dans un script, Info() lit la dernière cible objet ou le joueur ; InfoTile() le terrain sous le joueur. serial, type et coordonnées précisent la sélection. Le troisième argument de InfoTile(x,y,map) est la carte.

Paramètres

  • serial — Numéro de série ou alias enregistré.
  • type — ID graphique ; -1 accepte tout type à cette position.
  • x — Coordonnée X du monde.
  • y — Coordonnée Y du monde.
  • z — Altitude Z ; la forme courte utilise 0.

Configurez le préfixe dans C# Scripts IDE ; # est un exemple. Séparez les paramètres par des espaces, utilisez des guillemets pour un texte unique. id désigne serial, type désigne graphic. xy x y [z] choisit le premier objet chargé à cet endroit ; type seul choisit le premier résultat. Dans InfoTile(x,y,map), le troisième argument est la carte, pas Z.

Commandes de discussion

#info
#UO.Info id 0x40001234
#info type 0x0EED
#info xy 1450 1690
#info type 0x0EED xy 1450 1690 0

Exemples C# complets

Chaque bloc est un .csx complet. Remplacez les serials, types et coordonnées de démonstration. L’ordre et les arguments C# nommés suivent la signature.

1

string report = UO.Info(0x40001234);
UO.Print(report);

2

string InspectSelf() => UO.Info("self");
UO.Print(InspectSelf());

3

foreach (int serial in new[] { 0x40001234, 0x40005678 })
{
    string report = UO.Info(serial);
    UO.Print(report);
}

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string report = api.Info(0x40001234);
        api.Print(report);
    }
}

Appels internes

CSharpGameApi.Info
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.Info
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoColor

Signatures C#

string UO.InfoColor();
string UO.InfoColor(object? serial);

Comportement et résultat

Le contexte décide de l’affichage : les commandes du chat graphique ouvrent un tableau avec champs, valeurs, Ctrl+C et défilement. Un script C# reçoit du texte sans fenêtre ni cible, même si le jeu est affiché. Seules les données connues du client sont accessibles.

Sans argument, Info et InfoTile activent une cible dans le chat graphique. Dans un script, Info() lit la dernière cible objet ou le joueur ; InfoTile() le terrain sous le joueur. serial, type et coordonnées précisent la sélection. Le troisième argument de InfoTile(x,y,map) est la carte.

Paramètres

  • serial — Numéro de série ou alias enregistré.

Configurez le préfixe dans C# Scripts IDE ; # est un exemple. Séparez les paramètres par des espaces, utilisez des guillemets pour un texte unique. id désigne serial, type désigne graphic. xy x y [z] choisit le premier objet chargé à cet endroit ; type seul choisit le premier résultat. Dans InfoTile(x,y,map), le troisième argument est la carte, pas Z.

Commandes de discussion

#infocolor 0x40001234

Exemples C# complets

Chaque bloc est un .csx complet. Remplacez les serials, types et coordonnées de démonstration. L’ordre et les arguments C# nommés suivent la signature.

1

UO.Print(UO.InfoColor(0x40001234));

2

string report = UO.InfoColor();
UO.Print(report);

3

foreach (int serial in new[] { 0x40001234, 0x40005678 })
    UO.Print(UO.InfoColor(serial));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoColor(0x40001234));
    }
}

Appels internes

CSharpGameApi.InfoColor
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoColor
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoGump

Signatures C#

string UO.InfoGump();
string UO.InfoGump(object? gump);

Comportement et résultat

Le contexte décide de l’affichage : les commandes du chat graphique ouvrent un tableau avec champs, valeurs, Ctrl+C et défilement. Un script C# reçoit du texte sans fenêtre ni cible, même si le jeu est affiché. Seules les données connues du client sont accessibles.

InfoGump() lit la dernière fenêtre active du serveur ou du client. ID ou index sélectionne une fenêtre ; last, LastGump et Last Gump désignent la dernière. InfoGumps fournit la liste sans les inspecteurs. Seule une commande graphique ouvre le tableau.

Paramètres

  • gump — ID ou index de fenêtre serveur ; -1 choisit la dernière active.

Configurez le préfixe dans C# Scripts IDE ; # est un exemple. Séparez les paramètres par des espaces, utilisez des guillemets pour un texte unique. id désigne serial, type désigne graphic. xy x y [z] choisit le premier objet chargé à cet endroit ; type seul choisit le premier résultat. Dans InfoTile(x,y,map), le troisième argument est la carte, pas Z.

Commandes de discussion

#infogump
#infogump last
#info gump last gump
#infogump 0x12345678

Exemples C# complets

Chaque bloc est un .csx complet. Remplacez les serials, types et coordonnées de démonstration. L’ordre et les arguments C# nommés suivent la signature.

1

string report = UO.InfoGump();
UO.Print(report);

2

UO.Print(UO.InfoGump(0x12345678));

3

string ReadLatestWindow() => UO.InfoGump();
UO.Print(ReadLatestWindow());

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string report = api.InfoGump();
        api.Print(report);
    }
}

Appels internes

CSharpGameApi.InfoGump
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoGump
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoGumps

Signatures C#

string UO.InfoGumps();
string UO.InfoGumps(object? gump);

Comportement et résultat

Le contexte décide de l’affichage : les commandes du chat graphique ouvrent un tableau avec champs, valeurs, Ctrl+C et défilement. Un script C# reçoit du texte sans fenêtre ni cible, même si le jeu est affiché. Seules les données connues du client sont accessibles.

InfoGump() lit la dernière fenêtre active du serveur ou du client. ID ou index sélectionne une fenêtre ; last, LastGump et Last Gump désignent la dernière. InfoGumps fournit la liste sans les inspecteurs. Seule une commande graphique ouvre le tableau.

Paramètres

  • gump — ID ou index de fenêtre serveur ; -1 choisit la dernière active.

Configurez le préfixe dans C# Scripts IDE ; # est un exemple. Séparez les paramètres par des espaces, utilisez des guillemets pour un texte unique. id désigne serial, type désigne graphic. xy x y [z] choisit le premier objet chargé à cet endroit ; type seul choisit le premier résultat. Dans InfoTile(x,y,map), le troisième argument est la carte, pas Z.

Commandes de discussion

#infogumps

Exemples C# complets

Chaque bloc est un .csx complet. Remplacez les serials, types et coordonnées de démonstration. L’ordre et les arguments C# nommés suivent la signature.

1

UO.Print(UO.InfoGumps());

2

string report = UO.InfoGumps(0x12345678);
UO.Print(report);

3

string ReadAllWindows() => UO.InfoGumps();
UO.Print(ReadAllWindows());

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoGumps());
    }
}

Appels internes

CSharpGameApi.InfoGumps
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoGumps
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoTile

Signatures C#

string UO.InfoTile();
string UO.InfoTile(object? x);
string UO.InfoTile(object? x, object? y);
string UO.InfoTile(object? x, object? y, object? map);
string UO.InfoTile(object? type, object? x, object? y, object? z);
string UO.InfoTile(object? type, object? x, object? y, object? z, object? map);

Comportement et résultat

Le contexte décide de l’affichage : les commandes du chat graphique ouvrent un tableau avec champs, valeurs, Ctrl+C et défilement. Un script C# reçoit du texte sans fenêtre ni cible, même si le jeu est affiché. Seules les données connues du client sont accessibles.

Sans argument, Info et InfoTile activent une cible dans le chat graphique. Dans un script, Info() lit la dernière cible objet ou le joueur ; InfoTile() le terrain sous le joueur. serial, type et coordonnées précisent la sélection. Le troisième argument de InfoTile(x,y,map) est la carte.

Paramètres

  • map — Numéro de carte ; sinon carte actuelle.
  • type — ID graphique ; -1 accepte tout type à cette position.
  • x — Coordonnée X du monde.
  • y — Coordonnée Y du monde.
  • z — Altitude Z ; la forme courte utilise 0.

Configurez le préfixe dans C# Scripts IDE ; # est un exemple. Séparez les paramètres par des espaces, utilisez des guillemets pour un texte unique. id désigne serial, type désigne graphic. xy x y [z] choisit le premier objet chargé à cet endroit ; type seul choisit le premier résultat. Dans InfoTile(x,y,map), le troisième argument est la carte, pas Z.

Commandes de discussion

#infotile
#info tile xy 1450 1690
#infotile 1450 1690 0
#infotile type 0x0EED 1450 1690 0 0

Exemples C# complets

Chaque bloc est un .csx complet. Remplacez les serials, types et coordonnées de démonstration. L’ordre et les arguments C# nommés suivent la signature.

1

UO.Print(UO.InfoTile(1450, 1690));

2

string report = UO.InfoTile(1450, 1690, 0);
UO.Print(report);

3

UO.Print(UO.InfoTile(0x0EED, 1450, 1690, 0, 0));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoTile(1450, 1690));
    }
}

Appels internes

CSharpGameApi.InfoTile
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoTile
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.Version

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

Signatures C#

void UO.Version();

Imprime le nom et la version d'exécution du produit.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • ExecuteLegacyManualAlias sort bridge.RuntimeProductName et bridge.RuntimeProductVersion via SystemMessage. Il s'agit d'une chaîne de journal et non du numéro de version renvoyé.
  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.

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.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

UO.Print("Calling UO.Version");
UO.Version();

1. Appel direct - script direct

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

  • Imprime le nom et la version d'exécution du produit.
UO.Version();

2. Option explicite - fonction de script

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

  • ExecuteLegacyManualAlias sort bridge.RuntimeProductName et bridge.RuntimeProductVersion via SystemMessage. Il s'agit d'une chaîne de journal et non du numéro de version renvoyé.
return  RunScenario();
 object? RunScenario()
{
    UO.Version();
    UO.Help();
    return null;
}

3. Fonction d'assistance complète - Classe de script

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

  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.
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()
    {
        UO.Version();
        UO.Print(UO.GetUserCodepage());
        return null;
    }
}

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.Version() — UO.Version()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

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

case "version": SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"); break;
⚠️ **GitHub.com Fallback** ⚠️