Skip to content

JA UO Topic gumps

Codex edited this page Oct 12, 2026 · 4 revisions

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

Gump ウィンドウ

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

サーバー ウィンドウの読み取りと応答の送信: ボタン、チェックボックス、ラジオ ボタン、フィールド。 ID ウィンドウ、serial オーナー、および開いているウィンドウ インデックスは交換できません。

セクション

トピック コマンドと説明
GetGump UO.GetGump
GetGumpInfo UO.GetGumpInfo
Gump ID / Serial UO.GetGumpID · UO.GetGumpSerial
Text Lines UO.GetGumpTextLines · UO.GetGumpFullLines · UO.GetGumpShortLines
Buttons UO.GetGumpButtonsDescription · UO.NumGumpButton
CheckBox UO.NumGumpCheckBox · UO.GumpAutoCheckBox
RadioButton UO.NumGumpRadiobutton · UO.GumpAutoRadiobutton
TextEntry UO.NumGumpTextEntry · UO.GumpAutoTextEntry
WaitGump UO.WaitGump
SelectGump UO.SelectGump
SendGumpSelect UO.SendGumpSelect
Ignore ガンプス UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial ​​· UO.ClearGumpsIgnore
Close Gump UO.IsGumpCanBeClosed · UO.CloseClientGump · UO.CancelGump

すべてのテーマコマンド

ガンプ情報

UO.GetGump · UO.GetGumpID · UO.GetGumpSerial · UO.GetGumpCount · UO.GetGumpsCount · UO.GetGumpInfo · UO.GetGumpButtonsDescription · UO.GetGumpFullLines · UO.GetGumpShortLines · UO.GetGumpTextLines · UO.GumpObject · UO.LastGump · UO.IsGump · UO.GumpExists · UO.IsGumpCanBeClosed

応答

UO.NumGumpButton · UO.NumGumpCheckBox · UO.NumGumpRadiobutton · UO.NumGumpTextEntry · UO.GumpAutoCheckBox · UO.GumpAutoRadiobutton · UO.GumpAutoTextEntry · UO.WaitGump · UO.WaitGumpCheck · UO.WaitGumpEntry · UO.SelectGump · UO.SendGumpSelect · UO.SetGump

Ignore / 閉じる

UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore · UO.CancelGump · UO.CloseClientGump

このトピックに関する例

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

UO.GetGumpInfo

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

var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
    UO.Print("Serial=" + Hex(info[0]));
    UO.Print("GumpID=" + Hex(info[1]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.WaitGump

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

UO.WaitGump(100);
UO.UseObject("0x40001234");

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


UO.AddGumpIgnoreByID

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

C# のシグネチャ

void UO.AddGumpIgnoreByID(object? id);

UO.GetGumpInfo によって使用されるローカル例外リストに数値 ID ガンプを追加します。

引数

  • id は、UO.GetGumpInfo を返す数値 ID ガンプです。

戻り値

void。 ID を追加してもウィンドウは閉じられず、サーバーがウィンドウを処理したことも確認されません。

動作

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

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

簡単な例

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

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

UO.Print("Calling UO.AddGumpIgnoreByID");
UO.AddGumpIgnoreByID(123);

1。 UO.GetGumpInfoの結果からID 123でガンプを解消します。 - 直接スクリプト

引数と実行の流れ:

  • UO.GetGumpInfoの結果からID 123でガンプを解消します。
UO.AddGumpIgnoreByID(123);

2。例外をスローする前に、ID を変数に格納します。 - スクリプト機能

引数と実行の流れ:

  • 例外をスローする前に、ID を変数に格納します。
return  RunScenario();
 object? RunScenario()
{
    var ignoredId = 123;
    UO.AddGumpIgnoreByID(ignoredId);
    return null;
}

3。 ID を追加します。各例外は GetGumpInfo に影響します。 - スクリプトクラス

引数と実行の流れ:

  • ID を追加します。各例外は GetGumpInfo に影響します。
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.AddGumpIgnoreByID(123);
        UO.AddGumpIgnoreByID(456);
        return null;
    }
}

コマンドの実装

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

UO.AddGumpIgnoreByID(id) — UO.AddGumpIgnoreByID(Any)

引数: id (Any)

結果: void / Unit.

呼び出し時:

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

case "addgumpignorebyid": state.IgnoredGumpIds.Add(Arg(0)); return InjectionValue.Unit;

UO.AddGumpIgnoreBySerial

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

C# のシグネチャ

void UO.AddGumpIgnoreBySerial(object? serial);

UO.GetGumpInfo によって使用されるローカル例外リストに serial ガンプを追加します。

引数

  • serial は、UO.GetGumpInfo を返す数値 serial ガンプです。

戻り値

void。 serial を追加してもウィンドウは閉じられず、サーバーがウィンドウを処理したことも確認されません。

動作

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

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

簡単な例

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

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

UO.Print("Calling UO.AddGumpIgnoreBySerial");
UO.AddGumpIgnoreBySerial(1073741824);

1。結果 UO.GetGumpInfo から serial 1073741824 でガンプを除去します。 - 直接スクリプト

引数と実行の流れ:

  • 結果 UO.GetGumpInfo から serial 1073741824 でガンプを除去します。
UO.AddGumpIgnoreBySerial(1073741824);

2。変数からserialを渡します。 - スクリプト機能

引数と実行の流れ:

  • 変数からserialを渡します。
return  RunScenario();
 object? RunScenario()
{
    var ignoredSerial = 1073741824;
    UO.AddGumpIgnoreBySerial(ignoredSerial);
    return null;
}

3。 GetGumpInfo の出力から 2 つの serial ガンプを除去します。 - スクリプトクラス

引数と実行の流れ:

  • GetGumpInfo の出力から 2 つの serial ガンプを除去します。
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.AddGumpIgnoreBySerial(1073741824);
        UO.AddGumpIgnoreBySerial(1073741825);
        return null;
    }
}

コマンドの実装

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

UO.AddGumpIgnoreBySerial(serial) — UO.AddGumpIgnoreBySerial(Any)

引数: serial (Any)

結果: void / Unit.

呼び出し時:

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

case "addgumpignorebyserial": state.IgnoredGumpSerials.Add(Arg(0)); return InjectionValue.Unit;

UO.CancelGump

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

C# のシグネチャ

void UO.CancelGump();
void UO.CancelGump(object? gumpId);

互換性のあるリゾルバー CloseSimpleGump を介して、選択したサーバーガンプを閉じます。

引数

  • gumpId - オプションのint/数値。リゾルバーは、まず一致するサーバー/ローカル serial を検索し、次にサーバーのガンプ インデックスを検索します。引数なしでは、-1 が渡され、最後のガンプが選択されます。

戻り値

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

動作

  • gumpId という名前の引数は、ID のみを検索することを保証しません。サーバーガンプのCloseGumpUnsafeはボタン0を送信し、ローカルウィンドウを削除します。ガンプが見つからない場合、アクションはありません。これはCancelMenu ではなく、保留中の WaitGump をクリアするものでもありません。

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

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

簡単な例

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

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

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

1。最後のガンプを閉じる - 直接スクリプト

引数と実行の流れ:

  • 引数のないフォームでは、利用可能な最新のサーバー ガンプが選択されます。
UO.CancelGump();

2。既知のID - スクリプト関数によってガンプを閉じる

引数と実行の流れ:

  • 最初のガンプの実際の ID が使用されます。リストは通話の間に変更される場合があります。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetGumpID(0);
    if (Truth(id != 0))
    {
        UO.CancelGump(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;

3。明示的な最後のインデックス - スクリプト クラス

引数と実行の流れ:

  • 値 -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()
    {
        UO.CancelGump(-1);
        return null;
    }
}

コマンドの実装

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

UO.CancelGump() — UO.CancelGump()

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

結果: void / Unit.

呼び出し時:

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

case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;

UO.CancelGump(gumpId) — UO.CancelGump(Any)

引数: gumpId (Any)

結果: void / Unit.

呼び出し時:

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

case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;

UO.ClearGumpsIgnore

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

C# のシグネチャ

void UO.ClearGumpsIgnore();

無視されたガンプ ID とガンプ serial ランタイムの両方のセットをクリアします。

引数

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

戻り値

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

動作

  • 窓を閉めません。クリアされると、GetGumpInfo は以前に無視されたガンプのスナップショットを再び返すことができます。

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

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

簡単な例

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

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

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

1。状態のクリア - 直接スクリプト

引数と実行の流れ:

  • 無視されたガンプ ID とガンプ serial ランタイムの両方のセットをクリアします。
UO.ClearGumpsIgnore();

2。セットアップ後にクリア - スクリプト機能

引数と実行の流れ:

  • 追加された無視ルールを削除します。
return  RunScenario();
 object? RunScenario()
{
    UO.AddGumpIgnoreByID(0x1234);
    UO.ClearGumpsIgnore();
    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.ClearGumpsIgnore();
        UO.ClearGumpsIgnore();
        return null;
    }
}

コマンドの実装

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

UO.ClearGumpsIgnore() — UO.ClearGumpsIgnore()

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

結果: void / Unit.

呼び出し時:

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

case "cleargumpsignore":

                    state.IgnoredGumpIds.Clear(); state.IgnoredGumpSerials.Clear(); return InjectionValue.Unit;

