Skip to content

FR UO Topic conversion compatibility

Codex edited this page Oct 12, 2026 · 4 revisions

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

Conversion et compatibilité

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

Convertit les nombres, serial et les formats de script hérités. Un nom compatible peut avoir des restrictions ou une opération explicitement interdite - ceci est indiqué sur la carte.

Sections

Sujet Commandes et explications
Hex / int UO.Hex2Int · UO.Int2Hex
EUO ↔ Injection UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO
EasyUO UO.GetEasyUO · UO.SetEasyUO
Conversion de types C# et bibliothèque standard C# et bibliothèque standard C# et bibliothèque standard C# et bibliothèque standard C# et bibliothèque standard · C# et bibliothèque standard

Toutes les commandes du thème

Conversion

UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO

Limites de compatibilité

UO.BoxHack · UO.ShutdownWindows

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

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

UO.Print(UO.Int2Hex(1073746484));

UO.EUO2ID

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

var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

Référence complète des commandes


UO.BoxHack

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

Signatures C#

void UO.BoxHack();

Imprime un avis indiquant que le correctif client natif existant BoxHack n'est pas requis par ClassicUO.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur de retour.

Comportement

  • La branche ExecuteLegacyManualAlias appelle uniquement SystemMessage. Il ne corrige pas le mouvement, la parole, les conteneurs ou le protocole réseau.

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.BoxHack");
UO.BoxHack();

1. Avis de compatibilité - Script direct

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

  • Le message décrit le manque de besoin de l'ancien correctif.
UO.BoxHack();

2. Procédure d'appel - fonction script

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

  • La procédure de compatibilité ne change pas le monde du jeu.
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

void CompatibilityNotice()
{
    UO.BoxHack();
}

3. Suite du script - Classe de script

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

  • Après le message de diagnostic, l'exécution continue.
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.BoxHack();
        UO.Print("continued");
        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.BoxHack() — UO.BoxHack()

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 "boxhack":

                case "fixtalk":

                case "fixwalk":

                    SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");

                    break;

UO.EUO2ID

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

Signatures C#

dynamic UO.EUO2ID(object? euo);

Décode la notation littérale EasyUO en base 26 avec A=0.

Paramètres

  • euo — Chaîne/valeur EasyUO. Les lettres sont converties en majuscules ; les caractères autres que des lettres sont ignorés.

Valeur de retour

int — la valeur numérique 32-bit résultante ; ce n'est pas une chaîne hexadécimale.

Comportement

  • Calcule séquentiellement valeur=valeur*26+(lettre-A). L'accumulateur uint fonctionne sans contrôle, donc le débordement s'enroule autour des bits 32. La chaîne vide et la chaîne sans lettres donnent 0. Ne cherche aucun objet dans le monde.

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

1. Valeur d'une seule lettre - écriture directe

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

  • B code le nombre 1.
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

