JA UO Topic menus context menus - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

メニューとコンテキスト メニュー

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

古いメニュー、コンテキスト メニュー、テキスト入力。これらは別個のメカニズムです。ご希望のメニューの回答から商品番号を取得します。

セクション

トピック コマンドと説明
AutoMenu UO.AutoMenu
WaitMenu UO.WaitMenu
Menu Hooks UO.MenuHookPresent · UO.CancelAllMenuHooks
メニュー項目 UO.GetMenuItems · UO.GetMenuItemsEx ​​· UO.GetLastMenuItems
CancelMenu UO.CancelMenu
Context Menu UO.GetContextMenu · UO.ClearContextMenu
RequestContextMenu UO.RequestContextMenu
Context Menu Hooks UO.SetContextMenuHook

すべてのテーマコマンド

メニュー

UO.AutoMenu · UO.WaitMenu · UO.GetMenuItems · UO.GetMenuItemsEx · UO.GetLastMenuItems · UO.MenuHookPresent · UO.MenuPresent · UO.CancelAllMenuHooks · UO.CancelMenu · UO.CloseMenu · UO.WaitingForMenu · UO.WaitingMenu

コンテキストメニュー

UO.GetContextMenu · UO.RequestContextMenu · UO.SetContextMenuHook · UO.ClearContextMenu

テキスト入力

UO.WaitTextEntry · UO.ConsoleEntryReply · UO.ConsoleEntryUnicodeReply

このトピックに関する例

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

UO.RequestContextMenu

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

var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.RequestContextMenu(id);
}

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

UO.WaitMenu

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

UO.WaitMenu("Craft", "Tools");

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


UO.AutoMenu

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

C# のシグネチャ

void UO.AutoMenu(object? prompt, object? choice);

永続的なメニュー フックを登録します。適切なキャプションを持つサーバー メニューが表示されると、クライアントは適切な項目を選択します。この呼び出しではメニューは開かず、メニューを同期的に待機しません。

引数

  • prompt — サーバーメニュータイトルの部分文字列。
  • choice — メニュー項目署名の部分文字列。

戻り値

void。この呼び出しではフックが登録されるだけで、メニューが見つかったかどうか、または項目が正常に選択されたかどうかは報告されません。

動作

  • クライアントが更新されるたびに、フックはまだ閉じられておらず、タイトルに prompt が含まれるサーバー メニューを探します。署名に choice が含まれるアイテムが見つかった場合、クライアントはそれを選択します。フックは選択後も登録されたままとなるため、後続の一致するメニューで機能します。 UO.CancelMenu()を使用してフックを削除できます。

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

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

簡単な例

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

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

UO.Print("Calling UO.AutoMenu");
UO.AutoMenu("Choose material", "Copper");

1。 「素材の選択」というタイトルのメニューが表示されるまで待ち、「銅」というテキストの項目を選択します。 - 直接スクリプト

引数と実行の流れ:

  • 「素材の選択」というタイトルのメニューが表示されるまで待ち、「銅」というテキストの項目を選択します。
UO.AutoMenu("Choose material", "Copper");

2。部分文字列は大文字と小文字を区別せずに比較されます。フックは、その後に一致するメニューにも影響します。 - スクリプト機能

引数と実行の流れ:

  • 部分文字列は大文字と小文字を区別せずに比較されます。フックは、その後に一致するメニューにも影響します。
return  RunScenario();
 object? RunScenario()
{
    var menuCaption = "choose color";
    var itemCaption = "blue";
    UO.AutoMenu(menuCaption, itemCaption);
    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.AutoMenu("Choose material", "Iron");
        UO.CancelMenu();
        return null;
    }
}

コマンドの実装

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

UO.AutoMenu(prompt, choice) — UO.AutoMenu(Any,Any)

引数: prompt (Any), choice (Any)

結果: void / Unit.

呼び出し時:

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

case "automenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(arguments[0].ToString(), arguments[1].ToString(), true);

                    break;

UO.CancelAllMenuHooks

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

C# のシグネチャ

void UO.CancelAllMenuHooks();

登録されているすべての自動フックを古いクライアント サーバー メニューから削除します。

引数

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

戻り値

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

動作

  • ClearMenuHooks マネージャーに電話します。 AutoMenu と WaitMenu を含む、単一の永続的な選択ルールが削除されます。このコマンドは、すでに開いているメニューを閉じません。 CloseMenuはこれに使用されます。

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

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

簡単な例

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

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

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

1。すべてのフックを削除 - 直接スクリプト

引数と実行の流れ:

  • 削除はクライアント メニュー フックのセット全体に適用されます。
UO.CancelAllMenuHooks();

2。アクションの制限 AutoMenu - スクリプト関数

引数と実行の流れ:

  • フックはすぐに取り外されます。今後、一致するメニューは自動的に選択されなくなります。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoMenu("Choose material", "Iron");
    UO.CancelAllMenuHooks();
    return null;
}

3。自動選択を停止してメニューを閉じる - スクリプト クラス

引数と実行の流れ:

  • 最初のコマンドはフックを削除します。 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()
    {
        UO.CancelAllMenuHooks();
        UO.CloseMenu();
        return null;
    }
}

コマンドの実装

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

