DE UO Topic conversion compatibility - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Konvertierung und Kompatibilität

Home · C# · IDE · UO API · A–Z · Beispiele · Sprachen

Konvertiert Zahlen, serial und ältere Skriptformate. Ein kompatibler Name kann Einschränkungen oder einen ausdrücklich verbotenen Vorgang aufweisen – dies ist auf der Karte angegeben.

Abschnitte

Thema Befehle und Erklärungen
Hex / int UO.Hex2Int · UO.Int2Hex
EUO ↔ Injection UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO
EasyUO UO.GetEasyUO · UO.SetEasyUO
Typkonvertierung C# und Standardbibliothek C# und Standardbibliothek C# und Standardbibliothek C# und Standardbibliothek C# und Standardbibliothek · C# und Standardbibliothek

Alle Theme-Befehle

Konvertierung

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

Kompatibilitätsgrenzen

UO.BoxHack · UO.ShutdownWindows

Beispiele zum Thema

Jede Befehlskarte verfügt über mehrere unabhängige Szenarien: Direktcode, Funktionen und Klassen. Nachfolgend finden Sie ausgewählte kurze Szenarien; Einschränkungen und eine vollständige Analyse sind geplant.

UO.Int2Hex

Parameter, Ergebnis und alle Szenarien

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

UO.EUO2ID

Parameter, Ergebnis und alle Szenarien

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

Vollständige Befehlsreferenz


UO.BoxHack

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

C#-Signaturen

void UO.BoxHack();

Gibt einen Hinweis aus, dass der ältere native Client-Patch BoxHack von ClassicUO nicht benötigt wird.

Parameter

Es gibt keine Parameter.

Rückgabewert

void – kein Rückgabewert.

Verhalten

  • Der Zweig ExecuteLegacyManualAlias ruft nur SystemMessage auf. Bewegung, Sprache, Container oder Netzwerkprotokoll werden nicht korrigiert.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.

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

1. Kompatibilitätshinweis – Direct Script

Parameter und Ablauf:

  • Die Meldung beschreibt, dass der alte Patch nicht benötigt wird.
UO.BoxHack();

2. Prozedur aufrufen – Skriptfunktion

Parameter und Ablauf:

  • Das Kompatibilitätsverfahren verändert die Spielwelt nicht.
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

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

3. Skriptfortsetzung – Skriptklasse

Parameter und Ablauf:

  • Nach der Diagnosemeldung wird die Ausführung fortgesetzt.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.BoxHack() — UO.BoxHack()

Parameter: Keine Parameter.

Ergebnis: void / Unit.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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 · 繁體中文 · 日本語 · 한국어

C#-Signaturen

dynamic UO.EUO2ID(object? euo);

Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.

Parameter

  • euo – EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.

Rückgabewert

int – der resultierende numerische 32-Bit-Wert; Dies ist keine Hex-Zeichenfolge.

Verhalten

  • Berechnet nacheinander Wert=Wert*26+(Buchstabe-A). Der uint-Akkumulator läuft ungeprüft, sodass der Überlauf die 32-Bits umschließt. Der leere String und der String ohne Buchstaben ergeben 0. Sucht nicht nach irgendwelchen Objekten auf der Welt.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Einzelbuchstabenwert – direktes Skript

Parameter und Ablauf:

  • B kodiert die Zahl 1.
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

2. Nicht-Buchstabenzeichen – Skriptfunktion

