JA UO Topic books - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
ゲームブックの読み取りと編集: タイトル、ページ、テキスト。有効なページ番号と記録効果については、カードを参照してください。
| トピック | コマンドと説明 |
|---|---|
| Read Page | UO.BookGetPageText |
| Set Page | UO.BookSetPageText |
| Set Header | UO.BookSetHeader |
| Set Text | UO.BookSetText |
| Clear Text | UO.BookClearText |
UO.BookGetPageText · UO.BookSetPageText · UO.BookSetHeader · UO.BookSetText · UO.BookClearText
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
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;UO.BookSetPageText(2, "Camp A");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BookClearText();開いている編集可能なブックのすべてのページからテキストを削除し、タイトルと著者を保持します。
パラメータはありません。
void - 値なし。これは書き込みリクエストであり、true/false やサーバーの確認ではありません。サーバーにより編集が禁止されている場合があります。
- まず、ゲームアクションを使用して目的の本を開きます。コマンドは最後に開いたブックを使用します: ID ブックは受け入れられません。複数の本をお持ちの場合は、正しいものを選択してください。 Get は、すでにロードされているページを読み取りますが、それ自体は不足しているページを要求しません。
- マネージャーでは、本の内容がセッションに保存されており、グラフィックなしで利用できます。ゲーム ウィンドウを閉じるとブックとドラフトが保存され、再度開くと復元されます。ワークブック自体を閉じると、開いているワークブックからそのワークブックが削除されます。接続を切断すると、サーバーの予約がリセットされます。
- 変更は、編集中の書籍にのみ適用できます。無効なページや長すぎるテキストは拒否されます。 BookSetText は最初の送信前にすべてのページをチェックします。遅延ページの誤りによって部分的な書き込みが行われることはありません。
- BookClearText は各ページに空のテキストを送信します。これにより、本の以前のテキストが破壊されます。編集したコピーに使用します。タイトルも作者もそのままです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.BookClearText");
UO.BookClearText();引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
UO.BookClearText();引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return RunScenario();
object? RunScenario()
{
UO.BookClearText();
UO.BookSetHeader("New expedition", "Alice");
UO.BookSetPageText(1, "Bring bandages");
return null;
}引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ResetNotebook("Supply list", "Alice", "Bandages" + Chr(10) + "Food");
return null;
}
void ResetNotebook(dynamic title, dynamic author, dynamic firstPage)
{
UO.BookClearText();
UO.BookSetHeader(title, author);
UO.BookSetPageText(1, firstPage);
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookClearText:bridge.BookClearText().
内部実装のコードです。単独のスクリプトとして実行できません。
case "bookcleartext":
state.BookPages.Clear();
bridge.BookClearText();
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.BookGetPageText(object? page);最後に開いた本の 1 ページのテキストを読みます。
-
page— serial 本ではなく、1 のページ番号。上限は、サーバーによって報告されるページ数です。
string — 末尾に空行を含まない、改行文字で区切られたページ行。ワークブックが開いていない場合、ページがまだ受信されていない場合、または数値が正しくない場合にも、空の文字列が返されます。これは、ページが存在すること、またはページが書き込み可能であることを示すものではありません。
- まず、ゲームアクションを使用して目的の本を開きます。コマンドは最後に開いたブックを使用します: ID ブックは受け入れられません。複数の本をお持ちの場合は、正しいものを選択してください。 Get は、すでにロードされているページを読み取りますが、それ自体は不足しているページを要求しません。
- マネージャーでは、本の内容がセッションに保存されており、グラフィックなしで利用できます。ゲーム ウィンドウを閉じるとブックとドラフトが保存され、再度開くと復元されます。ワークブック自体を閉じると、開いているワークブックからそのワークブックが削除されます。接続を切断すると、サーバーの予約がリセットされます。
- 変更は、編集中の書籍にのみ適用できます。無効なページや長すぎるテキストは拒否されます。 BookSetText は最初の送信前にすべてのページをチェックします。遅延ページの誤りによって部分的な書き込みが行われることはありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.BookGetPageText(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
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、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return RunScenario();
object? RunScenario()
{
var firstPage = UO.BookGetPageText(1);
if (Truth(firstPage != ""))
{
UO.BookSetPageText(3, firstPage);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ReplaceCampNote(2);
return null;
}
void ReplaceCampNote(dynamic page)
{
var text = UO.BookGetPageText(page);
if (Truth(text == "Camp A"))
{
UO.BookSetPageText(page, "Camp B");
}
}
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 を使います。
引数: page (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookGetPageText:bridge.BookGetPageText(pageNumber).
内部実装のコードです。単独のスクリプトとして実行できません。
case "bookgetpagetext":
{
int pageNumber = Math.Max(1, Arg(0));
string liveText = bridge.BookGetPageText(pageNumber);
if (!string.IsNullOrEmpty(liveText))
return new InjectionValue(liveText);
int page = pageNumber - 1;
return new InjectionValue(page < state.BookPages.Count ? state.BookPages[page] : string.Empty);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BookSetHeader(object? title, object? author);開いている編集可能なブックのタイトルと著者を指定します。
-
title— タイトル;グラフィックエディターとコマンドは、最初の 47 文字を保存します。 -
author— Author;最初の 29 文字が保存されます。
void - 値なし。これは書き込みリクエストであり、true/false やサーバーの確認ではありません。サーバーにより編集が禁止されている場合があります。
- まず、ゲームアクションを使用して目的の本を開きます。コマンドは最後に開いたブックを使用します: ID ブックは受け入れられません。複数の本をお持ちの場合は、正しいものを選択してください。 Get は、すでにロードされているページを読み取りますが、それ自体は不足しているページを要求しません。
- マネージャーでは、本の内容がセッションに保存されており、グラフィックなしで利用できます。ゲーム ウィンドウを閉じるとブックとドラフトが保存され、再度開くと復元されます。ワークブック自体を閉じると、開いているワークブックからそのワークブックが削除されます。接続を切断すると、サーバーの予約がリセットされます。
- 変更は、編集中の書籍にのみ適用できます。無効なページや長すぎるテキストは拒否されます。 BookSetText は最初の送信前にすべてのページをチェックします。遅延ページの誤りによって部分的な書き込みが行われることはありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.BookSetHeader");
UO.BookSetHeader("Mining route", "Alice");引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
UO.BookSetHeader("Mining route", "Alice");引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return RunScenario();
object? RunScenario()
{
var route = "Northern mine";
var author = "Alice";
UO.BookSetHeader("Route: " + route, author);
return null;
}引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
- 補助関数はそのまま与えられます。 true は、ローカルのチェックと呼び出しのみを実行することを意味します。サーバーによる録音の確認は返されません。
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 requested = SetNotebookHeader("Supply list", "Alice");
return null;
}
dynamic SetNotebookHeader(dynamic title, dynamic author)
{
if (Truth(Len(title) > 47) || Truth(Len(author) > 29))
{
return false;
}
UO.BookSetHeader(title, author);
return true;
}
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 を使います。
引数: title (Any), author (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetHeader:bridge.BookSetHeader(state.BookTitle, state.BookAuthor).
内部実装のコードです。単独のスクリプトとして実行できません。
case "booksetheader":
state.BookTitle = Text(0);
state.BookAuthor = Text(1);
bridge.BookSetHeader(state.BookTitle, state.BookAuthor);
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BookSetPageText(object? page, object? text);開いている編集可能なブックの 1 ページのテキストを置き換えます。
-
page— serial 本ではなく、1 のページ番号。上限は、サーバーによって報告されるページ数です。 -
text— テキスト。行は Chr(10) で区切られています。 Chr(13)が削除されました。 1 ページあたり最大 10 行、1 行あたり最大 53 文字。ヌル文字は禁止されています。
void - 値なし。これは書き込みリクエストであり、true/false やサーバーの確認ではありません。サーバーにより編集が禁止されている場合があります。
- まず、ゲームアクションを使用して目的の本を開きます。コマンドは最後に開いたブックを使用します: ID ブックは受け入れられません。複数の本をお持ちの場合は、正しいものを選択してください。 Get は、すでにロードされているページを読み取りますが、それ自体は不足しているページを要求しません。
- マネージャーでは、本の内容がセッションに保存されており、グラフィックなしで利用できます。ゲーム ウィンドウを閉じるとブックとドラフトが保存され、再度開くと復元されます。ワークブック自体を閉じると、開いているワークブックからそのワークブックが削除されます。接続を切断すると、サーバーの予約がリセットされます。
- 変更は、編集中の書籍にのみ適用できます。無効なページや長すぎるテキストは拒否されます。 BookSetText は最初の送信前にすべてのページをチェックします。遅延ページの誤りによって部分的な書き込みが行われることはありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.BookSetPageText");
UO.BookSetPageText(2, "Camp A");引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
UO.BookSetPageText(2, "Camp A");引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return RunScenario();
object? RunScenario()
{
UO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food");
return null;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
- 補助関数はそのまま与えられます。 true は、ローカルのチェックと呼び出しのみを実行することを意味します。サーバーによる録音の確認は返されません。
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 requested = AppendNote(1, "Return before night");
return null;
}
dynamic AppendNote(dynamic page, dynamic line)
{
if (Truth(Len(line) > 53))
{
return false;
}
var previous = UO.BookGetPageText(page);
if (Truth(previous == ""))
{
UO.BookSetPageText(page, line);
return true;
}
var lineCount = 1;
for (int index = (int)(1); index <= Len(previous); index += (int)(1))
{
if (Truth(Mid(previous, index, 1) == Chr(10)))
{
lineCount = lineCount + 1;
}
}
if (Truth(lineCount >= 10))
{
return false;
}
UO.BookSetPageText(page, previous + Chr(10) + line);
return true;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
string Mid(object? value, int start, int length = int.MaxValue)
{
string text = Convert.ToString(value) ?? "";
int offset = Math.Clamp(start - 1, 0, text.Length);
return text.Substring(offset, Math.Min(Math.Max(0, length), text.Length - offset));
}
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 を使います。
引数: page (Any), text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetPageText:bridge.BookSetPageText(page + 1, state.BookPages[page]).
内部実装のコードです。単独のスクリプトとして実行できません。
case "booksetpagetext":
{
int page = Math.Max(0, Arg(0) - 1);
while (state.BookPages.Count <= page) state.BookPages.Add(string.Empty);
state.BookPages[page] = Text(1);
bridge.BookSetPageText(page + 1, state.BookPages[page]);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BookSetText(object? text);開いている編集可能なブックの最初のページからテキストを書き込みます。
-
text— テキスト。行は Chr(10) で区切られています。 Chr(13)が削除されました。 1 ページあたり最大 10 行、1 行あたり最大 53 文字。ヌル文字は禁止されています。
void - 値なし。これは書き込みリクエストであり、true/false やサーバーの確認ではありません。サーバーにより編集が禁止されている場合があります。
- まず、ゲームアクションを使用して目的の本を開きます。コマンドは最後に開いたブックを使用します: ID ブックは受け入れられません。複数の本をお持ちの場合は、正しいものを選択してください。 Get は、すでにロードされているページを読み取りますが、それ自体は不足しているページを要求しません。
- マネージャーでは、本の内容がセッションに保存されており、グラフィックなしで利用できます。ゲーム ウィンドウを閉じるとブックとドラフトが保存され、再度開くと復元されます。ワークブック自体を閉じると、開いているワークブックからそのワークブックが削除されます。接続を切断すると、サーバーの予約がリセットされます。
- 変更は、編集中の書籍にのみ適用できます。無効なページや長すぎるテキストは拒否されます。 BookSetText は最初の送信前にすべてのページをチェックします。遅延ページの誤りによって部分的な書き込みが行われることはありません。
- BookSetText: Chr(12) は明示的にページを分割します。 Chr(12) が存在しない場合、10 行ごとに 1 ページが形成されます。残りの古いページはクリアされません。完全に置き換えるには、まず BookClearText を個別に呼び出します。空白のテキストは最初のページのみを置き換えます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.BookSetText");
UO.BookSetText("Camp A\nReturn home");引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
UO.BookSetText("Mining route" + Chr(10) + "Start at camp");
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return RunScenario();
object? RunScenario()
{
UO.BookSetText("Camp A" + Chr(12) + "Camp B" + Chr(12) + "Return home");
return null;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();引数と実行の流れ:
- すべての例では、必要なブックがすでに開かれており、必要なページが受信され、そのブックが記録用に編集中であることを前提としています。数字 1、2、3 はページ番号です。それらが存在することを確認してください。テキスト/名前はデモ用です。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
WriteRoute("Northern mine", "Bring bandages");
return null;
}
void WriteRoute(dynamic destination, dynamic supplies)
{
var firstPage = "Destination" + Chr(10) + destination;
var secondPage = "Supplies" + Chr(10) + supplies;
UO.BookSetText(firstPage + Chr(12) + secondPage);
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetText:bridge.BookSetText(bookText).
内部実装のコードです。単独のスクリプトとして実行できません。
case "booksettext":
{
string bookText = Text(0) ?? string.Empty;
state.BookPages.Clear();
state.BookPages.AddRange(bookText.Split(new[] { '\f' }, StringSplitOptions.None));
bridge.BookSetText(bookText);
return InjectionValue.Unit;
}