UO.CancelAllMenuHooks() — UO.CancelAllMenuHooks()

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

結果: void / Unit.

呼び出し時:

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

case "cancelallmenuhooks": bridge.ClearMenuHooks(); return InjectionValue.Unit;

UO.CancelMenu

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

C# のシグネチャ

void UO.CancelMenu();

登録されているすべての自動フックを古いクライアント サーバー メニューから削除します。

引数

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

戻り値

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

動作

  • ClearMenuHooks マネージャーに電話します。 AutoMenu と WaitMenu を含む、単一の永続的な選択ルールが削除されます。このコマンドは、すでに開いているメニューを閉じません。 CloseMenuはこれに使用されます。

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

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

簡単な例

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

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

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

1。すべてのフックを削除 - 直接スクリプト

引数と実行の流れ:

  • 削除はクライアント メニュー フックのセット全体に適用されます。
UO.CancelMenu();

2。アクションの制限 AutoMenu - スクリプト関数

引数と実行の流れ:

  • フックはすぐに取り外されます。今後、一致するメニューは自動的に選択されなくなります。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoMenu("Choose material", "Iron");
    UO.CancelMenu();
    return null;
}

3。自動選択を停止してメニューを閉じる - スクリプト クラス

引数と実行の流れ:

  • 最初のコマンドはフックを削除します。 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()
    {
        UO.CancelMenu();
        UO.CloseMenu();
        return null;
    }
}

コマンドの実装

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

UO.CancelMenu() — UO.CancelMenu()

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

結果: void / Unit.

呼び出し時:

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

case "cancelmenu": bridge.ClearMenuHooks(); break;

UO.ClearContextMenu

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

C# のシグネチャ

void UO.ClearContextMenu();

現在のローカル コンテキスト メニュー モデルを削除します。

引数

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

戻り値

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

動作

  • モデルがある場合は、ServerMenus.Context で Dispose を呼び出します。次のリクエストの後に新しいサーバー メニューが表示される場合があります。ここはCloseMenuではありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 現在のローカル コンテキスト メニュー モデルを削除します。
UO.ClearContextMenu();

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

引数と実行の流れ:

  • スナップショットの読み取り後にローカル コンテキスト メニューを削除します。
return  RunScenario();
 object? RunScenario()
{
    var entries = UO.GetContextMenu();
    UO.ClearContextMenu();
    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.ClearContextMenu();
        UO.ClearContextMenu();
        return null;
    }
}

コマンドの実装

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

UO.ClearContextMenu() — UO.ClearContextMenu()

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

結果: void / Unit.

呼び出し時:

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

case "clearcontextmenu": bridge.ClearContextMenu(); return InjectionValue.Unit;

UO.CloseMenu

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

C# のシグネチャ

void UO.CloseMenu();

CancelForYoko を介して、アクティブな古いサーバーのメニューをすべてキャンセルします。

引数

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

戻り値

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

動作

  • スナップショット ServerMenus を反復処理し、各モデルを破棄します。自動メニュー フックは削除されず、任意のガンプ/インターフェイス ウィンドウは閉じられません。

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

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

簡単な例

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

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

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

1。開いているメニューをキャンセル - 直接スクリプト

引数と実行の流れ:

  • キャンセルは古いMenuGump/サーバーメニューに適用されます。
UO.CloseMenu();

2。フックを削除してメニューをキャンセル - スクリプト関数

引数と実行の流れ:

  • 自動選択と開いたメニューは別のコマンドで処理されます。
return  RunScenario();
 object? RunScenario()
{
    UO.CancelAllMenuHooks();
    UO.CloseMenu();
    return null;
}

3。表示後にキャンセル - スクリプト クラス

引数と実行の流れ:

  • メニューをキャンセルした後でも、リストのスナップショットはアイテムに保存されます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var items = UO.GetLastMenuItems();
        UO.Print(Convert.ToString(ArrayLength(items)));
        UO.CloseMenu();
        return null;
    }

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

コマンドの実装

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

UO.CloseMenu() — UO.CloseMenu()

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

結果: void / Unit.

呼び出し時:

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

case "closemenu": bridge.CloseMenu(); return InjectionValue.Unit;

UO.ConsoleEntryReply

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

C# のシグネチャ

void UO.ConsoleEntryReply(object? text);

MessageManager.SendServerPromptResponse を介してアクティブなサーバー プロンプトにテキストで応答します。

引数

  • text — 文字列に変換される値。空の文字列は空の応答として送信されます。

戻り値

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

動作

  • 両チームともReplyServerPromptへ向かいます。パッケージ タイプ ASCII/Unicode は、保存されたサーバー プロンプトの状態に基づいて選択されます。コマンド名によって別のエンコーディングが強制されることはありません。アクティブなプロンプトがない場合、マネージャーは応答を送信しません。

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

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

簡単な例

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

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

UO.Print("Calling UO.ConsoleEntryReply");
UO.ConsoleEntryReply("reply");

1。プロンプトへの回答 - 直接スクリプト

引数と実行の流れ:

  • 送信とは、現在のサーバー入力リクエストを指します。
UO.ConsoleEntryReply("reply");

2。空の応答 - スクリプト関数

引数と実行の流れ:

  • 空のテキストは空の応答としてマネージャーに送信されます。