Parameter und Ablauf:

  • Der Fall ist nicht wichtig; Der Bindestrich und das Ausrufezeichen werden übersprungen.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2ID("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Nulleintrag – Skriptklasse

Parameter und Ablauf:

  • A kodiert Null; Das Ergebnis gibt keinen Hinweis auf das gefundene Objekt.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.EUO2ID(euo) — UO.EUO2ID(Any)

Parameter: euo (Any)

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "euo2id":

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

UO.EUO2Inj

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

C#-Signaturen

string UO.EUO2Inj(object? easyValue);

Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.

Parameter

  • easyValue – EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.

Rückgabewert

string ist die Hex-Zeichenfolge der Injektion des resultierenden serial.

Verhalten

  • Berechnet nacheinander Wert=Wert*26+(Buchstabe-A). Der uint-Akkumulator läuft ungeprüft, sodass der Überlauf die 32-Bits umschließt. Der leere String und der String ohne Buchstaben ergeben 0. Sucht nicht nach irgendwelchen Objekten auf der Welt.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Einzelbuchstabenwert – direktes Skript

Parameter und Ablauf:

  • B kodiert die Zahl 1.
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));

2. Nicht-Buchstabenzeichen – Skriptfunktion

Parameter und Ablauf:

  • Der Fall ist nicht wichtig; Der Bindestrich und das Ausrufezeichen werden übersprungen.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Inj("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Nulleintrag – Skriptklasse

Parameter und Ablauf:

  • A kodiert Null; Das Ergebnis gibt keinen Hinweis auf das gefundene Objekt.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.EUO2Inj(easyValue) — UO.EUO2Inj(Any)

Parameter: easyValue (Any)

Ergebnis: string / String.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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 · 繁體中文 · 日本語 · 한국어

C#-Signaturen

dynamic UO.EUO2Type(object? euo);

Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.

Parameter

  • euo – EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.

Rückgabewert

int – der resultierende numerische 32-Bit-Wert; Dies ist keine Hex-Zeichenfolge.

Verhalten

  • Berechnet nacheinander Wert=Wert*26+(Buchstabe-A). Der uint-Akkumulator läuft ungeprüft, sodass der Überlauf die 32-Bits umschließt. Der leere String und der String ohne Buchstaben ergeben 0. Sucht nicht nach irgendwelchen Objekten auf der Welt.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Einzelbuchstabenwert – direktes Skript

Parameter und Ablauf:

  • B kodiert die Zahl 1.
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));

2. Nicht-Buchstabenzeichen – Skriptfunktion

Parameter und Ablauf:

  • Der Fall ist nicht wichtig; Der Bindestrich und das Ausrufezeichen werden übersprungen.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Type("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Nulleintrag – Skriptklasse

Parameter und Ablauf:

  • A kodiert Null; Das Ergebnis gibt keinen Hinweis auf das gefundene Objekt.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.EUO2Type(euo) — UO.EUO2Type(Any)

Parameter: euo (Any)

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "euo2id":

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

UO.Hex2Int

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

C#-Signaturen

int UO.Hex2Int(object? value);

Konvertiert einen numerischen Wert oder numerischen Text in int.

Parameter

  • value — int, double, double-Text oder Hex-Text mit 0x. Leerzeichen an den Rändern und am Schild sind erlaubt. Alias-Strings „self“/“lasttarget“ sind hier nicht erlaubt.

Rückgabewert

int mit 32 Bits; hex 0xFFFFFFFF ergibt -1. double wird mit einer Bereichsprüfung auf Null gekürzt. Array und null in NumberConversions.ToInt ergibt 0.

Verhalten

  • Trotz des Namens wird Dezimaltext akzeptiert. Ungültiger Text ergibt FormatException, nicht unterstützter Typ ergibt InvalidCastException; Überlauf double – Konvertierungsfehler.
  • Die umgekehrte Formatierung ist UO.Int2Hex. Eine Transformation beweist nicht die Existenz eines Objekts.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Konvertiert einen numerischen Wert oder numerischen Text in int.
UO.Print(UO.Hex2Int("0x40001234"));

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • Trotz des Namens wird Dezimaltext akzeptiert. Ungültiger Text ergibt FormatException, nicht unterstützter Typ ergibt InvalidCastException; Überlauf double – Konvertierungsfehler.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Hex2Int("255"));
    UO.Print(UO.Hex2Int("0xFFFFFFFF"));
    return null;
}

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • Die umgekehrte Formatierung ist UO.Int2Hex. Eine Transformation beweist nicht die Existenz eines Objekts.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.Hex2Int(value) — UO.Hex2Int(Any)