UO.CloseClientGump

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

C# のシグネチャ

void UO.CloseClientGump(object? id);

ServerSerial が渡された ID と一致するローカルサーバーのガンプを削除します。

引数

  • id - int/数値 ID は ServerSerial と比較して大きくなります。これはリスト インデックスでも、ローカル serial でもありません。

戻り値

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

動作

  • ServerGumpsUnsafe を繰り返し、すべての一致のスナップショットを作成し、Dispose を呼び出します。 0 ボタンまたはフォームの結果をサーバーに送信しません。一致しない場合は何も変わりません。

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

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

簡単な例

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

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

UO.Print("Calling UO.CloseClientGump");
UO.CloseClientGump(UO.GetGumpID(0));

1。 ID - 直接スクリプトで最初のガンプを閉じる

引数と実行の流れ:

  • GetGumpID はサーバー ID を提供します。 CloseClientGump は、一致するローカル ウィンドウを削除します。
if (Truth(UO.GetGumpsCount() > 0))
{
    var id = UO.GetGumpID(0);
    UO.CloseClientGump(id);
}

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

2。変数からのID - スクリプト関数

引数と実行の流れ:

  • 目的のサーバーガンプのIDを指定します。一致しないものは受け入れられません。
return  RunScenario();
 object? RunScenario()
{
    var id = 0x12345678;
    UO.CloseClientGump(id);
    return null;
}

3。再クローズ - スクリプトクラス

引数と実行の流れ:

  • 通常、最初の Dispose の後、2 回目に閉じるとウィンドウは見つかりません。
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.GetGumpID(0);
        if (Truth(id != 0))
        {
            UO.CloseClientGump(id);
            UO.CloseClientGump(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.CloseClientGump(id) — UO.CloseClientGump(Any)

引数: id (Any)

結果: void / Unit.

呼び出し時:

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

case "closeclientgump": bridge.CloseClientGump(Arg(0)); return InjectionValue.Unit;

UO.GetGump

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

C# のシグネチャ

dynamic UO.GetGump(object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier, object? key);

選択したサーバーガンプの 1 つのフィールドを読み取ります。ウィンドウ セレクターを明示的に設定できます。

引数

  • gumpId - (gumpId,識別子) および (gumpId,識別子,キー) 形式の最初の int はオプションです。 int または数値文字列: 最初に正確に一致する GumpID/serial を検索し、次に 0 のインデックスを検索します。 -1 は、このスクリプトによって選択されたガンプであり、存在しない場合は、現在のリストの最後のガンプです。その他の負の int は 32 ビット ID を保持します。これは、NumGump* の厳密な GumpIndex とは対照的に、セレクターです。
  • identifier - string 大文字と小文字は区別されません。サポートされているすべての値と結果の型は「戻り値」セクションにリストされています。不明な名前は空の文字列を返します。
  • key - オプションの int、デフォルト - 1。ボタン/テキスト/object/コマンドの場合は 0 でインデックス付けします。これはID コントロールではありません。負のインデックスと範囲外の場合、ボタンの場合は 0 、テキスト フィールドの場合は空の文字列になります。他の識別子はキーを使用しません。

戻り値

結果のタイプは識別子によって異なります。 int: buttonlen — 通常のボタンの数。 button — インデックスキーによる ButtonID。 textlen — 使用可能なテキスト要素の数。 injid — 現在のウィンドウ インデックス。返信済み — 0 (回答履歴は保存されません); inclient — 見つかったライブ ウィンドウの場合は 1、存在しない場合は 0。 objectcount — ネストされたコントロールを含むライブ コントロールの数。 string: serial および Gumpid - 16 進文字列 0xXXXXXXXX; text — インデックスキーの要素テキスト。 object — コントロールのタイプ名。コマンド — コントロールの説明 (タイプ、ページ、ID、座標、寸法、サポートされるフィールド)。ウィンドウがない場合、数値識別子は 0 を与え、文字列識別子は空の文字列を与えます。 injid=0 も有効な最初のインデックスです。0 自体はウィンドウが存在しないことを証明しません。これは Array や Pascal TGumpInfo ではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • SelectGump/InfoGump は、現在のランタイムでのみ選択されたウィンドウを指定します。選択したウィンドウが閉じている場合は、現在のリストの最後の項目が使用されますが、これは必ずしも最新の項目であるとは限りません。
  • textlen/text は、サーバー パッケージの元の文字列プールではなく、使用可能なテキスト コントロールを参照します。 object/command は、ライブ コントロールのツリー全体を指します。異なるリストのインデックスを混合することはできません。
  • 各呼び出しは現在の状態を個別に読み取ります。一致する serial、GumpID、およびリストの場合は、GetGumpInfo を使用します。

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

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

簡単な例

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

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

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

1。選択したウィンドウのIDを読み取る - 直接スクリプト

引数と実行の流れ:

  • Gumpid と serial は、すでに 16 進数でフォーマットされた文字列を返します。追加のヘックスは必要ありません。空行は、読み取り時にウィンドウがないことを意味します。
var id = UO.GetGump("gumpid");
var serial = UO.GetGump("serial");
UO.Print(id + " / " + serial);

2。 ButtonID の列挙 - スクリプト関数

引数と実行の流れ:

  • buttonlen — ボタンの数。 i は、0 から count-1 までの行のインデックスです。ボタン - ID は、グラフィックスやインデックスではなく、回答用です。ウィンドウを変更するときは、リストを再読み込みしてください。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGump("buttonlen");
    var i = 0;
    while (Truth(i < count))
    {
        var button = UO.GetGump("button", i);
        UO.Print(Convert.ToString(button));
        i = i + 1;
    }

    return null;
}

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

3。選択後のテキストの読み取り - スクリプト クラス

引数と実行の流れ:

  • 0x12345678 は GumpID/serial の例です。ID を目的の形式に置き換えてください。 key=0 の text は、最初に使用可能なテキスト コントロールを読み取ります。これはボタンとは異なるリストです。
  • SelectGump は、指定されたウィンドウが存在しないことを報告しますが、その後の読み取りはブロックしません。必要に応じて、返された Gumpid を個別に確認してください。
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.SelectGump(0x12345678);
        if (Truth(UO.GetGump("inclient")))
        {
            var count = UO.GetGump("textlen");
            if (Truth(count > 0))
            {
                UO.Print(UO.GetGump("text", 0));
            }
        }

        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.GetGump(identifier) — UO.GetGump(String)

引数: identifier (String)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GetGump(string identifier) => LastGump(identifier, -1);

UO.GetGump(gumpId, identifier) — UO.GetGump(Integer,String)

引数: gumpId (Integer/String), identifier (String/Integer)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GetGump(int gumpId, string identifier) => GetGump(gumpId, identifier, -1);

UO.GetGump(gumpId, identifier) — UO.GetGump(String,Integer)

引数: gumpId (Integer/String), identifier (String/Integer)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GetGump(string identifier, int key) => LastGump(identifier, key);

UO.GetGump(gumpId, identifier, key) — UO.GetGump(Integer,String,Integer)

引数: gumpId (Integer), identifier (String), key (Integer)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GetGump(int gumpId, string identifier, int key)

            => ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key));

UO.GetGumpButtonsDescription

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

C# のシグネチャ

dynamic UO.GetGumpButtonsDescription(object? gumpIndex);

通常のサーバーのガンプ ボタンの説明を返します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

Array - 通常のボタンの説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 各行には、ButtonID、アクション、toPage、およびグラフィックが含まれます。ラジオ ボタンは通常の回答ボタンではありません。
  • SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。

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

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

簡単な例

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

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

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