return  RunScenario();
 object? RunScenario()
{
    UO.ConsoleEntryReply("");
    return null;
}

3。変数からの応答 - スクリプトクラス

引数と実行の流れ:

  • 変数名は、選択したサーバー プロンプト形式には影響しません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var reply = "New item name";
        UO.ConsoleEntryReply(reply);
        return null;
    }
}

コマンドの実装

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

UO.ConsoleEntryReply(text) — UO.ConsoleEntryReply(Any)

引数: text (Any)

結果: void / Unit.

呼び出し時:

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

case "consoleentryreply":

                case "consoleentryunicodereply": bridge.ReplyServerPrompt(Text(0)); return InjectionValue.Unit;

UO.ConsoleEntryUnicodeReply

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

C# のシグネチャ

void UO.ConsoleEntryUnicodeReply(object? text);

MessageManager.SendServerPromptResponse を介してアクティブなサーバー プロンプトにテキストで応答します。

引数

  • text — 文字列に変換される値。空の文字列は空の応答として送信されます。

戻り値

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

動作

  • 両チームともReplyServerPromptへ向かいます。パッケージ タイプ ASCII/Unicode は、保存されたサーバー プロンプトの状態に基づいて選択されます。コマンド名によって別のエンコーディングが強制されることはありません。アクティブなプロンプトがない場合、マネージャーは応答を送信しません。

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

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

簡単な例

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

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

UO.Print("Calling UO.ConsoleEntryUnicodeReply");
UO.ConsoleEntryUnicodeReply("reply");

1。プロンプトへの回答 - 直接スクリプト

引数と実行の流れ:

  • 送信とは、現在のサーバー入力リクエストを指します。
UO.ConsoleEntryUnicodeReply("reply");

2。空の応答 - スクリプト関数

引数と実行の流れ:

  • 空のテキストは空の応答としてマネージャーに送信されます。
return  RunScenario();
 object? RunScenario()
{
    UO.ConsoleEntryUnicodeReply("");
    return null;
}

3。変数からの応答 - スクリプトクラス

引数と実行の流れ:

  • 変数名は、選択したサーバー プロンプト形式には影響しません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var reply = "New item name";
        UO.ConsoleEntryUnicodeReply(reply);
        return null;
    }
}

コマンドの実装

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

UO.ConsoleEntryUnicodeReply(text) — UO.ConsoleEntryUnicodeReply(Any)

引数: text (Any)

結果: void / Unit.

呼び出し時:

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

case "consoleentryreply":

                case "consoleentryunicodereply": bridge.ReplyServerPrompt(Text(0)); return InjectionValue.Unit;

UO.GetContextMenu

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

C# のシグネチャ

dynamic UO.GetContextMenu();

現在のコンテキスト メニュー モデルの項目文字列を読み取ります。

引数

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

戻り値

ServerMenus.Context.GetYokoItems(); からの文字列の配列モデルがない場合は空の配列。

動作

  • RequestContextMenu を送信せず、サーバーの応答を待ちません。新しいメニューを取得するには、まず個別にリクエストし、モデルが表示されるのを待ちます。 ClearContextMenu は読み取り後にモデルを削除します。

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

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

簡単な例

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

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

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

1。現在のメニューを読み取る - 直接スクリプト

引数と実行の流れ:

  • 既存のモデルが読み込まれます。
var entries = UO.GetContextMenu();
for (int i = (int)(0); i <= ArrayLength(entries)-1; i += (int)(1))
{
    UO.Print(entries[i]);
}

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

2。リクエストして後で読む - スクリプト機能

引数と実行の流れ:

  • 500 ms - 一時停止の例であり、サーバーの応答を保証するものではありません。空の配列も受け入れられます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.RequestContextMenu(UO.Self());
    await Delay(500);
    var entries = UO.GetContextMenu();
    UO.Print(Convert.ToString(ArrayLength(entries)));
    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。クリーンアップ前のスナップショット - スクリプト クラス

引数と実行の流れ:

  • 保存した配列はメニューモデルをクリアしても消えません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var entries = UO.GetContextMenu();
        UO.ClearContextMenu();
        UO.Print(Convert.ToString(ArrayLength(entries)));
        return null;
    }

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

コマンドの実装

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

UO.GetContextMenu() — UO.GetContextMenu()

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

結果: dynamic / Any.

呼び出し時:

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

case "getcontextmenu": return StringArray(bridge.GetContextMenu());

UO.GetLastMenuItems

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

C# のシグネチャ

dynamic UO.GetLastMenuItems();

すでに開いている古いサーバーメニューの項目を読み取ります。

引数

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

戻り値

文字列の配列。項目名/説明行GetYokoItems。適切なメニューが見つからない場合は、空の配列が返されます。

動作

  • 最後の写真メニューServerMenusが選択されています。このコマンドはメニューを開いたり、フックを配置したり、項目を選択したりしません。これはコンテキスト メニューや通常のサーバー ガンプではありません。
  • 次数はモデルの点に対応します。リストはスナップショットです。その後メニューを変更しても、保存された配列は更新されません。

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

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

簡単な例

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

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

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

1。すべての項目を表示 - 直接スクリプト

引数と実行の流れ:

  • 空の配列はループセーフです。
