JA UO Topic diagnostics introspection - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

診断とイントロスペクション

家 · C# · IDE · UO API · A–Z · 例 · Languages

オブジェクト、タイル、ガンプの検査、名前、パラメータ、署名のチェック API。署名の存在は、現在の状態でゲームアクションの可能性を確認するものではありません。

セクション

トピック コマンドと説明
Help UO.Help
Dump UO.Dump
Info UO.Info
InfoTile UO.InfoTile
InfoGump UO.InfoGump
API Name Exists UO.ApiNameExists
API Signature Exists UO.ApiSignatureExists
API Parameter Exists UO.ApiParameterExists
Version UO.Version

すべてのテーマコマンド

検査

UO.Help · UO.Dump · UO.Info · UO.InfoColor · UO.GetInfo · UO.ExtendedInfo · UO.InfoTile · UO.InfoGump · UO.InfoGumps · UO.ApiNameExists · UO.ApiParameterExists · UO.ApiSignatureExists · UO.Version · UO.ClientInfo

このトピックに関する例

各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。

UO.InfoGump

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

UO.InfoGump();

UO.ApiNameExists

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

return UO.ApiNameExists("UO.GetType");

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


UO.ApiNameExists

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

C# のシグネチャ

int UO.ApiNameExists(object? name);

呼び出されるネイティブ関数名の登録を確認します。

引数

  • name - 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。

戻り値

int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。

動作

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

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

簡単な例

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

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

var result = UO.ApiNameExists("UO.GetType");
UO.Print("ApiNameExists: " + Convert.ToString(result));

1。 UO.ApiNameExists - 1 - 直接スクリプト

引数と実行の流れ:

  • 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiNameExists("UO.GetType");

2。 UO.ApiNameExists — 2 — スクリプト関数

ネイティブ名の登録だけを確認します。Convert.ToInt32 は .NET メソッドであり、UO API の登録ではないため、ApiNameExists は 0 を返します。このメソッドは通常の C# で利用できます。

return  RunScenario();
 object? RunScenario()
{
    var name = "Convert.ToInt32";
    return UO.ApiNameExists(name);
    return null;
}

3。 UO.ApiNameExists - 3 - シナリオクラス

各数値結果を 0 と比較した後、&& で 2 つの bool 値を組み合わせます。この名前の場合、結果は false です。

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()
    {
        return HasBoth("GetType", "UO.GetType");
        return null;
    }

    dynamic HasBoth(dynamic first, dynamic second)
    {
        return UO.ApiNameExists(first) != 0 && UO.ApiNameExists(second) != 0;
    }
}

コマンドの実装

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

UO.ApiNameExists(name) — UO.ApiNameExists(String)

引数: name (String)

結果: int / Integer.

呼び出し時:

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

public int ApiNameExists(string name)

        {

            string normalized = NormalizeApiName(name);

            return metadata.NativeSubrutines.Any(definition =>

                definition.Name.Equals(normalized, StringComparison.OrdinalIgnoreCase)) ? 1 : 0;

        }

UO.ApiParameterExists

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

C# のシグネチャ

int UO.ApiParameterExists(object? name);

ランタイム値または名前付きオブジェクトが登録されているかどうかを確認します。

引数

  • name - 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。

戻り値

int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。

動作

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

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

簡単な例

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

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

var result = UO.ApiParameterExists("backpack");
UO.Print("ApiParameterExists: " + Convert.ToString(result));

1。 UO.ApiParameterExists - 1 - 直接スクリプト

引数と実行の流れ:

  • 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiParameterExists("UO.GetHP");

2。 UO.ApiParameterExists — 2 — スクリプト関数

登録済みの backpack セレクターを確認し、1 を返します。C# メソッドの引数や、ゲーム内でのバックパックの存在を確認するものではありません。

return  RunScenario();
 object? RunScenario()
{
    var name = "backpack";
    return UO.ApiParameterExists(name);
    return null;
}

3。 UO.ApiParameterExists - 3 - シナリオクラス