1。最初の行を読み取る - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpButtonsDescription(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。自動ウィンドウを使用せずにすべての行を走査 - スクリプト関数

引数と実行の流れ:

  • SetSilentMode(1) ​​は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
  • i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpButtonsDescription(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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。最後に開いたサーバー ウィンドウ データの読み取り - スクリプト クラス

引数と実行の流れ:

  • カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpButtonsDescription(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

コマンドの実装

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

UO.GetGumpButtonsDescription(gumpIndex) — UO.GetGumpButtonsDescription(Any)

引数: gumpIndex (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getgumpbuttonsdescription": return GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0)));

UO.GetGumpCount

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

C# のシグネチャ

int UO.GetGumpCount();

短縮版 GetGumpsCount: アクティブなサーバーガンプの数。

引数

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

戻り値

int >= 0 — 最後のウィンドウのインデックスではなく、ウィンドウの数。 0 — リストは空です。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

1。サーバーウィンドウのチェック - 直接スクリプト

引数と実行の流れ:

  • これはサーバーのガンプの数であり、ウィンドウ インデックスではありません。現地のバックパックと地図はここには含まれません。
int count = UO.GetGumpCount();
UO.Print($"Active server gumps: {count}");

2。開いているウィンドウ ID の読み取り - スクリプト関数

引数と実行の流れ:

  • インデックスはゼロから始まります。リストは呼び出しごとに変更される可能性があるため、読み取る前に現在の数量がチェックされます。
return  RunScenario();
 object? RunScenario()
{
    int count = UO.GetGumpCount();
    for (int index = 0; index < count; index++)
    {
        if (index >= UO.GetGumpCount())
            break;
        UO.Print($"Gump {index}: ID={UO.GetGumpID(index)}, serial={UO.GetGumpSerial(index)}");
    }

    return null;
}

3。時間指定ウィンドウを待つ - スクリプトクラス

引数と実行の流れ:

  • 待機はタイムアウトによって制限されます。窓が存在するだけでは、これが必要なガンプであることは証明されません。選択するには、ID にチェックを入れます。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
    }

    async public Task<object?> RunScenarioAsync()
    {
        bool appeared = await WaitForGump(3000);
        UO.Print(appeared ? "A server gump appeared" : "No server gump within the timeout");
        return null;
    }

    async Task<bool> WaitForGump(int timeoutMs)
    {
        var timer = System.Diagnostics.Stopwatch.StartNew();
        while (timer.ElapsedMilliseconds < timeoutMs)
        {
            if (UO.GetGumpCount() > 0)
                return true;
            await WaitAsync(50);
        }

        return false;
    }
}

コマンドの実装

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

UO.GetGumpCount() — UO.GetGumpCount()

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

結果: int / Integer.

呼び出し時:

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

public int GetGumpCount() => bridge.GetGumpCount();

UO.GetGumpFullLines

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

C# のシグネチャ

dynamic UO.GetGumpFullLines(object? gumpIndex);

ネストされたサーバーガンプを含む、すべての生きている要素の説明を返します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

Array - ネストされた要素を含むすべての生きている要素の説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 現在のコントロール ツリーの説明: タイプ、ページ、ID、X/Y、サイズ、サポートされているフィールド。これは生のサーバー マークアップ パッケージではありません。
  • SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。

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

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

簡単な例

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

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

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

1。最初の行を読み取る - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpFullLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。自動ウィンドウを使用せずにすべての行を走査 - スクリプト関数

引数と実行の流れ:

  • SetSilentMode(1) ​​は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
  • i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpFullLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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。最後に開いたサーバー ウィンドウ データの読み取り - スクリプト クラス

引数と実行の流れ:

  • カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpFullLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

コマンドの実装

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

UO.GetGumpFullLines(gumpIndex) — UO.GetGumpFullLines(Any)

引数: gumpIndex (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getgumpfulllines": return GumpLinesResult(bridge.GetGumpFullLines(Arg(0)));

UO.GetGumpID

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

C# のシグネチャ

int UO.GetGumpID(object? gumpIndex);

サーバーの Gump インデックスから GumpID ウィンドウ タイプ ID を読み取ります。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

int — 32 ビットのウィンドウ タイプ識別子 GumpID。 0 は無効なインデックスです (ウィンドウ自体に serial=0 が存在する可能性もあります)。最上位ビットが設定されている場合、int は負になります。表示には Hex(value) を使用します。これは被験者の type やインデックスではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 一致する serial/GumpID ペアの場合、1 つの GetGumpInfo、つまり info[0] フィールドと info[1] フィールドを使用します。

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

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

簡単な例

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

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

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

1。 ID を 16 進数で表示 - 直接スクリプト

引数と実行の流れ:

  • 0 はサーバーリストの最初のインデックスです。 Hex には、負の int のビット表現が格納されます。
var value = UO.GetGumpID(0);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。チェックリスト境界 - スクリプト関数

引数と実行の流れ:

  • 不変リストの場合、カウントは最後のインデックスの後にあるため、missing=0 となります。最後の有効なインデックスは count-1 です。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var missing = UO.GetGumpID(count);
    UO.Print(Hex(missing));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

3。既知の ID - スクリプト クラスによる開いているウィンドウの検索

引数と実行の流れ:

  • 0x999 は ID の例です。これを目的のウィンドウの実際の ID に置き換えます。インデックス、ID、serial の所有者は異なる値です。
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()
    {
        int wantedId = 0x00000999;
        int count = UO.GetGumpsCount();
        for (int index = 0; index < count; index++)
        {
            if (index >= UO.GetGumpsCount())
                break;
            if (UO.GetGumpID(index) == wantedId)
            {
                UO.Print($"Gump index {index}, serial {UO.GetGumpSerial(index)}");
                return index;
            }
        }

        return -1;
        return null;
    }
}

コマンドの実装

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

UO.GetGumpID(gumpIndex) — UO.GetGumpID(Any)

引数: gumpIndex (Any)

結果: int / Integer.

呼び出し時:

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

case "getgumpid": return new InjectionValue(bridge.GetGumpId(Arg(0)));

UO.GetGumpInfo

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

C# のシグネチャ

dynamic UO.GetGumpInfo(object? gumpIndex);

単一サーバーガンプの識別子と要素の一貫したスナップショットを返します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

配列 - 正確に 5 つの要素: [0] int serial; [1] int ガンプID; [2] 空ではないテキストの配列。 [3] 配列 通常のボタンの説明。 [4] 配列 は、ネストされた要素を含む、すべての生きている要素の説明です。このスクリプトによる無効なガンプ、閉じられたガンプ、または無視されたガンプは、空の配列 [] を生成します。最上位ビットのIDは負のintで表されます。空のテキスト配列自体はウィンドウがないことを意味しません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • スナップショット全体が 1 つのゲーム スレッド リクエストでコピーされます。戻った後にウィンドウを変更したり閉じたりしても、保存された配列は変更されません。
  • コントロールの説明には、タイプ、ページ、ID、X/Y、寸法が示されます。ボタンにはさらに、ButtonID、アクション、toPage、graphic が含まれます。スイッチ - ID、チェック済み、非アクティブ/アクティブ。テキストにはスペースと =; を含めることができます。文字列はスペースによって無条件に解析できません。
  • AddGumpIgnoreByID/AddGumpIgnoreBySerial 現在のスクリプトでこの読み取りのみの結果を非表示にします。 ClearGumpsIgnore はこれらのフィルターを削除します。 GetGumpsCountが減りません。

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

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

簡単な例

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

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

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

1。両方の ID を読み取ります - 直接スクリプト

引数と実行の流れ:

  • GumpIndex=0 — 最初のサーバーガンプ。長さチェックにより、欠落しているウィンドウ フィールドへのアクセスが保護されます。
  • info[0] — serial、info[1] — GumpID;両方とも同じ録音に属します。
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
    UO.Print("Serial=" + Hex(info[0]));
    UO.Print("GumpID=" + Hex(info[1]));
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。実際の ButtonID をリストする - スクリプト関数

引数と実行の流れ:

  • info[3] — ボタンの説明の配列。行の ButtonID フィールドは、応答に ID を指定します。 i は単なる行インデックスであり、ButtonID ではありません。
  • ラジオ ボタンはラジオ ボタンであり、通常のボタンのリストではなく、info[4] に表示されます。
return  RunScenario();
 object? RunScenario()
{
    var info = UO.GetGumpInfo(0);
    if (Truth(ArrayLength(info) == 5))
    {
        var buttons = info[3];
        var i = 0;
        while (Truth(i < ArrayLength(buttons)))
        {
            UO.Print(buttons[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。閉じるまでテキストを保存 - スクリプト クラス

引数と実行の流れ:

  • info[2] - テキストのコピー。閉じることは、禁止されていないウィンドウ NoClose に対してのみ許可されます。
  • 閉じても保存されたテキストは消去されません。既存のウィンドウでは空のテキスト配列も使用できます。
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.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var texts = info[2];
            UO.CloseSimpleGump(0);
            if (Truth(ArrayLength(texts) > 0))
            {
                UO.Print(texts[0]);
            }
        }

        return null;
    }

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

コマンドの実装

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

UO.GetGumpInfo(gumpIndex) — UO.GetGumpInfo(Any)

引数: gumpIndex (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getgumpinfo":

                {

                    int index = Arg(0);

                    GumpSnapshot snapshot;

                    if (bridge is IApiGumpAccess reader)

                        snapshot = reader.ReadGump(index);

                    else

                    {

                        int id = bridge.GetGumpId(index);

                        snapshot = id == 0 ? null : new GumpSnapshot(bridge.GetGumpSerial(index), id,

                            bridge.GetGumpTextLines(index), bridge.GetGumpButtonsDescription(index), bridge.GetGumpFullLines(index));

                    }

                    if (snapshot == null || state.IgnoredGumpIds.Contains(snapshot.Id)

                        || state.IgnoredGumpSerials.Contains(snapshot.Serial))

                        return new InjectionValue(Array.Empty<InjectionValue>());

                    return new InjectionValue(new[]

                    {

                        new InjectionValue(snapshot.Serial), new InjectionValue(snapshot.Id), StringArray(snapshot.Text),

                        StringArray(snapshot.Buttons), StringArray(snapshot.Controls)

                    });

                }

UO.GetGumpSerial

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

C# のシグネチャ

int UO.GetGumpSerial(object? gumpIndex);

サーバーガンプインデックスによってserial​​インスタンス/ウィンドウ所有者を読み取ります。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

int は、ウィンドウ インスタンス/所有者の 32 ビット serial です。 0 は無効なインデックスです (ウィンドウ自体に serial=0 が存在する可能性もあります)。最上位ビットが設定されている場合、int は負になります。表示には Hex(値) を使用します。これは主題の type ではなく、インデックスでもありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 一致する serial/GumpID ペアの場合、1 つの GetGumpInfo、つまり info[0] フィールドと info[1] フィールドを使用します。

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

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

簡単な例

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

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

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

1。 ID を 16 進数で表示 - 直接スクリプト

引数と実行の流れ:

  • 0 はサーバーリストの最初のインデックスです。 Hex には、負の int のビット表現が格納されます。
var value = UO.GetGumpSerial(0);
UO.Print(Hex(value));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。チェックリスト境界 - スクリプト関数

引数と実行の流れ:

  • 不変リストの場合、カウントは最後のインデックスの後にあるため、missing=0 となります。最後の有効なインデックスは count-1 です。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var missing = UO.GetGumpSerial(count);
    UO.Print(Hex(missing));
    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

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()
    {
        int count = UO.GetGumpsCount();
        for (int index = 0; index < count; index++)
        {
            if (index >= UO.GetGumpsCount())
                break;
            int serial = UO.GetGumpSerial(index);
            UO.Print($"Window {index}: serial={UO.Int2Hex(serial)}, ID={UO.GetGumpID(index)}");
        }

        return null;
    }
}

コマンドの実装

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

UO.GetGumpSerial(gumpIndex) — UO.GetGumpSerial(Any)

引数: gumpIndex (Any)

結果: int / Integer.

呼び出し時:

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

case "getgumpserial": return new InjectionValue(bridge.GetGumpSerial(Arg(0)));

UO.GetGumpShortLines

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

C# のシグネチャ

dynamic UO.GetGumpShortLines(object? gumpIndex);

サーバーガンプのテキスト要素とボタンの説明を返します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

Array - テキスト要素とボタンの説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 短いリストには、テキストやボタン タイプのない装飾は除外されます。ラジオボタンが含まれます。
  • SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。

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

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

簡単な例

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

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

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

1。最初の行を読み取る - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpShortLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。自動ウィンドウを使用せずにすべての行を走査 - スクリプト関数

引数と実行の流れ:

  • SetSilentMode(1) ​​は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
  • i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpShortLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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。最後に開いたサーバー ウィンドウ データの読み取り - スクリプト クラス

引数と実行の流れ:

  • カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpShortLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

コマンドの実装

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

UO.GetGumpShortLines(gumpIndex) — UO.GetGumpShortLines(Any)

引数: gumpIndex (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getgumpshortlines": return GumpLinesResult(bridge.GetGumpShortLines(Arg(0)));

UO.GetGumpTextLines

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

C# のシグネチャ

dynamic UO.GetGumpTextLines(object? gumpIndex);

ラベル、HTML、入力フィールド、およびサーバー ガンプ スイッチのラベル​​の空でないテキストを返します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

Array — ラベル、HTML、入力フィールド、スイッチ ラベルの空でないテキスト。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID 制御ではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • テキストのみ。 ButtonID、寸法、構造は含まれません。余計なものは印刷しません。
  • GetGumpTextLines はテキストウィンドウを開きません。

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

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

簡単な例

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

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

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

1。最初の行を読み取る - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpTextLines(0);
if (Truth(ArrayLength(lines) > 0))
{
    UO.Print(lines[0]);
}

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;

2。自動ウィンドウを使用せずにすべての行を走査 - スクリプト関数

引数と実行の流れ:

  • SetSilentMode(1) ​​は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
  • i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(1);
    var lines = UO.GetGumpTextLines(0);
    var i = 0;
    while (Truth(i < ArrayLength(lines)))
    {
        UO.Print(lines[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。最後に開いたサーバー ウィンドウ データの読み取り - スクリプト クラス

引数と実行の流れ:

  • カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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()
    {
        int count = UO.GetGumpsCount();
        if (count == 0)
            return null;
        int index = count - 1;
        var lines = UO.GetGumpTextLines(index);
        foreach (object? line in (object? [])lines)
            UO.Print(Convert.ToString(line) ?? "");
        return null;
    }
}

コマンドの実装

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

UO.GetGumpTextLines(gumpIndex) — UO.GetGumpTextLines(Any)

引数: gumpIndex (Any)

結果: dynamic / Array.

呼び出し時:

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

case "getgumptextlines": return StringArray(bridge.GetGumpTextLines(Arg(0)));

UO.GetGumpsCount

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

C# のシグネチャ

int UO.GetGumpsCount();

アクティブなサーバーのガンプの数を返します。

引数

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

戻り値

int >= 0 — 最後のウィンドウのインデックスではなく、ウィンドウの数。 0 — リストは空です。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

1。 Windows のチェック - 直接スクリプト

引数と実行の流れ:

  • 引数はありません。 count=0 は、現在のリストにサーバー ウィンドウがないことを意味します。
var count = UO.GetGumpsCount();
if (Truth(count == 0))
{
    UO.Print("No server gumps");
}

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

2。リスト ID - スクリプト関数

引数と実行の流れ:

  • i は 0 のインデックスです。結果の ID は、リスト内の位置ではなくウィンドウのタイプを識別します。
  • ウォーク中にウィンドウが変更された場合、リストを再度読み取る必要があります。 count はインターフェイスをブロックしません。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.GetGumpsCount();
    var i = 0;
    while (Truth(i < count))
    {
        UO.Print(Hex(UO.GetGumpID(i)));
        i = i + 1;
    }

    return null;
}

string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3。リストの最後の要素を読み取る - スクリプトクラス

引数と実行の流れ:

  • count-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()
    {
        var count = UO.GetGumpsCount();
        if (Truth(count > 0))
        {
            var info = UO.GetGumpInfo(count - 1);
            UO.Print(ArrayLength(info));
        }

        return null;
    }

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

コマンドの実装

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

UO.GetGumpsCount() — UO.GetGumpsCount()

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

結果: int / Integer.

呼び出し時:

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

case "getgumpscount": return new InjectionValue(bridge.GetGumpCount());

UO.GumpAutoCheckBox

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

C# のシグネチャ

void UO.GumpAutoCheckBox(object? checkBoxID, object? value);

最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。

引数

  • checkBoxID - int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。
  • value - int - 1 有効、0 無効。ゼロ以外の数値には次のものも含まれます。 0/1 が推奨されます。ラジオ ボタンを選択すると、そのグループの隣接するラジオ ボタンの選択が解除されます。

戻り値

void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。

動作

  • 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
  • すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
  • プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.GumpAutoCheckBox");
UO.GumpAutoCheckBox(33, 1);

1。即時入力 - 直接スクリプト

引数と実行の流れ:

  • 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoCheckBox(33, 1);

2。 Fill Before Open - Script Function

引数と実行の流れ:

  • 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoCheckBox(33, 1);
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。保留中の値の置換 - スクリプト クラス

引数と実行の流れ:

  • どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoCheckBox(33, 1);
        UO.GumpAutoCheckBox(33, 0);
        return null;
    }
}

コマンドの実装

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

UO.GumpAutoCheckBox(checkBoxID, value) — UO.GumpAutoCheckBox(Any,Any)

引数: checkBoxID (Any), value (Any)

結果: void / Unit.

呼び出し時:

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

case "gumpautocheckbox": QueueGumpControl("checkbox", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpAutoRadiobutton

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

C# のシグネチャ

void UO.GumpAutoRadiobutton(object? radiobuttonID, object? value);

最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。

引数

  • radiobuttonID - int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。
  • value - int - 1 有効、0 無効。ゼロ以外の数値には次のものも含まれます。 0/1 が推奨されます。ラジオ ボタンを選択すると、そのグループの隣接するラジオ ボタンの選択が解除されます。

戻り値

void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。

動作

  • 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
  • すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
  • プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.GumpAutoRadiobutton");
UO.GumpAutoRadiobutton(33, 1);

1。即時入力 - 直接スクリプト

引数と実行の流れ:

  • 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoRadiobutton(33, 1);

2。 Fill Before Open - Script Function

引数と実行の流れ:

  • 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoRadiobutton(33, 1);
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。保留中の値の置換 - スクリプト クラス

引数と実行の流れ:

  • どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoRadiobutton(33, 1);
        UO.GumpAutoRadiobutton(33, 0);
        return null;
    }
}

コマンドの実装

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

UO.GumpAutoRadiobutton(radiobuttonID, value) — UO.GumpAutoRadiobutton(Any,Any)

引数: radiobuttonID (Any), value (Any)

結果: void / Unit.

呼び出し時:

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

case "gumpautoradiobutton": QueueGumpControl("radio", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpAutoTextEntry

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

C# のシグネチャ

void UO.GumpAutoTextEntry(object? textEntryID, object? value);

最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。

引数

  • textEntryID - int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。
  • value - string - クリア用の空行を含むフィールドテキスト。フィールド自体の長さと許可される文字に関する制限は維持されます。

戻り値

void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。

動作

  • 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
  • すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
  • プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。
  • フィールドによって制限されたテキストは、短縮または拒否される可能性があります。見つかった要素は依然として 1 回限りのアクションを消費します。このコマンドはボタン応答を送信せず、サーバーを待ちません。確認するには、GetGumpInfo/NumGumpTextEntryを使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.GumpAutoTextEntry");
UO.GumpAutoTextEntry(33, "500");

1。即時入力 - 直接スクリプト

引数と実行の流れ:

  • 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoTextEntry(33, "500");

2。 Fill Before Open - Script Function

引数と実行の流れ:

  • 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return  RunScenario();
 object? RunScenario()
{
    UO.GumpAutoTextEntry(33, "500");
    UO.WaitGump(100);
    UO.UseObject("0x40001234");
    return null;
}

3。保留中の値の置換 - スクリプト クラス

引数と実行の流れ:

  • どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoTextEntry(33, "500");
        UO.GumpAutoTextEntry(33, "");
        return null;
    }
}

コマンドの実装

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

UO.GumpAutoTextEntry(textEntryID, value) — UO.GumpAutoTextEntry(Any,Any)

引数: textEntryID (Any), value (Any)

結果: void / Unit.

呼び出し時:

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

case "gumpautotextentry": QueueGumpControl("textentry", Arg(0), Text(1)); return InjectionValue.Unit;

UO.GumpExists

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

C# のシグネチャ

int UO.GumpExists(object? id);
int UO.GumpExists(object? firstId, object? secondId);

1 つのセレクターまたは正確なペア serial/GumpID を使用して、サーバー Gump の存在を確認します。

引数

  • id — 1 つの引数形式: 数値 serial、GumpID、または 0 のインデックス。 -1 はここで最後のガンプを選択しません。
  • firstId — 2 つの引数形式: 数値 32 ビット serial (最上位ビットの負の int を含む)。
  • secondId — 2 つの引数形式: 正確な 32 ビット GumpID。 0 はワイルドカードではなく正確な数値です。 -1 のみ、serial/GumpID/index として firstId の 1 引数のチェックに戻ります。

戻り値

int - 1、対応するウィンドウが現在存在する場合。それ以外の場合は、0。インデックス、serial、または一致の数は返されません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • このチェックではウィンドウの選択や予約は行われません。ペア ID は全体としてチェックされます。最上位ビットを含むID はフィルターを無効にしません。

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

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

簡単な例

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

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

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

1。既知の ID をチェック - 直接スクリプト

引数と実行の流れ:

  • 0x87654321 — 目的の GumpID または serial。 1 つの引数は、これらのスペース ID を区別しません。
var exists = UO.GumpExists(0x87654321);
UO.Print(Convert.ToString(exists));

2。正確なペアの確認 - スクリプト関数

引数と実行の流れ:

  • 最初の番号は serial、2 番目の番号は GumpID です。符号付き int では両方とも負ですが、比較ではすべての 32 ビットが保持されます。
return  RunScenario();
 object? RunScenario()
{
    var exists = UO.GumpExists(0x87654321, 0x98765432);
    if (Truth(exists))
    {
        UO.Print("Matching pair exists");
    }

    return null;
}

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

3。保存された識別子の確認 - スクリプト クラス

引数と実行の流れ:

  • info[0]/info[1]は同じ画像に属します。存在 = 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()
    {
        var info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var exists = UO.GumpExists(info[0], info[1]);
            UO.Print(Convert.ToString(exists));
        }

        return null;
    }

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

コマンドの実装

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

UO.GumpExists(id) — UO.GumpExists(Any)

引数: id (Any)

結果: int / Integer.

呼び出し時:

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

public int GumpExists(InjectionValue id) => bridge.GumpExists(NumberConversions.ToInt(id), -1);

UO.GumpExists(firstId, secondId) — UO.GumpExists(Any,Any)

引数: firstId (Any), secondId (Any)

結果: int / Integer.

呼び出し時:

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

public int GumpExists(InjectionValue firstId, InjectionValue secondId)

            => bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId));