var items = UO.GetLastMenuItems();
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

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

2。最初のポイントはスクリプト機能です

引数と実行の流れ:

  • インデックス 0 は、サイズを確認した後にのみ読み取られます。
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetLastMenuItems();
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[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;

3。閉じる前にスナップショットを保存 - スクリプト クラス

引数と実行の流れ:

  • サーバー メニューをキャンセルした後も、アレイは引き続き使用できます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var items = UO.GetLastMenuItems();
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

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

コマンドの実装

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

UO.GetLastMenuItems() — UO.GetLastMenuItems()

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

結果: dynamic / Any.

呼び出し時:

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

case "getlastmenuitems": return StringArray(bridge.GetLastMenuItems());

UO.GetMenuItems

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

C# のシグネチャ

dynamic UO.GetMenuItems(object? caption);

すでに開いている古いサーバーメニューの項目を読み取ります。

引数

  • caption — 古いサーバー メニューのタイトルの部分文字列。 OrdinalIgnoreCase を検索してください。空の行は任意のヘッダーと一致します。

戻り値

文字列の配列。項目名/説明行GetYokoItems。適切なメニューが見つからない場合は、空の配列が返されます。

動作

  • 一致するタイトル部分文字列を持つ最後の非廃棄メニューが選択されます。このコマンドはメニューを開いたり、フックを配置したり、項目を選択したりしません。これはコンテキスト メニューや通常のサーバー ガンプではありません。
  • 次数はモデルの点に対応します。リストはスナップショットです。その後メニューを変更しても、保存された配列は更新されません。

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

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

簡単な例

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

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

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

1。すべての項目を表示 - 直接スクリプト

引数と実行の流れ:

  • 空の配列はループセーフです。
var items = UO.GetMenuItems("");
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

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

2。最初のポイントはスクリプト機能です

引数と実行の流れ:

  • インデックス 0 は、サイズを確認した後にのみ読み取られます。
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetMenuItems("");
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[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;

3。閉じる前にスナップショットを保存 - スクリプト クラス

引数と実行の流れ:

  • サーバー メニューをキャンセルした後も、アレイは引き続き使用できます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var items = UO.GetMenuItems("");
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

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

コマンドの実装

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

UO.GetMenuItems(caption) — UO.GetMenuItems(Any)

引数: caption (Any)

結果: dynamic / Any.

呼び出し時:

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

case "getmenuitems": return StringArray(bridge.GetMenuItems(Text(0), false));

UO.GetMenuItemsEx

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

C# のシグネチャ

dynamic UO.GetMenuItemsEx(object? caption);

すでに開いている古いサーバーメニューの項目を読み取ります。

引数

  • caption — 古いサーバー メニューのタイトルの部分文字列。 OrdinalIgnoreCase を検索してください。空の行は任意のヘッダーと一致します。

戻り値

文字列の配列。文字列 graphicHex|hueHex|インデックス|名前、たとえば、0x0001|0x0000|1|選択。適切なメニューが見つからない場合は、空の配列が返されます。

動作

  • 一致するタイトル部分文字列を持つ最後の非廃棄メニューが選択されます。このコマンドはメニューを開いたり、フックを配置したり、項目を選択したりしません。これはコンテキスト メニューや通常のサーバー ガンプではありません。
  • 次数はモデルの点に対応します。リストはスナップショットです。その後メニューを変更しても、保存された配列は更新されません。

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

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

簡単な例

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

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

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

1。すべての項目を表示 - 直接スクリプト

引数と実行の流れ:

  • 空の配列はループセーフです。
var items = UO.GetMenuItemsEx("");
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

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

2。最初のポイントはスクリプト機能です

引数と実行の流れ:

  • インデックス 0 は、サイズを確認した後にのみ読み取られます。
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetMenuItemsEx("");
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[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;

3。閉じる前にスナップショットを保存 - スクリプト クラス

引数と実行の流れ:

  • サーバー メニューをキャンセルした後も、アレイは引き続き使用できます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var items = UO.GetMenuItemsEx("");
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

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

コマンドの実装

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

UO.GetMenuItemsEx(caption) — UO.GetMenuItemsEx(Any)

引数: caption (Any)

結果: dynamic / Any.

呼び出し時:

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

case "getmenuitemsex": return StringArray(bridge.GetMenuItems(Text(0), true));

UO.MenuHookPresent

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

C# のシグネチャ

dynamic UO.MenuHookPresent();

登録されているメニューフックの有無を読み取ります。

引数

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

戻り値

数値フラグ int: 1 - _manager.HasMenuHooks、0 - フックなし。メニュー自体がまだ存在しない可能性があります。

動作

  • 登録されているメニューフックの有無を読み取ります。メニューを待たず、サーバーのガンプをチェックせず、フックも消費しません。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 登録されているメニューフックの有無を読み取ります。
UO.Print(UO.MenuHookPresent());

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

引数と実行の流れ:

  • 登録されているメニューフックの有無を読み取ります。メニューを待たず、サーバーのガンプをチェックせず、フックも消費しません。
return  RunScenario();
 object? RunScenario()
{
    UO.WaitMenu("Craft", "Tools");
    UO.Print(UO.MenuHookPresent());
    return null;
}

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

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.MenuHookPresent();
        UO.Wait(500);
        var after = UO.MenuHookPresent();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

コマンドの実装

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

UO.MenuHookPresent() — UO.MenuHookPresent()

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

結果: dynamic / Any.

呼び出し時:

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

case "menuhookpresent": return new InjectionValue(bridge.MenuHookPresent());

UO.MenuPresent

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

C# のシグネチャ

dynamic UO.MenuPresent();

MenuPresent は WaitingMenu を直接呼び出します。

引数

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

戻り値

数値フラグ int: 1 - サーバーメニューがあります。 0 - いいえ。

動作

  • MenuPresent は WaitingMenu を直接呼び出します。 GetGumpsCount、コンテキスト メニュー、または登録されたフックはチェックしません。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • MenuPresent は WaitingMenu を直接呼び出します。
UO.Print(UO.MenuPresent());

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

引数と実行の流れ:

  • MenuPresent は WaitingMenu を直接呼び出します。 GetGumpsCount、コンテキスト メニュー、または登録されたフックはチェックしません。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.MenuPresent()))
    {
        UO.Print(UO.GetLastMenuItems());
    }

    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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
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 before = UO.MenuPresent();
        UO.Wait(500);
        var after = UO.MenuPresent();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

コマンドの実装

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

UO.MenuPresent() — UO.MenuPresent()

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

結果: dynamic / Any.

呼び出し時:

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

case "menupresent": return new InjectionValue(bridge.MenuPresent());

UO.RequestContextMenu

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

C# のシグネチャ

void UO.RequestContextMenu(object? objID);

オブジェクトのコンテキスト メニューを要求します。

引数

  • objID — シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。

戻り値

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

動作

  • ブリッジは GameActions.OpenPopupMenu を呼び出します。答えは別に保存され、GetContextMenu を読んでください。このコマンドはメニュー バーを選択しません。
  • Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。

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

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

簡単な例

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

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

UO.Print("Calling UO.RequestContextMenu");
UO.RequestContextMenu(UO.GetSerial("lasttarget"));

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

引数と実行の流れ:

  • オブジェクトのコンテキスト メニューを要求します。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.RequestContextMenu(id);
}

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

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