引数と実行の流れ:

  • 3 番目の例には、完全なヘルパー関数が含まれています。削除された短い形式またはサポートされていないアリティを、利用可能な形式と比較します。パラメータ名、first、second、および count のパス名/カウントは変更されません。結果は、呼び出しチェックの場合は 0、値チェックの場合は 0:1 です。
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()
    {
        return CompareNames("GetHP", "UO.GetHP");
        return null;
    }

    dynamic CompareNames(dynamic first, dynamic second)
    {
        return Convert.ToString(UO.ApiParameterExists(first)) + ":" + Convert.ToString(UO.ApiParameterExists(second));
    }
}

コマンドの実装

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

UO.ApiParameterExists(name) — UO.ApiParameterExists(String)

引数: name (String)

結果: int / Integer.

呼び出し時:

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

public int ApiParameterExists(string name)

        {

            string value = (name ?? string.Empty).Trim();

            if (value.Length == 0)

                return 0;



            if (Metadata.ShortcutVariables.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase)))

                return 1;



            return metadata.IntrinsicVariableExists(value) ? 1 : 0;

        }

UO.ApiSignatureExists

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

C# のシグネチャ

int UO.ApiSignatureExists(object? name, object? argumentCount);

指定された数の引数を使用して名前の登録をテストします。

引数

  • name - 必須 string: 呼び出し表現ではなく、正確な登録名。大文字と小文字のスペースとエッジのスペースは重要ではありません。 UO。は自動的には追加されません。空の名前または不明な名前は 0 になります。ユーザーの手順は考慮されていません。
  • argumentCount — 必須 int: 明示的に渡されるオプションの引数を含む、位置引数の合計数。負の数量またはサポートされていない数量は 0 になります。引数自体の型はチェックされません。

戻り値

int:1 は名前が登録済み、0 は未登録です。C# では result != 0 または result == 0 を使用します。int と true または false は比較できません。登録はサーバーの動作完了を確認するものではありません。

動作

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

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

簡単な例

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

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

var result = UO.ApiSignatureExists("UO.GetType", 1);
UO.Print("ApiSignatureExists: " + Convert.ToString(result));

1。 UO.ApiSignatureExists - 1 - 直接スクリプト

引数と実行の流れ:

  • 最初の例では、明示的な UO を使用してゲーム名をテストします。そして 1 を返します。テストされる正確な名前と、それが必要な場合の引数の数が呼び出しに表示されます。
return UO.ApiSignatureExists("UO.GetType",1);

2。 UO.ApiSignatureExists — 2 — スクリプト関数

UO.FindType の引数が 1 個と 0 個の形式を確認します。結果は文字列 "1:0" です。引数なしの形式は登録されていません。

return  RunScenario();
 object? RunScenario()
{
    return Convert.ToString(UO.ApiSignatureExists("UO.FindType", 1)) + ":" + Convert.ToString(UO.ApiSignatureExists("UO.FindType", 0));
    return null;
}

3。 UO.ApiSignatureExists - 3 - シナリオクラス

引数と実行の流れ:

  • 3 番目の例には、完全なヘルパー関数が含まれています。削除された短い形式またはサポートされていないアリティを、利用可能な形式と比較します。パラメータ名、first、second、および count のパス名/カウントは変更されません。結果は、呼び出しチェックの場合は 0、値チェックの場合は 0:1 です。
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()
    {
        return CheckForm("UO.GetType", 0);
        return null;
    }

    dynamic CheckForm(dynamic name, dynamic count)
    {
        return UO.ApiSignatureExists(name, count);
    }
}

コマンドの実装

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

UO.ApiSignatureExists(name, argumentCount) — UO.ApiSignatureExists(String,Integer)

引数: name (String), argumentCount (Integer)

結果: int / Integer.

呼び出し時:

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

public int ApiSignatureExists(string name, int argumentCount)

            => metadata.NativeSubrutineExists(NormalizeApiName(name), argumentCount) ? 1 : 0;

UO.ClientInfo

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

C# のシグネチャ

dynamic UO.ClientInfo();

実行中のクライアントに関する簡単な情報を読み取ります。

引数

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

戻り値

