Repository navigation
JA UO Topic record playback
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
サポートされているアクションを記録して繰り返します。記録および再生制限の構成は、コマンドの実装によって決まります。
| トピック | コマンドと説明 |
|---|---|
| SetRec | UO.SetRec |
| UseRec | UO.UseRec |
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
UO.SetRec();
UO.Light(15);UO.SetRec();
UO.Light(15);
UO.UseRec();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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() は読み取りのみを行い、待機フラグを消費しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SetRec");
UO.SetRec();引数と実行の流れ:
- 次のレガシー コマンド UO の記録を準備します。
UO.SetRec();
UO.Light(15);引数と実行の流れ:
- ExecuteLegacyManualAlias は状態をクリアします。 RecordedAction を実行し、recordNextLegacyAction=true を設定します。 SetRec/UseRec を除く、同じレガシー ディスパッチャーへの次の呼び出しでは、コマンドを実行する前に名前と引数がシリアル化され、その後フラグがクリアされます。
return RunScenario();
object? RunScenario()
{
UO.SetRec();
UO.Sound(0x0040);
UO.UseRec();
return null;
}引数と実行の流れ:
- これは、すべてのマウス操作、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 を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "setrec":
state.RecordedAction = string.Empty;
recordNextLegacyAction = true;
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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 のプライベート フィールドです。このインスタンスのみが次の従来の呼び出しを記録します。別のスクリプトは共有書き込みをクリアまたは再実行できますが、そのインスタンスの書き込み待機フラグは消費しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UseRec");
UO.UseRec();引数と実行の流れ:
- 保存された従来のコマンド UO を繰り返します。
UO.SetRec();
UO.Light(15);
UO.UseRec();引数と実行の流れ:
- TryDeserializeRecordedLegacyAction は、YOKOREC1 プレフィックスと型付き引数をチェックします。エントリがありません/無効です - ローカル メッセージ、アクションはありません。有効なエントリは、保存された名前と引数を使用して ExecuteLegacyManualAlias を呼び出します。
return RunScenario();
object? RunScenario()
{
UO.SetRec();
UO.Sound(0x0040);
UO.Wait(250);
UO.UseRec();
return null;
}引数と実行の流れ:
- 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 を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.TryDeserializeRecordedLegacyAction:TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record."). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias:ExecuteLegacyManualAlias(recordedName, recordedArguments).
内部実装のコードです。単独のスクリプトとして実行できません。
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;ClassicUO — Bad Newbie & C# Scripts IDE