Repository navigation
JA UO Topic journal
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
メッセージ、行インデックス、時間、色、serial 作成者を検索して待ちます。アクション後に予期されるメッセージから古いログ行を分離します。
| トピック | コマンドと説明 |
|---|---|
| Journal | UO.Journal |
| InJournal | UO.InJournal |
| InJournalBetweenTimes | UO.InJournalBetweenTimes |
| WaitJournalLine | UO.WaitJournalLine |
| System Journal | UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal · UO.WaitJournalLineSystem |
| Journal Ignore | UO.AddJournalIgnore · UO.ClearJournalIgnore |
| Journal Color | UO.JournalColor · UO.GetJournalColor |
| Journal Serial | UO.JournalSerial · UO.GetJournalSerial |
| Journal Timer | UO.JournalTimer |
| Found Text | UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer |
UO.Journal · UO.GetJournal · UO.InJournal · UO.InJournalBetweenTimes · UO.LowJournal · UO.HighJournal · UO.ClearJournal · UO.DeleteJournal · UO.ChangeJournalLength · UO.SetJournalLine · UO.AddToJournal · UO.LastJournalMessage · UO.LastMessage
UO.WaitJournalLine · UO.WaitJournalLineSystem · UO.WaitingForJournalText
UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal
UO.AddJournalIgnore · UO.ClearJournalIgnore
UO.JournalColor · UO.GetJournalColor · UO.JournalSerial · UO.GetJournalSerial · UO.JournalTimer · UO.LineCount · UO.LineID · UO.LineIndex · UO.LineMsgType · UO.LineName · UO.LineTextColor · UO.LineTextFont · UO.LineTime · UO.LineType
UO.FoundedParamId · UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
var found = UO.InJournal("You see");
if (Truth(found > 0))
{
var text = UO.GetFoundedText();
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;var started = Now();
var found = UO.WaitJournalLine(started, "success|failed", 3000);
if (Truth(found))
{
UO.Print(UO.GetFoundedText());
}
else
{
UO.Print("Timeout");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddJournalIgnore(object? str);ClassicUO ゲーム ログ エントリ用のローカル テキスト フィルターを追加します。
-
str- 日記エントリのテキスト内で検索する空ではないテキストの断片。
void。このコマンドは一致の数を返しません。
- テキストの端が切れています。空行は追加されません。レコードをチェックするとき、部分文字列の検索は大文字と小文字を区別せずに実行されます。一致したエントリはクライアント ログ内でローカルに隠されます。サーバーはフィルターを受信しません。
UO.ClearJournalIgnore()は、追加されたすべてのテキストフィルターをクリアします。すでに表示されているエントリは、消去しても復元されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddJournalIgnore");
UO.AddJournalIgnore("You see");引数と実行の流れ:
- このフレーズを含む新しい投稿を非表示にします。
UO.AddJournalIgnore("You see");引数と実行の流れ:
- フィルターは、大文字と小文字を区別しない部分文字列を検索します。
return RunScenario();
object? RunScenario()
{
var phrase = "vendor";
UO.AddJournalIgnore(phrase);
return null;
}引数と実行の流れ:
- 複数の呼び出しでは、独立したテキスト フィルターが追加されます。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.AddJournalIgnore("You see");
UO.AddJournalIgnore("vendor");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: str (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddJournalIgnore:bridge.AddJournalIgnore(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addjournalignore": bridge.AddJournalIgnore(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddToJournal(object? text);スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。
戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。
- メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
-
UO.Printは、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。 - このスクリプト ランタイムのシステム メッセージの色が使用されます。最初は 0x0440、変更された場合は UO.ConColor です。これはローカル エントリです。コマンド名はサーバーへの送信を意味するものではありません。
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddToJournal");
UO.AddToJournal("Script started");引数と実行の流れ:
- 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.AddToJournal("Processed item entries: " + Convert.ToString(processed));引数と実行の流れ:
- キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.AddToJournal("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.AddToJournal("Weight changed: " + Convert.ToString(current));
}
return current;
}
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 を使います。
引数: text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addtojournal":
case "addtosystemjournal":
case "clientprint":
SystemMessage(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddToSystemJournal(object? text);スクリプトの進行状況または停止条件に関するローカル メッセージを表示します。他のプレイヤーではなく、あなたがそれを見ます。
戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。
- メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
-
UO.Printは、ゲーム メッセージ ログに新しいエントリを追加します。まず、目的の検索文字列/結果を読み取るか保存し、次に診断メッセージを記録します。高速ループでは、反復ごとではなく、変更が発生したときにメッセージを記録します。 - このスクリプト ランタイムのシステム メッセージの色が使用されます。最初は 0x0440、変更された場合は UO.ConColor です。これはローカル エントリです。コマンド名はサーバーへの送信を意味するものではありません。
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddToSystemJournal");
UO.AddToSystemJournal("Script started");引数と実行の流れ:
- 処理済み=12 — すでに処理されたアイテムのデモ番号。 Convert.ToString はそれを文字列に変換します。この例では数値のみが報告されます。オブジェクト自体は転送されません。
var processed = 12;
UO.AddToSystemJournal("Processed item entries: " + Convert.ToString(processed));引数と実行の流れ:
- キャラクターの体重と最大値を読み取ります。ゼロまたは不明な最大値は過負荷とみなされません。重み >= 最大の場合、1 行が印刷され、メインが終了します。アイテムは捨てられません。
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.AddToSystemJournal("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Main は重みを記憶し、1000 ミリ秒待機して、完全に宣言された ReportWeight を呼び出します。アシスタントは、重量が変更された場合にのみ印刷し、次のチェックのために新しい重量を返します。それ自体は無限ループを作成しません。
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.AddToSystemJournal("Weight changed: " + Convert.ToString(current));
}
return current;
}
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 を使います。
引数: text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addtojournal":
case "addtosystemjournal":
case "clientprint":
SystemMessage(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddToSystemJournalEx(object? text, object? textColor, object? bgColor, object? fontSize, object? fontName);指定されたデザインのおおよその表示を含むローカル ラインをゲーム ウィンドウとログに出力します。スクリプト診断メッセージを区別できるようにするのに役立ちます。
-
textColor— UO hue ではなく、0xRRGGBB 形式のテキストの色。アルファチャンネルは使用されません。例 0xFF8800 - オレンジ;エンジンは、UO パレットから最も近い色を選択します。 -
bgColor- 負の数 - デフォルトの背景。非負 - RGB 0xRRGGBB。要求された背景は IDE の出力に書き込まれますが、線の後ろにある別の色付きの四角形はゲーム ウィンドウに描画されません。 -
fontSize— リクエストされたサイズ (ポイント単位): 値 <= 0 は 10 に置き換えられ、範囲 4..72 が適用されます。ゲームフォント番号は、(サイズ + 1) / 3 として整数で計算されます。ゲーム ウィンドウには正確なデスクトップ サイズはありません。 -
fontName— IDE に出力するデザイン情報を書き込むフォントの名前。端の周りの空白は削除されます。空の値は Consola を意味します。このコマンドは、任意の Windows フォントをゲーム ウィンドウにロードしません。
戻り値の型 void を持つメソッドの呼び出しは、スタンドアロン ステートメント C# として記述されます。結果を代入したり確認したりすることはできません。ステートメントを完了しても、ゲームサーバーからの確認にはなりません。
- Text、TextColor、BGColor、FontSize、FontName の 5 つの引数はすべて必須です。テキストはローカルで表示されます。 IDE では、リクエストされたデザインが追加で保存されます。背景色とフォント名はデザイン上のヒントであり、正確に再現されることは保証されません。 ConColor は、明示的に渡された RGB を変更しません。
- メッセージはゲーム ウィンドウの左下の領域とローカル ログに保存されます。コピーは出力 IDE で利用できます。マネージャーの一般ログで、スクリプト メッセージ フィルターを有効にします。エントリはゲーム ウィンドウなしで利用できます。サーバー システムのメッセージ フィルターは、そのようなレコードを選択しません。ネットワーク音声パケットは送信されません。頭上の碑文にはUO.CharPrintがあります。
- UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddToSystemJournalEx");
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");引数と実行の流れ:
- オレンジ色のメッセージ、デフォルトの背景 - 1、サイズ 12: これにより、ゲーム フォントが 4 になります。 Consolas は IDE 情報に保存されます。ゲームパレットにより、色は正確なRGBと異なる場合があります。
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");引数と実行の流れ:
- 正の BGColor 値 0x112233 は、バックグラウンドリクエストを IDE に保存します。 FontSize=0 10 が使用される場合、空の FontName が Consolas になります。ゲーム ウィンドウでは、このパラメータに従って背景は塗りつぶされません。
return RunScenario();
object? RunScenario()
{
UO.AddToSystemJournalEx("Formatting details", 0x33AAFF, 0x112233, 0, "");
return null;
}引数と実行の流れ:
- ReportCount は完全に宣言されたプロシージャです。数量の変化のみを報告し、増加する場合は緑の RGB を選択し、減少する場合は赤を選択します。次の比較のために新しい数量を返します。結果は AddToSystemJournalEx ではなく ReportCount に属します。
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 previous = 10;
previous = ReportCount(previous, 12);
return null;
}
dynamic ReportCount(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
var textColor = 0xCC3333;
if (Truth(current > previous))
{
textColor = 0x33AA66;
}
UO.AddToSystemJournalEx("Count: " + Convert.ToString(current), textColor, -1, 10, "Consolas");
}
return current;
}
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.AddToSystemJournalEx(text, textColor, bgColor, fontSize, fontName) — UO.AddToSystemJournalEx(Any,Any,Any,Any,Any)
引数: text (Any), textColor (Any), bgColor (Any), fontSize (Any), fontName (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PrintFormattedJournal:bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addtosystemjournalex":
bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ChangeJournalLength(object? newLength);保持されるクライアント ログ履歴の制限を変更します。
-
newLength— int に変換するレコードの数。ランタイム制限は以下の1; JournalManager は上記の定数からの制限です。MAX_JOURNAL_HISTORY_COUNT。
void - 戻り値はありません。
- 状態JournalLengthを保存し、SetJournalLengthを呼び出します。 JournalManager は、最も古いエントリを新しい制限まで削除することで、既存の履歴を削減します。フィルタリングされたエントリとログ表示は別のメカニズムです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ChangeJournalLength");
UO.ChangeJournalLength(100);引数と実行の流れ:
- 新しい制限により、保存されるレコードの数が制限されます。
UO.ChangeJournalLength(100);引数と実行の流れ:
- 制限が減少すると、古いエントリは削除されます。
return RunScenario();
object? RunScenario()
{
UO.ChangeJournalLength(1);
return null;
}引数と実行の流れ:
- ゼロはログをクリアするのではなく、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.ChangeJournalLength(0);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: newLength (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, 100). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLength:bridge.SetJournalLength(state.JournalLength).
内部実装のコードです。単独のスクリプトとして実行できません。
case "changejournallength": state.JournalLength = Math.Max(1, Arg(0, 100)); bridge.SetJournalLength(state.JournalLength); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearJournal();共有ローカルログから行を削除します。
パラメータはありません。
void - 戻り値はありません。削除された行数は返されません。ヒット カウンタと現在のスクリプト選択がリセットされます。
- 共有バッファはすべてのスクリプトで使用できます。削除された行はもう存在しません。他のスクリプトによって以前に保存されたスナップショットは残る場合がありますが、そのインデックスは -1 になります。
- テキスト フィルターを使用しない場合、システムを含むクラシック UO バッファー全体がクリアされます。ローカル ログ ファイルとサーバー メッセージは削除されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ClearJournal");
UO.ClearJournal();引数と実行の流れ:
- 議論はありません。共有バッファのすべての行が削除されます。
- 最後の検索カウンタは 0 になります。 Print はクリア後に新しい行を追加できます。
UO.ClearJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));引数と実行の流れ:
- クリアはタイムスタンプが保存される前に行われます。 1000 - ミリ秒単位の制限された待機時間。
- 通常、古いメッセージを除外するにはタイムスタンプで十分です。クリーンアップは他のスクリプトにも影響します。
return RunScenario();
object? RunScenario()
{
UO.ClearJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}引数と実行の流れ:
- 現在のスクリプトのインデックス =-1 をクリーンアップした後、バッファーの一部のみが削除された場合でも。
- テキスト変数には以前に読み取られたコピーが保存されており、GetFoundedText はすでにクリアされています。
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 text = UO.Journal(0);
UO.ClearJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DeleteJournal:DeleteJournal().
内部実装のコードです。単独のスクリプトとして実行できません。
case "clearjournal": DeleteJournal(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearJournalIgnore();すべてのテキスト フィルター JournalManager を削除します。
パラメータはありません。
void - 戻り値はありません。
- フィルターを削除しても、履歴は削除されず、AddChatUserIgnore 名前フィルターはキャンセルされません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ClearJournalIgnore");
UO.ClearJournalIgnore();引数と実行の流れ:
- すべてのテキスト フィルター JournalManager を削除します。
UO.ClearJournalIgnore();引数と実行の流れ:
- 「You see」テキストが再度表示されるようにします。
return RunScenario();
object? RunScenario()
{
UO.AddJournalIgnore("You see");
UO.ClearJournalIgnore();
return null;
}引数と実行の流れ:
- 空のセットをクリアすることは許容され、新しい設定は作成されません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClearJournalIgnore();
UO.ClearJournalIgnore();
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClearJournalIgnore:bridge.ClearJournalIgnore().
内部実装のコードです。単独のスクリプトとして実行できません。
case "clearjournalignore": bridge.ClearJournalIgnore(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearSystemJournal();著者名 System の行を削除します。
パラメータはありません。
void - 戻り値はありません。削除された行数は返されません。ヒット カウンタと現在のスクリプト選択がリセットされます。
- 共有バッファはすべてのスクリプトで使用できます。削除された行はもう存在しません。他のスクリプトによって以前に保存されたスナップショットは残る場合がありますが、そのインデックスは -1 になります。
- システムは作成者の名前で認識され、大文字と小文字は区別されません。これは、ClassicUO の一般的なジャーナル フィルターです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ClearSystemJournal");
UO.ClearSystemJournal();引数と実行の流れ:
- 引数はありません。 System 行のみが削除されます。
- 最後の検索カウンタは 0 になります。 Print はクリア後に新しい行を追加できます。
UO.ClearSystemJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));引数と実行の流れ:
- クリアはタイムスタンプが保存される前に行われます。 1000 - ミリ秒単位の制限された待機時間。
- 通常、古いメッセージを除外するにはタイムスタンプで十分です。クリーンアップは他のスクリプトにも影響します。
return RunScenario();
object? RunScenario()
{
UO.ClearSystemJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}引数と実行の流れ:
- 現在のスクリプトのインデックス =-1 をクリーンアップした後、バッファーの一部のみが削除された場合でも。
- テキスト変数には以前に読み取られたコピーが保存されており、GetFoundedText はすでにクリアされています。
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 text = UO.Journal(0);
UO.ClearSystemJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.DeleteSystemJournal:bridge.DeleteSystemJournal(). -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(null).
内部実装のコードです。単独のスクリプトとして実行できません。
case "clearsystemjournal": bridge.DeleteSystemJournal(); SelectJournalEntry(null); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.DeleteJournal();
void UO.DeleteJournal(object? text);共有ローカルログから行を削除します。
-
text— 検索された部分文字列または | によるいくつかの代替 (例: success|failed)。各選択肢の端にあるスペースは削除され、空の選択肢はスキップされます。これは正規表現ではなくプレーンテキストです。空ではないテンプレートを使用してください。 DeleteJournal のみのオプション: 送信時に、一致する文字列は大文字と小文字を区別しない方法で削除されます。引数を指定しないと、バッファ全体が削除されます。
void - 戻り値はありません。削除された行数は返されません。ヒット カウンタと現在のスクリプト選択がリセットされます。
- 共有バッファはすべてのスクリプトで使用できます。削除された行はもう存在しません。他のスクリプトによって以前に保存されたスナップショットは残る場合がありますが、そのインデックスは -1 になります。
- テキスト フィルターを使用しない場合、システムを含むクラシック UO バッファー全体がクリアされます。ローカル ログ ファイルとサーバー メッセージは削除されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.DeleteJournal");
UO.DeleteJournal();引数と実行の流れ:
- 議論はありません。共有バッファのすべての行が削除されます。
- 最後の検索カウンタは 0 になります。 Print はクリア後に新しい行を追加できます。
UO.DeleteJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));引数と実行の流れ:
- クリアはタイムスタンプが保存される前に行われます。 1000 - ミリ秒単位の制限された待機時間。
- 通常、古いメッセージを除外するにはタイムスタンプで十分です。クリーンアップは他のスクリプトにも影響します。
return RunScenario();
object? RunScenario()
{
UO.DeleteJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}引数と実行の流れ:
- 現在のスクリプトのインデックス =-1 をクリーンアップした後、バッファーの一部のみが削除された場合でも。
- テキスト変数には以前に読み取られたコピーが保存されており、GetFoundedText はすでにクリアされています。
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 text = UO.Journal(0);
UO.DeleteJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
return null;
}
}引数と実行の流れ:
- text には 2 つの部分文字列が含まれています。いずれの行も、大文字と小文字を区別せずに削除されます。残りのメッセージは残ります。
- 削除後に新しい一致するメッセージがない場合は、found=0。この実装の空のパターンはすべての文字列と一致します。
UO.DeleteJournal("notice|warning");
var found = UO.InJournal("notice|warning", -1);
UO.Print(Convert.ToString(found));C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.DeleteJournal. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.DeleteJournal:bridge.DeleteJournal(). -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(null).
内部実装のコードです。単独のスクリプトとして実行できません。
public void DeleteJournal()
{
bridge.DeleteJournal();
SelectJournalEntry(null);
}引数: text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.DeleteJournal. -
InjectionScript.Runtime.InjectionApiUO.DeleteJournal:DeleteJournal((string)text).
内部実装のコードです。単独のスクリプトとして実行できません。
public void DeleteJournal(InjectionValue text) => DeleteJournal((string)text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.FoundedParamId();一致した検索パターンの代替の番号を返します。
パラメータはありません。
int は空ではない代替案のリストの 0 から |: success|failed までのインデックスで、成功の場合は 0、失敗の場合は 1 が与えられます。適切な代替案が複数ある場合は、テンプレート内の最初の代替案が採用されます。試合なし、または直接 Journal または 0 の後。これは作成者の serial、行番号、メッセージの type ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- まずは検索結果>0を確認してください。 0 の値自体は成功を確認するものではありません。エッジスペースと空の代替部分は、番号を付ける前に削除されます。
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; 。この適応では、ID は代替を表し、作成者フィールドとタイプ フィールドは LineID/LineMsgType 経由で個別に利用できます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.FoundedParamId();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 成功は 0 の代替であり、失敗は 1 の代替です。検索の成功は個別にチェックされます。
- これはテキスト解析であり、サーバーによるゲーム動作の確認ではありません。
if (Truth(UO.InJournal("success|failed") > 0))
{
var outcome = UO.FoundedParamId();
if (Truth(outcome == 0))
{
UO.Print("Success text");
}
else
{
UO.Print("Failure text");
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- -1 はレジスタを無効にします。結果 0、1、2 は選択肢の順序に対応します。
- 文字列に複数のオプションが含まれている場合は、順序で最初に一致したパターンが返されます。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
{
var kind = UO.FoundedParamId();
UO.Print("Alternative: " + Convert.ToString(kind));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は選択肢を変更し、ID の選択肢をリセットするため、結果は事前に保存されます。
- Journal の後の新しい getter 呼び出しは、以前のパターンを記述しなくなりました。
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.InJournal("success|failed") > 0))
{
var outcome = UO.FoundedParamId();
var latest = UO.Journal(0);
UO.Print("Saved outcome: " + Convert.ToString(outcome));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "foundedparamid":
return new InjectionValue(foundedTextId >= 0 ? foundedTextId : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedText();選択したログ エントリのテキストを返します。
パラメータはありません。
string — 選択したエントリのテキスト。何も選択されていない空の行。既存のエントリには空白のテキストを使用できます。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
- プライマリディレクトリ: https://forum.yoko.com.ua/viewtopic.php?p=27633。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedText();
UO.Print("GetFoundedText: " + Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- string — 選択したエントリのテキスト。何も選択されていない空の行。既存のエントリには空白のテキストを使用できます。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedText();
UO.Print("Text: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedText();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedText();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: string / String.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public string GetFoundedText() => selectedJournalEntry?.Text ?? string.Empty;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedTextColor();選択したログエントリの色を返します。
パラメータはありません。
string - UO hue (0x0044 形式 (4 16 進数))。選択の余地はありません - 0x0000;メッセージには、hue=0 も使用できます。ここはRGBではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
- プライマリディレクトリ: https://forum.yoko.com.ua/viewtopic.php?p=27633。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedTextColor();
UO.Print("GetFoundedTextColor: " + Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- string - UO hue (0x0044 形式 (4 16 進数))。選択の余地はありません - 0x0000;メッセージには、hue=0 も使用できます。ここはRGBではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextColor();
UO.Print("Hue: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextColor();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextColor();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: string / String.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public string GetFoundedTextColor() => selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000";Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextID();一致した検索パターンの代替の番号を返します。
パラメータはありません。
int は空ではない代替案のリストの 0 から |: success|failed までのインデックスで、成功の場合は 0、失敗の場合は 1 が与えられます。適切な代替案が複数ある場合は、テンプレート内の最初の代替案が採用されます。試合なし、または直接 Journal または 0 の後。これは作成者の serial、行番号、メッセージの type ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- まずは検索結果>0を確認してください。 0 の値自体は成功を確認するものではありません。エッジスペースと空の代替部分は、番号を付ける前に削除されます。
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; 。この適応では、ID は代替を表し、作成者フィールドとタイプ フィールドは LineID/LineMsgType 経由で個別に利用できます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedTextID();
UO.Print("GetFoundedTextID: " + Convert.ToString(result));引数と実行の流れ:
- 成功は 0 の代替であり、失敗は 1 の代替です。検索の成功は個別にチェックされます。
- これはテキスト解析であり、サーバーによるゲーム動作の確認ではありません。
if (Truth(UO.InJournal("success|failed") > 0))
{
var outcome = UO.GetFoundedTextID();
if (Truth(outcome == 0))
{
UO.Print("Success text");
}
else
{
UO.Print("Failure text");
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- -1 はレジスタを無効にします。結果 0、1、2 は選択肢の順序に対応します。
- 文字列に複数のオプションが含まれている場合は、順序で最初に一致したパターンが返されます。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
{
var kind = UO.GetFoundedTextID();
UO.Print("Alternative: " + Convert.ToString(kind));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は選択肢を変更し、ID の選択肢をリセットするため、結果は事前に保存されます。
- Journal の後の新しい getter 呼び出しは、以前のパターンを記述しなくなりました。
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.InJournal("success|failed") > 0))
{
var outcome = UO.GetFoundedTextID();
var latest = UO.Journal(0);
UO.Print("Saved outcome: " + Convert.ToString(outcome));
}
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 を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public int GetFoundedTextID() => foundedTextId >= 0 ? foundedTextId : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextIndex();選択したエントリがまだログに保存されている場合は、そのエントリの現在のインデックスを返します。
パラメータはありません。
int は、0 (最新の行) からの現在のインデックスです。 -1 は、選択の余地がない、または選択したエントリがすでに削除/削除されていることを意味します。これは InJournal の結果ではありません。1 をインデックスから差し引く必要はありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- インデックスはレコードの ID に基づいて再計算されます。新しいメッセージを受信すると増加します。保存されている古いインデックスは定数 ID ではありません。テキストの場合は、GetFoundedText の方が安全です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedTextIndex();
UO.Print("GetFoundedTextIndex: " + Convert.ToString(result));引数と実行の流れ:
- 引数なしの Getter は、現在のスクリプトの選択内容を読み取ります。 0 — 新しい行、-1 — 現在のバッファーに行がありません。
- テキストは保存されたエントリから取得されるため、新しいメッセージによって置き換えられることはありません。
if (Truth(UO.InJournal("notice") > 0))
{
var index = UO.GetFoundedTextIndex();
var text = UO.GetFoundedText();
UO.Print(Convert.ToString(index) + ": " + text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は最後のエントリを選択します。チェックでは空のログは除外されます。
- 有効なエントリには空のテキストが許可されます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
if (Truth(UO.GetFoundedTextIndex() >= 0))
{
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 100 ミリ秒待つと、新しいメッセージが到着します。同じエントリが再び見つかった後。
- 削除すると増加するか、-1になる可能性があります。 GetFoundedText には保存されたテキストがまだ含まれています。
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.InJournal("needle") > 0))
{
var before = UO.GetFoundedTextIndex();
UO.Wait(100);
var after = UO.GetFoundedTextIndex();
UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
}
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 を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public int GetFoundedTextIndex() => selectedJournalEntry != null && bridge is IApiJournalReader reader
? reader.FindJournalEntryIndex(selectedJournalEntry.Identity) : foundedTextIndex;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedTextSerial();選択した日記エントリの作成者 serial を返します。
パラメータはありません。
0x00001234 形式 (8 16 進数) の作成者のstring - serial。選択の余地はありません - 0x00000000。これは主題の type やジャーナル索引ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
- プライマリディレクトリ: https://forum.yoko.com.ua/viewtopic.php?p=27633。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedTextSerial();
UO.Print("GetFoundedTextSerial: " + Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- 0x00001234 形式 (8 16 進数) の作成者のstring - serial。選択の余地はありません - 0x00000000。これは主題の type やジャーナル索引ではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextSerial();
UO.Print("Speaker serial: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextSerial();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextSerial();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: string / String.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public string GetFoundedTextSerial() => selectedJournalEntry != null
? $"0x{unchecked((uint)selectedJournalEntry.Serial):X8}" : "0x00000000";Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextTimer();選択したログ エントリのミリ秒のタイムスタンプを返します。
パラメータはありません。
int — ランタイムの開始からの瞬間をミリ秒単位で記録します。Now() と互換性があります。開始前のエントリーは0を与えます。仕方なく0も。カレンダーのマークが間違っていると、-1 が表示されます。過去形や 10 分の 1 秒 UO.Timer() ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
- プライマリディレクトリ: https://forum.yoko.com.ua/viewtopic.php?p=27633。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetFoundedTextTimer();
UO.Print("GetFoundedTextTimer: " + Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- int — ランタイムの開始からの瞬間をミリ秒単位で記録します。Now() と互換性があります。開始前のエントリーは0を与えます。仕方なく0も。カレンダーのマークが間違っていると、-1 が表示されます。過去形や 10 分の 1 秒 UO.Timer() ではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextTimer();
UO.Print("Timestamp ms: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextTimer();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextTimer();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetFoundedTextTimer. -
InjectionScript.Runtime.InjectionApiUO.JournalEntryTime:JournalEntryTime(selectedJournalEntry.Timestamp).
内部実装のコードです。単独のスクリプトとして実行できません。
public int GetFoundedTextTimer() => selectedJournalEntry != null ? JournalEntryTime(selectedJournalEntry.Timestamp) : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournal(object? index);現在のインデックスにある行のテキストを読み取り、GetFoundedText/Line* のそのエントリを選択します。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string — 文字列のテキスト。インデックスが正しくない場合やジャーナルが空の場合は空の文字列。既存の行には空のテキストを含めることもできます。読み取り後、LineIndex >= 0 により、エントリが選択されたことが確認されます。行数ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- 直接読み取りは ID の代替をリセットします。 GetFoundedTextID/FoundedParamId の後には 0 が続きます。 Journal 自体は LineCount を再計算しません。
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetJournal(0);
UO.Print("GetJournal: " + Convert.ToString(result));引数と実行の流れ:
- 0 が最新のラインです。まずテキストと著者が読み取られ、結果が表示されます。
- Print はメッセージを追加できます。保存されたテキスト/作成者は、以前に選択したエントリを参照します。
var text = UO.GetJournal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);引数と実行の流れ:
- 1 は前のエントリ、HighJournal は利用可能な最大インデックスです。
- ログは呼び出しの間に変更される場合があります。すでに見つかった行のデータには、GetFoundedText を使用します。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var text = UO.GetJournal(1);
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- LineIndex=-1 は、選択したエントリが見つからない/削除されていることを意味します。 Len(text)=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 text = UO.GetJournal(0);
var index = UO.LineIndex();
if (Truth(index < 0))
{
UO.Print("No record");
}
else
{
UO.Print("Text length: " + Convert.ToString(Len(text)));
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.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 を使います。
引数: index (Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetJournalText. -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(ReadJournalSnapshot(index)). -
InjectionScript.Runtime.InjectionApiUO.ReadJournalSnapshot:ReadJournalSnapshot(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string GetJournalText(int index)
{
SelectJournalEntry(ReadJournalSnapshot(index));
return selectedJournalEntry?.Text ?? string.Empty;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournalColor(object? index);選択したエントリを変更せずに、現在のインデックスにある行の hue フィールドを読み取ります。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string - UO hue を 0x0044 として。インデックス 0x0000 が間違っている場合。ここはRGBではありません。
- 各呼び出しは現在位置を読み取ります。同じレコードの一致したテキストとフィールドの場合は、最初に Journal(インデックス)、次に GetFoundedText/Line* となります。 Null 値は実際のデータである可能性があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetJournalColor(0);
UO.Print("GetJournalColor: " + Convert.ToString(result));引数と実行の流れ:
- 0 は新しい行のインデックスです。バッファの存在がチェックされます。
- string - UO hue を 0x0044 として。インデックス 0x0000 が間違っている場合。ここはRGBではありません。
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.GetJournalColor(0);
UO.Print(Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 1 は前の行であり、serial=1 ではありません。
- 検索で選択されたエントリGetFoundedText/Line*は変更されません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.GetJournalColor(1);
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- value は呼び出し時にフィールドをコピーします。待機しても変数は更新されません。
- 現在の行 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 value = UO.GetJournalColor(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.JournalColor. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalColor:bridge.JournalColor(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string JournalColor(int index) => bridge.JournalColor(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournalSerial(object? index);選択したエントリを変更せずに、現在のインデックスにある行の serial フィールドを読み取ります。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string - serial は 0x00001234 として作成されます。インデックス 0x00000000 が間違っている場合。
- 各呼び出しは現在位置を読み取ります。同じレコードの一致したテキストとフィールドの場合は、最初に Journal(インデックス)、次に GetFoundedText/Line* となります。 Null 値は実際のデータである可能性があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetJournalSerial(0);
UO.Print("GetJournalSerial: " + Convert.ToString(result));引数と実行の流れ:
- 0 は新しい行のインデックスです。バッファの存在がチェックされます。
- string - serial は 0x00001234 として作成されます。インデックス 0x00000000 が間違っている場合。
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.GetJournalSerial(0);
UO.Print(Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 1 は前の行であり、serial=1 ではありません。
- 検索で選択されたエントリGetFoundedText/Line*は変更されません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.GetJournalSerial(1);
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- value は呼び出し時にフィールドをコピーします。待機しても変数は更新されません。
- 現在の行 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 value = UO.GetJournalSerial(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.JournalSerial. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalSerial:bridge.JournalSerial(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string JournalSerial(int index) => bridge.JournalSerial(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.HighJournal();利用可能な最大のログ インデックスを返します。
パラメータはありません。
int: マガジンが空の場合は -1。それ以外の場合は、保存されているレコードの数から 1 を引いたものが、使用可能な最も古いレコードのインデックスになります。 Journal/GetJournal は、新しいレコードから古いレコードまでゼロインデックスを使用します。肯定的な結果 InJournal は、別の単一カウントを使用します。
- 新しいメッセージとクリーニングによって境界が変わります。ここでの順序は、新しいレコードから古いレコードへJournal(0)です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.HighJournal();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 負の境界は空のバッファを意味します。
- バッファが空でない場合、Journal(0) は新しいエントリを読み取ります。
if (Truth(UO.HighJournal() >= 0))
{
var text = UO.Journal(0);
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- ログが空の場合、HighJournal=-1、したがって合計=0。 LowJournal は行数ではなく下限を表します。
- これは、ローカルに保存されている行の総数です。 LineCount は最後の検索を指します。
return RunScenario();
object? RunScenario()
{
var total = UO.HighJournal() + 1;
UO.Print("Rows: " + Convert.ToString(total));
return null;
}引数と実行の流れ:
- インデックスは 1 を減算することなく、Journal に直接渡されます。
- インデックスは受信メッセージによって変化する可能性があります。バッファは呼び出し間でフリーズされません。
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 index = UO.HighJournal();
if (Truth(index >= 0))
{
var text = UO.Journal(index);
UO.Print(text);
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalEntryCount:bridge.JournalEntryCount().
内部実装のコードです。単独のスクリプトとして実行できません。
case "highjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : bridge.JournalEntryCount() - 1);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.InJournal(object? pattern);
int UO.InJournal(object? pattern, object? maxLinesOrIgnoreCase);
int UO.InJournal(object? pattern, object? serial, object? color);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly, object? caseSensitive);ローカル ログでメッセージを検索し、見つかったレコードをそのフィールドとともに保存します。
-
pattern— 検索された部分文字列または | によるいくつかの代替 (例: success|failed)。各選択肢の端にあるスペースは削除され、空の選択肢はスキップされます。これは正規表現ではなくプレーンテキストです。空ではないテンプレートを使用してください。 -
maxLinesOrIgnoreCase— 2 つの引数の形式のみ: -1 — 利用可能なログ全体。大文字と小文字は区別されません。 0 - 行をチェックしません。正の数 - この数の最後の行をチェックしてください。大文字と小文字は区別されます。その他の負の値は0 に限定されます。 -
serial— 3 番目以降の引数には拡張形式が含まれます。この形式の 2 番目の引数は、graphic/type ではなく、メッセージ作成者の数値 serial です。 -1 はフィルターを無効にします。 0 は serial=0 を選択します。数値を含む 16 進文字列も数値に変換されます。ここではオブジェクトのエイリアス名は許可されません。 -
color— 拡張形式の 3 番目の引数は数値 UO hue; -1 または 0xFFFF はフィルターを無効にします。 0 は hue=0 を選択します。ここはRGBではありません。 -
startTime— オプションの開始ラベル Now()、ミリ秒単位の int。正の endTime が与えられた場合、値 startTime=0 は実行の開始を意味します。両方のマークがないか、正でない場合、時間フィルターはありません。 -
endTime— オプションの終了ラベル Now()、ミリ秒単位の int。不在または 0 - 現在の時刻。正の境界の順序は重要ではありません。未来のラベルは現在の時間に限定されます。 -
newestOnly- オプションの bool、デフォルトの false。 true は最初の一致後に検索を停止します。 LineCount 次に、0 または 1。 false は一致する行をすべてカウントし、引き続き最新のものを選択します。 -
caseSensitive- オプションの bool 拡張形式、デフォルトは false です。 true では大文字と小文字が区別されます。一方、パターンのみのフォームでは、常に大文字と小文字が区別されます。
int: 0 – 適切なラインがありません。正の数値は、1 から始まるログ全体の終わりから数えた、最も新しい一致エントリの位置です。これは一致数やパターン代替数ではありません。ゼロインデックスには LineIndex/GetFoundedTextIndex を使用し、一致数には LineCount を使用し、代替番号には GetFoundedTextID を使用します。後続の新しいメッセージによってインデックスが変更される可能性がありますが、選択したレコードの保存されたフィールドは引き続き使用できます。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- 検索では新しいテキストは必要ありません。現在の InJournal の空のパターンは任意の文字列と一致しますが、ID に代替を提供しません。文字列をチェックするには、HighJournal/LowJournal を使用します。
- 2 つの引数形式では、serial ではなく、制限/ケースを指定します。 serial の場合は、カラーも渡すことが必須です。引数 1 つ SetJournalLine を使用すると、検索範囲を制限できます。
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
Now() は、現在の実行のホストを提供します。これは、ログが使用する同じネイティブ クロックのミリ秒単位の整数です。これを、Environment.TickCount、Unix 時間、または独自のストップウォッチに置き換えないでください。原点は異なります。通常の .cs/.csproj プログラムでは、渡された CSharpScriptGlobals で context.Now() を呼び出します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.InJournal("You see");
UO.Print("InJournal: " + Convert.ToString(result));引数と実行の流れ:
- pattern=これは部分文字列です。大文字と小文字が重要です。 found=0 は存在しないことを意味します。
- テキストは見つかったエントリからコピーされます。新しいメッセージが到着しても、それは置き換えられません。
var found = UO.InJournal("You see");
if (Truth(found > 0))
{
var text = UO.GetFoundedText();
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 2 番目の引数 -1 は、行制限を削除し、大文字と小文字の区別を無効にします。
- 結果=成功の場合は0、失敗の場合は1。これは発言者の ID ではなく、代替案の番号です。
return RunScenario();
object? RunScenario()
{
var found = UO.InJournal("success|failed", -1);
if (Truth(found > 0))
{
var outcome = UO.GetFoundedTextID();
UO.Print("Alternative: " + Convert.ToString(outcome));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 20 - チェックする最大行数。大文字と小文字が重要です。 matches - チェックされた領域内の一致する行の数。
- 見つかったものには位置プラス 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 found = UO.InJournal("bank", 20);
var matches = UO.LineCount();
UO.Print("Matches: " + Convert.ToString(matches));
return null;
}
}引数と実行の流れ:
- serial=0x00001234 — 著者の例、color=0x0044 — hue。実際の値に置き換えます。 starting/endTime — ミリ秒マーク。
- true の場合は最初の行で検索を停止します。 false では大文字と小文字が区別されません。 350 ms だけ個別に待機しますが、InJournal 自体は待機しません。
var started = Now();
UO.Wait(350);
var found = UO.InJournal("hello", 0x00001234, 0x0044, started, Now(), true, false);
if (Truth(found > 0))
{
UO.Print(UO.GetFoundedText());
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- serial=-1 と color=-1 は両方のフィルターを無効にします。 2 つのマーカーが時間を制限します。
- newestOnly と caseSensitive の省略: false と false。一致しない場合は、0 が返されます。
return RunScenario();
object? RunScenario()
{
var started = Now();
UO.Wait(100);
var found = UO.InJournal("notice", -1, -1, started, Now());
if (Truth(found == 0))
{
UO.Print("No matching message");
}
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 を使います。
引数: pattern (Any/String)
結果: int / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournal:InJournal(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "injournal": return new InjectionValue(InJournal(Text(0)));引数: pattern (Any/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.InJournal. -
InjectionScript.Runtime.InjectionApiUO.InJournalCore:InJournalCore(pattern, -1, ignoreCase: false).
内部実装のコードです。単独のスクリプトとして実行できません。
public int InJournal(string pattern)
=> InJournalCore(pattern, -1, ignoreCase: false);引数: pattern (String), maxLinesOrIgnoreCase (Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.InJournal. -
InjectionScript.Runtime.InjectionApiUO.InJournalCore:InJournalCore(pattern, maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase), ignoreCase: maxLinesOrIgnoreCase == -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public int InJournal(string pattern, int maxLinesOrIgnoreCase)
=> InJournalCore(pattern,
maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase),
ignoreCase: maxLinesOrIgnoreCase == -1);引数: pattern (Any), serial (Any), color (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactInJournal(values))引数: pattern (Any), serial (Any), color (Any), startTime (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactInJournal(values))引数: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactInJournal(values))
UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly) — UO.InJournal(Any,Any,Any,Any,Any,Any)
引数: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactInJournal(values))
UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly, caseSensitive) — UO.InJournal(Any,Any,Any,Any,Any,Any,Any)
引数: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any), caseSensitive (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactInJournal(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.InJournalBetweenTimes(object? pattern, object? startTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime, object? limit);2 つの実行タイムスタンプ間の文字列を検索し、一致する最新のエントリを保存します。
-
pattern— 検索された部分文字列または | によるいくつかの代替 (例: success|failed)。各選択肢の端にあるスペースは削除され、空の選択肢はスキップされます。これは正規表現ではなくプレーンテキストです。空ではないテンプレートを使用してください。 -
startTime— 必須ラベル Now(): ランタイムの開始からの int ミリ秒。 0 - 実行の開始。これはレコードの経過時間や端数の日付 LineTime ではありません。 -
endTime— オプションの Now() 終了ラベル。省略または正でない場合は、現在の時間が使用されます。正の境界は逆の順序で伝達できます。将来の境界は現在時刻に限定されます。 -
limit- オプションの 4 番目の引数: -1 - 制限なし、大文字と小文字は区別されません。正の数 — 間隔内の最大行数 (大文字と小文字は区別されます)。 0 および -1 を除く負の値 - 文字列はチェックされません。
int: 0 – 適切なラインがありません。正の数値は、1 から始まるログ全体の終わりから数えた、最も新しい一致エントリの位置です。これは一致数やパターン代替数ではありません。ゼロインデックスには LineIndex/GetFoundedTextIndex を使用し、一致数には LineCount を使用し、代替番号には GetFoundedTextID を使用します。後続の新しいメッセージによってインデックスが変更される可能性がありますが、選択したレコードの保存されたフィールドは引き続き使用できます。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- 2 つまたは 3 つの引数を持つフォームでは大文字と小文字が区別されます。枠線が含まれています。間隔を計算してもスクリプトは一時停止しません。
- ここでは、ラベル全体を Now() に渡します。 LineTime は別のユニットを返します。プライマリディレクトリ: 。
Now() は、現在の実行のホストを提供します。これは、ログが使用する同じネイティブ クロックのミリ秒単位の整数です。これを、Environment.TickCount、Unix 時間、または独自のストップウォッチに置き換えないでください。原点は異なります。通常の .cs/.csproj プログラムでは、渡された CSharpScriptGlobals で context.Now() を呼び出します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.InJournalBetweenTimes("You see", 0, Now());
UO.Print("InJournalBetweenTimes: " + Convert.ToString(result));引数と実行の流れ:
- 開始した内容はUseSkillまで保存されます。 endTime 省略 - 現在まで。 hidden はサーバー側テキストの例です。
- 大文字と小文字が考慮されます。メッセージは現在のステータスを証明するものではありません。 UO.Hidden() はキャラクターの状態を読み取ります。
var started = Now();
UO.UseSkill("Hiding");
UO.Wait(500);
if (Truth(UO.InJournalBetweenTimes("hidden", started) > 0))
{
UO.Print(UO.GetFoundedText());
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- startTime=0 — 実行の開始。終了 — 保存された終了ラベル (ミリ秒単位)。
- 終了後の新規メッセージは含まれません。実行時前の古いレコードも間隔の外にあります。
return RunScenario();
object? RunScenario()
{
var ended = Now();
var found = UO.InJournalBetweenTimes("notice", 0, ended);
UO.Print("Search result: " + Convert.ToString(found));
return null;
}引数と実行の流れ:
- 最後の1 は行制限を削除し、大文字と小文字を区別します。 3 番目の引数は終了ラベルであり、遅延ではありません。
- 結果 ID: 成功の場合は 0、失敗の場合は 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 started = Now();
UO.Wait(350);
var found = UO.InJournalBetweenTimes("success|failed", started, Now(), -1);
if (Truth(found > 0))
{
UO.Print(Convert.ToString(UO.GetFoundedTextID()));
}
return null;
}
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 を使います。
引数: pattern (Any/String), startTime (Any/Integer)
結果: int / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));引数: pattern (Any/String), startTime (Any/Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false). -
InjectionScript.Runtime.InjectionApiUO.CurrentJournalTime:CurrentJournalTime().
内部実装のコードです。単独のスクリプトとして実行できません。
public int InJournalBetweenTimes(string pattern, int startTime)
=> InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false);引数: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)
結果: int / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));
UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(String,Integer,Integer)
引数: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false).
内部実装のコードです。単独のスクリプトとして実行できません。
public int InJournalBetweenTimes(string pattern, int startTime, int endTime)
=> InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false);
UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(Any,Any,Any,Any)
引数: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)
結果: int / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));
UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(String,Integer,Integer,Integer)
引数: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, endTime, limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public int InJournalBetweenTimes(string pattern, int startTime, int endTime, int limit)
=> InJournalBetweenTimesCore(pattern, startTime, endTime,
limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Journal(object? index);現在のインデックスにある行のテキストを読み取り、GetFoundedText/Line* のそのエントリを選択します。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string — 文字列のテキスト。インデックスが正しくない場合やジャーナルが空の場合は空の文字列。既存の行には空のテキストを含めることもできます。読み取り後、LineIndex >= 0 により、エントリが選択されたことが確認されます。行数ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- 直接読み取りは ID の代替をリセットします。 GetFoundedTextID/FoundedParamId の後には 0 が続きます。 Journal 自体は LineCount を再計算しません。
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Journal(0);
UO.Print("Journal: " + Convert.ToString(result));引数と実行の流れ:
- 0 が最新のラインです。まずテキストと著者が読み取られ、結果が表示されます。
- Print はメッセージを追加できます。保存されたテキスト/作成者は、以前に選択したエントリを参照します。
var text = UO.Journal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);引数と実行の流れ:
- 1 は前のエントリ、HighJournal は利用可能な最大インデックスです。
- ログは呼び出しの間に変更される場合があります。すでに見つかった行のデータには、GetFoundedText を使用します。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var text = UO.Journal(1);
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- LineIndex=-1 は、選択したエントリが見つからない/削除されていることを意味します。 Len(text)=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 text = UO.Journal(0);
var index = UO.LineIndex();
if (Truth(index < 0))
{
UO.Print("No record");
}
else
{
UO.Print("Text length: " + Convert.ToString(Len(text)));
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.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 を使います。
引数: index (Any/Integer)
結果: string / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetJournalText:GetJournalText(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "journal": return new InjectionValue(GetJournalText(Arg(0)));引数: index (Any/Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetJournalText. -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(ReadJournalSnapshot(index)). -
InjectionScript.Runtime.InjectionApiUO.ReadJournalSnapshot:ReadJournalSnapshot(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string GetJournalText(int index)
{
SelectJournalEntry(ReadJournalSnapshot(index));
return selectedJournalEntry?.Text ?? string.Empty;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.JournalColor(object? index);選択したエントリを変更せずに、現在のインデックスにある行の hue フィールドを読み取ります。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string - UO hue を 0x0044 として。インデックス 0x0000 が間違っている場合。ここはRGBではありません。
- 各呼び出しは現在位置を読み取ります。同じレコードの一致したテキストとフィールドの場合は、最初に Journal(インデックス)、次に GetFoundedText/Line* となります。 Null 値は実際のデータである可能性があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.JournalColor(0);
UO.Print("JournalColor: " + Convert.ToString(result));引数と実行の流れ:
- 0 は新しい行のインデックスです。バッファの存在がチェックされます。
- string - UO hue を 0x0044 として。インデックス 0x0000 が間違っている場合。ここはRGBではありません。
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalColor(0);
UO.Print(Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 1 は前の行であり、serial=1 ではありません。
- 検索で選択されたエントリGetFoundedText/Line*は変更されません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalColor(1);
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- value は呼び出し時にフィールドをコピーします。待機しても変数は更新されません。
- 現在の行 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 value = UO.JournalColor(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.JournalColor. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalColor:bridge.JournalColor(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string JournalColor(int index) => bridge.JournalColor(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.JournalSerial(object? index);選択したエントリを変更せずに、現在のインデックスにある行の serial フィールドを読み取ります。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
string - serial は 0x00001234 として作成されます。インデックス 0x00000000 が間違っている場合。
- 各呼び出しは現在位置を読み取ります。同じレコードの一致したテキストとフィールドの場合は、最初に Journal(インデックス)、次に GetFoundedText/Line* となります。 Null 値は実際のデータである可能性があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.JournalSerial(0);
UO.Print("JournalSerial: " + Convert.ToString(result));引数と実行の流れ:
- 0 は新しい行のインデックスです。バッファの存在がチェックされます。
- string - serial は 0x00001234 として作成されます。インデックス 0x00000000 が間違っている場合。
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalSerial(0);
UO.Print(Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 1 は前の行であり、serial=1 ではありません。
- 検索で選択されたエントリGetFoundedText/Line*は変更されません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalSerial(1);
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- value は呼び出し時にフィールドをコピーします。待機しても変数は更新されません。
- 現在の行 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 value = UO.JournalSerial(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.JournalSerial. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalSerial:bridge.JournalSerial(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public string JournalSerial(int index) => bridge.JournalSerial(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.JournalTimer(object? index);選択したエントリを変更せずに、現在のインデックスにある行のタイムスタンプ フィールドを読み取ります。
-
index- 必須 int - 現在のインデックス: 0 は最新の行を意味し、1 - 前の行を意味します。インデックスはメッセージが到着するとシフトされます。これは、パターンの serial や ID の変形ではなく、InJournal の陽性結果でもありません。
int — ランタイムの開始からのミリ秒単位のレコード ラベル。Now() と互換性があります。 0 実行前に記録します。 -1 無効なインデックス/時間。これは記録の時代や 10 分の 1 秒 UO.Timer() ではありません。
- 各呼び出しは現在位置を読み取ります。同じレコードの一致したテキストとフィールドの場合は、最初に Journal(インデックス)、次に GetFoundedText/Line* となります。 Null 値は実際のデータである可能性があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.JournalTimer(0);
UO.Print("JournalTimer: " + Convert.ToString(result));引数と実行の流れ:
- 0 は新しい行のインデックスです。バッファの存在がチェックされます。
- int — ランタイムの開始からのミリ秒単位のレコード ラベル。Now() と互換性があります。 0 実行前に記録します。 -1 無効なインデックス/時間。これは記録の時代や 10 分の 1 秒 UO.Timer() ではありません。
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalTimer(0);
UO.Print(Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 1 は前の行であり、serial=1 ではありません。
- 検索で選択されたエントリGetFoundedText/Line*は変更されません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalTimer(1);
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- value は呼び出し時にフィールドをコピーします。待機しても変数は更新されません。
- 現在の行 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 value = UO.JournalTimer(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.JournalTimer. -
InjectionScript.Runtime.InjectionApiUO.JournalEntryTime:JournalEntryTime(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public int JournalTimer(int index) => JournalEntryTime(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastJournalMessage();最新のローカル ログ エントリのテキストを読み取ります。
パラメータはありません。
string — 新しいエントリのテキスト。ログがない場合、またはエントリ自体に空のテキストが含まれている場合は、空の文字列。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Journal(0) と同じ方法で、Line* の選択とフィールドを更新します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LastJournalMessage();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 引数はありません。 text は現在の最後の行をコピーします。
- 読み終わった後の印刷自体が最後のメッセージになる場合があります。
var text = UO.LastJournalMessage();
UO.Print(text);引数と実行の流れ:
- FindText は、1 または 0 からの位置を返します。最後の行のみがチェックされます。
- ログ全体を検索するには、InJournal を使用します。
return RunScenario();
object? RunScenario()
{
var text = UO.LastJournalMessage();
if (Truth(FindText(text, "bank") > 0))
{
UO.Print("Text contains bank");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}引数と実行の流れ:
- matched は最新が読み取られるまで保存されるため、新しい選択によって変更されることはありません。
- 最後のメッセージは、見つかったメッセージとは異なる場合があります。 found > 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 found = UO.InJournal("needle");
var matched = UO.GetFoundedText();
var latest = UO.LastJournalMessage();
UO.Print("Found: " + matched);
UO.Print("Latest: " + latest);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetJournalText:GetJournalText(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "lastjournalmessage": return new InjectionValue(GetJournalText(0));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.LastMessage();最新のローカル ログ エントリのテキストを読み取ります。
パラメータはありません。
string — 新しいエントリのテキスト。ログがない場合、またはエントリ自体に空のテキストが含まれている場合は、空の文字列。
- このゲッターは新しいエントリを読み取りますが、古い選択範囲 GetFoundedText/Line* を保持します。最後のエントリを選択するには、LastJournalMessage または Journal(0) を使用します。
- プライマリディレクトリ: https://forum.yoko.com.ua/viewtopic.php?p=27633。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.LastMessage();
UO.Print("LastMessage: " + Convert.ToString(result));引数と実行の流れ:
- 引数はありません。 text は現在の最後の行をコピーします。
- 読み終わった後の印刷自体が最後のメッセージになる場合があります。
var text = UO.LastMessage();
UO.Print(text);引数と実行の流れ:
- FindText は、1 または 0 からの位置を返します。最後の行のみがチェックされます。
- ログ全体を検索するには、InJournal を使用します。
return RunScenario();
object? RunScenario()
{
var text = UO.LastMessage();
if (Truth(FindText(text, "bank") > 0))
{
UO.Print("Text contains bank");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}引数と実行の流れ:
- matched は最新が読み取られるまで保存されるため、新しい選択によって変更されることはありません。
- 最後のメッセージは、見つかったメッセージとは異なる場合があります。 found > 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 found = UO.InJournal("needle");
var matched = UO.GetFoundedText();
var latest = UO.LastMessage();
UO.Print("Found: " + matched);
UO.Print("Latest: " + latest);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.LastMessage. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastMessage:bridge.LastMessage().
内部実装のコードです。単独のスクリプトとして実行できません。
public string LastMessage() => bridge.LastMessage();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineCount();最後の検索から一致する行の数を読み取ります。
パラメータはありません。
int は、最後にチェックされた領域内の一致するレコードの数です。一致するものがない場合は 0; newestOnly=true の場合、1 以下です。これは、ログ全体の行数、1 つのメッセージ内の部分文字列の出現数、または見つかったテキストの位置ではありません。
- 検索では、制限、時間、serial、hue、および 1 つの引数 SetJournalLine が考慮されます。直接 Journal/GetJournal はカウンターを再計算しません。掃除するとリセットされます。カウンタは現在のスクリプトのブリッジに属します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineCount();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 無制限に検索して登録してください。ライン内の鉱石の数ではなく、ラインがカウントされます。
- 結果 — 位置プラス 1;一致 - 別個の数量。
var result = UO.InJournal("ore", -1);
var matches = UO.LineCount();
UO.Print(Convert.ToString(matches));引数と実行の流れ:
- 10 — チェックされる最大行数。場合が考慮されます。
- もっと古い一致がある場合でも、カウントの範囲は 0 から 10 までです。
return RunScenario();
object? RunScenario()
{
var result = UO.InJournal("ore", 10);
UO.Print(Convert.ToString(UO.LineCount()));
return null;
}引数と実行の流れ:
- serial/color=-1、time=0/0 — フィルターは無効になります。 true は、最初に一致した行で検索を停止します。
- checkedMatches は 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 result = UO.InJournal("ore", -1, -1, 0, 0, true, false);
var checkedMatches = UO.LineCount();
UO.Print(Convert.ToString(checkedMatches));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalMatchCount:bridge.JournalMatchCount().
内部実装のコードです。単独のスクリプトとして実行できません。
case "linecount": return new InjectionValue(bridge.JournalMatchCount());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineID();選択した日記エントリの著者の数値 serial を返します。
パラメータはありません。
作者のint - 32-bit serial。選択肢はありません - 0。最上位ビットは、符号付き int により負の数になる場合があります。 GetFoundedTextSerial は完全な 16 進表現を保持します。これはgraphic/typeではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineID();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- 作者のint - 32-bit serial。選択肢はありません - 0。最上位ビットは、符号付き int により負の数になる場合があります。 GetFoundedTextSerial は完全な 16 進表現を保持します。これはgraphic/typeではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineID();
UO.Print("Speaker serial: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineID();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineID();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "lineid": return new InjectionValue(selectedJournalEntry?.Serial ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineIndex();選択したエントリがまだログに保存されている場合は、そのエントリの現在のインデックスを返します。
パラメータはありません。
int は、0 (最新の行) からの現在のインデックスです。 -1 は、選択の余地がない、または選択したエントリがすでに削除/削除されていることを意味します。これは InJournal の結果ではありません。1 をインデックスから差し引く必要はありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- インデックスはレコードの ID に基づいて再計算されます。新しいメッセージを受信すると増加します。保存されている古いインデックスは定数 ID ではありません。テキストの場合は、GetFoundedText の方が安全です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineIndex();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 引数なしの Getter は、現在のスクリプトの選択内容を読み取ります。 0 — 新しい行、-1 — 現在のバッファーに行がありません。
- テキストは保存されたエントリから取得されるため、新しいメッセージによって置き換えられることはありません。
if (Truth(UO.InJournal("notice") > 0))
{
var index = UO.LineIndex();
var text = UO.GetFoundedText();
UO.Print(Convert.ToString(index) + ": " + text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は最後のエントリを選択します。チェックでは空のログは除外されます。
- 有効なエントリには空のテキストが許可されます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
if (Truth(UO.LineIndex() >= 0))
{
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 100 ミリ秒待つと、新しいメッセージが到着します。同じエントリが再び見つかった後。
- 削除すると増加するか、-1になる可能性があります。 GetFoundedText には保存されたテキストがまだ含まれています。
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.InJournal("needle") > 0))
{
var before = UO.LineIndex();
UO.Wait(100);
var after = UO.LineIndex();
UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetFoundedTextIndex:GetFoundedTextIndex().
内部実装のコードです。単独のスクリプトとして実行できません。
case "lineindex": return new InjectionValue(GetFoundedTextIndex());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineMsgType();選択したログ エントリのネットワーク メッセージ タイプを返します。
パラメータはありません。
int - コード MessageType: 0 レギュラー、1 システム、2 エモート、3 リミット 3 スペル、6 ラベル、7 フォーカス、8 ささやき、9 エール、 10 呪文、13 ギルド、14 アライアンス、15 コマンド、16 GmChat、192 エンコード、255 パーティー。仕方がありません0。これらはクラシック コード UO です。サードパーティの例とは異なる番号に置き換えないでください。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineMsgType();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- int - コード MessageType: 0 レギュラー、1 システム、2 エモート、3 リミット 3 スペル、6 ラベル、7 フォーカス、8 ささやき、9 エール、 10 呪文、13 ギルド、14 アライアンス、15 コマンド、16 GmChat、192 エンコード、255 パーティー。仕方がありません0。これらはクラシック コード UO です。サードパーティの例とは異なる番号に置き換えないでください。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineMsgType();
UO.Print("Message type: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineMsgType();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineMsgType();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linemsgtype": return new InjectionValue(selectedJournalEntry?.MessageType ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineName();選択した日記エントリの著者名を返します。
パラメータはありません。
string — 選択したエントリの作成者の名前 (システム名やキャラクター名など)。選択/名前のない空の文字列。名前はキャラクターの一意性を保証するものではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- string — 選択したエントリの作成者の名前 (システム名やキャラクター名など)。選択/名前のない空の文字列。名前はキャラクターの一意性を保証するものではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineName();
UO.Print("Speaker: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineName();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineName();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linename": return new InjectionValue(selectedJournalEntry?.Name ?? string.Empty);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTextColor();選択したログ エントリの数値の色を返します。
パラメータはありません。
選択したエントリのint - UO hue (0…65535);仕方がありません0。ゼロは色として許容されます。これは作者のRGB や ID ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineTextColor();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- 選択したエントリのint - UO hue (0…65535);仕方がありません0。ゼロは色として許容されます。これは作者のRGB や ID ではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTextColor();
UO.Print("Hue: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTextColor();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineTextColor();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linetextcolor":
return new InjectionValue(selectedJournalEntry?.Color ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTextFont();選択したログ エントリのフォントを返します。
パラメータはありません。
int — 選択したレコードの UO フォント ID (クライアントでは 0…255);仕方がありません0。これは ID ゲームのフォントであり、IDE のフォント サイズではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineTextFont();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- int — 選択したレコードの UO フォント ID (クライアントでは 0…255);仕方がありません0。これは ID ゲームのフォントであり、IDE のフォント サイズではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTextFont();
UO.Print("Font ID: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTextFont();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineTextFont();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linetextfont": return new InjectionValue(selectedJournalEntry?.Font ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTime();選択したログ エントリのカレンダー タイムスタンプを返します。
パラメータはありません。
double — OLE 自動化 Date、30.12.1899 からの日数、小数部は時刻を指定します。選択肢はありません0。これは Now() ミリ秒や Unix タイムスタンプ全体ではありません。このような 2 つのマークの差に、ミリ秒単位で 86400000 が乗算されます。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineTime();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- double — OLE 自動化 Date、30.12.1899 からの日数、小数部は時刻を指定します。選択肢はありません0。これは Now() ミリ秒や Unix タイムスタンプ全体ではありません。このような 2 つのマークの差に、ミリ秒単位で 86400000 が乗算されます。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTime();
UO.Print("OLE date: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTime();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineTime();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linetime": return new InjectionValue(selectedJournalEntry?.Timestamp ?? 0d);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineType();選択したログ エントリのテキスト カテゴリを返します。
パラメータはありません。
int - クライアントのカテゴリ TextType: 0 CLIENT、1 SYSTEM、2 OBJECT、3 GUILD_ALLY。仕方がありません0。これは表示カテゴリーであり、serial、graphic、MessageType ではありません。
- Search and Journal/GetJournal/LastJournalMessage は、現在のスクリプト内の 1 つのエントリのテキストとフィールドを保存します。新しいメッセージはこれらのフィールドを置き換えません。レコードが制限付きジャーナルから削除された場合、保持されたフィールドは残りますが、LineIndex/GetFoundedTextIndex は -1 を返します。次の検索または読み取りでは、別のエントリが選択されます。検索の失敗、インデックスの無効、およびこのスクリプトによるクリアにより、選択がリセットされます。
- Getter は検索を実行せず、最新の行を選択します。 Null/空の値は有効なデータである可能性があります。検索結果を考慮してください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LineType();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Notice — 検索されたテキストの例。 Getter は、検索が成功した後にのみパラメーターなしで呼び出されます。
- int - クライアントのカテゴリ TextType: 0 CLIENT、1 SYSTEM、2 OBJECT、3 GUILD_ALLY。仕方がありません0。これは表示カテゴリーであり、serial、graphic、MessageType ではありません。
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineType();
UO.Print("Text category: " + Convert.ToString(value));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Journal(0) は新しいエントリを選択します。インデックスと値はPrintまで読み込まれます。
- インデックス チェックを使用すると、レコードが存在しないことと、有効な null または空のフィールドを区別できます。
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineType();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 最初の検索では成功が選択され、2 番目の検索では選択が置換またはリセットされます。保存されたファイルには、必須フィールドのコピーがすでに含まれています。
- 保存された var は、新たな検索、メッセージの消去または受信によって変更されません。
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.InJournal("success") > 0))
{
var saved = UO.LineType();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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 を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "linetype": return new InjectionValue(selectedJournalEntry?.TextType ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LowJournal();利用可能な最小のログ インデックスを返します。
パラメータはありません。
int: マガジンが空の場合は -1。それ以外の場合、0 は利用可能な最新のレコードのインデックスです。 Journal/GetJournal は、新しいレコードから古いレコードまでゼロインデックスを使用します。肯定的な結果 InJournal は、別の単一カウントを使用します。
- 新しいメッセージとクリーニングによって境界が変わります。ここでの順序は、新しいレコードから古いレコードへJournal(0)です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LowJournal();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 負の境界は空のバッファを意味します。
- バッファが空でない場合、Journal(0) は新しいエントリを読み取ります。
if (Truth(UO.LowJournal() >= 0))
{
var text = UO.Journal(0);
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- インデックスは 1 を減算することなく、Journal に直接渡されます。
- インデックスは受信メッセージによって変化する可能性があります。バッファは呼び出し間でフリーズされません。
return RunScenario();
object? RunScenario()
{
var index = UO.LowJournal();
if (Truth(index >= 0))
{
var text = UO.Journal(index);
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- LowJournal と HighJournal がインデックスの境界を形成します。行数ではありません。ログの内容は呼び出しの間に変更される場合があります。
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 first = UO.LowJournal();
int last = UO.HighJournal();
if (first > last)
return null;
for (int index = first; index <= last; index++)
UO.Print($"{index}: {UO.Journal(index)}");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalEntryCount:bridge.JournalEntryCount().
内部実装のコードです。単独のスクリプトとして実行できません。
case "lowjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetJournalLine(object? index);
void UO.SetJournalLine(object? stringIndex, object? text);行のテキストを変更します。別の 1 引数形式で検索の下限を指定します。
-
index— フォーム (インデックス,テキスト) の場合: 0 からの現在のインデックス。0 は改行です。フォーム (インデックス) の場合: インデックス Journal ではなく、内部バッファの先頭からスキップされた古い行の数。 0 では制限が解除されます。負の 1 つの引数の範囲は 0 に制限されます。 -
stringIndex— 互換性のある 2 つの引数のログのインデックスの名前: 0 からの現在のインデックス Journal。 -
text— 空白行を含む、既存の行の新しいテキスト。テキスト置換フォームでは必須です。
void - 戻り値はありません。インデックスが無効な場合、2 引数形式は何も変更しません。引数が 1 つの形式ではテキストは変更されません。
- 置換はローカルで行われ、サーバーには何も送信されません。著者/時間フィールドは保持されます。すでに選択されているテキスト スナップショットは、Journal まで、または検索が繰り返されるまで同じままです。
- 1 つの引数の境界は、非推奨の拡張機能です。つまり、現在のバッファー内の古い行の数です。記録が追放/削除されると、その意味が変わります。アクション間の信頼できる境界を得るには、Now() で InJournalBetweenTimes を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SetJournalLine");
UO.SetJournalLine(0);引数と実行の流れ:
- 0 — 新しい行; 2 番目の引数は新しい全文です。
- これにより、ローカル バッファが変更されます。読み取りと書き込みの間に新しいメッセージが到着する場合があります。インデックスは一定ではありません ID。
if (Truth(UO.HighJournal() >= 0))
{
var text = UO.Journal(0);
UO.SetJournalLine(0, "[read] " + text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 空行はテキストを置き換えますが、エントリやその作成者は削除されません。
- 無効なインデックスはスキップされます。存在する場合は、text="" であっても true にすることができます。
return RunScenario();
object? RunScenario()
{
UO.SetJournalLine(0, "");
var text = UO.Journal(0);
var exists = UO.LineIndex() >= 0;
UO.Print(Convert.ToString(exists));
return null;
}引数と実行の流れ:
- 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()
{
UO.SetJournalLine(0);
var found = UO.InJournal("notice", -1);
UO.Print(Convert.ToString(found));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: index (Integer)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetJournalLine. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(index).
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetJournalLine(int index) => bridge.SetJournalLine(index);引数: stringIndex (Any/Integer), text (Any/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(Arg(0)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "setjournalline":
if (arguments.Length > 1) bridge.SetJournalLine(Arg(0), Text(1));
else bridge.SetJournalLine(Arg(0));
return InjectionValue.Unit;引数: stringIndex (Any/Integer), text (Any/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetJournalLine. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(index, text).
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetJournalLine(int index, string text) => bridge.SetJournalLine(index, text);ClassicUO — Bad Newbie & C# Scripts IDE