2. Caractères autres que des lettres - fonction de script

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

  • Le cas n’est pas important ; Le trait d'union et le point d'exclamation sont ignorés.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2ID("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrée nulle - Classe de script

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

  • Un code zéro ; le résultat n'indique pas l'objet trouvé.
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.EUO2ID("A");
        UO.Print(Convert.ToString(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.EUO2ID(euo) — UO.EUO2ID(Any)

Paramètres: euo (Any)

Résultat: dynamic / Any.

Pendant un appel:

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

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.EUO2Inj

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

Signatures C#

string UO.EUO2Inj(object? easyValue);

Décode la notation littérale EasyUO en base 26 avec A=0.

Paramètres

  • easyValue — Chaîne/valeur EasyUO. Les lettres sont converties en majuscules ; les caractères autres que des lettres sont ignorés.

Valeur de retour

string est la chaîne hexadécimale de l'injection du serial résultant.

Comportement

  • Calcule séquentiellement valeur=valeur*26+(lettre-A). L'accumulateur uint fonctionne sans contrôle, donc le débordement s'enroule autour des bits 32. La chaîne vide et la chaîne sans lettres donnent 0. Ne cherche aucun objet dans le monde.

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

1. Valeur d'une seule lettre - écriture directe

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

  • B code le nombre 1.
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));

2. Caractères autres que des lettres - fonction de script

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

  • Le cas n’est pas important ; Le trait d'union et le point d'exclamation sont ignorés.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Inj("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrée nulle - Classe de script

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

  • Un code zéro ; le résultat n'indique pas l'objet trouvé.
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.EUO2Inj("A");
        UO.Print(Convert.ToString(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.EUO2Inj(easyValue) — UO.EUO2Inj(Any)

Paramètres: easyValue (Any)

Résultat: string / String.

Pendant un appel:

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

public string EUO2Inj(InjectionValue easyValue)

        {

            uint value = 0;

            foreach (char c in easyValue.ToString().ToUpperInvariant())

            {

                if (c < 'A' || c > 'Z')

                    continue;

                value = unchecked(value * 26 + (uint)(c - 'A'));

            }

            return NumberConversions.ToHex(unchecked((int)value));

        }

UO.EUO2Type

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

Signatures C#

dynamic UO.EUO2Type(object? euo);

Décode la notation littérale EasyUO en base 26 avec A=0.

Paramètres

  • euo — Chaîne/valeur EasyUO. Les lettres sont converties en majuscules ; les caractères autres que des lettres sont ignorés.

Valeur de retour

int — la valeur numérique 32-bit résultante ; ce n'est pas une chaîne hexadécimale.

Comportement

  • Calcule séquentiellement valeur=valeur*26+(lettre-A). L'accumulateur uint fonctionne sans contrôle, donc le débordement s'enroule autour des bits 32. La chaîne vide et la chaîne sans lettres donnent 0. Ne cherche aucun objet dans le monde.

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

1. Valeur d'une seule lettre - écriture directe

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

  • B code le nombre 1.
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));

2. Caractères autres que des lettres - fonction de script

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

  • Le cas n’est pas important ; Le trait d'union et le point d'exclamation sont ignorés.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Type("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrée nulle - Classe de script

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

  • Un code zéro ; le résultat n'indique pas l'objet trouvé.
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.EUO2Type("A");
        UO.Print(Convert.ToString(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.EUO2Type(euo) — UO.EUO2Type(Any)

Paramètres: euo (Any)

Résultat: dynamic / Any.

Pendant un appel:

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

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.Hex2Int

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

Signatures C#

int UO.Hex2Int(object? value);

Convertit une valeur numérique ou un texte numérique en int.

Paramètres

  • value — int, double, double-texte ou texte hexadécimal avec 0x. Les espaces sur les bords et le panneau sont autorisés. Les chaînes d'alias "self"/"lasttarget" ne sont pas autorisées ici.

Valeur de retour

int avec les bits 32 ; l'hexagone 0xFFFFFFFF donne -1. double est tronqué à zéro avec une vérification de plage. Tableau et null dans NumberConversions.ToInt donnent 0.

Comportement

  • Malgré le nom, le texte décimal est accepté. Un texte invalide donne FormatException, le type non pris en charge donne InvalidCastException ; double débordement : erreur de conversion.
  • Le formatage inversé est UO.Int2Hex. Une transformation ne prouve pas l'existence d'un objet.

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

1. Appel direct - script direct

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

  • Convertit une valeur numérique ou un texte numérique en int.
UO.Print(UO.Hex2Int("0x40001234"));

2. Option explicite - fonction de script

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

  • Malgré le nom, le texte décimal est accepté. Un texte invalide donne FormatException, le type non pris en charge donne InvalidCastException ; double débordement : erreur de conversion.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Hex2Int("255"));
    UO.Print(UO.Hex2Int("0xFFFFFFFF"));
    return null;
}

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

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

  • Le formatage inversé est UO.Int2Hex. Une transformation ne prouve pas l'existence d'un objet.
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 number = UO.Hex2Int("0x000000FF");
        UO.Print(UO.Int2Hex(number));
        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.Hex2Int(value) — UO.Hex2Int(Any)

Paramètres: value (Any)

Résultat: int / Integer.

Pendant un appel:

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

public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);

UO.Inj2EUO

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

Signatures C#

string UO.Inj2EUO(object? serialValue);

Encode le numéro de bit 32 serial avec les lettres A..Z pour EasyUO.

Paramètres

  • serialValue — Numéro jusqu'à NumberConversions.ToInt, puis uint non signé avec les bits conservés. Pour un alias, obtenez d'abord GetSerial/Hex2Int.

Valeur de retour

string sont les chiffres de base habituels 26 avec A=0..Z=25. Zéro donne "A". Ce n'est pas un hexadécimal ou un nom d'objet.

Comportement

  • L'algorithme insère la lettre A + valeur % 26 à gauche et divise uint par 26 à zéro. Il s'agit de la propre conversion du projet, et non du numéro de colonne Excel A1.
  • EUO2Inj effectue la conversion inverse en chaîne hexadécimale. L'encodage ne crée pas d'objet et ne le demande pas au client.

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

1. Appel direct - script direct

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

  • Encode le numéro de bit 32 serial avec les lettres A..Z pour EasyUO.
UO.Print(UO.Inj2EUO(0));

2. Option explicite - fonction de script

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

  • L'algorithme insère la lettre A + valeur % 26 à gauche et divise uint par 26 à zéro. Il s'agit de la propre conversion du projet, et non du numéro de colonne Excel A1.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Inj2EUO(26));
    UO.Print(UO.Inj2EUO(25));
    return null;
}

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

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

  • EUO2Inj effectue la conversion inverse en chaîne hexadécimale. L'encodage ne crée pas d'objet et ne le demande pas au client.
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.Hex2Int("0x40001234");
        var encoded = UO.Inj2EUO(value);
        UO.Print(encoded);
        UO.Print(UO.EUO2Inj(encoded));
        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.Inj2EUO(serialValue) — UO.Inj2EUO(Any)