3 つの string の配列: [0] - 製品名、[1] - 実行中のクライアントのバージョン、[2] - クライアント ディレクトリ。インデックスは 0 で始まります。これは文字列 JSON ではなく、辞書でもありません。

動作

  • データはRuntimeProductName、RuntimeProductVersion、ClientPathから読み取られます。このコマンドは何も変更せず、サーバーに何も送信しません。
  • 一般的なヘルパー関数でインデックスを作成する前に、ArrayLength を使用します。クライアント情報をキャラクター統計やサーバーのバージョンと混同しないでください。
  • 現在の ClassicUO クライアントに関する情報を読み取ります。

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

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

簡単な例

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

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

object? result = UO.ClientInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。 3 つのフィールドすべてを読み取ります - 直接スクリプト

引数と実行の流れ:

  • 0 - 製品、1 - バージョン、2 - カタログ。バージョン値は起動時に取得されます。この例では修正されていません。
var info = UO.ClientInfo();
UO.Print("Product: " + info[0]);
UO.Print("Client version: " + info[1]);
UO.Print("Client folder: " + info[2]);

2。配列のループ - スクリプト関数

引数と実行の流れ:

  • ArrayLength はフィールドの数を返します。最後の有効なインデックスは、長さから 1 を引いたものと等しくなります。
return  RunScenario();
 object? RunScenario()
{
    var info = UO.ClientInfo();
    var i = 0;
    while (Truth(i < ArrayLength(info)))
    {
        UO.Print(Convert.ToString(i) + ": " + info[i]);
        i = i + 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;

3。完全なクライアント署名取得関数 - スクリプト クラス

引数と実行の流れ:

  • ClientCaption はタイトルとバージョンの文字列を返します。元の配列は変更されません。
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(ClientCaption());
        return null;
    }

    dynamic ClientCaption()
    {
        var info = UO.ClientInfo();
        if (Truth(ArrayLength(info) < 2))
        {
            return "Client information unavailable";
        }

        return info[0] + " / " + info[1];
    }

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

UO.ClientInfo() — UO.ClientInfo()

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

結果: dynamic / Array.

呼び出し時:

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

case "clientinfo":

                    return new InjectionValue(new[]

                    {

                        new InjectionValue(bridge.RuntimeProductName),

                        new InjectionValue(bridge.RuntimeProductVersion),

                        new InjectionValue(bridge.ClientPath)

                    });

UO.Dump

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

C# のシグネチャ

void UO.Dump();
void UO.Dump(object? @object);

クライアントが認識しているオブジェクトの診断スナップショットを印刷します。

引数

  • object - オプションのserial/リンク。引数なしでは、bridge.LastTarget が使用されます。

戻り値

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

動作

  • メッセージには、0xXXXXXXXX としての serial、名前、graphic/type、hue、X/Y/Z が含まれます。フィールドはローカル モデルから読み取られます。オブジェクトが見つからない場合、名前は空になり、フィールドは null になります。このコマンドは、最新のサーバー プロパティを要求しません。

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

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

簡単な例

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

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

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

1。最後のターゲットのスナップショット - 直接スクリプト

引数と実行の流れ:

  • 引数が欠落している場合は、LastTarget を意味します。
UO.Dump();

2。自分撮り - スクリプト機能

引数と実行の流れ:

  • すべてのフィールドは自分のキャラクターに固有です。
return  RunScenario();
 object? RunScenario()
{
    UO.Dump("self");
    return null;
}

3。検査されたオブジェクトのスナップショット - スクリプト クラス

引数と実行の流れ:

  • Exists チェックは、欠落しているモデルを null フィールドを持つオブジェクトから分離します。
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.LastTarget();
        if (Truth(UO.Exists(id)))
        {
            UO.Dump(id);
        }

        return null;
    }

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

コマンドの実装

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

UO.Dump() — UO.Dump()

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

結果: void / Unit.

呼び出し時:

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

case "dump":

                {

                    int id = Arg(0, bridge.LastTarget);

                    SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");

                    break;

                }

UO.Dump(object) — UO.Dump(Any)

引数: object (Any)

結果: void / Unit.

呼び出し時:

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

