Repository navigation
JA UO Topic conversion compatibility
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
数値、serial、および従来のスクリプト形式を変換します。互換性のある名前には制限または明示的に禁止された操作がある場合があります。これはカードに示されています。
| トピック | コマンドと説明 |
|---|---|
| Hex / int | UO.Hex2Int · UO.Int2Hex |
| EUO ↔ Injection | UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO |
| EasyUO | UO.GetEasyUO · UO.SetEasyUO |
| 型変換 | C#と標準ライブラリ C#と標準ライブラリ C#と標準ライブラリ C#と標準ライブラリ C#と標準ライブラリ · C# and standard library |
UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO
UO.BoxHack · UO.ShutdownWindows
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
UO.Print(UO.Int2Hex(1073746484));var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BoxHack();従来のネイティブ クライアント パッチ BoxHack が ClassicUO に必要ないという通知を出力します。
パラメータはありません。
void - 戻り値はありません。
- ExecuteLegacyManualAlias ブランチは SystemMessage のみを呼び出します。動き、音声、コンテナ、ネットワーク プロトコルは修正されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.BoxHack");
UO.BoxHack();引数と実行の流れ:
- このメッセージには、古いパッチが必要ないことが説明されています。
UO.BoxHack();引数と実行の流れ:
- 互換性手順によってゲームの世界が変わるわけではありません。
return RunScenario();
object? RunScenario()
{
CompatibilityNotice();
return null;
}
void CompatibilityNotice()
{
UO.BoxHack();
}引数と実行の流れ:
- 診断メッセージの後、実行は続行されます。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.").
内部実装のコードです。単独のスクリプトとして実行できません。
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);EasyUO リテラル表記を基数 26 で A=0 でデコードします。
-
euo— EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。
int — 結果の 32 ビット数値。これは 16 進文字列ではありません。
- value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.EUO2ID("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- B は数値 1 をエンコードします。
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));引数と実行の流れ:
- 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2ID("b-!");
UO.Print(Convert.ToString(value));
return null;
}引数と実行の流れ:
- A コードはゼロです。結果は、オブジェクトが見つかったことを示しません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: euo (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.EUO2Inj(object? easyValue);EasyUO リテラル表記を基数 26 で A=0 でデコードします。
-
easyValue— EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。
string は、結果として得られる serial のインジェクションの 16 進文字列です。
- value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.EUO2Inj("B");
UO.Print("EUO2Inj: " + Convert.ToString(result));引数と実行の流れ:
- B は数値 1 をエンコードします。
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));引数と実行の流れ:
- 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2Inj("b-!");
UO.Print(Convert.ToString(value));
return null;
}引数と実行の流れ:
- A コードはゼロです。結果は、オブジェクトが見つかったことを示しません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: easyValue (Any)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.EUO2Inj. -
InjectionScript.Runtime.InjectionValue.ToString:easyValue.ToString(). -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(unchecked((int)value)).
内部実装のコードです。単独のスクリプトとして実行できません。
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);EasyUO リテラル表記を基数 26 で A=0 でデコードします。
-
euo— EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。
int — 結果の 32 ビット数値。これは 16 進文字列ではありません。
- value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.EUO2Type("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- B は数値 1 をエンコードします。
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));引数と実行の流れ:
- 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2Type("b-!");
UO.Print(Convert.ToString(value));
return null;
}引数と実行の流れ:
- A コードはゼロです。結果は、オブジェクトが見つかったことを示しません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: euo (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Hex2Int(object? value);数値または数値テキストを int に変換します。
-
value— int、double、double - テキストまたは 0x を含む 16 進テキスト。端と記号の周囲にスペースを入れることは許可されます。ここではエイリアス文字列「self」/「lasttarget」は許可されません。
32 ビットを含む int; 16 進数 0xFFFFFFFF は -1 を与えます。 double は範囲チェックによってゼロに切り捨てられます。 NumberConversions.ToInt の配列と null は、0 になります。
- 名前に反して、10 進数のテキストが受け入れられます。無効なテキストは FormatException を与え、サポートされていないタイプは InvalidCastException を与えます。オーバーフロー double - 変換エラー。
- 逆フォーマットは UO.Int2Hex です。変換はオブジェクトの存在を証明するものではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Hex2Int("0x40001234");
UO.Print("Hex2Int: " + Convert.ToString(result));引数と実行の流れ:
- 数値または数値テキストを int に変換します。
UO.Print(UO.Hex2Int("0x40001234"));引数と実行の流れ:
- 名前に反して、10 進数のテキストが受け入れられます。無効なテキストは FormatException を与え、サポートされていないタイプは InvalidCastException を与えます。オーバーフロー double - 変換エラー。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Hex2Int("255"));
UO.Print(UO.Hex2Int("0xFFFFFFFF"));
return null;
}引数と実行の流れ:
- 逆フォーマットは UO.Int2Hex です。変換はオブジェクトの存在を証明するものではありません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: value (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Hex2Int. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
内部実装のコードです。単独のスクリプトとして実行できません。
public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Inj2EUO(object? serialValue);EasyUO の 32 ビット数値 serial を文字 A..Z でエンコードします。
-
serialValue— NumberConversions.ToInt までの数値、その後ビットが保持された符号なしの uint 。エイリアスの場合は、まず GetSerial/Hex2Int を取得します。
string は通常の基本数字 26 (A=0..Z=25) です。ゼロは「A」を与えます。これは 16 進数またはオブジェクト名ではありません。
- アルゴリズムは、文字 A + 値 % 26 を左側に挿入し、uint を 26 でゼロに除算します。これはプロジェクト独自の変換であり、Excel A1 の列番号ではありません。
- EUO2Inj は 16 進文字列への逆変換を行います。エンコードではオブジェクトが作成されず、クライアントからオブジェクトが要求されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Inj2EUO(0);
UO.Print("Inj2EUO: " + Convert.ToString(result));引数と実行の流れ:
- EasyUO の 32 ビット数値 serial を文字 A..Z でエンコードします。
UO.Print(UO.Inj2EUO(0));引数と実行の流れ:
- アルゴリズムは、文字 A + 値 % 26 を左側に挿入し、uint を 26 でゼロに除算します。これはプロジェクト独自の変換であり、Excel A1 の列番号ではありません。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Inj2EUO(26));
UO.Print(UO.Inj2EUO(25));
return null;
}引数と実行の流れ:
- EUO2Inj は 16 進文字列への逆変換を行います。エンコードではオブジェクトが作成されず、クライアントからオブジェクトが要求されません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: serialValue (Any)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Inj2EUO. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serialValue).
内部実装のコードです。単独のスクリプトとして実行できません。
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);int を 16 進数の serial 文字列としてフォーマットします。
-
value— int または数値/16 進テキスト。 double はオーバーフロー チェックによってゼロに切り捨てられます。オブジェクトのエイリアスが見つかりません。
string "0xXXXXXXXX": 8 つの 16 進数、すべての 32 ビット int。負の値は 2 の補数で表されます。
- NumberConversions.ToInt が変換を実行し、その後、ToHex が X8 フォーマットを使用します。たとえば、-1 は「0xFFFFFFFF」となります。無効な数値テキストを使用するとエラーが発生します。これはserial の存在をテストするものではありません。
- 数値を表すには変換だけで十分です。オブジェクトの存在はUO.Existsによって個別にチェックされます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Int2Hex(1073746484);
UO.Print("Int2Hex: " + Convert.ToString(result));引数と実行の流れ:
- int を 16 進数の serial 文字列としてフォーマットします。
UO.Print(UO.Int2Hex(1073746484));引数と実行の流れ:
- NumberConversions.ToInt が変換を実行し、その後、ToHex が X8 フォーマットを使用します。たとえば、-1 は「0xFFFFFFFF」となります。無効な数値テキストを使用するとエラーが発生します。これはserial の存在をテストするものではありません。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Int2Hex(-1));
return null;
}引数と実行の流れ:
- 数値を表すには変換だけで十分です。オブジェクトの存在はUO.Existsによって個別にチェックされます。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: value (Any)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Int2Hex. -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(NumberConversions.ToInt(value)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
内部実装のコードです。単独のスクリプトとして実行できません。
public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ScanInt(object? textValue, object? startValue);位置から始まる文字列内の最初の符号付き double/16 進数を検索します。
-
textValue— ToString 経由でテキストメッセージを送信します。正規表現 [-+]?(?:0[xX][0-9A-Fa-f]+|\d+) の最初に一致するものを検索します。 -
startValue— int、ゼロ位置 UTF-16。 0..text.Length に制限されます。 1 のインデックスではありません。
int は、認識される最初の 32 ビット番号です。一致するものがないか、番号が適合しません - 0;実数ゼロも 0 になります。
- Regex.Match は Substring(start) に適用されます。最初の一致が TryStr2Int の変換に失敗した場合、次の番号は検索されません。 .5 などの小数部は数値トークンには含まれません。
- 負の開始は 0 になり、行末を超える開始は text.Length になり、結果は 0 になります。元の行は変わりません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));引数と実行の流れ:
- 位置から始まる文字列内の最初の符号付き double/16 進数を検索します。
UO.Print(UO.ScanInt("gold=123", 0));引数と実行の流れ:
- Regex.Match は Substring(start) に適用されます。最初の一致が TryStr2Int の変換に失敗した場合、次の番号は検索されません。 .5 などの小数部は数値トークンには含まれません。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ScanInt("-7 0xFF", 3));
return null;
}引数と実行の流れ:
- 負の開始は 0 になり、行末を超える開始は text.Length になり、結果は 0 になります。元の行は変わりません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: textValue (Any), startValue (Any)
結果: int / Integer.
呼び出し時:
-
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).
内部実装のコードです。単独のスクリプトとして実行できません。
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);スクリプトから Windows をシャットダウンしようとする試みを常に拒否します。
-
state- 従来の引数は署名に保存されていますが、使用されません。すべての通話がブロックされます。
正常な結果はありません: NativeSubrutineException には、「shutdownwindows は意図的にブロックされています: スクリプトは Windows をシャットダウンできない可能性があります。」というメッセージが表示されます。
- ExecuteLegacyManualAlias はすぐに例外をスローします。シャットダウン、再起動、または外部プロセスの起動は実行されません。
- 3 つの例はすべて、禁止された呼び出しを意図的に表示し、実行すると失敗します。これらは、正常にシャットダウンするための条件として使用することはできません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }引数と実行の流れ:
- スクリプトから Windows をシャットダウンしようとする試みを常に拒否します。
UO.ShutdownWindows(0);引数と実行の流れ:
- ExecuteLegacyManualAlias はすぐに例外をスローします。シャットダウン、再起動、または外部プロセスの起動は実行されません。
return RunScenario();
object? RunScenario()
{
UO.ShutdownWindows(1);
return null;
}引数と実行の流れ:
- 3 つの例はすべて、禁止された呼び出しを意図的に表示し、実行すると失敗します。これらは、正常にシャットダウンするための条件として使用することはできません。
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# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: state (Any)
結果: void / Unit.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "shutdownwindows":
throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");ClassicUO — Bad Newbie & C# Scripts IDE