Paramètres: serialValue (Any)

Résultat: string / String.

Pendant un appel:

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

public string Inj2EUO(InjectionValue serialValue)

        {

            uint value = unchecked((uint)NumberConversions.ToInt(serialValue));

            if (value == 0)

                return "A";

            var result = new StringBuilder();

            while (value > 0)

            {

                result.Insert(0, (char)('A' + value % 26));

                value /= 26;

            }

            return result.ToString();

        }

UO.Int2Hex

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

Signatures C#

string UO.Int2Hex(object? value);

Formate int sous forme de chaîne hexadécimale serial.

Paramètres

  • value - int ou texte numérique/hexadécimal ; double est tronqué à zéro avec un contrôle de débordement. L'alias de l'objet est introuvable.

Valeur de retour

string "0xXXXXXXX" : huit chiffres hexadécimaux, tous 32 bits int. Une valeur négative est représentée en complément à deux.

Comportement

  • NumberConversions.ToInt effectue la conversion, puis ToHex utilise le format X8. Par exemple -1 donne "0xFFFFFFFF". Un texte numérique non valide provoque une erreur ; ce n'est pas un test pour l'existence de serial.
  • Pour représenter un nombre, la conversion suffit ; la présence de l'objet est vérifiée par UO.Exists 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.Int2Hex(1073746484);
UO.Print("Int2Hex: " + Convert.ToString(result));

1. Appel direct - script direct

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

  • Formate int sous forme de chaîne hexadécimale serial.
UO.Print(UO.Int2Hex(1073746484));

2. Option explicite - fonction de script

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

  • NumberConversions.ToInt effectue la conversion, puis ToHex utilise le format X8. Par exemple -1 donne "0xFFFFFFFF". Un texte numérique non valide provoque une erreur ; ce n'est pas un test pour l'existence de serial.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Int2Hex(-1));
    return null;
}

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

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

  • Pour représenter un nombre, la conversion suffit ; la présence de l'objet est vérifiée par UO.Exists séparément.
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 encoded = UO.Int2Hex(255);
        UO.Print(encoded);
        UO.Print(UO.Hex2Int(encoded));
        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.Int2Hex(value) — UO.Int2Hex(Any)

Paramètres: value (Any)

Résultat: string / String.

Pendant un appel:

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

public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));

UO.ScanInt

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

Signatures C#

int UO.ScanInt(object? textValue, object? startValue);

Recherche le premier nombre double/hex signé dans la chaîne, en commençant à la position.