UO.GumpObject

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

C# のシグネチャ

void UO.GumpObject(object? gumpId);

後続の呼び出しのために既存のサーバー ガンプを選択します。

引数

  • gumpId - int: 最初に LocalSerial または ServerSerial に一致し、次に現在のガンプス リストのインデックス 0 に一致します。これらはIDボタンではありません。

戻り値

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

動作

  • Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
  • Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.GumpObject");
UO.GumpObject(0);

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

引数と実行の流れ:

  • 後続の呼び出しのために既存のサーバー ガンプを選択します。
if (Truth(UO.GumpExists(0)))
{
    UO.GumpObject(0);
}

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

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

引数と実行の流れ:

  • Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var serial = UO.GetGumpSerial(0);
        UO.GumpObject(serial);
    }

    return null;
}

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

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

引数と実行の流れ:

  • Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.GumpObject(0);
            UO.Print(UO.LastGump("gumpid"));
        }

        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.GumpObject(gumpId) — UO.GumpObject(Any)

引数: gumpId (Any)

結果: void / Unit.

呼び出し時:

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

case "gumpobject": bridge.SelectGump(Arg(0)); break;

UO.IsGump

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

C# のシグネチャ

int UO.IsGump();

少なくとも 1 つのアクティブなサーバー ガンプがあるかどうかを確認します。

