Skip to content

JA UO Topic record playback

Codex edited this page Oct 12, 2026 · 4 revisions

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

録音・再生

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

サポートされているアクションを記録して繰り返します。記録および再生制限の構成は、コマンドの実装によって決まります。

セクション

トピック コマンドと説明
SetRec UO.SetRec
UseRec UO.UseRec

すべてのテーマコマンド

録音

UO.SetRec · UO.UseRec

このトピックに関する例

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

UO.SetRec

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

UO.SetRec();
UO.Light(15);

UO.UseRec

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

UO.SetRec();
UO.Light(15);
UO.UseRec();

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


UO.SetRec

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

C# のシグネチャ

void UO.SetRec();

次のレガシー コマンド UO の記録を準備します。

引数

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

戻り値

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

動作

  • ExecuteLegacyManualAlias は状態をクリアします。 RecordedAction を実行し、recordNextLegacyAction=true を設定します。 SetRec/UseRec を除く、同じレガシー ディスパッチャーへの次の呼び出しでは、コマンドを実行する前に名前と引数がシリアル化され、その後フラグがクリアされます。
  • これは、すべてのマウス操作、UO ゲッター、サーバー イベントを記録するわけではありません。サポートされているレガシー ディスパッチャからのコマンドを 1 つだけ繰り返します。古い保存はすぐに消去されます。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
  • このエントリでは、引数の型 int、double、string、recursive Array、および void が保持されます。他のオブジェクトはテキスト ToString として書き込まれます。ライブオブジェクト/ハンドルは繰り返しても復元されません。
  • RecordedAction はプロファイルの一般的な状態であり、recordNextLegacyAction/replayingLegacyAction はこの InjectionApiUO のプライベート フィールドです。このインスタンスのみが次の従来の呼び出しを記録します。別のスクリプトは共有書き込みをクリアまたは再実行できますが、そのインスタンスの書き込み待機フラグは消費しません。
  • 厳密には引数なしで、SetRec() のみが登録されます。 RecordedAction はすぐにクリアされるため、remain() はそのインスタンスによって後続のレガシー アクションが書き込まれる前に 0 を返します。書き込み待機を有効にしても、それ自体は保存されたアクションを作成しません。 main() は読み取りのみを行い、待機フラグを消費しません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 次のレガシー コマンド UO の記録を準備します。
UO.SetRec();
UO.Light(15);

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は状態をクリアします。 RecordedAction を実行し、recordNextLegacyAction=true を設定します。 SetRec/UseRec を除く、同じレガシー ディスパッチャーへの次の呼び出しでは、コマンドを実行する前に名前と引数がシリアル化され、その後フラグがクリアされます。
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.UseRec();
    return null;
}

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

引数と実行の流れ:

  • これは、すべてのマウス操作、UO ゲッター、サーバー イベントを記録するわけではありません。サポートされているレガシー ディスパッチャからのコマンドを 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.SetRec();
        UO.TextPrint("This is not a legacy recording route");
        UO.Light(15);
        UO.UseRec();
        return null;
    }
}

コマンドの実装

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

UO.SetRec() — UO.SetRec()

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

結果: void / Unit.

呼び出し時:

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

case "setrec":

                    state.RecordedAction = string.Empty;

                    recordNextLegacyAction = true;

                    break;

UO.UseRec

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

C# のシグネチャ

void UO.UseRec();

保存された従来のコマンド UO を繰り返します。

引数

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

戻り値

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

動作

  • TryDeserializeRecordedLegacyAction は、YOKOREC1 プレフィックスと型付き引数をチェックします。エントリがありません/無効です - ローカル メッセージ、アクションはありません。有効なエントリは、保存された名前と引数を使用して ExecuteLegacyManualAlias を呼び出します。
  • replayingLegacyAction フラグは、リプレイ自体の書き込みを保護し、エラーが発生した場合でも、finally でクリアされます。エントリは繰り返しても削除されません: UseRec を再度呼び出すことができます。名前/serial は、保存されたタイプと現在のワールドに従って解決されます。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
  • このエントリでは、引数の型 int、double、string、recursive Array、および void が保持されます。他のオブジェクトはテキスト ToString として書き込まれます。ライブオブジェクト/ハンドルは繰り返しても復元されません。
  • RecordedAction はプロファイルの一般的な状態であり、recordNextLegacyAction/replayingLegacyAction はこの InjectionApiUO のプライベート フィールドです。このインスタンスのみが次の従来の呼び出しを記録します。別のスクリプトは共有書き込みをクリアまたは再実行できますが、そのインスタンスの書き込み待機フラグは消費しません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 保存された従来のコマンド UO を繰り返します。
UO.SetRec();
UO.Light(15);
UO.UseRec();

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

引数と実行の流れ:

  • TryDeserializeRecordedLegacyAction は、YOKOREC1 プレフィックスと型付き引数をチェックします。エントリがありません/無効です - ローカル メッセージ、アクションはありません。有効なエントリは、保存された名前と引数を使用して ExecuteLegacyManualAlias を呼び出します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.Wait(250);
    UO.UseRec();
    return null;
}

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

引数と実行の流れ:

  • replayingLegacyAction フラグは、リプレイ自体の書き込みを保護し、エラーが発生した場合でも、finally でクリアされます。エントリは繰り返しても削除されません: UseRec を再度呼び出すことができます。名前/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.SetRec();
        UO.Light(15);
        UO.UseRec();
        UO.Wait(250);
        UO.UseRec();
        return null;
    }
}

コマンドの実装

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

UO.UseRec() — UO.UseRec()

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

結果: void / Unit.

呼び出し時:

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

case "userec":

                    if (!TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments))

                    {

                        if (bridge != null) SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record.");

                        break;

                    }

                    replayingLegacyAction = true;

                    try

                    {

                        ExecuteLegacyManualAlias(recordedName, recordedArguments);

                    }

                    finally

                    {

                        replayingLegacyAction = false;

                    }

                    break;

Clone this wiki locally