Repository navigation
DE UO Topic localization
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Thema | Befehle und Erklärungen |
|---|---|
| Cliloc | UO.GetCliloc |
| Cliloc by ID | UO.GetClilocByID |
| Codepage | UO.GetUserCodepage |
UO.GetCliloc · UO.GetClilocByID · UO.GetUserCodepage
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.
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;Parameter, Ergebnis und alle Szenarien
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetCliloc(object? objID);Liest den fertigen Objekteigenschaftentext aus OPL. GetTooltip und GetCliloc sind Synonyme.
-
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.
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.
- 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.
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.
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));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;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;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");
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: objID (Any)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTooltip:bridge.GetTooltip(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "getcliloc":
case "gettooltip":
return new InjectionValue(bridge.GetTooltip(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetClilocByID(object? clilocID, object? @params);Übersetzt die Cliloc-Vorlage aus Spieldateien und ersetzt die übergebenen 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 Reihenfolge1_...,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.
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.
- Für Objekteigenschaften zuerst GetTooltipRec(ObjID): Nachrichtennummer und Objekt sind unterschiedlich ID. Für vorgefertigten Text aller Eigenschaften verwenden Sie GetTooltip(ObjID).
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.
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));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);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;
}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;
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: clilocID (Any), params (Any)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetClilocById:bridge.GetClilocById(Arg(0), StringArrayArg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::StringArrayArg:StringArrayArg(1).
Interner Implementierungscode; kein eigenständiges Skript.
case "getclilocbyid":
return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetUserCodepage();Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen.
Es gibt keine Parameter.
int – Encoding.Default.CodePage des aktuellen Prozesses. Dies ist die Kodierung .NET, nicht die ausgewählte Sprachkodierung UO.
- 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.
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.
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));Parameter und Ablauf:
- Gibt Encoding.Default.CodePage zurück, ohne die Profileinstellungen zu lesen.
UO.Print(UO.GetUserCodepage());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;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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: int / Integer.
Beim Aufruf:
Interner Implementierungscode; kein eigenständiges Skript.
public int GetUserCodepage() => Encoding.Default.CodePage;ClassicUO — Bad Newbie & C# Scripts IDE