DE UO Topic conversion compatibility - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| 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 |
UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO
UO.BoxHack · UO.ShutdownWindows
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
UO.Print(UO.Int2Hex(1073746484));Parameter, Ergebnis und alle Szenarien
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BoxHack();Gibt einen Hinweis aus, dass der ältere native Client-Patch BoxHack von ClassicUO nicht benötigt wird.
Es gibt keine Parameter.
void – kein Rückgabewert.
- Der Zweig ExecuteLegacyManualAlias ruft nur SystemMessage auf. Bewegung, Sprache, Container oder Netzwerkprotokoll werden nicht korrigiert.
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.
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();Parameter und Ablauf:
- Die Meldung beschreibt, dass der alte Patch nicht benötigt wird.
UO.BoxHack();Parameter und Ablauf:
- Das Kompatibilitätsverfahren verändert die Spielwelt nicht.
return RunScenario();
object? RunScenario()
{
CompatibilityNotice();
return null;
}
void CompatibilityNotice()
{
UO.BoxHack();
}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;
}
}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: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.").
Interner Implementierungscode; kein eigenständiges Skript.
case "boxhack":
case "fixtalk":
case "fixwalk":
SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.EUO2ID(object? euo);Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.
-
euo– EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.
int – der resultierende numerische 32-Bit-Wert; Dies ist keine Hex-Zeichenfolge.
- 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.
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.EUO2ID("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- B kodiert die Zahl 1.
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: euo (Any)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.EUO2Inj(object? easyValue);Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.
-
easyValue– EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.
string ist die Hex-Zeichenfolge der Injektion des resultierenden serial.
- 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.
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.EUO2Inj("B");
UO.Print("EUO2Inj: " + Convert.ToString(result));Parameter und Ablauf:
- B kodiert die Zahl 1.
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: easyValue (Any)
Ergebnis: string / String.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.EUO2Inj. -
InjectionScript.Runtime.InjectionValue.ToString:easyValue.ToString(). -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(unchecked((int)value)).
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));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.EUO2Type(object? euo);Dekodiert die EasyUO-Literalnotation in Basis 26 mit A=0.
-
euo– EasyUO-Zeichenfolge/Wert. Buchstaben werden in Großbuchstaben umgewandelt; Nicht-Buchstabenzeichen werden übersprungen.
int – der resultierende numerische 32-Bit-Wert; Dies ist keine Hex-Zeichenfolge.
- 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.
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.EUO2Type("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parameter und Ablauf:
- B kodiert die Zahl 1.
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: euo (Any)
Ergebnis: dynamic / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Hex2Int(object? value);Konvertiert einen numerischen Wert oder numerischen Text in int.
-
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.
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.
- 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.
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.Hex2Int("0x40001234");
UO.Print("Hex2Int: " + Convert.ToString(result));Parameter und Ablauf:
- Konvertiert einen numerischen Wert oder numerischen Text in int.
UO.Print(UO.Hex2Int("0x40001234"));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: value (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Hex2Int. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
Interner Implementierungscode; kein eigenständiges Skript.
public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Inj2EUO(object? serialValue);Kodiert die 32-Bit-Zahl serial mit den Buchstaben A..Z für EasyUO.
-
serialValue– Zahl bis NumberConversions.ToInt, dann unsigned uint mit erhaltenen Bits. Für einen Alias besorgen Sie sich zunächst GetSerial/Hex2Int.
string sind die üblichen Basisziffern 26 mit A=0..Z=25. Null ergibt „A“. Dies ist kein Hexadezimal- oder Objektname.
- 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.
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.Inj2EUO(0);
UO.Print("Inj2EUO: " + Convert.ToString(result));Parameter und Ablauf:
- Kodiert die 32-Bit-Zahl serial mit den Buchstaben A..Z für EasyUO.
UO.Print(UO.Inj2EUO(0));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: serialValue (Any)
Ergebnis: string / String.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Inj2EUO. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serialValue).
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();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Int2Hex(object? value);Formatiert int als hexadezimale serial-Zeichenfolge.
-
value- int oder numerischer/hexer Text; double wird mit einer Überlaufprüfung auf Null gekürzt. Der Objektalias kann nicht gefunden werden.
string „0xXXXXXXXX“: acht Hexadezimalstellen, alle 32 Bits int. Ein negativer Wert wird im Zweierkomplement dargestellt.
- 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.
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.Int2Hex(1073746484);
UO.Print("Int2Hex: " + Convert.ToString(result));Parameter und Ablauf:
- Formatiert int als hexadezimale serial-Zeichenfolge.
UO.Print(UO.Int2Hex(1073746484));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: value (Any)
Ergebnis: string / String.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.Int2Hex. -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(NumberConversions.ToInt(value)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
Interner Implementierungscode; kein eigenständiges Skript.
public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ScanInt(object? textValue, object? startValue);Sucht die erste vorzeichenbehaftete double/Hex-Zahl in der Zeichenfolge, beginnend an der Position.
-
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.
int ist die erste erkannte 32-Bit-Nummer. Es gibt keine Übereinstimmung oder die Nummer passt nicht - 0; eine echte Null ergibt ebenfalls 0.
- 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.
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.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));Parameter und Ablauf:
- Sucht die erste vorzeichenbehaftete double/Hex-Zahl in der Zeichenfolge, beginnend an der Position.
UO.Print(UO.ScanInt("gold=123", 0));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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: textValue (Any), startValue (Any)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ScanInt. -
InjectionScript.Runtime.InjectionValue.ToString:textValue.ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(startValue). -
InjectionScript.Runtime.NumberConversions.TryStr2Int:NumberConversions.TryStr2Int(match.Value, out int value).
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ShutdownWindows(object? state);Lehnt immer den Versuch ab, Windows über ein Skript herunterzufahren.
-
state– Legacy-Argument wird in der Signatur gespeichert, aber nicht verwendet: Jeder Anruf wird blockiert.
Es gibt kein normales Ergebnis: NativeSubrutineException mit der Meldung „shutdownwindows ist absichtlich blockiert: Skripte fahren Windows möglicherweise nicht herunter.“
- 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.
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.
try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }Parameter und Ablauf:
- Lehnt immer den Versuch ab, Windows über ein Skript herunterzufahren.
UO.ShutdownWindows(0);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;
}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;
}
}C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
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.");