引数

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

戻り値

int — 1、リストが空でない場合。空の場合は0。これは、ウィンドウの数ではなく、空き状況を示すものです。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

1。条件付き読み取り - 直接スクリプト

引数と実行の流れ:

  • 引数はありません。 GetGumpInfo(0) ​​は最初の要素を読み取り、ウィンドウがすでに閉じられている場合は空の配列を返す場合があります。
if (Truth(UO.IsGump()))
{
    var info = UO.GetGumpInfo(0);
    UO.Print(ArrayLength(info));
}

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;

2。量と存在を区別する - スクリプト関数

引数と実行の流れ:

  • 3 つの安定ウィンドウが存在する場合=1、カウント=3。
return  RunScenario();
 object? RunScenario()
{
    var present = UO.IsGump();
    var count = UO.GetGumpsCount();
    UO.Print(Convert.ToString(present) + "/" + Convert.ToString(count));
    return null;
}

3。制限付き待機 - スクリプト クラス

引数と実行の流れ:

  • 約 3000 ミリ秒以内に待機し、50 ミリ秒ごとに確認してください。最後のプレゼントは待った後の状態を示しています。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var started = Now();
        while (Truth(UO.IsGump() == 0) && Truth(Now() - started < 3000))
        {
            await Delay(50);
        }

        var present = UO.IsGump();
        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}

コマンドの実装

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

UO.IsGump() — UO.IsGump()

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

結果: int / Integer.

呼び出し時:

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

case "isgump": return new InjectionValue(bridge.GetGumpCount() > 0 ? 1 : 0);

UO.IsGumpCanBeClosed

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

C# のシグネチャ

int UO.IsGumpCanBeClosed(object? gumpIndex);

サーバーガンプをローカルで右クリックして閉じることが許可されているかどうかを確認します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。

戻り値

int — 1、ウィンドウが存在し、CanCloseWithRightClick が有効な場合。それ以外の場合は、0。これは、閉じたり [キャンセル] ボタンが存在したりした結果ではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • NoClose は CloseSimpleGump を禁止します。 ButtonID をサーバーに送信する機能は別のアクションです。

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

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

簡単な例

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

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

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

1。条件付きクローズ - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。検証と閉鎖は別の課題です。インデックスはそれらの間で変わる可能性があります。
if (Truth(UO.IsGumpCanBeClosed(0)))
{
    UO.CloseSimpleGump(0);
}

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

2。表示 閉じる 無効 - スクリプト関数

引数と実行の流れ:

  • 既存のウィンドウの closeable=0 は、ウィンドウが存在しないことを意味するのではなく、ウィンドウを閉じることができないことを意味します。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var closable = UO.IsGumpCanBeClosed(0);
        UO.Print(Convert.ToString(closable));
    }

    return null;
}

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

3。無効なインデックス - スクリプト クラス

引数と実行の流れ:

  • -1 はこのインデックス コマンドには無効であり、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 result = UO.IsGumpCanBeClosed(-1);
        UO.Print(Convert.ToString(result));
        return null;
    }
}

コマンドの実装

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

UO.IsGumpCanBeClosed(gumpIndex) — UO.IsGumpCanBeClosed(Any)

引数: gumpIndex (Any)

結果: int / Integer.

呼び出し時:

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

case "isgumpcanbeclosed": return new InjectionValue(bridge.IsGumpCanBeClosed(Arg(0)));

UO.LastGump

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

C# のシグネチャ

dynamic UO.LastGump(object? identifier);
dynamic UO.LastGump(object? identifier, object? key);

選択したサーバーガンプの 1 つのフィールドを読み取ります。このスクリプトによって選択されたウィンドウ、または現在のリストの最後の要素を使用します。

引数

  • identifier - string 大文字と小文字は区別されません。サポートされているすべての値と結果の型は「戻り値」セクションにリストされています。不明な名前は空の文字列を返します。
  • key - オプションの int、デフォルト - 1。ボタン/テキスト/object/コマンドの場合は 0 でインデックス付けします。これはID コントロールではありません。負のインデックスと範囲外の場合、ボタンの場合は 0 、テキスト フィールドの場合は空の文字列になります。他の識別子はキーを使用しません。

戻り値

