Skip to content

JA UO Topic conversion compatibility

Codex edited this page Oct 12, 2026 · 4 revisions

Українська · Русский · 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.Int2Hex

パラメータ、結果、およびすべてのシナリオ

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

UO.EUO2ID

パラメータ、結果、およびすべてのシナリオ

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

コマンドの完全なリファレンス


UO.BoxHack

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

C# のシグネチャ

void UO.BoxHack();

従来のネイティブ クライアント パッチ BoxHack が ClassicUO に必要ないという通知を出力します。

引数

パラメータはありません。

戻り値

void - 戻り値はありません。

動作

  • ExecuteLegacyManualAlias ブランチは SystemMessage のみを呼び出します。動き、音声、コンテナ、ネットワーク プロトコルは修正されません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

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

1。互換性に関する通知 - ダイレクト スクリプト

引数と実行の流れ:

  • このメッセージには、古いパッチが必要ないことが説明されています。
UO.BoxHack();

2。プロシージャの呼び出し - スクリプト関数

引数と実行の流れ:

  • 互換性手順によってゲームの世界が変わるわけではありません。
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

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

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.BoxHack();
        UO.Print("continued");
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.BoxHack() — UO.BoxHack()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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# のシグネチャ

dynamic UO.EUO2ID(object? euo);

EasyUO リテラル表記を基数 26 で A=0 でデコードします。

引数

  • euo — EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。

戻り値

int — 結果の 32 ビット数値。これは 16 進文字列ではありません。

動作

  • value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .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));

1。単一文字の値 - 直接スクリプト

引数と実行の流れ:

  • B は数値 1 をエンコードします。
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

2。文字以外の文字 - スクリプト関数

引数と実行の流れ:

  • 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2ID("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。 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 を使います。

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

引数: euo (Any)

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "euo2id":

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

UO.EUO2Inj

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

C# のシグネチャ

string UO.EUO2Inj(object? easyValue);

EasyUO リテラル表記を基数 26 で A=0 でデコードします。

引数

  • easyValue — EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。

戻り値

string は、結果として得られる serial のインジェクションの 16 進文字列です。

動作

  • value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。単一文字の値 - 直接スクリプト

引数と実行の流れ:

  • B は数値 1 をエンコードします。
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));

2。文字以外の文字 - スクリプト関数

引数と実行の流れ:

  • 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Inj("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。 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 を使います。

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

引数: easyValue (Any)

結果: string / String.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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# のシグネチャ

dynamic UO.EUO2Type(object? euo);

EasyUO リテラル表記を基数 26 で A=0 でデコードします。

引数

  • euo — EasyUO 文字列/値。文字は大文字に変換されます。文字以外の文字はスキップされます。

戻り値

int — 結果の 32 ビット数値。これは 16 進文字列ではありません。

動作

  • value=value*26+(文字-A)を順次計算します。 uint アキュムレータはチェックされずに実行されるため、オーバーフローは 32 ビットにラップアラウンドします。空の文字列と文字のない文字列は 0 になります。世界中のオブジェクトを検索しません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .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));

1。単一文字の値 - 直接スクリプト

引数と実行の流れ:

  • B は数値 1 をエンコードします。
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));

2。文字以外の文字 - スクリプト関数

引数と実行の流れ:

  • 大文字と小文字は重要ではありません。ハイフンと感嘆符は省略されます。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Type("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3。 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 を使います。

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

引数: euo (Any)

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "euo2id":

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

UO.Hex2Int

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

C# のシグネチャ

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 です。変換はオブジェクトの存在を証明するものではありません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 数値または数値テキストを int に変換します。
UO.Print(UO.Hex2Int("0x40001234"));

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • 名前に反して、10 進数のテキストが受け入れられます。無効なテキストは FormatException を与え、サポートされていないタイプは InvalidCastException を与えます。オーバーフロー double - 変換エラー。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Hex2Int("255"));
    UO.Print(UO.Hex2Int("0xFFFFFFFF"));
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 逆フォーマットは 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 を使います。

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

引数: value (Any)

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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

UO.Inj2EUO

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

C# のシグネチャ

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 進文字列への逆変換を行います。エンコードではオブジェクトが作成されず、クライアントからオブジェクトが要求されません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • EasyUO の 32 ビット数値 serial を文字 A..Z でエンコードします。
UO.Print(UO.Inj2EUO(0));

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • アルゴリズムは、文字 A + 値 % 26 を左側に挿入し、uint を 26 でゼロに除算します。これはプロジェクト独自の変換であり、Excel A1 の列番号ではありません。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Inj2EUO(26));
    UO.Print(UO.Inj2EUO(25));
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 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 を使います。

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

引数: serialValue (Any)

結果: string / String.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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# のシグネチャ

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によって個別にチェックされます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • int を 16 進数の serial 文字列としてフォーマットします。
UO.Print(UO.Int2Hex(1073746484));

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • NumberConversions.ToInt が変換を実行し、その後、ToHex が X8 フォーマットを使用します。たとえば、-1 は「0xFFFFFFFF」となります。無効な数値テキストを使用するとエラーが発生します。これはserial の存在をテストするものではありません。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Int2Hex(-1));
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 数値を表すには変換だけで十分です。オブジェクトの存在は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 を使います。

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

引数: value (Any)

結果: string / String.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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

UO.ScanInt

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

C# のシグネチャ

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 になります。元の行は変わりません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 位置から始まる文字列内の最初の符号付き double/16 進数を検索します。
UO.Print(UO.ScanInt("gold=123", 0));

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • Regex.Match は Substring(start) に適用されます。最初の一致が TryStr2Int の変換に失敗した場合、次の番号は検索されません。 .5 などの小数部は数値トークンには含まれません。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ScanInt("-7 0xFF", 3));
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 負の開始は 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 を使います。

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

引数: textValue (Any), startValue (Any)

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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# のシグネチャ

void UO.ShutdownWindows(object? state);

スクリプトから Windows をシャットダウンしようとする試みを常に拒否します。

引数

  • state - 従来の引数は署名に保存されていますが、使用されません。すべての通話がブロックされます。

戻り値

正常な結果はありません: NativeSubrutineException には、「shutdownwindows は意図的にブロックされています: スクリプトは Windows をシャットダウンできない可能性があります。」というメッセージが表示されます。

動作

  • ExecuteLegacyManualAlias はすぐに例外をスローします。シャットダウン、再起動、または外部プロセスの起動は実行されません。
  • 3 つの例はすべて、禁止された呼び出しを意図的に表示し、実行すると失敗します。これらは、正常にシャットダウンするための条件として使用することはできません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

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

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • スクリプトから Windows をシャットダウンしようとする試みを常に拒否します。
UO.ShutdownWindows(0);

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • ExecuteLegacyManualAlias はすぐに例外をスローします。シャットダウン、再起動、または外部プロセスの起動は実行されません。
return  RunScenario();
 object? RunScenario()
{
    UO.ShutdownWindows(1);
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 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 を使います。

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

引数: state (Any)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "shutdownwindows":

                    throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");

Clone this wiki locally