case "dump":

                {

                    int id = Arg(0, bridge.LastTarget);

                    SystemMessage($"0x{id:X8} {bridge.GetName(id)} type=0x{bridge.GetGraphics(id):X4} hue=0x{bridge.GetColor(id):X4} xyz={bridge.GetX(id)},{bridge.GetY(id)},{bridge.GetZ(id)}");

                    break;

                }

UO.ExtendedInfo

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

C# のシグネチャ

dynamic UO.ExtendedInfo();

現在のクライアント接続構成の 4 つのフィールドを返します。

引数

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

戻り値

Array [ClientPath:string, CurrentProfilePath:string, GameServerAddress:string, GameServerPort:int].

動作

  • フィールドの順序は固定されています。 ClientPath と CurrentProfilePath はクライアント パスです。 GameServerAddress および GameServerPort はグローバル設定を読み取ります。GlobalSettings.IP/ポート: これは設定されたアドレスであり、実際のピア マネージャー セッションはチェックしません。リストにはパスワードが含まれておらず、サーバーに情報の入力を求めるプロンプトも表示されません。プロファイル/接続を選択する前に、値を空白にすることができます。

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

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

簡単な例

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

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

object? result = UO.ExtendedInfo();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。出力フィールド - 直接スクリプト

引数と実行の流れ:

  • 配列には混合型が含まれているため、Convert.ToString が使用されます。
var info = UO.ExtendedInfo();
for (int i = (int)(0); i <= ArrayLength(info)-1; i += (int)(1))
{
    UO.Print(Convert.ToString(info[i]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2。アドレスとポートの印刷 - スクリプト関数

引数と実行の流れ:

  • インデックス 2 と 3 はアドレスとポートです。
return  RunScenario();
 object? RunScenario()
{
    var info = UO.ExtendedInfo();
    UO.Print(Convert.ToString(info[2]) + ":" + Convert.ToString(info[3]));
    return null;
}

3。プロファイル パスの読み取り - スクリプト クラス

引数と実行の流れ:

  • インデックス 1 — ClientPath ではなく、CurrentProfilePath。
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 info = UO.ExtendedInfo();
        var path = info[1];
        UO.Print(path);
        return null;
    }
}

コマンドの実装

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

UO.ExtendedInfo() — UO.ExtendedInfo()

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

結果: dynamic / Any.

呼び出し時:

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

case "extendedinfo":

                    return new InjectionValue(new[] { new InjectionValue(bridge.ClientPath), new InjectionValue(bridge.CurrentProfilePath), new InjectionValue(bridge.GameServerAddress), new InjectionValue(bridge.GameServerPort) });

UO.GetInfo

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

C# のシグネチャ

string UO.GetInfo(object? arg);

正確な文字セレクターの文字名のみを返します。

引数

  • arg - string。大文字と小文字を区別する正確な文字値は、GetName("self") を呼び出します。他の値は認識されません。

戻り値

string — キャラクターごとの名前。他のすべての引数には文字列リテラル UNKNOWN。文字がない場合、名前は空でも構いません。

動作

  • 比較 StringComparison.Ordinal では大文字と小文字が区別されます。文字セレクターのみがサポートされています。このコマンドはネットワーク要求を行いません。ローカルの文字モデルから名前を読み取ります。ウィンドウFillInfoWindowは個別に制御されます。

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

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

簡単な例

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

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

var result = UO.GetInfo("character");
UO.Print("GetInfo: " + Convert.ToString(result));

1。キャラクター名 - 直接スクリプト

引数と実行の流れ:

  • 正確な文字リテラルは self となります。
var name = UO.GetInfo("character");
UO.Print(name);

2。その他のケース - スクリプト関数

引数と実行の流れ:

  • 文字が一致しないため、UNKNOWN が返されます。
return  RunScenario();
 object? RunScenario()
{
    var value = UO.GetInfo("Character");
    UO.Print(value);
    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()
    {
        var value = UO.GetInfo("profile");
        UO.Print(value);
        return null;
    }
}

コマンドの実装

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

UO.GetInfo(arg) — UO.GetInfo(String)

引数: arg (String)

結果: string / String.

呼び出し時:

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

private string GetInfo(string arg)

        {

            if (arg.Equals("character", StringComparison.Ordinal))

                return GetName("self");



            return "UNKNOWN";

        }

UO.Help

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

C# のシグネチャ

void UO.Help();

引数

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

戻り値

void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。

動作

  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • C# IDE に関するローカルヒントを表示します。
UO.Help();

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は、UO.*、設定されたチャット プレフィックス、およびオプション > C# IDE > SystemMessage 経由の手動に関する行を表示します。ヘルプ リクエストはサーバーに送信されません。
return  RunScenario();
 object? RunScenario()
{
    UO.Help();
    UO.OpenIDE();
    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.Help();
        UO.Print("Options > C# IDE > Manual");
        return null;
    }
}

