Skip to content

DE UO Topic localization

Codex edited this page Oct 12, 2026 · 4 revisions

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

Lokalisierung

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

Abrufen lokalisierter Cliloc-Text- und Codierungsinformationen. Die Befehlsnamen API werden beim Wechsel der Sprache nicht übersetzt.

Abschnitte

Thema Befehle und Erklärungen
Cliloc UO.GetCliloc
Cliloc by ID UO.GetClilocByID
Codepage UO.GetUserCodepage

Alle Theme-Befehle

Lokalisierung

UO.GetCliloc · UO.GetClilocByID · UO.GetUserCodepage

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

Parameter, Ergebnis und alle Szenarien

var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    UO.Print(UO.GetCliloc(item));
}

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

UO.GetClilocByID

Parameter, Ergebnis und alle Szenarien

var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

Vollständige Befehlsreferenz


UO.GetCliloc

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

C#-Signaturen

dynamic UO.GetCliloc(object? objID);

Liest den fertigen Objekteigenschaftentext aus OPL. GetTooltip und GetCliloc sind Synonyme.

Parameter

  • objID – Erforderliches serial/ID-Objekt, nicht type und nicht cliloc. Akzeptiert int, Dezimal-/Hex-Zeichenfolge, self, backpack, lasttarget, finditem oder den Namen AddObject. 0 bedeutet kein Objekt.

Rückgabewert

string – der Name und der Text der Eigenschaften, getrennt durch eine neue Zeile, oder nur der nicht leere Teil. Leerer String, wenn ObjID=0 oder wenn Eigenschaften nicht empfangen werden. Dies ist ein vorgefertigter Text; Numerisch ID cliloc und Parameter werden von GetTooltipRec zurückgegeben.

Verhalten

  • Wenn der Eintrag bereits in OPL vorhanden ist, wird sein Text sofort zurückgegeben. Wenn kein Eintrag vorhanden ist, wird eine Eigenschaftsanforderung gesendet und eine Antwort wird bis zu 200 ms mit einer Überprüfung alle 10 ms erwartet. Eine Pause garantiert keine Antwort.
  • Wir benötigen ein zugängliches Objekt und Unterstützung für Eigenschaften durch den Server. Ein leeres Ergebnis ist kein Beweis dafür, dass das Objekt nicht existiert: Verwenden Sie Exists separat.
  • Der Text kann Server-Markup enthalten. Analysieren Sie numerische Eigenschaften nicht nach Zeilenposition. Verwenden Sie dazu GetTooltipRec.

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

1. Eigenschaften eines Gegenstands in einem Rucksack – direktes Skript

Parameter und Ablauf:

  • FindType: Gold 0x0EED, beliebig hue=-1, direkter Inhalt backpack. ObjID=Artikel – gefunden serial.
  • Das Getter-Ergebnis ist Text, nicht die Goldmenge. Für die Menge verwenden Sie FindCount(item).
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    UO.Print(UO.GetCliloc(item));
}

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

2. Keine Antwort verarbeiten – Skriptfunktion

Parameter und Ablauf:

  • ObjID=lasttarget muss auf das gewünschte Objekt zeigen.
  • Eine leere Zeichenfolge wird separat verarbeitet; Es ist nicht erforderlich, die Anfrage automatisch in einer Endlosschleife zu wiederholen.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.GetCliloc("lasttarget");
    if (Truth(text == ""))
    {
        UO.Print("No properties received");
    }
    else
    {
        UO.Print(text);
    }

    return null;
}

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

3. Text bis zur nächsten Aktion speichern – Skriptklasse

Parameter und Ablauf:

  • „id“ und „saveed“ sind separate Variablen: das eindeutige ID des Objekts und eine Momentaufnahme seines Textes.
  • Die gespeicherten Werte ändern sich nicht automatisch, wenn sich die Eigenschaften auf dem Server später ändern.
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.GetSerial("lasttarget");
        var saved = UO.GetCliloc(id);
        UO.Print("Object: 0x" + Hex(id));
        UO.Print(saved);
        return null;
    }

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

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.GetCliloc(objID) — UO.GetCliloc(Any)

Parameter: objID (Any)

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "getcliloc":

                case "gettooltip":

                    return new InjectionValue(bridge.GetTooltip(Arg(0)));

UO.GetClilocByID

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

C#-Signaturen

dynamic UO.GetClilocByID(object? clilocID, object? @params);

Übersetzt die Cliloc-Vorlage aus Spieldateien und ersetzt die übergebenen Parameter.

Parameter

  • clilocID – Obligatorisch int – ID einer lokalisierten Nachricht, nicht serial eines Objekts und nicht graphic. Zum Beispiel die Zahl aus Zeile[0] des Ergebnisses GetTooltipRec.
  • params – Obligatorisches Array von Ersetzungen in der Reihenfolge 1_..., 2_.... Ein Skalarwert ist zulässig: Er wird zu einem Array aus einer Zeichenfolge. Für eine Vorlage ohne Parameter können Sie eine leere Zeichenfolge übergeben. Das Element #number verweist auf einen anderen Cliloc. Elemente werden in Strings umgewandelt; Es ist vorzuziehen, Zeichenfolgen explizit zu übergeben.