引数と実行の流れ:

  • ブリッジは GameActions.OpenPopupMenu を呼び出します。答えは別に保存され、GetContextMenu を読んでください。このコマンドはメニュー バーを選択しません。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("self");
    if (Truth(UO.Exists(id)))
    {
        UO.RequestContextMenu(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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
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()
    {
        ApplyToLoaded(UO.GetSerial("lasttarget"));
        return null;
    }

    void ApplyToLoaded(dynamic id)
    {
        if (Truth(UO.Exists(id)))
        {
            UO.RequestContextMenu(id);
        }
    }

    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.RequestContextMenu(objID) — UO.RequestContextMenu(Any)

引数: objID (Any)

結果: void / Unit.

呼び出し時:

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

case "requestcontextmenu": bridge.RequestContextMenu(Arg(0)); return InjectionValue.Unit;

UO.SetContextMenuHook

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

C# のシグネチャ

void UO.SetContextMenuHook(object? menuID, object? entryNumber);

コンテキスト メニュー項目の 1 回限りの選択を登録します。

引数

  • menuID — メニューオブジェクトのシリアル。uint に縮小されます。 0 はすべての serial に適合します。これはサーバーガンプIDではありません。
  • entryNumber — ゼロ点インデックス。負の値を指定すると、保留中のコンテキスト フックが無効になります。 0..GetArrayLength(UO.GetContextMenu())-1。

戻り値

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

動作

  • Bridge はデータを _manager.SetContextMenuHook に渡します。ここには、_contextMenuSerial/_contextMenuEntry が保存されます。 ProcessMenuHooks ハンドラーは、既存の一致するコンテキスト メニューを待ちます。
  • SelectYokoItem が成功すると、フィールドは 0/-1 にクリアされます。メニューはこのセッターによって要求されません。RequestContextMenu を単独で使用してください。呼び出し自体は、サーバーのアクションをブロックしたり確認したりしません。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetContextMenuHook");
UO.SetContextMenuHook(0, 0);

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

引数と実行の流れ:

  • コンテキスト メニュー項目の 1 回限りの選択を登録します。
UO.SetContextMenuHook(0, 0);

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

引数と実行の流れ:

  • Bridge はデータを _manager.SetContextMenuHook に渡します。ここには、_contextMenuSerial/_contextMenuEntry が保存されます。 ProcessMenuHooks ハンドラーは、既存の一致するコンテキスト メニューを待ちます。
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("lasttarget");
    UO.SetContextMenuHook(UO.Hex2Int(id), 0);
    UO.RequestContextMenu(id);
    return null;
}

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

引数と実行の流れ:

  • SelectYokoItem が成功すると、フィールドは 0/-1 にクリアされます。メニューはこのセッターによって要求されません。RequestContextMenu を単独で使用してください。呼び出し自体は、サーバーのアクションをブロックしたり確認したりしません。
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.SetContextMenuHook(0, -1);
        UO.Print(UO.GetContextMenu());
        return null;
    }
}

コマンドの実装

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