コマンドの実装

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

UO.Help() — UO.Help()

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

結果: void / Unit.

呼び出し時:

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

case "help": SystemMessage("C# Scripts IDE: use UO.* in scripts or the configured chat prefix. Open Options > C# Scripts IDE > Manual."); break;

UO.Info

C# シグネチャ

string UO.Info();
string UO.Info(object? serial);
string UO.Info(object? type, object? x, object? y);
string UO.Info(object? type, object? x, object? y, object? z);

動作と戻り値

呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。

引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。

引数

  • serial — オブジェクトのシリアル番号または保存済み別名。
  • type — アイテムの画像 ID。-1 は指定位置のすべての種類に一致。
  • x — ワールドの X 座標。
  • y — ワールドの Y 座標。
  • z — Z 高度。短い形式では 0。

プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。

チャットコマンド

#info
#UO.Info id 0x40001234
#info type 0x0EED
#info xy 1450 1690
#info type 0x0EED xy 1450 1690 0

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

string report = UO.Info(0x40001234);
UO.Print(report);

2

string InspectSelf() => UO.Info("self");
UO.Print(InspectSelf());

3

foreach (int serial in new[] { 0x40001234, 0x40005678 })
{
    string report = UO.Info(serial);
    UO.Print(report);
}

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string report = api.Info(0x40001234);
        api.Print(report);
    }
}

内部呼び出し

CSharpGameApi.Info
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.Info
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoColor

C# シグネチャ

string UO.InfoColor();
string UO.InfoColor(object? serial);

動作と戻り値

呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。

引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。

引数

  • serial — オブジェクトのシリアル番号または保存済み別名。

プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。

チャットコマンド

#infocolor 0x40001234

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

UO.Print(UO.InfoColor(0x40001234));

2

string report = UO.InfoColor();
UO.Print(report);

3

foreach (int serial in new[] { 0x40001234, 0x40005678 })
    UO.Print(UO.InfoColor(serial));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoColor(0x40001234));
    }
}

内部呼び出し

CSharpGameApi.InfoColor
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoColor
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoGump

C# シグネチャ

string UO.InfoGump();
string UO.InfoGump(object? gump);

動作と戻り値

呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。

InfoGump() は最新のサーバーダイアログまたはクライアントのウィンドウを読みます。ID やインデックスで指定でき、last、LastGump、Last Gump は最新を意味します。InfoGumps は一覧を返し、検査ウィンドウ自体は含めません。表を開くのは画面内コマンドだけです。

引数

  • gump — サーバーウィンドウ ID またはインデックス。-1 は最後のアクティブなもの。

プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。

チャットコマンド

#infogump
#infogump last
#info gump last gump
#infogump 0x12345678

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

string report = UO.InfoGump();
UO.Print(report);

2

UO.Print(UO.InfoGump(0x12345678));

3

string ReadLatestWindow() => UO.InfoGump();
UO.Print(ReadLatestWindow());

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string report = api.InfoGump();
        api.Print(report);
    }
}

内部呼び出し

CSharpGameApi.InfoGump
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoGump
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoGumps

C# シグネチャ

string UO.InfoGumps();
string UO.InfoGumps(object? gump);

動作と戻り値

呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。

InfoGump() は最新のサーバーダイアログまたはクライアントのウィンドウを読みます。ID やインデックスで指定でき、last、LastGump、Last Gump は最新を意味します。InfoGumps は一覧を返し、検査ウィンドウ自体は含めません。表を開くのは画面内コマンドだけです。