結果のタイプは識別子によって異なります。 int: buttonlen — 通常のボタンの数。 button — インデックスキーによる ButtonID。 textlen — 使用可能なテキスト要素の数。 injid — 現在のウィンドウ インデックス。返信済み — 0 (回答履歴は保存されません); inclient — 見つかったライブ ウィンドウの場合は 1、存在しない場合は 0。 objectcount — ネストされたコントロールを含むライブ コントロールの数。 string: serial および Gumpid - 16 進文字列 0xXXXXXXXX; text — インデックスキーの要素テキスト。 object — コントロールのタイプ名。コマンド — コントロールの説明 (タイプ、ページ、ID、座標、寸法、サポートされるフィールド)。ウィンドウがない場合、数値識別子は 0 を与え、文字列識別子は空の文字列を与えます。 injid=0 も有効な最初のインデックスです。0 自体はウィンドウが存在しないことを証明しません。これは Array や Pascal TGumpInfo ではありません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • SelectGump/InfoGump は、現在のランタイムでのみ選択されたウィンドウを指定します。選択したウィンドウが閉じている場合は、現在のリストの最後の項目が使用されますが、これは必ずしも最新の項目であるとは限りません。
  • textlen/text は、サーバー パッケージの元の文字列プールではなく、使用可能なテキスト コントロールを参照します。 object/command は、ライブ コントロールのツリー全体を指します。異なるリストのインデックスを混合することはできません。
  • 各呼び出しは現在の状態を個別に読み取ります。一致する serial、GumpID、およびリストの場合は、GetGumpInfo を使用します。

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

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

簡単な例

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

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

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

1。選択したウィンドウのIDを読み取る - 直接スクリプト

引数と実行の流れ:

  • Gumpid と serial は、すでに 16 進数でフォーマットされた文字列を返します。追加のヘックスは必要ありません。空行は、読み取り時にウィンドウがないことを意味します。
var id = UO.LastGump("gumpid");
var serial = UO.LastGump("serial");
UO.Print(id + " / " + serial);

2。 ButtonID の列挙 - スクリプト関数

引数と実行の流れ:

  • buttonlen — ボタンの数。 i は、0 から count-1 までの行のインデックスです。ボタン - ID は、グラフィックスやインデックスではなく、回答用です。ウィンドウを変更するときは、リストを再読み込みしてください。
return  RunScenario();
 object? RunScenario()
{
    var count = UO.LastGump("buttonlen");
    var i = 0;
    while (Truth(i < count))
    {
        var button = UO.LastGump("button", i);
        UO.Print(Convert.ToString(button));
        i = i + 1;
    }

    return null;
}

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

3。選択後のテキストの読み取り - スクリプト クラス

引数と実行の流れ:

  • 0x12345678 は GumpID/serial の例です。ID を目的の形式に置き換えてください。 key=0 の text は、最初に使用可能なテキスト コントロールを読み取ります。これはボタンとは異なるリストです。
  • SelectGump は、指定されたウィンドウが存在しないことを報告しますが、その後の読み取りはブロックしません。必要に応じて、返された Gumpid を個別に確認してください。
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.SelectGump(0x12345678);
        if (Truth(UO.LastGump("inclient")))
        {
            var count = UO.LastGump("textlen");
            if (Truth(count > 0))
            {
                UO.Print(UO.LastGump("text", 0));
            }
        }

        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.LastGump(identifier) — UO.LastGump(String)

引数: identifier (String)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue LastGump(string identifier) => LastGump(identifier, -1);

UO.LastGump(identifier, key) — UO.LastGump(String,Integer)

引数: identifier (String), key (Integer)

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue LastGump(string identifier, int key) => ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key));

UO.NumGumpButton

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

C# のシグネチャ

int UO.NumGumpButton(object? gumpIndex, object? value);

厳密なウィンドウ インデックスと正確な ButtonID に基づいて、既存のサーバーのガンプ ボタンをアクティブにします。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
  • value - int - 通常のボタンの説明からの ButtonID。行番号でも、graphic ボタンでも、GumpID でもありません。

戻り値

int (bool) - 1、ウィンドウとボタンが見つかり、ローカルアクションが実行された場合。ウィンドウ/ボタンがない場合は、0。ページを変更すると、1 も返されます。サーバー処理の確認ではありません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • SwitchPage ボタンはローカルでページを切り替えます。 「アクティブ化」ボタンを押すとガンプ応答が発生します。通常は窓が閉まります。 SendGumpSelect とは異なり、このコマンドにはコントロール ツリー内の既存の ButtonID が必要です。

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

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

簡単な例

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

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

var result = UO.NumGumpButton(0, 77);
UO.Print("NumGumpButton: " + Convert.ToString(result));

1。よく知られているボタンを押す - ダイレクト スクリプト

引数と実行の流れ:

  • 0 はウィンドウインデックス、77 はインスペクタからの ButtonID の例です。フォームには実際の ID が必要です。
var ok = UO.NumGumpButton(0, 77);
if (Truth(ok == 0))
{
    UO.Print("Button not found");
}

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

2。最初にウィンドウの種類を確認 - スクリプト関数

引数と実行の流れ:

  • 0x12345678 は予期される GumpID、100 は ButtonID です。これら 2 つの数字は、異なるスペース ID に属します。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpID(0) == 0x12345678))
    {
        var ok = UO.NumGumpButton(0, 100);
    }

    return null;
}

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

3。ボタンの前のチェックボックスを変更 - スクリプトクラス

引数と実行の流れ:

  • 33 - ID チェックボックス、1 - 有効、100 - ID ボタン。チェックボックスの状態は、[アクティブ化] ボタンの応答にのみ含まれます。
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()
    {
        if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
        {
            var ok = UO.NumGumpButton(0, 100);
        }

        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.NumGumpButton(gumpIndex, value) — UO.NumGumpButton(Any,Any)

引数: gumpIndex (Any), value (Any)

結果: int / Integer.

呼び出し時:

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

case "numgumpbutton": return (bridge is IApiGumpAccess buttons

                    ? buttons.ActivateGumpButtonAtIndex(Arg(0), Arg(1)) : bridge.ActivateGumpButton(Arg(0), Arg(1))) != 0 ? InjectionValue.True : InjectionValue.False;

UO.NumGumpCheckBox

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

C# のシグネチャ

int UO.NumGumpCheckBox(object? gumpIndex, object? cbid, object? value);

サーバーガンプ内のフラグの状態をインデックスによって設定します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
  • cbid - int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。
  • value — int — 1 有効/選択、0 無効。ゼロ以外の数値、true およびチェックされた値も認識されます。 0 と 1 が推奨されます。

戻り値

int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
  • ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。

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

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

簡単な例

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

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

var result = UO.NumGumpCheckBox(0, 33, 1);
UO.Print("NumGumpCheckBox: " + Convert.ToString(result));

1。値を設定して結果を確認する - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 33 — 正確な CBID; 1 - 新しい値。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpCheckBox(0, 33, 1);
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

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

2。値のクリア - スクリプト関数

引数と実行の流れ:

  • 0 はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpCheckBox(0, 33, 0);
    UO.Print(Convert.ToString(ok));
    return null;
}

3。返信前に入力 - スクリプト クラス

引数と実行の流れ:

  • 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
  • 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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()
    {
        if (Truth(UO.NumGumpCheckBox(0, 33, 1)))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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.NumGumpCheckBox(gumpIndex, cbid, value) — UO.NumGumpCheckBox(Any,Any,Any)

引数: gumpIndex (Any), cbid (Any), value (Any)

結果: int / Integer.

呼び出し時:

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

case "numgumpcheckbox": return SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2));

UO.NumGumpRadiobutton

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

C# のシグネチャ

int UO.NumGumpRadiobutton(object? gumpIndex, object? radiobuttonID, object? value);

サーバーガンプのラジオボタンの状態をインデックスによって設定します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
  • radiobuttonID - int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。
  • value — int — 1 有効/選択、0 無効。ゼロ以外の数値、true およびチェックされた値も認識されます。 0 と 1 が推奨されます。

戻り値

int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
  • ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。

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

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

簡単な例

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

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

var result = UO.NumGumpRadiobutton(0, 33, 1);
UO.Print("NumGumpRadiobutton: " + Convert.ToString(result));

1。値を設定して結果を確認する - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 33 — 正確な RadiobuttonID。 1 - 新しい値。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpRadiobutton(0, 33, 1);
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

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

2。値のクリア - スクリプト関数

引数と実行の流れ:

  • 0 はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpRadiobutton(0, 33, 0);
    UO.Print(Convert.ToString(ok));
    return null;
}

3。返信前に入力 - スクリプト クラス

引数と実行の流れ:

  • 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
  • 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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()
    {
        if (Truth(UO.NumGumpRadiobutton(0, 33, 1)))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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.NumGumpRadiobutton(gumpIndex, radiobuttonID, value) — UO.NumGumpRadiobutton(Any,Any,Any)

引数: gumpIndex (Any), radiobuttonID (Any), value (Any)

結果: int / Integer.

呼び出し時:

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

case "numgumpradiobutton": return SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2));

UO.NumGumpTextEntry

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

C# のシグネチャ

int UO.NumGumpTextEntry(object? gumpIndex, object? textEntryID, object? value);

サーバーガンプの入力フィールドのテキストをインデックスによって設定します。

引数

  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
  • textEntryID - int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。
  • value - string - 新しいテキスト。空の文字列を指定するとフィールドがクリアされます。フィールド自体の長さ/文字制限は維持されます。