Parameter: value (Any)

Ergebnis: int / Integer.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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

UO.Inj2EUO

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

C#-Signaturen

string UO.Inj2EUO(object? serialValue);

Kodiert die 32-Bit-Zahl serial mit den Buchstaben A..Z für EasyUO.

Parameter

  • serialValue – Zahl bis NumberConversions.ToInt, dann unsigned uint mit erhaltenen Bits. Für einen Alias ​​besorgen Sie sich zunächst GetSerial/Hex2Int.

Rückgabewert

string sind die üblichen Basisziffern 26 mit A=0..Z=25. Null ergibt „A“. Dies ist kein Hexadezimal- oder Objektname.

Verhalten

  • Der Algorithmus fügt links den Buchstaben A + Wert % 26 ein und dividiert uint durch 26 zu Null. Dies ist die eigene Konvertierung des Projekts, nicht die Spaltennummer von Excel A1.
  • EUO2Inj führt die umgekehrte Konvertierung in einen Hex-String durch. Durch die Codierung wird kein Objekt erstellt und nicht vom Client angefordert.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Kodiert die 32-Bit-Zahl serial mit den Buchstaben A..Z für EasyUO.
UO.Print(UO.Inj2EUO(0));

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • Der Algorithmus fügt links den Buchstaben A + Wert % 26 ein und dividiert uint durch 26 zu Null. Dies ist die eigene Konvertierung des Projekts, nicht die Spaltennummer von Excel A1.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Inj2EUO(26));
    UO.Print(UO.Inj2EUO(25));
    return null;
}

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • EUO2Inj führt die umgekehrte Konvertierung in einen Hex-String durch. Durch die Codierung wird kein Objekt erstellt und nicht vom Client angefordert.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.Inj2EUO(serialValue) — UO.Inj2EUO(Any)

Parameter: serialValue (Any)

Ergebnis: string / String.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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 · 繁體中文 · 日本語 · 한국어

C#-Signaturen

string UO.Int2Hex(object? value);

Formatiert int als hexadezimale serial-Zeichenfolge.

Parameter

  • value - int oder numerischer/hexer Text; double wird mit einer Überlaufprüfung auf Null gekürzt. Der Objektalias kann nicht gefunden werden.

Rückgabewert

string „0xXXXXXXXX“: acht Hexadezimalstellen, alle 32 Bits int. Ein negativer Wert wird im Zweierkomplement dargestellt.

Verhalten

  • NumberConversions.ToInt führt die Konvertierung durch, dann verwendet ToHex das X8-Format. Beispielsweise ergibt -1 „0xFFFFFFFF“. Ungültiger numerischer Text verursacht einen Fehler; Dies ist kein Test für die Existenz von serial.
  • Um eine Zahl darzustellen, reicht die Umrechnung aus; Die Anwesenheit des Objekts wird von UO.Exists separat überprüft.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

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

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Formatiert int als hexadezimale serial-Zeichenfolge.
UO.Print(UO.Int2Hex(1073746484));

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • NumberConversions.ToInt führt die Konvertierung durch, dann verwendet ToHex das X8-Format. Beispielsweise ergibt -1 „0xFFFFFFFF“. Ungültiger numerischer Text verursacht einen Fehler; Dies ist kein Test für die Existenz von serial.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Int2Hex(-1));
    return null;
}

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • Um eine Zahl darzustellen, reicht die Umrechnung aus; Die Anwesenheit des Objekts wird von UO.Exists separat überprüft.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.Int2Hex(value) — UO.Int2Hex(Any)

Parameter: value (Any)

Ergebnis: string / String.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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

UO.ScanInt

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

C#-Signaturen

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