引数

  • gump — サーバーウィンドウ ID またはインデックス。-1 は最後のアクティブなもの。

プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。

チャットコマンド

#infogumps

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

UO.Print(UO.InfoGumps());

2

string report = UO.InfoGumps(0x12345678);
UO.Print(report);

3

string ReadAllWindows() => UO.InfoGumps();
UO.Print(ReadAllWindows());

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoGumps());
    }
}

内部呼び出し

CSharpGameApi.InfoGumps
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoGumps
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.InfoTile

C# シグネチャ

string UO.InfoTile();
string UO.InfoTile(object? x);
string UO.InfoTile(object? x, object? y);
string UO.InfoTile(object? x, object? y, object? map);
string UO.InfoTile(object? type, object? x, object? y, object? z);
string UO.InfoTile(object? type, object? x, object? y, object? z, object? map);

動作と戻り値

呼び出し元によって表示が変わります。ゲーム内チャットのコマンドは、項目、値、Ctrl+C、スクロールを備えた表を開きます。通常の C# スクリプトは、ゲーム画面が開いていても、ウィンドウやターゲットなしで文字列を受け取ります。取得できるのはクライアントが知る情報です。

引数なしの Info と InfoTile は、画面内チャットではターゲットを開始します。スクリプトの Info() は最後の物件ターゲットまたは自分を、InfoTile() は足元の地形を読みます。serial、type、座標で対象を指定できます。InfoTile(x,y,map) の第3引数はマップ番号です。

引数

  • map — マップ番号。省略時は現在のマップ。
  • type — アイテムの画像 ID。-1 は指定位置のすべての種類に一致。
  • x — ワールドの X 座標。
  • y — ワールドの Y 座標。
  • z — Z 高度。短い形式では 0。

プレフィックスは C# Scripts IDE で設定し、# は例です。引数は空白区切りで、引用符内の文字列は一つの引数です。id は serial、type は graphic です。xy x y [z] は位置にある最初の読み込み済み対象、type のみは最初の一致対象です。InfoTile(x,y,map) の第3引数は Z ではなくマップです。

チャットコマンド

#infotile
#info tile xy 1450 1690
#infotile 1450 1690 0
#infotile type 0x0EED 1450 1690 0 0

完全な C# の例

各コードブロックは独立した完全な .csx です。例の serial、type、座標を置き換えてください。引数順序と C# の名前付き引数はシグネチャに従います。

1

UO.Print(UO.InfoTile(1450, 1690));

2

string report = UO.InfoTile(1450, 1690, 0);
UO.Print(report);

3

UO.Print(UO.InfoTile(0x0EED, 1450, 1690, 0, 0));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.Print(api.InfoTile(1450, 1690));
    }
}

内部呼び出し

CSharpGameApi.InfoTile
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.InfoTile
ClassicUOInjectionApiBridge -> YokoInfoReport -> YokoInfoGump


UO.Version

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

C# のシグネチャ

void UO.Version();

製品の名前とランタイム バージョンを出力します。

引数

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

戻り値

void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。

動作

  • ExecuteLegacyManualAlias は、SystemMessage を介してブリッジ.RuntimeProductName とブリッジ.RuntimeProductVersion を出力します。これはログ文字列であり、返されるバージョン番号ではありません。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 製品の名前とランタイム バージョンを出力します。
UO.Version();

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は、SystemMessage を介してブリッジ.RuntimeProductName とブリッジ.RuntimeProductVersion を出力します。これはログ文字列であり、返されるバージョン番号ではありません。
return  RunScenario();
 object? RunScenario()
{
    UO.Version();
    UO.Help();
    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.Version();
        UO.Print(UO.GetUserCodepage());
        return null;
    }
}

コマンドの実装

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

UO.Version() — UO.Version()

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

結果: void / Unit.

呼び出し時:

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

case "version": SystemMessage($"{bridge.RuntimeProductName} v{bridge.RuntimeProductVersion}"); break;
⚠️ **GitHub.com Fallback** ⚠️