Paramètres

  • textValue — Texte via ToString. Recherche la première correspondance de l'expression régulière [-+]?(?:0[xX][0-9A-Fa-f]+|\d+).
  • startValue — int, position zéro UTF-16. Limité à 0..text.Length ; pas d'index de 1.

Valeur de retour

int est le premier nombre de bits 32 reconnu. Il n'y a pas de correspondance ou le numéro ne correspond pas - 0 ; un vrai zéro donne aussi 0.

Comportement

  • Regex.Match est appliqué à Substring (start). Si la première correspondance ne parvient pas à convertir TryStr2Int, les nombres suivants ne sont pas recherchés. La partie fractionnaire, telle que .5, n'est pas incluse dans le jeton numérique.
  • Un début négatif devient 0, un début au-delà de la fin de la ligne devient text.Length et le résultat est 0. La ligne originale ne change pas.

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.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));

1. Appel direct - script direct

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

  • Recherche le premier nombre double/hex signé dans la chaîne, en commençant à la position.
UO.Print(UO.ScanInt("gold=123", 0));

2. Option explicite - fonction de script

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

  • Regex.Match est appliqué à Substring (start). Si la première correspondance ne parvient pas à convertir TryStr2Int, les nombres suivants ne sont pas recherchés. La partie fractionnaire, telle que .5, n'est pas incluse dans le jeton numérique.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ScanInt("-7 0xFF", 3));
    return null;
}

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

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

  • Un début négatif devient 0, un début au-delà de la fin de la ligne devient text.Length et le résultat est 0. La ligne originale ne change pas.
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 text = "count=0x20";
        var amount = UO.ScanInt(text, 6);
        UO.Print(amount);
        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.ScanInt(textValue, startValue) — UO.ScanInt(Any,Any)

Paramètres: textValue (Any), startValue (Any)

Résultat: int / Integer.

Pendant un appel:

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

public int ScanInt(InjectionValue textValue, InjectionValue startValue)

        {

            string text = textValue.ToString() ?? string.Empty;

            int start = Math.Max(0, Math.Min(text.Length, NumberConversions.ToInt(startValue)));

            Match match = Regex.Match(text.Substring(start), @"[-+]?(?:0[xX][0-9A-Fa-f]+|\d+)", RegexOptions.CultureInvariant);

            return match.Success && NumberConversions.TryStr2Int(match.Value, out int value) ? value : 0;

        }

UO.ShutdownWindows

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

Signatures C#

void UO.ShutdownWindows(object? state);

Rejette toujours une tentative d’arrêt de Windows à partir d’un script.

Paramètres

  • state - L'argument hérité est stocké dans la signature, mais n'est pas utilisé : tout appel est bloqué.

Valeur de retour

Il n'y a pas de résultat normal : NativeSubrutineException avec le message "shutdownwindows est intentionnellement bloqué : les scripts ne peuvent pas arrêter Windows."

Comportement

  • ExecuteLegacyManualAlias lève immédiatement une exception. Aucun arrêt, redémarrage ou lancement d'un processus externe n'est effectué.
  • Les trois exemples montrent délibérément des appels interdits et échouent lors de leur exécution. Ils ne peuvent pas être utilisés comme condition d’un arrêt réussi.

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.

try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }

1. Appel direct - script direct

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

  • Rejette toujours une tentative d’arrêt de Windows à partir d’un script.
UO.ShutdownWindows(0);

2. Option explicite - fonction de script

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

  • ExecuteLegacyManualAlias lève immédiatement une exception. Aucun arrêt, redémarrage ou lancement d'un processus externe n'est effectué.
return  RunScenario();
 object? RunScenario()
{
    UO.ShutdownWindows(1);
    return null;
}

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

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

  • Les trois exemples montrent délibérément des appels interdits et échouent lors de leur exécution. Ils ne peuvent pas être utilisés comme condition d’un arrêt réussi.
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("The next command is expected to fail");
        UO.ShutdownWindows(0);
        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.ShutdownWindows(state) — UO.ShutdownWindows(Any)

Paramètres: state (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "shutdownwindows":

                    throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");

Clone this wiki locally