UO.SetContextMenuHook(menuID, entryNumber) — UO.SetContextMenuHook(Any,Any)

引数: menuID (Any), entryNumber (Any)

結果: void / Unit.

呼び出し時:

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

case "setcontextmenuhook": bridge.SetContextMenuHook(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.WaitMenu

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

C# のシグネチャ

void UO.WaitMenu(object? menuCaption, object? elementCaption);
void UO.WaitMenu(object? prompt1, object? choice1, object? prompt2, object? choice2);
void UO.WaitMenu(object? prompt1, object? choice1, object? prompt2, object? choice2, object? prompt3, object? choice3);

ワンタイムメニューフックを3つまで登録できます。

引数

  • menuCaption / prompt1 / prompt2 / prompt3 — サーバーメニューのタイトルテンプレート文字列。ペアはヘッダー、要素の順に渡されます。
  • menuCaption — サーバーメニューのタイトルテンプレート文字列。ペアはヘッダー、要素の順に渡されます。
  • prompt1 — サーバーメニューのタイトルテンプレート文字列。ペアはヘッダー、要素の順に渡されます。
  • prompt2 — サーバーメニューのタイトルテンプレート文字列。ペアはヘッダー、要素の順に渡されます。
  • prompt3 — サーバーメニューのタイトルテンプレート文字列。ペアはヘッダー、要素の順に渡されます。
  • elementCaption / choice1 / choice2 / choice3 — 対応するヘッダーの要素を選択するための行。 ID 通常のガンプ ボタンではありません。
  • elementCaption — 対応するヘッダーの要素を選択するための行。 ID 通常のガンプ ボタンではありません。
  • choice1 — 対応するヘッダーの要素を選択するための行。 ID 通常のガンプ ボタンではありません。
  • choice2 — 対応するヘッダーの要素を選択するための行。 ID 通常のガンプ ボタンではありません。
  • choice3 — 対応するヘッダーの要素を選択するための行。 ID 通常のガンプ ボタンではありません。

戻り値

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

動作

  • 各ペアは _manager.AddMenuHook(prompt、choice、false) に渡されます。登録されている形式は、2/4/6 引数です。 false は 1 回限りのフックを示します。 AutoMenu/2 つの引数 VendorMenu は定数フックを使用します。
  • メニューが表示されるまでスクリプトをブロックしません。フックは、メニューが適切な場合にマネージャーによって消費されます。サーバーによる実行結果は返されません。メニューの場合は WaitingMenu、フックの場合は MenuHookPresent を使用します。
  • メニュー/選択フォームの場合、マネージャーはタイトルにプロンプ​​トが含​​まれる最初のメニューを選択します (大文字と小文字は区別されません)。 SessionMenu は、名前に選択肢が含まれる最初の項目を選択します。これも大文字と小文字は区別されません。 Blank text is suitable for anyone;数値テキストは名前の一部であり、インデックスではありません。選択が成功すると、応答が送信され、ローカル メニューが閉じます。ワンタイムフックは、選択が成功した後にのみ削除されます。 a permanent hook remains.

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitMenu");
UO.WaitMenu("Craft", "Tools");

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

引数と実行の流れ:

  • ワンタイムメニューフックを3つまで登録できます。
UO.WaitMenu("Craft", "Tools");

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

引数と実行の流れ:

  • 各ペアは _manager.AddMenuHook(prompt、choice、false) に渡されます。登録されている形式は、2/4/6 引数です。 false は 1 回限りのフックを示します。 AutoMenu/2 つの引数 VendorMenu は定数フックを使用します。
return  RunScenario();
 object? RunScenario()
{
    UO.WaitMenu("Craft", "Tools", "Tools", "Shovel");
    return null;
}

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

引数と実行の流れ:

  • メニューが表示されるまでスクリプトをブロックしません。フックは、メニューが適切な場合にマネージャーによって消費されます。サーバーによる実行結果は返されません。メニューの場合は WaitingMenu、フックの場合は MenuHookPresent を使用します。
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.WaitMenu("Craft", "Tools", "Tools", "Shovel", "Amount", "One");
        UO.Print(UO.MenuHookPresent());
        return null;
    }
}

コマンドの実装

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

UO.WaitMenu(menuCaption, elementCaption) — UO.WaitMenu(Any,Any)

引数: menuCaption (Any/String), elementCaption (Any/String)

結果: void / Unit.

呼び出し時:

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

case "waitmenu": bridge.WaitMenu(arguments.Select(value => value.ToString()).ToArray()); return InjectionValue.Unit;

UO.WaitMenu(menuCaption, elementCaption) — UO.WaitMenu(String,String)

引数: menuCaption (Any/String), elementCaption (Any/String)

結果: void / Unit.

呼び出し時:

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

public void WaitMenu(string prompt, string choice)

            => bridge.WaitMenu(prompt, choice);

UO.WaitMenu(prompt1, choice1, prompt2, choice2) — UO.WaitMenu(String,String,String,String)

引数: prompt1 (String), choice1 (String), prompt2 (String), choice2 (String)

結果: void / Unit.

呼び出し時:

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

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2)

            => bridge.WaitMenu(prompt1, choice1, prompt2, choice2);