Sucht die erste vorzeichenbehaftete double/Hex-Zahl in der Zeichenfolge, beginnend an der Position.

Parameter

  • textValue – Text über ToString. Sucht nach der ersten Übereinstimmung des regulären Ausdrucks [-+]?(?:0[xX][0-9A-Fa-f]+|\d+).
  • startValue – int, Nullposition UTF-16. Begrenzt auf 0..text.Length; nicht indexiert von 1.

Rückgabewert

int ist die erste erkannte 32-Bit-Nummer. Es gibt keine Übereinstimmung oder die Nummer passt nicht - 0; eine echte Null ergibt ebenfalls 0.

Verhalten

  • Regex.Match wird auf Substring(start) angewendet. Wenn beim ersten Treffer TryStr2Int nicht konvertiert werden kann, werden die nächsten Zahlen nicht durchsucht. Der Bruchteil, wie z. B. .5, ist nicht im numerischen Token enthalten.
  • Ein negativer Anfang wird zu 0, ein Anfang über das Ende der Zeile hinaus wird zu text.Length und das Ergebnis ist 0. Die ursprüngliche Zeile ändert sich nicht.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

var result = UO.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Sucht die erste vorzeichenbehaftete double/Hex-Zahl in der Zeichenfolge, beginnend an der Position.
UO.Print(UO.ScanInt("gold=123", 0));

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • Regex.Match wird auf Substring(start) angewendet. Wenn beim ersten Treffer TryStr2Int nicht konvertiert werden kann, werden die nächsten Zahlen nicht durchsucht. Der Bruchteil, wie z. B. .5, ist nicht im numerischen Token enthalten.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ScanInt("-7 0xFF", 3));
    return null;
}

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • Ein negativer Anfang wird zu 0, ein Anfang über das Ende der Zeile hinaus wird zu text.Length und das Ergebnis ist 0. Die ursprüngliche Zeile ändert sich nicht.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.ScanInt(textValue, startValue) — UO.ScanInt(Any,Any)

Parameter: textValue (Any), startValue (Any)

Ergebnis: int / Integer.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

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 · 繁體中文 · 日本語 · 한국어

C#-Signaturen

void UO.ShutdownWindows(object? state);

Lehnt immer den Versuch ab, Windows über ein Skript herunterzufahren.

Parameter

  • state – Legacy-Argument wird in der Signatur gespeichert, aber nicht verwendet: Jeder Anruf wird blockiert.

Rückgabewert

Es gibt kein normales Ergebnis: NativeSubrutineException mit der Meldung „shutdownwindows ist absichtlich blockiert: Skripte fahren Windows möglicherweise nicht herunter.“

Verhalten

  • ExecuteLegacyManualAlias löst sofort eine Ausnahme aus. Es erfolgt kein Herunterfahren, Neustarten oder Starten eines externen Prozesses.
  • Alle drei Beispiele zeigen absichtlich verbotene Aufrufe und schlagen bei der Ausführung fehl. Sie können nicht als Bedingung für ein erfolgreiches Herunterfahren verwendet werden.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

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

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Lehnt immer den Versuch ab, Windows über ein Skript herunterzufahren.
UO.ShutdownWindows(0);

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • ExecuteLegacyManualAlias löst sofort eine Ausnahme aus. Es erfolgt kein Herunterfahren, Neustarten oder Starten eines externen Prozesses.
return  RunScenario();
 object? RunScenario()
{
    UO.ShutdownWindows(1);
    return null;
}

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • Alle drei Beispiele zeigen absichtlich verbotene Aufrufe und schlagen bei der Ausführung fehl. Sie können nicht als Bedingung für ein erfolgreiches Herunterfahren verwendet werden.
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;
    }
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.ShutdownWindows(state) — UO.ShutdownWindows(Any)

Parameter: state (Any)

Ergebnis: void / Unit.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "shutdownwindows":

                    throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");
⚠️ **GitHub.com Fallback** ⚠️