戻り値

int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
  • ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。

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

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

簡単な例

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

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

var result = UO.NumGumpTextEntry(0, 33, "500");
UO.Print("NumGumpTextEntry: " + Convert.ToString(result));

1。値を設定して結果を確認する - 直接スクリプト

引数と実行の流れ:

  • 0 — ウィンドウインデックス。 33 — 正確な TextEntryID; 「500」は新しい値です。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpTextEntry(0, 33, "500");
if (Truth(ok == 0))
{
    UO.Print("Control missing or value rejected");
}

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

2。値のクリア - スクリプト関数

引数と実行の流れ:

  • '' はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return  RunScenario();
 object? RunScenario()
{
    var ok = UO.NumGumpTextEntry(0, 33, "");
    UO.Print(Convert.ToString(ok));
    return null;
}

3。返信前に入力 - スクリプト クラス

引数と実行の流れ:

  • 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
  • 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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()
    {
        if (Truth(UO.NumGumpTextEntry(0, 33, "500")))
        {
            var sent = UO.SendGumpSelect(0, 100);
            UO.Print(Convert.ToString(sent));
        }

        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.NumGumpTextEntry(gumpIndex, textEntryID, value) — UO.NumGumpTextEntry(Any,Any,Any)

引数: gumpIndex (Any), textEntryID (Any), value (Any)

結果: int / Integer.

呼び出し時:

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

case "numgumptextentry": return SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2));

UO.SelectGump

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

C# のシグネチャ

void UO.SelectGump(object? id);

後続の呼び出しのために既存のサーバー ガンプを選択します。

引数

  • id - int: 最初に LocalSerial または ServerSerial に一致し、次に現在のガンプス リストのインデックス 0 に一致します。これらはIDボタンではありません。

戻り値

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

動作

  • Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
  • Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.SelectGump");
UO.SelectGump(0);

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

引数と実行の流れ:

  • 後続の呼び出しのために既存のサーバー ガンプを選択します。
if (Truth(UO.GumpExists(0)))
{
    UO.SelectGump(0);
}

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

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

引数と実行の流れ:

  • Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        var serial = UO.GetGumpSerial(0);
        UO.SelectGump(serial);
    }

    return null;
}

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

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

引数と実行の流れ:

  • Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.SelectGump(0);
            UO.Print(UO.LastGump("gumpid"));
        }

        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.SelectGump(id) — UO.SelectGump(Any)

引数: id (Any)

結果: void / Unit.

呼び出し時:

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

public void SelectGump(InjectionValue id) => bridge.SelectGump(NumberConversions.ToInt(id));

UO.SendGumpSelect

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

C# のシグネチャ

int UO.SendGumpSelect(object? triggerId);
int UO.SendGumpSelect(object? gumpIndex, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId, object? timeout);

選択したサーバー ガンプの ButtonID を送信します。

引数

  • triggerId - int または数値文字列 - サーバーの ButtonID。 0 は通常、クローズ/失敗を意味しますが、正確なアクションはサーバーによって決定されます。ツリー内に表示される ButtonID は必要ありません。
  • gumpIndex — 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 2 つの引数形式 (gumpIndex、triggerId) でのみ使用されます。
  • serial — 3/4 引数形式では、数値 32 ビット serial。 0 または -1 はフィルター serial を無効にします。最上位ビットを持つ負の数値を含む残りの数値は正確に比較されます。
  • gumpId — 3/4 引数形式では、数値の 32 ビット GumpID。 0 または -1 は、GumpID フィルターを無効にします。 16 進文字列が許可されます。名前 AddObject はここでは許可されません。
  • timeout — オプションの 4 番目の引数。一致する ID ペアを待機する int ミリ秒。デフォルトでは、0 は即時試行 1 回です。マイナスは0に限定されます。再チェック間隔 20 ミリ秒。

戻り値

int — 1、ライブサーバーガンプが見つかり、応答が呼び出された場合。タイムアウトが経過する前にウィンドウが見つからなかった場合は、0。選択された ID を返さず、サーバーによる結果の確認を待ちません。

動作

  • アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
  • 1 つの引数は、このスクリプトによって以前に選択されたガンプを選択します。閉じられている/選択されていない場合 - 現在のリストの最後の要素。 2 つの引数は厳密なインデックスを指定します。 3/4 - フィルター付きの ID のペア。
  • 応答の選択と呼び出しは、1 つのゲーム スレッド リクエストで発生します。待機はプロシージャを停止することでキャンセルされます。サーバーの直接応答とページ変更を混同しないでください。SwitchPage ボタンには NumGumpButton が必要です。

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

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

簡単な例

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

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

var result = UO.SendGumpSelect(100);
UO.Print("SendGumpSelect: " + Convert.ToString(result));

1。選択したウィンドウに返信 - 直接スクリプト

引数と実行の流れ:

  • SelectGump はタイプを選択します/serial 0x12345678 または不在を報告します。 100 - ボタンID。
  • 選択したウィンドウがなくなった場合、1 引数のフォームは最後に使用可能なウィンドウを使用します。厳密な識別を行うには、2 つの ID を含むフォームを使用してください。
UO.SelectGump(0x12345678);
var sent = UO.SendGumpSelect(100);
UO.Print(Convert.ToString(sent));

2。最初のリスト項目に返信 - スクリプト関数

引数と実行の流れ:

  • 0 はインデックス、100 は ButtonID です。 serial=0 ではありませんし、GumpID=100 でもありません。
return  RunScenario();
 object? RunScenario()
{
    var sent = UO.SendGumpSelect(0, 100);
    if (Truth(sent == 0))
    {
        UO.Print("No gump at index zero");
    }

    return null;
}

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

3。スナップショットからウィンドウに具体的に応答する - スクリプト クラス

引数と実行の流れ:

  • info[0] - serial、info[1] - GumpID、100 - ButtonID。インデックスを変更しても、応答は別のタイプ/所有者にリダイレクトされません。
  • シリアル/GumpID 値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()
    {
        var info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            var sent = UO.SendGumpSelect(info[0], info[1], 100);
        }

        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;
}

4。特定のタイプ - 直接スクリプトが必要です

引数と実行の流れ:

  • 0 はフィルタ serial を無効にします。 0x87654321 — 最上位ビットを含む正確な ID。 100 — ボタン; 2000 — 最大待機時間 (ミリ秒)。無条件のワイルドカードとしては使用されません。
var sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000);
UO.Print(Convert.ToString(sent));

コマンドの実装

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

UO.SendGumpSelect(triggerId) — UO.SendGumpSelect(Integer)

引数: triggerId (Integer/String)

結果: int / Integer.

呼び出し時:

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

public int SendGumpSelect(int triggerId) => bridge.SendGumpSelect(triggerId);

UO.SendGumpSelect(triggerId) — UO.SendGumpSelect(String)

引数: triggerId (Integer/String)

結果: int / Integer.

呼び出し時:

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

public int SendGumpSelect(string triggerId) => SendGumpSelect(NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(gumpIndex, triggerId) — UO.SendGumpSelect(Any,Any)

引数: gumpIndex (Any), triggerId (Any)

結果: int / Integer.

呼び出し時:

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

public int SendGumpSelect(InjectionValue gumpIndex, InjectionValue triggerId)

            => bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(serial, gumpId, triggerId) — UO.SendGumpSelect(Any,Any,Any)

引数: serial (Any), gumpId (Any), triggerId (Any)

結果: int / Integer.

呼び出し時:

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

public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId)

            => bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId));

UO.SendGumpSelect(serial, gumpId, triggerId, timeout) — UO.SendGumpSelect(Any,Any,Any,Any)

引数: serial (Any), gumpId (Any), triggerId (Any), timeout (Any)

結果: int / Integer.

呼び出し時:

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

public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId, InjectionValue timeout)

            => bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId),

                NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout)));

UO.SetGump

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

C# のシグネチャ

void UO.SetGump(object? identifier, object? key, object? stateValue);
void UO.SetGump(object? gumpId, object? identifier, object? key, object? stateValue);

既存のサーバーガンプのフィールドを変更します。

引数

  • gumpId - 4 つの引数形式のみ: serial/id またはゼロのガンプ インデックス。 3 つのフォーム - 1 - 選択された/最後のガンプを使用します。
  • identifier — 文字列「checkbox」、「radio」、または「textentry」。大文字と小文字は重要ではありません。サポートされていない名前を指定してもフィールドは変更されません。
  • key - int: 最初の LocalSerial/ID 要素、次に指定された種類の要素間のインデックス 0。要素がありません - エラー メッセージ。
  • stateValue — チェックボックス/ラジオの場合: 「チェック済み」、「true」、大文字と小文字を区別しない、またはゼロ以外の認識される int が含まれます。もう一方はオフになります。テキスト入力の場合 - ToString を介したすべてのテキスト。

戻り値

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

動作

  • SetGumpValue は TrySetGumpValue を呼び出します。 0 を押すとメッセージが表示されます。既存のガンプのローカル フィールドを変更し、新しいウィンドウを待機するフックを登録しません。
  • チェックボックス/テキストエントリを変更しても、それ自体はサーバーに応答を送信しません。応答するには、SendGumpSelect/WaitGump を介してボタンを選択します。ラジオ ボタンは別のビューで処理されます。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetGump");