UO.WaitMenu(prompt1, choice1, prompt2, choice2, prompt3, choice3) — UO.WaitMenu(String,String,String,String,String,String)

引数: prompt1 (String), choice1 (String), prompt2 (String), choice2 (String), prompt3 (String), choice3 (String)

結果: void / Unit.

呼び出し時:

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

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2, string prompt3, string choice3)

            => bridge.WaitMenu(prompt1, choice1, prompt2, choice2, prompt3, choice3);

UO.WaitTextEntry

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

C# のシグネチャ

void UO.WaitTextEntry(object? value);

現在のガンプの textentry にテキストを書き込もうとします。

引数

  • value — テキスト経由 ToString;送信済みとして保存されます。

戻り値

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

動作

  • ExecuteClientApiCompatibility は SetGumpValue(-1, "textentry", -1, Text(0)) を呼び出します。 key=-1 は通常の null インデックスではありません。書き込みは、gump 実装で既存のフィールドがそのような ID にマップされる場合にのみ可能です。
  • 将来のガンプを待たず、プロンプトも開かず、フックも登録しません。一致するフィールドがない場合、SetGumpValue はメッセージを表示します。既知のフィールドの場合は、明示的な ID/index とともに SetGump を使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTextEntry");
UO.WaitTextEntry("Example");

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

引数と実行の流れ:

  • 現在のガンプの textentry にテキストを書き込もうとします。
UO.WaitTextEntry("Example");

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

引数と実行の流れ:

  • ExecuteClientApiCompatibility は SetGumpValue(-1, "textentry", -1, Text(0)) を呼び出します。 key=-1 は通常の null インデックスではありません。書き込みは、gump 実装で既存のフィールドがそのような ID にマップされる場合にのみ可能です。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitTextEntry("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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 将来のガンプを待たず、プロンプトも開かず、フックも登録しません。一致するフィールドがない場合、SetGumpValue はメッセージを表示します。既知のフィールドの場合は、明示的な ID/index とともに SetGump を使用します。
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.WaitTextEntry("Example");
        UO.Print("Check the target field in the current gump");
        return null;
    }
}

コマンドの実装

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

UO.WaitTextEntry(value) — UO.WaitTextEntry(Any)

引数: value (Any)

結果: void / Unit.

呼び出し時:

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

case "waittextentry": bridge.SetGumpValue(-1, "textentry", -1, Text(0)); return InjectionValue.Unit;

UO.WaitingForMenu

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

C# のシグネチャ

int UO.WaitingForMenu(object? delay);
int UO.WaitingForMenu(object? delay, object? menuCount);
int UO.WaitingForMenu(object? delay, object? menuCount, object? blockMenu);
int UO.WaitingForMenu(object? delay, object? menuCount, object? blockMenu, object? menuName);
int UO.WaitingForMenu(object? delayValue, object? menuCountValue, object? blockMenuValue, object? menuNameValue, object? skillOrSerial);

必要なサーバー メニューの表示数には制限があります。

引数

  • delay — ミリ秒単位の int タイムアウト、負の場合は 0 になります。 0 でもチェックは 1 つ行われます。
  • delayValue — ミリ秒単位の int タイムアウト、負の場合は 0 になります。 0 でもチェックは 1 つ行われます。
  • menuCount — オプションの出現数、最小 1;デフォルトは 1 です。メニューの品数ではありません。
  • menuCountValue — オプションの出現数、最小 1;デフォルトは 1 です。メニューの品数ではありません。
  • blockMenu — オプションのゼロ以外の数値は、条件が満たされたときにメニューを閉じます。 0 は彼から離れます。
  • blockMenuValue — オプションのゼロ以外の数値は、条件が満たされたときにメニューを閉じます。 0 は彼から離れます。
  • menuName - オプションの正確なタイトル、大文字と小文字が区別されます。空の場合は誰でも許可されます。
  • menuNameValue - オプションの正確なタイトル、大文字と小文字が区別されます。空の場合は誰でも許可されます。
  • skillOrSerial - オプションの最後の引数: TriggerWaitAction は、最初に serial という名前のスキルまたはオブジェクトを使用できます。デフォルトでは、0 はアクションを実行しません。

戻り値

数値フラグ int: 1 - 少なくとも menuCount の異なる出現が認識され、最後のものには目的のタイトルが付けられます。 0 - タイムアウト。既存のメニューをすぐにカウントできます。

動作

  • TriggerWaitAction が GetLastMenuIdentity を読み取った後。新しいアイデンティティによりカウンターが増加します。空の ID は前の ID のメモリをリセットするため、閉じたり再度開いたりした後に同じメニューを再度カウントできます。
  • カウント境界は、新しい ID を使用してのみチェックされます。と が一致する場合、blockMenu はメニューを閉じます。チェック間 UO.Wait から 25 ミリ秒。ヘッダーは部分文字列ではなく序数によってチェックされます。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 必要なサーバー メニューの表示数には制限があります。
UO.Print(UO.WaitingForMenu(3000));

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

引数と実行の流れ:

  • TriggerWaitAction が GetLastMenuIdentity を読み取った後。新しいアイデンティティによりカウンターが増加します。空の ID は前の ID のメモリをリセットするため、閉じたり再度開いたりした後に同じメニューを再度カウントできます。
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.WaitingForMenu(3000, 1, 1, "Craft"));
    return null;
}

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

