Repository navigation
JA UO Topic gumps
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
サーバー ウィンドウの読み取りと応答の送信: ボタン、チェックボックス、ラジオ ボタン、フィールド。 ID ウィンドウ、serial オーナー、および開いているウィンドウ インデックスは交換できません。
| トピック | コマンドと説明 |
|---|---|
| GetGump | UO.GetGump |
| GetGumpInfo | UO.GetGumpInfo |
| Gump ID / Serial | UO.GetGumpID · UO.GetGumpSerial |
| Text Lines | UO.GetGumpTextLines · UO.GetGumpFullLines · UO.GetGumpShortLines |
| Buttons | UO.GetGumpButtonsDescription · UO.NumGumpButton |
| CheckBox | UO.NumGumpCheckBox · UO.GumpAutoCheckBox |
| RadioButton | UO.NumGumpRadiobutton · UO.GumpAutoRadiobutton |
| TextEntry | UO.NumGumpTextEntry · UO.GumpAutoTextEntry |
| WaitGump | UO.WaitGump |
| SelectGump | UO.SelectGump |
| SendGumpSelect | UO.SendGumpSelect |
| Ignore ガンプス | UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore |
| Close Gump | UO.IsGumpCanBeClosed · UO.CloseClientGump · UO.CancelGump |
UO.GetGump · UO.GetGumpID · UO.GetGumpSerial · UO.GetGumpCount · UO.GetGumpsCount · UO.GetGumpInfo · UO.GetGumpButtonsDescription · UO.GetGumpFullLines · UO.GetGumpShortLines · UO.GetGumpTextLines · UO.GumpObject · UO.LastGump · UO.IsGump · UO.GumpExists · UO.IsGumpCanBeClosed
UO.NumGumpButton · UO.NumGumpCheckBox · UO.NumGumpRadiobutton · UO.NumGumpTextEntry · UO.GumpAutoCheckBox · UO.GumpAutoRadiobutton · UO.GumpAutoTextEntry · UO.WaitGump · UO.WaitGumpCheck · UO.WaitGumpEntry · UO.SelectGump · UO.SendGumpSelect · UO.SetGump
UO.AddGumpIgnoreByID · UO.AddGumpIgnoreBySerial · UO.ClearGumpsIgnore · UO.CancelGump · UO.CloseClientGump
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.Print("Serial=" + Hex(info[0]));
UO.Print("GumpID=" + Hex(info[1]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;UO.WaitGump(100);
UO.UseObject("0x40001234");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreByID(object? id);UO.GetGumpInfo によって使用されるローカル例外リストに数値 ID ガンプを追加します。
-
idは、UO.GetGumpInfoを返す数値 ID ガンプです。
void。 ID を追加してもウィンドウは閉じられず、サーバーがウィンドウを処理したことも確認されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddGumpIgnoreByID");
UO.AddGumpIgnoreByID(123);引数と実行の流れ:
- UO.GetGumpInfoの結果からID 123でガンプを解消します。
UO.AddGumpIgnoreByID(123);引数と実行の流れ:
- 例外をスローする前に、ID を変数に格納します。
return RunScenario();
object? RunScenario()
{
var ignoredId = 123;
UO.AddGumpIgnoreByID(ignoredId);
return null;
}引数と実行の流れ:
- ID を追加します。各例外は GetGumpInfo に影響します。
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.AddGumpIgnoreByID(123);
UO.AddGumpIgnoreByID(456);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: id (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addgumpignorebyid": state.IgnoredGumpIds.Add(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddGumpIgnoreBySerial(object? serial);UO.GetGumpInfo によって使用されるローカル例外リストに serial ガンプを追加します。
-
serialは、UO.GetGumpInfoを返す数値 serial ガンプです。
void。 serial を追加してもウィンドウは閉じられず、サーバーがウィンドウを処理したことも確認されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.AddGumpIgnoreBySerial");
UO.AddGumpIgnoreBySerial(1073741824);引数と実行の流れ:
- 結果 UO.GetGumpInfo から serial 1073741824 でガンプを除去します。
UO.AddGumpIgnoreBySerial(1073741824);引数と実行の流れ:
- 変数からserialを渡します。
return RunScenario();
object? RunScenario()
{
var ignoredSerial = 1073741824;
UO.AddGumpIgnoreBySerial(ignoredSerial);
return null;
}引数と実行の流れ:
- GetGumpInfo の出力から 2 つの serial ガンプを除去します。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.AddGumpIgnoreBySerial(1073741824);
UO.AddGumpIgnoreBySerial(1073741825);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: serial (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "addgumpignorebyserial": state.IgnoredGumpSerials.Add(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelGump();
void UO.CancelGump(object? gumpId);互換性のあるリゾルバー CloseSimpleGump を介して、選択したサーバーガンプを閉じます。
-
gumpId- オプションのint/数値。リゾルバーは、まず一致するサーバー/ローカル serial を検索し、次にサーバーのガンプ インデックスを検索します。引数なしでは、-1 が渡され、最後のガンプが選択されます。
void - 戻り値はありません。
- gumpId という名前の引数は、ID のみを検索することを保証しません。サーバーガンプのCloseGumpUnsafeはボタン0を送信し、ローカルウィンドウを削除します。ガンプが見つからない場合、アクションはありません。これはCancelMenu ではなく、保留中の WaitGump をクリアするものでもありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.CancelGump");
UO.CancelGump();引数と実行の流れ:
- 引数のないフォームでは、利用可能な最新のサーバー ガンプが選択されます。
UO.CancelGump();引数と実行の流れ:
- 最初のガンプの実際の ID が使用されます。リストは通話の間に変更される場合があります。
return RunScenario();
object? RunScenario()
{
var id = UO.GetGumpID(0);
if (Truth(id != 0))
{
UO.CancelGump(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 値 -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.CancelGump(-1);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;引数: gumpId (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "cancelgump": bridge.CloseSimpleGump(arguments.Length > 0 ? Arg(0) : -1); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearGumpsIgnore();無視されたガンプ ID とガンプ serial ランタイムの両方のセットをクリアします。
パラメータはありません。
void - 戻り値はありません。
- 窓を閉めません。クリアされると、GetGumpInfo は以前に無視されたガンプのスナップショットを再び返すことができます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ClearGumpsIgnore");
UO.ClearGumpsIgnore();引数と実行の流れ:
- 無視されたガンプ ID とガンプ serial ランタイムの両方のセットをクリアします。
UO.ClearGumpsIgnore();引数と実行の流れ:
- 追加された無視ルールを削除します。
return RunScenario();
object? RunScenario()
{
UO.AddGumpIgnoreByID(0x1234);
UO.ClearGumpsIgnore();
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.ClearGumpsIgnore();
UO.ClearGumpsIgnore();
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "cleargumpsignore":
state.IgnoredGumpIds.Clear(); state.IgnoredGumpSerials.Clear(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseClientGump(object? id);ServerSerial が渡された ID と一致するローカルサーバーのガンプを削除します。
-
id- int/数値 ID は ServerSerial と比較して大きくなります。これはリスト インデックスでも、ローカル serial でもありません。
void - 戻り値はありません。
- ServerGumpsUnsafe を繰り返し、すべての一致のスナップショットを作成し、Dispose を呼び出します。 0 ボタンまたはフォームの結果をサーバーに送信しません。一致しない場合は何も変わりません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.CloseClientGump");
UO.CloseClientGump(UO.GetGumpID(0));引数と実行の流れ:
- GetGumpID はサーバー ID を提供します。 CloseClientGump は、一致するローカル ウィンドウを削除します。
if (Truth(UO.GetGumpsCount() > 0))
{
var id = UO.GetGumpID(0);
UO.CloseClientGump(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 目的のサーバーガンプのIDを指定します。一致しないものは受け入れられません。
return RunScenario();
object? RunScenario()
{
var id = 0x12345678;
UO.CloseClientGump(id);
return null;
}引数と実行の流れ:
- 通常、最初の Dispose の後、2 回目に閉じるとウィンドウは見つかりません。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = UO.GetGumpID(0);
if (Truth(id != 0))
{
UO.CloseClientGump(id);
UO.CloseClientGump(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: id (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseClientGump:bridge.CloseClientGump(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "closeclientgump": bridge.CloseClientGump(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGump(object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier);
dynamic UO.GetGump(object? gumpId, object? identifier, object? key);選択したサーバーガンプの 1 つのフィールドを読み取ります。ウィンドウ セレクターを明示的に設定できます。
-
gumpId- (gumpId,識別子) および (gumpId,識別子,キー) 形式の最初の int はオプションです。 int または数値文字列: 最初に正確に一致する GumpID/serial を検索し、次に 0 のインデックスを検索します。 -1 は、このスクリプトによって選択されたガンプであり、存在しない場合は、現在のリストの最後のガンプです。その他の負の int は 32 ビット ID を保持します。これは、NumGump* の厳密な GumpIndex とは対照的に、セレクターです。 -
identifier- string 大文字と小文字は区別されません。サポートされているすべての値と結果の型は「戻り値」セクションにリストされています。不明な名前は空の文字列を返します。 -
key- オプションの int、デフォルト - 1。ボタン/テキスト/object/コマンドの場合は 0 でインデックス付けします。これはID コントロールではありません。負のインデックスと範囲外の場合、ボタンの場合は 0 、テキスト フィールドの場合は空の文字列になります。他の識別子はキーを使用しません。
結果のタイプは識別子によって異なります。 int: buttonlen — 通常のボタンの数。 button — インデックスキーによる ButtonID。 textlen — 使用可能なテキスト要素の数。 injid — 現在のウィンドウ インデックス。返信済み — 0 (回答履歴は保存されません); inclient — 見つかったライブ ウィンドウの場合は 1、存在しない場合は 0。 objectcount — ネストされたコントロールを含むライブ コントロールの数。 string: serial および Gumpid - 16 進文字列 0xXXXXXXXX; text — インデックスキーの要素テキスト。 object — コントロールのタイプ名。コマンド — コントロールの説明 (タイプ、ページ、ID、座標、寸法、サポートされるフィールド)。ウィンドウがない場合、数値識別子は 0 を与え、文字列識別子は空の文字列を与えます。 injid=0 も有効な最初のインデックスです。0 自体はウィンドウが存在しないことを証明しません。これは Array や Pascal TGumpInfo ではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- SelectGump/InfoGump は、現在のランタイムでのみ選択されたウィンドウを指定します。選択したウィンドウが閉じている場合は、現在のリストの最後の項目が使用されますが、これは必ずしも最新の項目であるとは限りません。
- textlen/text は、サーバー パッケージの元の文字列プールではなく、使用可能なテキスト コントロールを参照します。 object/command は、ライブ コントロールのツリー全体を指します。異なるリストのインデックスを混合することはできません。
- 各呼び出しは現在の状態を個別に読み取ります。一致する serial、GumpID、およびリストの場合は、GetGumpInfo を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Gumpid と serial は、すでに 16 進数でフォーマットされた文字列を返します。追加のヘックスは必要ありません。空行は、読み取り時にウィンドウがないことを意味します。
var id = UO.GetGump("gumpid");
var serial = UO.GetGump("serial");
UO.Print(id + " / " + serial);引数と実行の流れ:
- buttonlen — ボタンの数。 i は、0 から count-1 までの行のインデックスです。ボタン - ID は、グラフィックスやインデックスではなく、回答用です。ウィンドウを変更するときは、リストを再読み込みしてください。
return RunScenario();
object? RunScenario()
{
var count = UO.GetGump("buttonlen");
var i = 0;
while (Truth(i < count))
{
var button = UO.GetGump("button", i);
UO.Print(Convert.ToString(button));
i = i + 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0x12345678 は GumpID/serial の例です。ID を目的の形式に置き換えてください。 key=0 の text は、最初に使用可能なテキスト コントロールを読み取ります。これはボタンとは異なるリストです。
- SelectGump は、指定されたウィンドウが存在しないことを報告しますが、その後の読み取りはブロックしません。必要に応じて、返された Gumpid を個別に確認してください。
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.SelectGump(0x12345678);
if (Truth(UO.GetGump("inclient")))
{
var count = UO.GetGump("textlen");
if (Truth(count > 0))
{
UO.Print(UO.GetGump("text", 0));
}
}
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 を使います。
引数: identifier (String)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue GetGump(string identifier) => LastGump(identifier, -1);引数: gumpId (Integer/String), identifier (String/Integer)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.GetGump:GetGump(gumpId, identifier, -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue GetGump(int gumpId, string identifier) => GetGump(gumpId, identifier, -1);引数: gumpId (Integer/String), identifier (String/Integer)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, key).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue GetGump(string identifier, int key) => LastGump(identifier, key);引数: gumpId (Integer), identifier (String), key (Integer)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetGump. -
InjectionScript.Runtime.InjectionApiUO.ConvertGumpValue:ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key)). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpValue:bridge.GetGumpValue(gumpId, identifier, key).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue GetGump(int gumpId, string identifier, int key)
=> ConvertGumpValue(identifier, bridge.GetGumpValue(gumpId, identifier, key));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpButtonsDescription(object? gumpIndex);通常のサーバーのガンプ ボタンの説明を返します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
Array - 通常のボタンの説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 各行には、ButtonID、アクション、toPage、およびグラフィックが含まれます。ラジオ ボタンは通常の回答ボタンではありません。
- SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGumpButtonsDescription(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpButtonsDescription(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- SetSilentMode(1) は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
- i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpButtonsDescription(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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 count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpButtonsDescription(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpButtonsDescription:bridge.GetGumpButtonsDescription(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpbuttonsdescription": return GumpLinesResult(bridge.GetGumpButtonsDescription(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpCount();短縮版 GetGumpsCount: アクティブなサーバーガンプの数。
パラメータはありません。
int >= 0 — 最後のウィンドウのインデックスではなく、ウィンドウの数。 0 — リストは空です。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetGumpCount();
UO.Print("GetGumpCount: " + Convert.ToString(result));引数と実行の流れ:
- これはサーバーのガンプの数であり、ウィンドウ インデックスではありません。現地のバックパックと地図はここには含まれません。
int count = UO.GetGumpCount();
UO.Print($"Active server gumps: {count}");引数と実行の流れ:
- インデックスはゼロから始まります。リストは呼び出しごとに変更される可能性があるため、読み取る前に現在の数量がチェックされます。
return RunScenario();
object? RunScenario()
{
int count = UO.GetGumpCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpCount())
break;
UO.Print($"Gump {index}: ID={UO.GetGumpID(index)}, serial={UO.GetGumpSerial(index)}");
}
return null;
}引数と実行の流れ:
- 待機はタイムアウトによって制限されます。窓が存在するだけでは、これが必要なガンプであることは証明されません。選択するには、ID にチェックを入れます。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
bool appeared = await WaitForGump(3000);
UO.Print(appeared ? "A server gump appeared" : "No server gump within the timeout");
return null;
}
async Task<bool> WaitForGump(int timeoutMs)
{
var timer = System.Diagnostics.Stopwatch.StartNew();
while (timer.ElapsedMilliseconds < timeoutMs)
{
if (UO.GetGumpCount() > 0)
return true;
await WaitAsync(50);
}
return false;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GetGumpCount. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
内部実装のコードです。単独のスクリプトとして実行できません。
public int GetGumpCount() => bridge.GetGumpCount();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpFullLines(object? gumpIndex);ネストされたサーバーガンプを含む、すべての生きている要素の説明を返します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
Array - ネストされた要素を含むすべての生きている要素の説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 現在のコントロール ツリーの説明: タイプ、ページ、ID、X/Y、サイズ、サポートされているフィールド。これは生のサーバー マークアップ パッケージではありません。
- SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGumpFullLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpFullLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- SetSilentMode(1) は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
- i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpFullLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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 count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpFullLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpFullLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpFullLines:bridge.GetGumpFullLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpfulllines": return GumpLinesResult(bridge.GetGumpFullLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpID(object? gumpIndex);サーバーの Gump インデックスから GumpID ウィンドウ タイプ ID を読み取ります。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
int — 32 ビットのウィンドウ タイプ識別子 GumpID。 0 は無効なインデックスです (ウィンドウ自体に serial=0 が存在する可能性もあります)。最上位ビットが設定されている場合、int は負になります。表示には Hex(value) を使用します。これは被験者の type やインデックスではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 一致する serial/GumpID ペアの場合、1 つの GetGumpInfo、つまり info[0] フィールドと info[1] フィールドを使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetGumpID(0);
UO.Print("GetGumpID: " + Convert.ToString(result));引数と実行の流れ:
- 0 はサーバーリストの最初のインデックスです。 Hex には、負の int のビット表現が格納されます。
var value = UO.GetGumpID(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- 不変リストの場合、カウントは最後のインデックスの後にあるため、missing=0 となります。最後の有効なインデックスは count-1 です。
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpID(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- 0x999 は ID の例です。これを目的のウィンドウの実際の ID に置き換えます。インデックス、ID、serial の所有者は異なる値です。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int wantedId = 0x00000999;
int count = UO.GetGumpsCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpsCount())
break;
if (UO.GetGumpID(index) == wantedId)
{
UO.Print($"Gump index {index}, serial {UO.GetGumpSerial(index)}");
return index;
}
}
return -1;
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpId:bridge.GetGumpId(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpid": return new InjectionValue(bridge.GetGumpId(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpInfo(object? gumpIndex);単一サーバーガンプの識別子と要素の一貫したスナップショットを返します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
配列 - 正確に 5 つの要素: [0] int serial; [1] int ガンプID; [2] 空ではないテキストの配列。 [3] 配列 通常のボタンの説明。 [4] 配列 は、ネストされた要素を含む、すべての生きている要素の説明です。このスクリプトによる無効なガンプ、閉じられたガンプ、または無視されたガンプは、空の配列 [] を生成します。最上位ビットのIDは負のintで表されます。空のテキスト配列自体はウィンドウがないことを意味しません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- スナップショット全体が 1 つのゲーム スレッド リクエストでコピーされます。戻った後にウィンドウを変更したり閉じたりしても、保存された配列は変更されません。
- コントロールの説明には、タイプ、ページ、ID、X/Y、寸法が示されます。ボタンにはさらに、ButtonID、アクション、toPage、graphic が含まれます。スイッチ - ID、チェック済み、非アクティブ/アクティブ。テキストにはスペースと =; を含めることができます。文字列はスペースによって無条件に解析できません。
- AddGumpIgnoreByID/AddGumpIgnoreBySerial 現在のスクリプトでこの読み取りのみの結果を非表示にします。 ClearGumpsIgnore はこれらのフィルターを削除します。 GetGumpsCountが減りません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGumpInfo(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- GumpIndex=0 — 最初のサーバーガンプ。長さチェックにより、欠落しているウィンドウ フィールドへのアクセスが保護されます。
- info[0] — serial、info[1] — GumpID;両方とも同じ録音に属します。
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.Print("Serial=" + Hex(info[0]));
UO.Print("GumpID=" + Hex(info[1]));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- info[3] — ボタンの説明の配列。行の ButtonID フィールドは、応答に ID を指定します。 i は単なる行インデックスであり、ButtonID ではありません。
- ラジオ ボタンはラジオ ボタンであり、通常のボタンのリストではなく、info[4] に表示されます。
return RunScenario();
object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var buttons = info[3];
var i = 0;
while (Truth(i < ArrayLength(buttons)))
{
UO.Print(buttons[i]);
i = i + 1;
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- info[2] - テキストのコピー。閉じることは、禁止されていないウィンドウ NoClose に対してのみ許可されます。
- 閉じても保存されたテキストは消去されません。既存のウィンドウでは空のテキスト配列も使用できます。
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 info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var texts = info[2];
UO.CloseSimpleGump(0);
if (Truth(ArrayLength(texts) > 0))
{
UO.Print(texts[0]);
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpId:bridge.GetGumpId(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpSerial:bridge.GetGumpSerial(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpTextLines:bridge.GetGumpTextLines(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpButtonsDescription:bridge.GetGumpButtonsDescription(index). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpFullLines:bridge.GetGumpFullLines(index). -
InjectionScript.Runtime.InjectionApiUO.StringArray:StringArray(snapshot.Text).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpinfo":
{
int index = Arg(0);
GumpSnapshot snapshot;
if (bridge is IApiGumpAccess reader)
snapshot = reader.ReadGump(index);
else
{
int id = bridge.GetGumpId(index);
snapshot = id == 0 ? null : new GumpSnapshot(bridge.GetGumpSerial(index), id,
bridge.GetGumpTextLines(index), bridge.GetGumpButtonsDescription(index), bridge.GetGumpFullLines(index));
}
if (snapshot == null || state.IgnoredGumpIds.Contains(snapshot.Id)
|| state.IgnoredGumpSerials.Contains(snapshot.Serial))
return new InjectionValue(Array.Empty<InjectionValue>());
return new InjectionValue(new[]
{
new InjectionValue(snapshot.Serial), new InjectionValue(snapshot.Id), StringArray(snapshot.Text),
StringArray(snapshot.Buttons), StringArray(snapshot.Controls)
});
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpSerial(object? gumpIndex);サーバーガンプインデックスによってserialインスタンス/ウィンドウ所有者を読み取ります。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
int は、ウィンドウ インスタンス/所有者の 32 ビット serial です。 0 は無効なインデックスです (ウィンドウ自体に serial=0 が存在する可能性もあります)。最上位ビットが設定されている場合、int は負になります。表示には Hex(値) を使用します。これは主題の type ではなく、インデックスでもありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 一致する serial/GumpID ペアの場合、1 つの GetGumpInfo、つまり info[0] フィールドと info[1] フィールドを使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetGumpSerial(0);
UO.Print("GetGumpSerial: " + Convert.ToString(result));引数と実行の流れ:
- 0 はサーバーリストの最初のインデックスです。 Hex には、負の int のビット表現が格納されます。
var value = UO.GetGumpSerial(0);
UO.Print(Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- 不変リストの場合、カウントは最後のインデックスの後にあるため、missing=0 となります。最後の有効なインデックスは count-1 です。
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var missing = UO.GetGumpSerial(count);
UO.Print(Hex(missing));
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- シリアルは、サーバー ウィンドウ、またはコマンド コントラクトに基づくその所有者によって所有されます。ガンプ指数の代わりに使用することはできません。
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 count = UO.GetGumpsCount();
for (int index = 0; index < count; index++)
{
if (index >= UO.GetGumpsCount())
break;
int serial = UO.GetGumpSerial(index);
UO.Print($"Window {index}: serial={UO.Int2Hex(serial)}, ID={UO.GetGumpID(index)}");
}
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpSerial:bridge.GetGumpSerial(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpserial": return new InjectionValue(bridge.GetGumpSerial(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpShortLines(object? gumpIndex);サーバーガンプのテキスト要素とボタンの説明を返します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
Array - テキスト要素とボタンの説明。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID コントロールではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 短いリストには、テキストやボタン タイプのない装飾は除外されます。ラジオボタンが含まれます。
- SilentMode=0 の場合、空ではない結果もテキスト ウィンドウに追加され、テキスト ウィンドウが開きます。 SetSilentMode(1) は配列を返すだけです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGumpShortLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpShortLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- SetSilentMode(1) は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
- i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpShortLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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 count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpShortLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GumpLinesResult:GumpLinesResult(bridge.GetGumpShortLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpShortLines:bridge.GetGumpShortLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpshortlines": return GumpLinesResult(bridge.GetGumpShortLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetGumpTextLines(object? gumpIndex);ラベル、HTML、入力フィールド、およびサーバー ガンプ スイッチのラベルの空でないテキストを返します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
Array — ラベル、HTML、入力フィールド、スイッチ ラベルの空でないテキスト。 [] - インデックスが無効であるか、一致する要素がありません。行インデックスは 0 で始まります。 ID 制御ではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- テキストのみ。 ButtonID、寸法、構造は含まれません。余計なものは印刷しません。
- GetGumpTextLines はテキストウィンドウを開きません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetGumpTextLines(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 ArrayLength は、回線を呼び出す前に回線の存在を確認します [0]。
var lines = UO.GetGumpTextLines(0);
if (Truth(ArrayLength(lines) > 0))
{
UO.Print(lines[0]);
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- SetSilentMode(1) は追加のテキストウィンドウを無効にします。この例の明示的な Print は引き続き文字列を出力します。
- i は配列のインデックスです。対応する説明から目的のボタン/スイッチの ID を選択します。
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(1);
var lines = UO.GetGumpTextLines(0);
var i = 0;
while (Truth(i < ArrayLength(lines)))
{
UO.Print(lines[i]);
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- カウントは最後のウィンドウのインデックスに変換されます。データはロードされたサーバーガンプから読み取られます。ローカル ウィンドウはここには含まれません。
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 count = UO.GetGumpsCount();
if (count == 0)
return null;
int index = count - 1;
var lines = UO.GetGumpTextLines(index);
foreach (object? line in (object? [])lines)
UO.Print(Convert.ToString(line) ?? "");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: dynamic / Array.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.StringArray:StringArray(bridge.GetGumpTextLines(Arg(0))). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpTextLines:bridge.GetGumpTextLines(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumptextlines": return StringArray(bridge.GetGumpTextLines(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetGumpsCount();アクティブなサーバーのガンプの数を返します。
パラメータはありません。
int >= 0 — 最後のウィンドウのインデックスではなく、ウィンドウの数。 0 — リストは空です。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GetGumpsCount();
UO.Print("GetGumpsCount: " + Convert.ToString(result));引数と実行の流れ:
- 引数はありません。 count=0 は、現在のリストにサーバー ウィンドウがないことを意味します。
var count = UO.GetGumpsCount();
if (Truth(count == 0))
{
UO.Print("No server gumps");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- i は 0 のインデックスです。結果の ID は、リスト内の位置ではなくウィンドウのタイプを識別します。
- ウォーク中にウィンドウが変更された場合、リストを再度読み取る必要があります。 count はインターフェイスをブロックしません。
return RunScenario();
object? RunScenario()
{
var count = UO.GetGumpsCount();
var i = 0;
while (Truth(i < count))
{
UO.Print(Hex(UO.GetGumpID(i)));
i = i + 1;
}
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- count-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 count = UO.GetGumpsCount();
if (Truth(count > 0))
{
var info = UO.GetGumpInfo(count - 1);
UO.Print(ArrayLength(info));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
内部実装のコードです。単独のスクリプトとして実行できません。
case "getgumpscount": return new InjectionValue(bridge.GetGumpCount());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoCheckBox(object? checkBoxID, object? value);最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。
-
checkBoxID- int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。 -
value- int - 1 有効、0 無効。ゼロ以外の数値には次のものも含まれます。 0/1 が推奨されます。ラジオ ボタンを選択すると、そのグループの隣接するラジオ ボタンの選択が解除されます。
void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。
- 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
- すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
- プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.GumpAutoCheckBox");
UO.GumpAutoCheckBox(33, 1);引数と実行の流れ:
- 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoCheckBox(33, 1);引数と実行の流れ:
- 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return RunScenario();
object? RunScenario()
{
UO.GumpAutoCheckBox(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}引数と実行の流れ:
- どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoCheckBox(33, 1);
UO.GumpAutoCheckBox(33, 0);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: checkBoxID (Any), value (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("checkbox", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "gumpautocheckbox": QueueGumpControl("checkbox", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoRadiobutton(object? radiobuttonID, object? value);最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。
-
radiobuttonID- int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。 -
value- int - 1 有効、0 無効。ゼロ以外の数値には次のものも含まれます。 0/1 が推奨されます。ラジオ ボタンを選択すると、そのグループの隣接するラジオ ボタンの選択が解除されます。
void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。
- 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
- すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
- プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.GumpAutoRadiobutton");
UO.GumpAutoRadiobutton(33, 1);引数と実行の流れ:
- 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoRadiobutton(33, 1);引数と実行の流れ:
- 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return RunScenario();
object? RunScenario()
{
UO.GumpAutoRadiobutton(33, 1);
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}引数と実行の流れ:
- どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoRadiobutton(33, 1);
UO.GumpAutoRadiobutton(33, 0);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: radiobuttonID (Any), value (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("radio", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "gumpautoradiobutton": QueueGumpControl("radio", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpAutoTextEntry(object? textEntryID, object? value);最初の適切なサーバーガンプで要素の値を 1 回設定します。要素がまだ存在しない場合は、待ち時間が節約されます。
-
textEntryID- int - 対応するタイプの要素の正確な ID。これはインデックスでも、GumpID でも、serial ウィンドウでもありません。 0 は、最初の要素を置換しない、通常の ID です。 -
value- string - クリア用の空行を含むフィールドテキスト。フィールド自体の長さと許可される文字に関する制限は維持されます。
void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。
- 最初に現在のインターフェイス順序で既存のウィンドウをチェックし、次に新規または更新されたサーバー レイアウトをチェックします。タイプと ID が最初に一致したときに 1 回発火します。特定のウィンドウの場合は、インデックスを指定して NumGump* を使用します。
- すべての保留中のフィールドは、自動ボタン応答の前に適用されます。 1 つのスクリプト内の同じタイプの繰り返しと ID は、まだ実行されていない値を置き換えます。制限 — 1024 保留中のクライアント フィールド。それを超えるとスクリプト エラーが発生します。
- プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。
- フィールドによって制限されたテキストは、短縮または拒否される可能性があります。見つかった要素は依然として 1 回限りのアクションを消費します。このコマンドはボタン応答を送信せず、サーバーを待ちません。確認するには、GetGumpInfo/NumGumpTextEntryを使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.GumpAutoTextEntry");
UO.GumpAutoTextEntry(33, "500");引数と実行の流れ:
- 最初のパラメータ 33 は、目的の要素の例 ID です。 InfoGump の実際の ID に置き換えます。 2 番目は設定する値です。要素がない場合、アクションは保留されたままになります。
UO.GumpAutoTextEntry(33, "500");引数と実行の流れ:
- 33 は要素の ID 、100 は確認 ButtonID の例、0x40001234 はフォームを開くオブジェクトの serial です。 3 つの値をすべて独自の値に置き換えます。ウィンドウが後で到着した場合でも、フィールドは回答前に入力されます。
return RunScenario();
object? RunScenario()
{
UO.GumpAutoTextEntry(33, "500");
UO.WaitGump(100);
UO.UseObject("0x40001234");
return null;
}引数と実行の流れ:
- どちらの呼び出しも ID 33 を使用します。要素がまだ出現していない場合は、最後の値が適用されます。ウィンドウがすでに開いている場合は、両方の変更が順番に即座に実行されます。
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.GumpAutoTextEntry(33, "500");
UO.GumpAutoTextEntry(33, "");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: textEntryID (Any), value (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.QueueGumpControl:QueueGumpControl("textentry", Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "gumpautotextentry": QueueGumpControl("textentry", Arg(0), Text(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GumpExists(object? id);
int UO.GumpExists(object? firstId, object? secondId);1 つのセレクターまたは正確なペア serial/GumpID を使用して、サーバー Gump の存在を確認します。
-
id— 1 つの引数形式: 数値 serial、GumpID、または 0 のインデックス。 -1 はここで最後のガンプを選択しません。 -
firstId— 2 つの引数形式: 数値 32 ビット serial (最上位ビットの負の int を含む)。 -
secondId— 2 つの引数形式: 正確な 32 ビット GumpID。 0 はワイルドカードではなく正確な数値です。 -1 のみ、serial/GumpID/index として firstId の 1 引数のチェックに戻ります。
int - 1、対応するウィンドウが現在存在する場合。それ以外の場合は、0。インデックス、serial、または一致の数は返されません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- このチェックではウィンドウの選択や予約は行われません。ペア ID は全体としてチェックされます。最上位ビットを含むID はフィルターを無効にしません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.GumpExists(0x87654321);
UO.Print("GumpExists: " + Convert.ToString(result));引数と実行の流れ:
- 0x87654321 — 目的の GumpID または serial。 1 つの引数は、これらのスペース ID を区別しません。
var exists = UO.GumpExists(0x87654321);
UO.Print(Convert.ToString(exists));引数と実行の流れ:
- 最初の番号は serial、2 番目の番号は GumpID です。符号付き int では両方とも負ですが、比較ではすべての 32 ビットが保持されます。
return RunScenario();
object? RunScenario()
{
var exists = UO.GumpExists(0x87654321, 0x98765432);
if (Truth(exists))
{
UO.Print("Matching pair exists");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- info[0]/info[1]は同じ画像に属します。存在 = 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 info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var exists = UO.GumpExists(info[0], info[1]);
UO.Print(Convert.ToString(exists));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: id (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GumpExists. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GumpExists:bridge.GumpExists(NumberConversions.ToInt(id), -1). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public int GumpExists(InjectionValue id) => bridge.GumpExists(NumberConversions.ToInt(id), -1);引数: firstId (Any), secondId (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.GumpExists. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GumpExists:bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(firstId).
内部実装のコードです。単独のスクリプトとして実行できません。
public int GumpExists(InjectionValue firstId, InjectionValue secondId)
=> bridge.GumpExists(NumberConversions.ToInt(firstId), NumberConversions.ToInt(secondId));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GumpObject(object? gumpId);後続の呼び出しのために既存のサーバー ガンプを選択します。
-
gumpId- int: 最初に LocalSerial または ServerSerial に一致し、次に現在のガンプス リストのインデックス 0 に一致します。これらはIDボタンではありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
- Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.GumpObject");
UO.GumpObject(0);引数と実行の流れ:
- 後続の呼び出しのために既存のサーバー ガンプを選択します。
if (Truth(UO.GumpExists(0)))
{
UO.GumpObject(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var serial = UO.GetGumpSerial(0);
UO.GumpObject(serial);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
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.GetGumpsCount() > 0))
{
UO.GumpObject(0);
UO.Print(UO.LastGump("gumpid"));
}
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 を使います。
引数: gumpId (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SelectGump:bridge.SelectGump(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "gumpobject": bridge.SelectGump(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGump();少なくとも 1 つのアクティブなサーバー ガンプがあるかどうかを確認します。
パラメータはありません。
int — 1、リストが空でない場合。空の場合は0。これは、ウィンドウの数ではなく、空き状況を示すものです。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.IsGump();
UO.Print("IsGump: " + Convert.ToString(result));引数と実行の流れ:
- 引数はありません。 GetGumpInfo(0) は最初の要素を読み取り、ウィンドウがすでに閉じられている場合は空の配列を返す場合があります。
if (Truth(UO.IsGump()))
{
var info = UO.GetGumpInfo(0);
UO.Print(ArrayLength(info));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 3 つの安定ウィンドウが存在する場合=1、カウント=3。
return RunScenario();
object? RunScenario()
{
var present = UO.IsGump();
var count = UO.GetGumpsCount();
UO.Print(Convert.ToString(present) + "/" + Convert.ToString(count));
return null;
}引数と実行の流れ:
- 約 3000 ミリ秒以内に待機し、50 ミリ秒ごとに確認してください。最後のプレゼントは待った後の状態を示しています。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
var started = Now();
while (Truth(UO.IsGump() == 0) && Truth(Now() - started < 3000))
{
await Delay(50);
}
var present = UO.IsGump();
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
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 を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount:bridge.GetGumpCount().
内部実装のコードです。単独のスクリプトとして実行できません。
case "isgump": return new InjectionValue(bridge.GetGumpCount() > 0 ? 1 : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsGumpCanBeClosed(object? gumpIndex);サーバーガンプをローカルで右クリックして閉じることが許可されているかどうかを確認します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。
int — 1、ウィンドウが存在し、CanCloseWithRightClick が有効な場合。それ以外の場合は、0。これは、閉じたり [キャンセル] ボタンが存在したりした結果ではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- NoClose は CloseSimpleGump を禁止します。 ButtonID をサーバーに送信する機能は別のアクションです。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.IsGumpCanBeClosed(0);
UO.Print("IsGumpCanBeClosed: " + Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。検証と閉鎖は別の課題です。インデックスはそれらの間で変わる可能性があります。
if (Truth(UO.IsGumpCanBeClosed(0)))
{
UO.CloseSimpleGump(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 既存のウィンドウの closeable=0 は、ウィンドウが存在しないことを意味するのではなく、ウィンドウを閉じることができないことを意味します。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var closable = UO.IsGumpCanBeClosed(0);
UO.Print(Convert.ToString(closable));
}
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 はこのインデックス コマンドには無効であり、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 result = UO.IsGumpCanBeClosed(-1);
UO.Print(Convert.ToString(result));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: gumpIndex (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsGumpCanBeClosed:bridge.IsGumpCanBeClosed(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "isgumpcanbeclosed": return new InjectionValue(bridge.IsGumpCanBeClosed(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastGump(object? identifier);
dynamic UO.LastGump(object? identifier, object? key);選択したサーバーガンプの 1 つのフィールドを読み取ります。このスクリプトによって選択されたウィンドウ、または現在のリストの最後の要素を使用します。
-
identifier- string 大文字と小文字は区別されません。サポートされているすべての値と結果の型は「戻り値」セクションにリストされています。不明な名前は空の文字列を返します。 -
key- オプションの int、デフォルト - 1。ボタン/テキスト/object/コマンドの場合は 0 でインデックス付けします。これはID コントロールではありません。負のインデックスと範囲外の場合、ボタンの場合は 0 、テキスト フィールドの場合は空の文字列になります。他の識別子はキーを使用しません。
結果のタイプは識別子によって異なります。 int: buttonlen — 通常のボタンの数。 button — インデックスキーによる ButtonID。 textlen — 使用可能なテキスト要素の数。 injid — 現在のウィンドウ インデックス。返信済み — 0 (回答履歴は保存されません); inclient — 見つかったライブ ウィンドウの場合は 1、存在しない場合は 0。 objectcount — ネストされたコントロールを含むライブ コントロールの数。 string: serial および Gumpid - 16 進文字列 0xXXXXXXXX; text — インデックスキーの要素テキスト。 object — コントロールのタイプ名。コマンド — コントロールの説明 (タイプ、ページ、ID、座標、寸法、サポートされるフィールド)。ウィンドウがない場合、数値識別子は 0 を与え、文字列識別子は空の文字列を与えます。 injid=0 も有効な最初のインデックスです。0 自体はウィンドウが存在しないことを証明しません。これは Array や Pascal TGumpInfo ではありません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- SelectGump/InfoGump は、現在のランタイムでのみ選択されたウィンドウを指定します。選択したウィンドウが閉じている場合は、現在のリストの最後の項目が使用されますが、これは必ずしも最新の項目であるとは限りません。
- textlen/text は、サーバー パッケージの元の文字列プールではなく、使用可能なテキスト コントロールを参照します。 object/command は、ライブ コントロールのツリー全体を指します。異なるリストのインデックスを混合することはできません。
- 各呼び出しは現在の状態を個別に読み取ります。一致する serial、GumpID、およびリストの場合は、GetGumpInfo を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LastGump("gumpid");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- Gumpid と serial は、すでに 16 進数でフォーマットされた文字列を返します。追加のヘックスは必要ありません。空行は、読み取り時にウィンドウがないことを意味します。
var id = UO.LastGump("gumpid");
var serial = UO.LastGump("serial");
UO.Print(id + " / " + serial);引数と実行の流れ:
- buttonlen — ボタンの数。 i は、0 から count-1 までの行のインデックスです。ボタン - ID は、グラフィックスやインデックスではなく、回答用です。ウィンドウを変更するときは、リストを再読み込みしてください。
return RunScenario();
object? RunScenario()
{
var count = UO.LastGump("buttonlen");
var i = 0;
while (Truth(i < count))
{
var button = UO.LastGump("button", i);
UO.Print(Convert.ToString(button));
i = i + 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0x12345678 は GumpID/serial の例です。ID を目的の形式に置き換えてください。 key=0 の text は、最初に使用可能なテキスト コントロールを読み取ります。これはボタンとは異なるリストです。
- SelectGump は、指定されたウィンドウが存在しないことを報告しますが、その後の読み取りはブロックしません。必要に応じて、返された Gumpid を個別に確認してください。
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.SelectGump(0x12345678);
if (Truth(UO.LastGump("inclient")))
{
var count = UO.LastGump("textlen");
if (Truth(count > 0))
{
UO.Print(UO.LastGump("text", 0));
}
}
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 を使います。
引数: identifier (String)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.LastGump. -
InjectionScript.Runtime.InjectionApiUO.LastGump:LastGump(identifier, -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue LastGump(string identifier) => LastGump(identifier, -1);引数: identifier (String), key (Integer)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.LastGump. -
InjectionScript.Runtime.InjectionApiUO.ConvertGumpValue:ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key)). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpValue:bridge.GetGumpValue(-1, identifier, key).
内部実装のコードです。単独のスクリプトとして実行できません。
public InjectionValue LastGump(string identifier, int key) => ConvertGumpValue(identifier, bridge.GetGumpValue(-1, identifier, key));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpButton(object? gumpIndex, object? value);厳密なウィンドウ インデックスと正確な ButtonID に基づいて、既存のサーバーのガンプ ボタンをアクティブにします。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 -
value- int - 通常のボタンの説明からの ButtonID。行番号でも、graphic ボタンでも、GumpID でもありません。
int (bool) - 1、ウィンドウとボタンが見つかり、ローカルアクションが実行された場合。ウィンドウ/ボタンがない場合は、0。ページを変更すると、1 も返されます。サーバー処理の確認ではありません。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- SwitchPage ボタンはローカルでページを切り替えます。 「アクティブ化」ボタンを押すとガンプ応答が発生します。通常は窓が閉まります。 SendGumpSelect とは異なり、このコマンドにはコントロール ツリー内の既存の ButtonID が必要です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.NumGumpButton(0, 77);
UO.Print("NumGumpButton: " + Convert.ToString(result));引数と実行の流れ:
- 0 はウィンドウインデックス、77 はインスペクタからの ButtonID の例です。フォームには実際の ID が必要です。
var ok = UO.NumGumpButton(0, 77);
if (Truth(ok == 0))
{
UO.Print("Button not found");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0x12345678 は予期される GumpID、100 は ButtonID です。これら 2 つの数字は、異なるスペース ID に属します。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpID(0) == 0x12345678))
{
var ok = UO.NumGumpButton(0, 100);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 33 - ID チェックボックス、1 - 有効、100 - ID ボタン。チェックボックスの状態は、[アクティブ化] ボタンの応答にのみ含まれます。
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.NumGumpCheckBox(0, 33, 1)))
{
var ok = UO.NumGumpButton(0, 100);
}
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 を使います。
引数: gumpIndex (Any), value (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ActivateGumpButton:bridge.ActivateGumpButton(Arg(0), Arg(1)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "numgumpbutton": return (bridge is IApiGumpAccess buttons
? buttons.ActivateGumpButtonAtIndex(Arg(0), Arg(1)) : bridge.ActivateGumpButton(Arg(0), Arg(1))) != 0 ? InjectionValue.True : InjectionValue.False;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpCheckBox(object? gumpIndex, object? cbid, object? value);サーバーガンプ内のフラグの状態をインデックスによって設定します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 -
cbid- int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。 -
value— int — 1 有効/選択、0 無効。ゼロ以外の数値、true およびチェックされた値も認識されます。 0 と 1 が推奨されます。
int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
- ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.NumGumpCheckBox(0, 33, 1);
UO.Print("NumGumpCheckBox: " + Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 33 — 正確な CBID; 1 - 新しい値。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpCheckBox(0, 33, 1);
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0 はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpCheckBox(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}引数と実行の流れ:
- 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
- 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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.NumGumpCheckBox(0, 33, 1)))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
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 を使います。
引数: gumpIndex (Any), cbid (Any), value (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
内部実装のコードです。単独のスクリプトとして実行できません。
case "numgumpcheckbox": return SetIndexedGumpValue(Arg(0), "checkbox", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpRadiobutton(object? gumpIndex, object? radiobuttonID, object? value);サーバーガンプのラジオボタンの状態をインデックスによって設定します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 -
radiobuttonID- int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。 -
value— int — 1 有効/選択、0 無効。ゼロ以外の数値、true およびチェックされた値も認識されます。 0 と 1 が推奨されます。
int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
- ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.NumGumpRadiobutton(0, 33, 1);
UO.Print("NumGumpRadiobutton: " + Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 33 — 正確な RadiobuttonID。 1 - 新しい値。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpRadiobutton(0, 33, 1);
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0 はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpRadiobutton(0, 33, 0);
UO.Print(Convert.ToString(ok));
return null;
}引数と実行の流れ:
- 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
- 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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.NumGumpRadiobutton(0, 33, 1)))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
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 を使います。
引数: gumpIndex (Any), radiobuttonID (Any), value (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
内部実装のコードです。単独のスクリプトとして実行できません。
case "numgumpradiobutton": return SetIndexedGumpValue(Arg(0), "radio", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.NumGumpTextEntry(object? gumpIndex, object? textEntryID, object? value);サーバーガンプの入力フィールドのテキストをインデックスによって設定します。
-
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 -
textEntryID- int - ガンプの説明の正確な ID 要素。これは要素のシリアル番号ではありません。欠落している ID はインデックスに置き換えられません。 -
value- string - 新しいテキスト。空の文字列を指定するとフィールドがクリアされます。フィールド自体の長さ/文字制限は維持されます。
int (bool) — 1、必要な要素が見つかり、その最終値が指定された値と一致する場合。 0 インデックスが無効であるか、ID/要素タイプが欠落しているか、フィールドが正確な値を取得していない場合。すでに設定されている値を再設定することも成功します。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- ローカル状態を変更します。フィールドとチェックされたラジオ ボタンが送信され、その後ボタンの応答が送信されます。
- ラジオ ボタンを選択すると、同じグループの隣接するラジオ ボタンの選択が解除されます。通常のチェックボックスは独立しています。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.NumGumpTextEntry(0, 33, "500");
UO.Print("NumGumpTextEntry: " + Convert.ToString(result));引数と実行の流れ:
- 0 — ウィンドウインデックス。 33 — 正確な TextEntryID; 「500」は新しい値です。ガンプの 33 を ID に置き換えます。
var ok = UO.NumGumpTextEntry(0, 33, "500");
if (Truth(ok == 0))
{
UO.Print("Control missing or value rejected");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- '' はフィールドをクリアするか、チェックを外します。フィールドの新しい値ではなく、変更が成功したことが返されます。
return RunScenario();
object? RunScenario()
{
var ok = UO.NumGumpTextEntry(0, 33, "");
UO.Print(Convert.ToString(ok));
return null;
}引数と実行の流れ:
- 100 - サーバー ButtonID 確認の例;ウィンドウの ID を交換する必要があります。 0 ~ SendGumpSelect(0,100) はウィンドウインデックスです。
- 答えによってガンプが閉じられ、インデックスが変更される可能性があります。 send はローカル送信を意味し、サーバーによって確認されていない操作の結果を意味します。
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.NumGumpTextEntry(0, 33, "500")))
{
var sent = UO.SendGumpSelect(0, 100);
UO.Print(Convert.ToString(sent));
}
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 を使います。
引数: gumpIndex (Any), textEntryID (Any), value (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SetIndexedGumpValue:SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(2).
内部実装のコードです。単独のスクリプトとして実行できません。
case "numgumptextentry": return SetIndexedGumpValue(Arg(0), "textentry", Arg(1), Text(2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SelectGump(object? id);後続の呼び出しのために既存のサーバー ガンプを選択します。
-
id- int: 最初に LocalSerial または ServerSerial に一致し、次に現在のガンプス リストのインデックス 0 に一致します。これらはIDボタンではありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
- Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SelectGump");
UO.SelectGump(0);引数と実行の流れ:
- 後続の呼び出しのために既存のサーバー ガンプを選択します。
if (Truth(UO.GumpExists(0)))
{
UO.SelectGump(0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Bridge.SelectGump は _selectedServerGump を保存します。 serial が一致しない場合は、インデックス 0..count-1 を取得します。見つかりません - 選択されたガンプは null になり、メッセージが表示されます。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
var serial = UO.GetGumpSerial(0);
UO.SelectGump(serial);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Gump が開かず、サーバーに応答が送信されません。インデックスはウィンドウの開閉時に変更されます。安定した選択を行うには、現在の serial/id を使用します。
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.GetGumpsCount() > 0))
{
UO.SelectGump(0);
UO.Print(UO.LastGump("gumpid"));
}
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 を使います。
引数: id (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SelectGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SelectGump:bridge.SelectGump(NumberConversions.ToInt(id)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void SelectGump(InjectionValue id) => bridge.SelectGump(NumberConversions.ToInt(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.SendGumpSelect(object? triggerId);
int UO.SendGumpSelect(object? gumpIndex, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId);
int UO.SendGumpSelect(object? serial, object? gumpId, object? triggerId, object? timeout);選択したサーバー ガンプの ButtonID を送信します。
-
triggerId- int または数値文字列 - サーバーの ButtonID。 0 は通常、クローズ/失敗を意味しますが、正確なアクションはサーバーによって決定されます。ツリー内に表示される ButtonID は必要ありません。 -
gumpIndex— 必須 int — 0 から GetGumpsCount()-1 までのアクティブサーバーガンプのインデックス。これは GumpID/serial ではありません。リスト外の負の数値とインデックスは無効です。ウィンドウを開いたり、閉じたり、並べ替えたりすると、インデックスが変更される可能性があります。行動する前にGetGumpID/GetGumpSerialを確認してください。 2 つの引数形式 (gumpIndex、triggerId) でのみ使用されます。 -
serial— 3/4 引数形式では、数値 32 ビット serial。 0 または -1 はフィルター serial を無効にします。最上位ビットを持つ負の数値を含む残りの数値は正確に比較されます。 -
gumpId— 3/4 引数形式では、数値の 32 ビット GumpID。 0 または -1 は、GumpID フィルターを無効にします。 16 進文字列が許可されます。名前 AddObject はここでは許可されません。 -
timeout— オプションの 4 番目の引数。一致する ID ペアを待機する int ミリ秒。デフォルトでは、0 は即時試行 1 回です。マイナスは0に限定されます。再チェック間隔 20 ミリ秒。
int — 1、ライブサーバーガンプが見つかり、応答が呼び出された場合。タイムアウトが経過する前にウィンドウが見つからなかった場合は、0。選択された ID を返さず、サーバーによる結果の確認を待ちません。
- アクティブなサーバーガンプで動作します。バックパック、マップ、設定、その他のローカル ウィンドウはこのリストには含まれません。 1 回の呼び出しでゲーム スレッド内のデータを読み取ります。異なる呼び出しでは、リストの異なる状態が表示される場合があります。
- 1 つの引数は、このスクリプトによって以前に選択されたガンプを選択します。閉じられている/選択されていない場合 - 現在のリストの最後の要素。 2 つの引数は厳密なインデックスを指定します。 3/4 - フィルター付きの ID のペア。
- 応答の選択と呼び出しは、1 つのゲーム スレッド リクエストで発生します。待機はプロシージャを停止することでキャンセルされます。サーバーの直接応答とページ変更を混同しないでください。SwitchPage ボタンには NumGumpButton が必要です。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.SendGumpSelect(100);
UO.Print("SendGumpSelect: " + Convert.ToString(result));引数と実行の流れ:
- SelectGump はタイプを選択します/serial 0x12345678 または不在を報告します。 100 - ボタンID。
- 選択したウィンドウがなくなった場合、1 引数のフォームは最後に使用可能なウィンドウを使用します。厳密な識別を行うには、2 つの ID を含むフォームを使用してください。
UO.SelectGump(0x12345678);
var sent = UO.SendGumpSelect(100);
UO.Print(Convert.ToString(sent));引数と実行の流れ:
- 0 はインデックス、100 は ButtonID です。 serial=0 ではありませんし、GumpID=100 でもありません。
return RunScenario();
object? RunScenario()
{
var sent = UO.SendGumpSelect(0, 100);
if (Truth(sent == 0))
{
UO.Print("No gump at index zero");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- info[0] - serial、info[1] - GumpID、100 - ButtonID。インデックスを変更しても、応答は別のタイプ/所有者にリダイレクトされません。
- シリアル/GumpID 値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 info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
var sent = UO.SendGumpSelect(info[0], info[1], 100);
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}引数と実行の流れ:
- 0 はフィルタ serial を無効にします。 0x87654321 — 最上位ビットを含む正確な ID。 100 — ボタン; 2000 — 最大待機時間 (ミリ秒)。無条件のワイルドカードとしては使用されません。
var sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000);
UO.Print(Convert.ToString(sent));C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: triggerId (Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(triggerId).
内部実装のコードです。単独のスクリプトとして実行できません。
public int SendGumpSelect(int triggerId) => bridge.SendGumpSelect(triggerId);引数: triggerId (Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect:SendGumpSelect(NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(triggerId).
内部実装のコードです。単独のスクリプトとして実行できません。
public int SendGumpSelect(string triggerId) => SendGumpSelect(NumberConversions.ToInt(triggerId));引数: gumpIndex (Any), triggerId (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(gumpIndex).
内部実装のコードです。単独のスクリプトとして実行できません。
public int SendGumpSelect(InjectionValue gumpIndex, InjectionValue triggerId)
=> bridge.SendGumpSelect(NumberConversions.ToInt(gumpIndex), NumberConversions.ToInt(triggerId));引数: serial (Any), gumpId (Any), triggerId (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serial).
内部実装のコードです。単独のスクリプトとして実行できません。
public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId)
=> bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId));引数: serial (Any), gumpId (Any), triggerId (Any), timeout (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SendGumpSelect. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendGumpSelect:bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId), NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout))). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serial).
内部実装のコードです。単独のスクリプトとして実行できません。
public int SendGumpSelect(InjectionValue serial, InjectionValue gumpId, InjectionValue triggerId, InjectionValue timeout)
=> bridge.SendGumpSelect(NumberConversions.ToInt(serial), NumberConversions.ToInt(gumpId),
NumberConversions.ToInt(triggerId), Math.Max(0, NumberConversions.ToInt(timeout)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetGump(object? identifier, object? key, object? stateValue);
void UO.SetGump(object? gumpId, object? identifier, object? key, object? stateValue);既存のサーバーガンプのフィールドを変更します。
-
gumpId- 4 つの引数形式のみ: serial/id またはゼロのガンプ インデックス。 3 つのフォーム - 1 - 選択された/最後のガンプを使用します。 -
identifier— 文字列「checkbox」、「radio」、または「textentry」。大文字と小文字は重要ではありません。サポートされていない名前を指定してもフィールドは変更されません。 -
key- int: 最初の LocalSerial/ID 要素、次に指定された種類の要素間のインデックス 0。要素がありません - エラー メッセージ。 -
stateValue— チェックボックス/ラジオの場合: 「チェック済み」、「true」、大文字と小文字を区別しない、またはゼロ以外の認識される int が含まれます。もう一方はオフになります。テキスト入力の場合 - ToString を介したすべてのテキスト。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- SetGumpValue は TrySetGumpValue を呼び出します。 0 を押すとメッセージが表示されます。既存のガンプのローカル フィールドを変更し、新しいウィンドウを待機するフックを登録しません。
- チェックボックス/テキストエントリを変更しても、それ自体はサーバーに応答を送信しません。応答するには、SendGumpSelect/WaitGump を介してボタンを選択します。ラジオ ボタンは別のビューで処理されます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SetGump");
UO.SetGump("checkbox", 0, 1);引数と実行の流れ:
- 既存のサーバーガンプのフィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SetGump("checkbox", 0, 1);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- SetGumpValue は TrySetGumpValue を呼び出します。 0 を押すとメッセージが表示されます。既存のガンプのローカル フィールドを変更し、新しいウィンドウを待機するフックを登録しません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.SetGump(0, "textentry", 0, "Example");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- チェックボックス/テキストエントリを変更しても、それ自体はサーバーに応答を送信しません。応答するには、SendGumpSelect/WaitGump を介してボタンを選択します。ラジオ ボタンは別のビューで処理されます。
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.GetGumpsCount() > 0))
{
UO.SetGump("radio", 0, "true");
UO.SetGump("checkbox", 0, 0);
}
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 を使います。
引数: identifier (Any), key (Any), stateValue (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:identifier.ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(key).
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetGump(InjectionValue identifier, InjectionValue key, InjectionValue stateValue)
=> bridge.SetGumpValue(-1, identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());引数: gumpId (Any), identifier (Any), key (Any), stateValue (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(gumpId). -
InjectionScript.Runtime.InjectionValue.ToString:identifier.ToString().
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetGump(InjectionValue gumpId, InjectionValue identifier, InjectionValue key, InjectionValue stateValue)
=> bridge.SetGumpValue(NumberConversions.ToInt(gumpId), identifier.ToString(), NumberConversions.ToInt(key), stateValue.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGump(object? value);
void UO.WaitGump(object? trigger1, object? trigger2);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15);
void UO.WaitGump(object? trigger1, object? trigger2, object? trigger3, object? trigger4, object? trigger5, object? trigger6, object? trigger7, object? trigger8, object? trigger9, object? trigger10, object? trigger11, object? trigger12, object? trigger13, object? trigger14, object? trigger15, object? trigger16);ボタンに対する一連のワンタイム応答を登録します。スクリプトはすぐに実行を続けます。ウィンドウがない場合でも、30 秒の遅延は発生しません。
-
value— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger1— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger2— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger3— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger4— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger5— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger6— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger7— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger8— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger9— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger10— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger11— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger12— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger13— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger14— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger15— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。 -
trigger16— シーケンス要素: int ButtonID、数値 string、|/カンマを含む文字列、またはそのような要素の配列。順序は左から右です。一般的な境界と規則 triggerId が適用されます。値は object? 形式の唯一のパラメータの名前であり、配列も受け入れます。
void - 何も返しません。成功も、新しい値も、サーバーの確認も返しません。
- 目的の ButtonID を持つ実際の Activate ボタンを探します。必要なボタンがないページやウィンドウを切り替えるボタンはスキップされます。後続の ID は、最初に待機しているものをバイパスしません。 1 つのマークアップ配信の場合、1 つのウィンドウに複数の応答はありません。更新されたマークアップでは、同じウィンドウ オブジェクトを使用できます。
- 同じスクリプトの次の WaitGump は、保留中のシーケンスを完了します。検索は GumpID に限定されません。正確に選択するには、NumGumpButton または SendGumpSelect を使用します。 ButtonID=0 は、ID 0 の既存のアクティブ化ボタンがある場合にのみ機能します。これは普遍的な閉鎖ではありません。
- プロシージャが正常に完了すると、待ち時間が短縮されます。所有者またはその名前を含む Terminate をキャンセルすると、待機が解消されます。 TerminateAllは、手続き完了後に残ったものも含めて全て削除します。世界を変えるとキューがクリアされます。期待値はプロファイルに保存されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.WaitGump");
UO.WaitGump(100);引数と実行の流れ:
- 100 — 応答の ButtonID。 WaitGump は UseObject の前に登録します。さらに実行しても、サーバーがすでに応答を受け入れたことを意味するわけではありません。
UO.WaitGump(100);
UO.UseObject("0x40001234");引数と実行の流れ:
- 7、22、1 はシーケンシャルフォームの ButtonID です。これらのIDは順番にチェックされます。引数の数は遅延を指定しません。呼び出しによりシーケンス全体が記録されます。
return RunScenario();
object? RunScenario()
{
UO.WaitGump(7, 22, 1);
UO.UseObject("0x40001234");
return null;
}引数と実行の流れ:
- 行 7|22|1 は同じシーケンスを指定します。次に、TerminateAll は保留中のガンプをすべてクリアし、すべての手順を停止します。これは世界規模の行動です。
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.WaitGump("7|22|1");
UO.TerminateAll();
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: value (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(arguments).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgump": CompactWaitGump(arguments); return InjectionValue.Unit;引数: value (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.WaitGump. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitGumpSelect:bridge.WaitGumpSelect(triggerId, 30_000).
内部実装のコードです。単独のスクリプトとして実行できません。
public void WaitGump(int triggerId)
{
if (bridge is IApiGumpAutomation automation) automation.QueueGumpButtons(new[] { triggerId });
else bridge.WaitGumpSelect(triggerId, 30_000);
}引数: value (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.WaitGump. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(chain). -
InjectionScript.Runtime.InjectionApiUO.WaitGump:WaitGump(NumberConversions.ToInt(triggerId)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(triggerId).
内部実装のコードです。単独のスクリプトとして実行できません。
public void WaitGump(string triggerId)
{
string text = (triggerId ?? string.Empty).Trim();
if (text.Contains('|') || text.Contains(','))
{
InjectionValue[] chain = text.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(value => new InjectionValue(value.Trim())).ToArray();
CompactWaitGump(chain);
return;
}
WaitGump(NumberConversions.ToInt(triggerId));
}引数: trigger1 (Any), trigger2 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}引数: trigger1 (Any), trigger2 (Any), trigger3 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6) — UO.WaitGump(Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}
UO.WaitGump(trigger1, trigger2, trigger3, trigger4, trigger5, trigger6, trigger7, trigger8, trigger9, trigger10, trigger11, trigger12, trigger13, trigger14, trigger15, trigger16) — UO.WaitGump(Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any,Any)
引数: trigger1 (Any), trigger2 (Any), trigger3 (Any), trigger4 (Any), trigger5 (Any), trigger6 (Any), trigger7 (Any), trigger8 (Any), trigger9 (Any), trigger10 (Any), trigger11 (Any), trigger12 (Any), trigger13 (Any), trigger14 (Any), trigger15 (Any), trigger16 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitGump]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitGump:CompactWaitGump(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values =>
{
CompactWaitGump(values);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpCheck(object? index, object? state);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2);
void UO.WaitGumpCheck(object? index, object? state, object? index2, object? state2, object? index3, object? state3);現在のガンプの最大 3 つのチェックボックス フィールドを変更します。
-
index— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
index2— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
index3— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
state— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。 -
state2— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。 -
state3— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- ExecuteLegacyManualAlias は引数をペアにして、それぞれに対して SetGumpValue(-1, "チェックボックス", セレクター, 値) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
- UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.WaitGumpCheck");
UO.WaitGumpCheck(0, 1);引数と実行の流れ:
- 現在のガンプの最大 3 つのチェックボックス フィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- ExecuteLegacyManualAlias は引数をペアにして、それぞれに対して SetGumpValue(-1, "チェックボックス", セレクター, 値) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1, 1, 0);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
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.GetGumpsCount() > 0))
{
UO.WaitGumpCheck(0, 1, 1, 0, 2, 1);
}
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 を使います。
引数: index (Any), state (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;引数: index (Any), state (Any), index2 (Any), state2 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;
UO.WaitGumpCheck(index, state, index2, state2, index3, state3) — UO.WaitGumpCheck(Any,Any,Any,Any,Any,Any)
引数: index (Any), state (Any), index2 (Any), state2 (Any), index3 (Any), state3 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpcheck":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "checkbox", Arg(index), Text(index + 1));
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitGumpEntry(object? index, object? text);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2);
void UO.WaitGumpEntry(object? index, object? text, object? index2, object? text2, object? index3, object? text3);現在のガンプの最大 3 つのテキスト入力フィールドを変更します。
-
index— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
index2— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
index3— int ID 要素またはゼロインデックス (SetGump など)。引数はセレクターと値のペアで指定します。 -
text— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。 -
text2— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。 -
text3— ToString までのフィールド値。チェックボックスには「チェック済み」/「true」/ゼロ以外の数値が含まれています。 textentry はテキストを受け入れます。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- ExecuteLegacyManualAlias は引数をペアで処理し、それぞれに対して SetGumpValue(-1, "textentry", selector, value) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
- UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.WaitGumpEntry");
UO.WaitGumpEntry(0, "Example");引数と実行の流れ:
- 現在のガンプの最大 3 つのテキスト入力フィールドを変更します。
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "Example");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- ExecuteLegacyManualAlias は引数をペアで処理し、それぞれに対して SetGumpValue(-1, "textentry", selector, value) を呼び出します。登録されたすべてのフォームは、2、4、または 6 の引数です。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "First", 1, "Second");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- UO.Wait という名前は待つという意味ではありません。ブロッキングや将来のガンプのためのキューはありません。フィールドが欠落している場合は、エラーが表示されます。ボタンの応答は送信されません。
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.GetGumpsCount() > 0))
{
UO.WaitGumpEntry(0, "First", 1, "Second", 2, "Third");
}
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 を使います。
引数: index (Any), text (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;引数: index (Any), text (Any), index2 (Any), text2 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;
UO.WaitGumpEntry(index, text, index2, text2, index3, text3) — UO.WaitGumpEntry(Any,Any,Any,Any,Any,Any)
引数: index (Any), text (Any), index2 (Any), text2 (Any), index3 (Any), text3 (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGumpValue:bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(index). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(index + 1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "waitgumpentry":
for (int index = 0; index + 1 < arguments.Length; index += 2)
bridge.SetGumpValue(-1, "textentry", Arg(index), Text(index + 1));
break;ClassicUO — Bad Newbie & C# Scripts IDE