UO.SetGump("checkbox", 0, 1);

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

引数と実行の流れ:

  • 既存のサーバーガンプのフィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.SetGump("checkbox", 0, 1);
}

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

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

引数と実行の流れ:

  • SetGumpValue は TrySetGumpValue を呼び出します。 0 を押すとメッセージが表示されます。既存のガンプのローカル フィールドを変更し、新しいウィンドウを待機するフックを登録しません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.SetGump(0, "textentry", 0, "Example");
    }

    return null;
}

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

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

引数と実行の流れ:

  • チェックボックス/テキストエントリを変更しても、それ自体はサーバーに応答を送信しません。応答するには、SendGumpSelect/WaitGump を介してボタンを選択します。ラジオ ボタンは別のビューで処理されます。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.SetGump("radio", 0, "true");
            UO.SetGump("checkbox", 0, 0);
        }

        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.SetGump(identifier, key, stateValue) — UO.SetGump(Any,Any,Any)

引数: identifier (Any), key (Any), stateValue (Any)

結果: void / Unit.

呼び出し時:

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

public void SetGump(InjectionValue identifier, InjectionValue key, InjectionValue stateValue)

            => bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());

UO.SetGump(gumpId, identifier, key, stateValue) — UO.SetGump(Any,Any,Any,Any)

引数: gumpId (Any), identifier (Any), key (Any), stateValue (Any)

結果: void / Unit.

呼び出し時:

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

public void SetGump(InjectionValue gumpId, InjectionValue identifier, InjectionValue key, InjectionValue stateValue)

            => bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());

UO.WaitGump

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

C# のシグネチャ

void UO.WaitGump(object? value);
void UO.WaitGump(object? trigger1, object? trigger2);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15, object? trigger16);

ボタンに対する一連のワンタイム応答を登録します。スクリプトはすぐに実行を続けます。ウィンドウがない場合でも、30 秒の遅延は発生しません。

引数

  • value — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger1 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger2 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger3 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger4 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger5 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger6 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger7 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger8 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger9 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger10 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger11 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger12 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger13 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger14 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger15 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
  • trigger16 — シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。

戻り値

void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。

動作

  • 目的の ButtonID を持つ実際の Activate ボタンを探します。必要なボタンがないページやウィンドウを切り替えるボタンはスキップされます。後続の ID は、最初に待機しているものをバイパスしません。 1 つのマークアップ配信の場合、1 つのウィンドウに複数の応答はありません。更新されたマークアップでは、同じウィンドウ オブジェクトを使用できます。
  • 同じスクリプトの次の WaitGump は、保留中のシーケンスを完了します。検索は GumpID に限定されません。正確に選択するには、NumGumpButton または SendGumpSelect を使用します。 ButtonID=0 は、ID 0 の既存のアクティブ化ボタンがある場合にのみ機能します。これは普遍的な閉鎖ではありません。
  • プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitGump");
UO.WaitGump(100);

1。 1 つの答え - 直接スクリプト

引数と実行の流れ:

  • 100 — 応答の ButtonID。 WaitGump は UseObject の前に登録します。さらに実行しても、サーバーがすでに応答を受け入れたことを意味するわけではありません。
UO.WaitGump(100);
UO.UseObject("0x40001234");

2。複数のステップ - スクリプト関数

引数と実行の流れ:

  • 7、22、1 はシーケンシャルフォームの ButtonID です。これらのIDは順番にチェックされます。引数の数は遅延を指定しません。呼び出しによりシーケンス全体が記録されます。
return  RunScenario();
 object? RunScenario()
{
    UO.WaitGump(7, 22, 1);
    UO.UseObject("0x40001234");
    return null;
}

3。期待のキャンセル - スクリプト クラス

引数と実行の流れ:

  • 行 7|22|1 は同じシーケンスを指定します。次に、TerminateAll は保留中のガンプをすべてクリアし、すべての手順を停止します。これは世界規模の行動です。
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.WaitGump("7|22|1");
        UO.TerminateAll();
        return null;
    }
}

コマンドの実装

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

UO.WaitGump(value) — UO.WaitGump(Any)

引数: value (Any/Integer/String)

結果: void / Unit.

呼び出し時:

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

case "waitgump": CompactWaitGump(arguments); return InjectionValue.Unit;

UO.WaitGump(value) — UO.WaitGump(Integer)

引数: value (Any/Integer/String)

結果: void / Unit.

呼び出し時:

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

public void WaitGump(int triggerId)

        {

            if (bridge is IApiGumpAutomation automation) automation.QueueGumpButtons(new[] { triggerId });

            else bridge.WaitGumpSelect(triggerId, 30_000);

        }

UO.WaitGump(value) — UO.WaitGump(String)

引数: value (Any/Integer/String)

結果: void / Unit.

呼び出し時:

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

public void WaitGump(string triggerId)

        {

            string text = (triggerId ?? string.Empty).Trim();

            if (text.Contains('|') || text.Contains(','))

            {

                InjectionValue[] chain = text.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)

                    .Select(value => new InjectionValue(value.Trim())).ToArray();

                CompactWaitGump(chain);

                return;

            }

            WaitGump(NumberConversions.ToInt(triggerId));

        }

UO.WaitGump(trigger1, trigger2) — UO.WaitGump(Any,Any)

引数: trigger1 (Any), trigger2 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3) — UO.WaitGump(Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4) — UO.WaitGump(Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5) — UO.WaitGump(Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6) — UO.WaitGump(Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15, trigger16) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)

引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any), trigger16 (Any)

結果: void / Unit.

呼び出し時:

呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。

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

values =>

                    {

                        CompactWaitGump(values);

                        return InjectionValue.Unit;

                    }

UO.WaitGumpCheck

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

C# のシグネチャ

void UO.WaitGumpCheck(object? index, object? state);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2, object? index3, object? state3);

現在のガンプの最大 3 つのチェックボックス フィールドを変更します。

引数

  • index — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • index2 — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • index3 — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • state — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
  • state2 — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
  • state3 — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。

戻り値

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

動作

  • ExecuteLegacyManualAlias は引数をペアにして、それぞれに対して SetGumpValue(-1, "チェックボックス", セレクター, 値) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
  • UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitGumpCheck");
UO.WaitGumpCheck(0, 1);

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

引数と実行の流れ:

  • 現在のガンプの最大 3 つのチェックボックス フィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.WaitGumpCheck(0, 1);
}

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

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は引数をペアにして、それぞれに対して SetGumpValue(-1, "チェックボックス", セレクター, 値) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitGumpCheck(0, 1, 1, 0);
    }

    return null;
}

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

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

引数と実行の流れ:

  • UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.WaitGumpCheck(0, 1, 1, 0, 2, 1);
        }

        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.WaitGumpCheck(index, state) — UO.WaitGumpCheck(Any,Any)

引数: index (Any), state (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpCheck(index, state, index2, state2) — UO.WaitGumpCheck(Any,Any,Any,Any)

引数: index (Any), state (Any), index2 (Any), state2 (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpCheck(index, state, index2, state2, index3, state3) — UO.WaitGumpCheck(Any,Any,Any,Any,Any,Any)

引数: index (Any), state (Any), index2 (Any), state2 (Any), index3 (Any), state3 (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpcheck":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry

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

C# のシグネチャ

void UO.WaitGumpEntry(object? index, object? text);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2, object? index3, object? text3);

現在のガンプの最大 3 つのテキスト入力フィールドを変更します。

引数

  • index — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • index2 — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • index3 — int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。
  • text — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
  • text2 — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
  • text3 — ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。

戻り値

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

動作

  • ExecuteLegacyManualAlias は引数をペアで処理し、それぞれに対して SetGumpValue(-1, "textentry", selector, value) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
  • UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitGumpEntry");
UO.WaitGumpEntry(0, "Example");

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

引数と実行の流れ:

  • 現在のガンプの最大 3 つのテキスト入力フィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
    UO.WaitGumpEntry(0, "Example");
}

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

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は引数をペアで処理し、それぞれに対して SetGumpValue(-1, "textentry", selector, value) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitGumpEntry(0, "First", 1, "Second");
    }

    return null;
}

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

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

引数と実行の流れ:

  • UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
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()
    {
        if (Truth(UO.GetGumpsCount() > 0))
        {
            UO.WaitGumpEntry(0, "First", 1, "Second", 2, "Third");
        }

        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.WaitGumpEntry(index, text) — UO.WaitGumpEntry(Any,Any)

引数: index (Any), text (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry(index, text, index2, text2) — UO.WaitGumpEntry(Any,Any,Any,Any)

引数: index (Any), text (Any), index2 (Any), text2 (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;

UO.WaitGumpEntry(index, text, index2, text2, index3, text3) — UO.WaitGumpEntry(Any,Any,Any,Any,Any,Any)

引数: index (Any), text (Any), index2 (Any), text2 (Any), index3 (Any), text3 (Any)

結果: void / Unit.

呼び出し時:

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

case "waitgumpentry":

                    for (int index = 0; index + 1 < arguments.Length; index += 2)

                        bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));

                    break;

Clone this wiki locally