引数と実行の流れ:

  • カウント境界は、新しい ID を使用してのみチェックされます。と が一致する場合、blockMenu はメニューを閉じます。チェック間 UO.Wait から 25 ミリ秒。ヘッダーは部分文字列ではなく序数によってチェックされます。
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 found = UO.WaitingForMenu(3000, 1, 0, "Craft", "lasttarget");
        if (Truth(found))
        {
            UO.Print(UO.GetLastMenuItems());
        }

        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.WaitingForMenu(delay) — UO.WaitingForMenu(Any)

引数: delay (Any)

結果: int / Integer.

呼び出し時:

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

public int WaitingForMenu(InjectionValue delay) => WaitingForMenu(delay, InjectionValue.Zero, InjectionValue.Zero, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount) — UO.WaitingForMenu(Any,Any)

引数: delay (Any), menuCount (Any)

結果: int / Integer.

呼び出し時:

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

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount) => WaitingForMenu(delay, menuCount, InjectionValue.Zero, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount, blockMenu) — UO.WaitingForMenu(Any,Any,Any)

引数: delay (Any), menuCount (Any), blockMenu (Any)

結果: int / Integer.

呼び出し時:

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

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount, InjectionValue blockMenu) => WaitingForMenu(delay, menuCount, blockMenu, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount, blockMenu, menuName) — UO.WaitingForMenu(Any,Any,Any,Any)

引数: delay (Any), menuCount (Any), blockMenu (Any), menuName (Any)

結果: int / Integer.

呼び出し時:

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

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount, InjectionValue blockMenu, InjectionValue menuName) => WaitingForMenu(delay, menuCount, blockMenu, menuName, InjectionValue.Zero);

UO.WaitingForMenu(delayValue, menuCountValue, blockMenuValue, menuNameValue, skillOrSerial) — UO.WaitingForMenu(Any,Any,Any,Any,Any)

引数: delayValue (Any), menuCountValue (Any), blockMenuValue (Any), menuNameValue (Any), skillOrSerial (Any)

結果: int / Integer.

呼び出し時:

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

public int WaitingForMenu(InjectionValue delayValue, InjectionValue menuCountValue, InjectionValue blockMenuValue, InjectionValue menuNameValue, InjectionValue skillOrSerial)

        {

            int delay = Math.Max(0, NumberConversions.ToInt(delayValue));

            int requiredMenuCount = Math.Max(1, NumberConversions.ToInt(menuCountValue));

            bool blockMenu = NumberConversions.ToInt(blockMenuValue) != 0;

            string expectedName = menuNameValue.ToString() ?? string.Empty;

            DateTime deadline = timeSource.Now.AddMilliseconds(delay);

            string previousIdentity = string.Empty;

            int observedMenuCount = 0;



            TriggerWaitAction(skillOrSerial);



            do

            {

                string identity = bridge.GetLastMenuIdentity() ?? string.Empty;

                if (identity.Length == 0)

                {

                    // Reset between server menus so an identical menu opened again

                    // still counts as a new appearance.

                    previousIdentity = string.Empty;

                }

                else if (!identity.Equals(previousIdentity, StringComparison.Ordinal))

                {

                    previousIdentity = identity;

                    observedMenuCount++;

                    string caption = bridge.GetLastMenuCaption() ?? string.Empty;

                    bool nameMatches = expectedName.Length == 0

                        || caption.Equals(expectedName, StringComparison.Ordinal);

                    if (observedMenuCount >= requiredMenuCount && nameMatches)

                    {

                        if (blockMenu)

                            bridge.CloseMenu();

                        return 1;

                    }

                }



                if (timeSource.Now >= deadline)

                    break;

                bridge.Wait(Math.Min(25, Math.Max(1, delay)));

            }

            while (true);



            return 0;

        }

UO.WaitingMenu

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

C# のシグネチャ

int UO.WaitingMenu();

_world.ServerMenus.Snapshot().Length != 0 を読み取ります。

引数

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

戻り値

数値フラグ int: 1 - ServerMenus には少なくとも 1 つのメニューがありますが、0 - はありません。これはスクリプトを待つのではなく、メニューを持っています。

動作

  • _world.ServerMenus.Snapshot().Length != 0 を読み取ります。レガシー サーバー メニューは、通常のサーバー ガンプおよびコンテキスト メニューとは別のものです。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • _world.ServerMenus.Snapshot().Length != 0 を読み取ります。
UO.Print(UO.WaitingMenu());

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

引数と実行の流れ:

  • _world.ServerMenus.Snapshot().Length != 0 を読み取ります。レガシー サーバー メニューは、通常のサーバー ガンプおよびコンテキスト メニューとは別のものです。
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.WaitingMenu()))
    {
        UO.Print(UO.GetLastMenuItems());
    }

    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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
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 before = UO.WaitingMenu();
        UO.Wait(500);
        var after = UO.WaitingMenu();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

コマンドの実装

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

UO.WaitingMenu() — UO.WaitingMenu()

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

結果: int / Integer.

呼び出し時:

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

public int WaitingMenu() => bridge.WaitingMenu();
⚠️ **GitHub.com Fallback** ⚠️