Rückgabewert

string – übersetzte Vorlage mit Ersetzungen aus Params. Wenn kein Cliloc-Loader vorhanden ist, wird eine leere Zeichenfolge zurückgegeben. Wenn ID unbekannt ist, gibt das geladene ClilocLoader den Diagnosetext MegaCliloc: fehlt mit dieser Nummer und ersetzten Parametern zurück. Gibt kein Cliloc ID oder ein Erfolgszeichen zurück.

Verhalten

  • Für Objekteigenschaften zuerst GetTooltipRec(ObjID): Nachrichtennummer und Objekt sind unterschiedlich ID. Für vorgefertigten Text aller Eigenschaften verwenden Sie GetTooltip(ObjID).

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

1. Vorlage ohne Platzhalter – direktes Skript

Parameter und Ablauf:

  • ClilocID=1042971 – Beispielnummer; Ersetzen Sie es durch das, was Sie benötigen. Params ist eine leere Zeichenfolge, die als einzelner leerer Wert übergeben wird.
  • Bei einem Muster ohne Platzhaltermarkierungen ändert ein leerer Parameter den Text nicht. Wenn die Vorlage Daten erwartet, übergeben Sie ein Array wie im folgenden Beispiel.
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

2. Übergeben Sie zwei Werte – Skriptfunktion

Parameter und Ablauf:

  • ClilocID=1042971 ist ein Beispiel für eine Vorlage. args[0] und args[1] belegen die Positionen des ersten und zweiten Parameters.
  • Die Indexvariablendeklaration[1] erstellt zwei Elemente: 0 bis 1. Verwenden Sie die Vorlage ID, die entsprechende Parameter erwartet.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] args = new dynamic[checked((int)(1) + 1)];
    args[0] = "iron";
    args[1] = "ingot";
    UO.Print(UO.GetClilocByID(1042971, args));
    return null;
}

3. Übersetzen Sie die erste Immobilieneigenschaft – Skriptklasse

Parameter und Ablauf:

  • Das erste Argument sind clilocID-Eigenschaften; Das zweite ist das vorgefertigte Params-Array.
  • Es wird geprüft, ob mindestens ein Datensatz vorhanden ist. Alle Parameter werden vom Server empfangen und zusammen mit ihrem ID übertragen.
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 rows = UO.GetTooltipRec("lasttarget");
        if (Truth(ArrayLength(rows) > 0))
        {
            var row = rows[0];
            UO.Print(UO.GetClilocByID(row[0], row[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;
}

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.GetClilocByID(clilocID, params) — UO.GetClilocByID(Any,Any)

Parameter: clilocID (Any), params (Any)

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "getclilocbyid":

                    return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));

UO.GetUserCodepage

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

C#-Signaturen

int UO.GetUserCodepage();

Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen.

Parameter

Es gibt keine Parameter.

Rückgabewert

int – Encoding.Default.CodePage des aktuellen Prozesses. Dies ist die Kodierung .NET, nicht die ausgewählte Sprachkodierung UO.

Verhalten

  • Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen. Der Wert hängt von der Umgebung ab.NET; Es kann nicht als garantiertes Windows ANSI angesehen werden.
  • Liest den aktuellen lokalen Status. Es gibt kein Paket, Ziel oder automatische Aktualisierung; Einzelne Lesevorgänge können unterschiedliche Zustände aufweisen.

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

1. Direkter Aufruf – direktes Skript

Parameter und Ablauf:

  • Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen.
UO.Print(UO.GetUserCodepage());

2. Explizite Option – Skriptfunktion

Parameter und Ablauf:

  • Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen. Der Wert hängt von der Umgebung ab.NET; Es kann nicht als garantiertes Windows ANSI angesehen werden.
return  RunScenario();
 object? RunScenario()
{
    var codepage = UO.GetUserCodepage();
    if (Truth(codepage == 65001))
    {
        UO.Print("UTF-8");
    }

    return null;
}

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

3. Vollständige Hilfsfunktion – Skriptklasse

Parameter und Ablauf:

  • Liest den aktuellen lokalen Status. Es gibt kein Paket, Ziel oder automatische Aktualisierung; Einzelne Lesevorgänge können unterschiedliche Zustände aufweisen.
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 before = UO.GetUserCodepage();
        UO.Wait(500);
        var after = UO.GetUserCodepage();
        UO.Print(before);
        UO.Print(after);
        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.GetUserCodepage() — UO.GetUserCodepage()

Parameter: Keine Parameter.

Ergebnis: int / Integer.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

public int GetUserCodepage() => Encoding.Default.CodePage;

Clone this wiki locally