Repository navigation
JA UO Topic items Part 2
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.MoveItem(object? id);
int UO.MoveItem(object? id, object? amount);
int UO.MoveItem(object? id, object? amount, object? targetContainer);
int UO.MoveItem(object? item, object? amount, object? container, object? x);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y);
int UO.MoveItem(object? id, object? amount, object? targetContainer, object? x, object? y, object? z);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y, object? z, object? timeout);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y, object? z, object? timeout, object? waitConfirmation);serial によって特定のアイテム/スタックを 1 つ輸送します。捕獲してコンテナまたは地面に落とします。
-
id— 特定のアイテム/文字のシリアル: 数値、16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus または保存された名前 AddObject。これはtypeではありません。オブジェクトはロードされている必要があります。行動の前にExistsを確認してください。 -
item— 特定のアイテム/文字のシリアル: 数値、16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus または保存された名前 AddObject。これはtypeではありません。オブジェクトはロードされている必要があります。行動の前にExistsを確認してください。 -
amount— 1 つのスタック内のユニットの数。 0 または負の値はスタック全体を意味します。ポジティブは利用可能な数量によって制限されます。 MassMove を制限するのはスタックの数ではありません。デフォルトは0です。 -
targetContainer— コンテナまたはセット名のシリアル番号 AddObject; backpack/self/myはバックパック、receiving/catchbag - SetCatchBag、それなしの場合はバックパックを選択します。 lastcontainer/lastobject/lasttarget/lastcorpse/finditem/laststatus は、正しいコンテナーに解決された場合に有効です。 ground または 0 は土地を明示的に選択します。 -1—同じバックパックセレクター。不明な名前または指定されていない名前を指定すると、アイテムがキャプチャされる前にエラーが発生します。宛先引数を指定しないと、バックパックが使用されます。 -
container— コンテナまたはセット名のシリアル番号 AddObject; backpack/self/myはバックパック、receiving/catchbag - SetCatchBag、それなしの場合はバックパックを選択します。 lastcontainer/lastobject/lasttarget/lastcorpse/finditem/laststatus は、正しいコンテナーに解決された場合に有効です。 ground または 0 は土地を明示的に選択します。 -1—同じバックパックセレクター。不明な名前または指定されていない名前を指定すると、アイテムがキャプチャされる前にエラーが発生します。宛先引数を指定しないと、バックパックが使用されます。 -
x— コンテナあり — ガンプの X、デフォルト 65535 (自動)。地上にいるとき - ワールド X、デフォルトのキャラクター X。 -
y— ガンプまたはワールド Y の Y。デフォルトはコンテナの場合は 65535、土地の場合は Y 文字です。 -
z— コンテナ内の高さ、デフォルトでは 0、または地面上のキャラクターの Z。 -
timeout— 7 番目の引数: 最大待機時間 (ミリ秒)、デフォルトは 1000;負の値は 0 と同等です。 8 番目の waitConfirmation=true でのみ使用されます。 -
waitConfirmation— 8 番目の引数: true/1 には、世界の観察された変化の期待が含まれます。 false/0 (デフォルト) は、リクエストの送信結果を返します。
int 1 - クライアントはキャプチャおよびリセット要求を受け入れました。 0—リクエストを完了できませんでした。 waitConfirmation=true の場合、コンテナ/座標の観察可能な変化、または元のスタックの減少がさらに必要になります。これは新しいスタックの serial ではなく、転送されたアイテムの数でもありません。サーバーが動作を拒否する場合があります。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- 1 から 8 までのすべての引数の長さがサポートされます。 x を指定すると、y/z を省略できます。説明されているデフォルト値がそれらに使用されます。
- 既知の宛先名はキャプチャ前に解決されます。グラウンドの場合は、明示的に ground/0 を使用します。名前のタイプミスによってアイテムが床に投げ込まれてはいけません。
- アイテムはチェスト、バッグ、またはバックパックに入れることができます。 ground は、元のコンテナに関係なく、目的地を地上に設定します。最初の引数は、チェストやtypeではなく、アイテム自体のserialを指定します。チーム自体がタックルを実行します。最初にマウスで項目を掴む必要はありません。
- DropCheckCoord がオンになると、2 セルを超えて地面へのダンプが拒否されます。サーバーはさらに、空きスペースをチェックします。 X/Y はマップ セルであり、ガンプ ピクセルではありません。 Z - 選択したサーフェスの高さ (負の値を含む)。コンテナの場合、X/Y は依然としてガンプ内の位置を意味します。
- 確認の待機では、クライアントの世界の状態が使用されます。部分的なスタックの場合は量の減少、全体の場合はコンテナ、地面の場合は別の X/Y/Z です。コンテナ内でのガンプの正確な位置は、この予想では確認できません。スタックの消失/マージにより検証が複雑になる可能性があります。
- これは別のトランザクション ID の確認ではありません。アイテムがすでに同じコンテナ内にあった場合、コンテナを一致させても、ガンプ内での新しい移動は証明されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.MoveItem("lasttarget");
UO.Print("MoveItem: " + Convert.ToString(result));引数と実行の流れ:
- 戦利品 - 名前 AddObject;金額が不足しており、0 に等しく、宛先はバックパックです。
- 特定のタイプのすべてのアイテムではなく、1 つのアイテム/スタックが転送されます。
var ok = UO.MoveItem("loot");
UO.Print("Move request: " + Convert.ToString(ok));引数と実行の流れ:
- amount=10 1スタックの単位、チェストはコンテナの名前、x/y=60/70、ガンプ内、z=0。
- この数量には、MassMove で採用されている「10 スタック」の値がありません。
return RunScenario();
object? RunScenario()
{
var ok = UO.MoveItem("loot", 10, "chest", 60, 70, 0);
return null;
}引数と実行の流れ:
- ground は明示的にグラウンドを選択します。欠落している X/Y/Z はキャラクターから取得されます。
- 別の点については、範囲と DropCheckCoord を考慮して、その世界座標を渡します。
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 ok = UO.MoveItem("loot", 0, "ground");
return null;
}
}引数と実行の流れ:
- ground_item - 選択したアイテムのserialが開いたチェストに保存されます。元のチェストは別のパラメータとして渡されません。 amount=0 はスタック全体を取得します。たとえば、10 はこのスタックの最大 10 ユニットを使用します。
- ground は明示的にグラウンドを選択します。 x/y - 文字から X 内の 1 セル目のセルの絶対座標。 z はキャラクターから取得され、隣接するサーフェスが同じ高さにある場合に適しています。階段、テーブル、またはその他の床で、目的のサーフェスの実際の Z を設定します。
- send=1 は、クライアントによるリクエストの送信を意味します。 8 番目のパラメータを指定しないと、サーバーの確認は期待されません。値 0 は、リクエストが失敗したことを意味します。これは数値フラグ int 1/0: 送信済み != 0 または送信済み == 0 をチェックします。 bool との比較は無効です。
- 足元で直接リセットするには、UO.MoveItem('ground_item', 0, 'ground') で十分です。3 つの座標はすべてキャラクターから取得されます。チェスト内に配置するには、ground の代わりに、serial/チェストの名前とガンプの座標を指定します。
UO.AddObject("ground_item");
var x = UO.GetX() + 1;
var y = UO.GetY();
var z = UO.GetZ();
var sent = UO.MoveItem("ground_item", 0, "ground", x, y, z);
if (Truth(sent == 1))
{
UO.Print("Ground move request sent");
}
else
{
UO.Print("Ground move request was not sent");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- waitConfirmation=true であるため、timeout=1500 ms が使用されます。 x/y=-1 — 自動配置。
- 0 は、すでに送信されたリクエストのタイムアウトを示す場合があります。やみくもに転送を繰り返さないでください。まずは商品の現状をご確認ください。
return RunScenario();
object? RunScenario()
{
var ok = UO.MoveItem("loot", 0, "backpack", -1, -1, 0, 1500, true);
if (Truth(ok == 0))
{
UO.Print("Move was rejected or not confirmed");
}
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)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id }).
内部実装のコードです。単独のスクリプトとして実行できません。
public int MoveItem(InjectionValue id)
=> CompactMoveItem(new[] { id });引数: id (Any), amount (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount }).
内部実装のコードです。単独のスクリプトとして実行できません。
public int MoveItem(InjectionValue id, InjectionValue amount)
=> CompactMoveItem(new[] { id, amount });引数: id (Any), amount (Any), targetContainer (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount, targetContainer }).
内部実装のコードです。単独のスクリプトとして実行できません。
public int MoveItem(InjectionValue id, InjectionValue amount, InjectionValue targetContainer)
=> CompactMoveItem(new[] { id, amount, targetContainer });引数: item (Any), amount (Any), container (Any), x (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactMoveItem(values))引数: item (Any), amount (Any), container (Any), x (Any), y (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactMoveItem(values))引数: id (Any), amount (Any), targetContainer (Any), x (Any), y (Any), z (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount, targetContainer, x, y, z }).
内部実装のコードです。単独のスクリプトとして実行できません。
public int MoveItem(InjectionValue id, InjectionValue amount, InjectionValue targetContainer, InjectionValue x, InjectionValue y, InjectionValue z)
=> CompactMoveItem(new[] { id, amount, targetContainer, x, y, z });引数: item (Any), amount (Any), container (Any), x (Any), y (Any), z (Any), timeout (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactMoveItem(values))
UO.MoveItem(item, amount, container, x, y, z, timeout, waitConfirmation) — UO.MoveItem(Any,Any,Any,Any,Any,Any,Any,Any)
引数: item (Any), amount (Any), container (Any), x (Any), y (Any), z (Any), timeout (Any), waitConfirmation (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactMoveItem(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.MoveItems(object? container, object? itemsType, object? itemsColor, object? moveIntoID, object? x, object? y, object? z, object? delayMS);すべての適切なアイテムをあるコンテナから別のコンテナまたは地面に直接移します。アイテムはgraphicとhueによって選択されます。各スタックは完全に転送されます。これは物を運ぶことであり、キャラクターの歩行や MassMove のインタラクティブな起動ではありません。
-
container— ソースコンテナのシリアル (backpack、「backpack」、名前 AddObject、または 16 進数のID)。コンテンツはすでにダウンロードされている必要があります。 0 は有効な情報源ではありません。 ground はキャラクターの周囲のものを選択しません。バックパックの場合は、self ではなく、backpack を使用してください。 -
itemsType- グラフィックアイテム、例: 0x0EED - ゴールド。 ID のものでも、mobile 体でもない。負の数または 0xFFFF - すべてのタイプ。配列/型マスクは受け入れられません。 -
itemsColor— 色合いに関すること。 -1 (または他の負の数) および 0xFFFF - 任意。 0 - hue 0 のみ。 serial ではないし、悪名もありません。 -
moveIntoID— 宛先コンテナーまたはオブジェクトのエイリアスのシリアル。バックパック用 - backpack。土地の場合 - 番号 0 (また ground/"ground"/UO.Ground())。送信元と宛先は異なっていなければなりません。 -1 は、このコマンドの backpack の短縮形ではありません。バックパックを自動的に交換するのではなく、Self - serial mobile に変更します。 -
x— ゼロ以外のコンテナの場合、ガンプ内の位置。 -1、-1 は配置をサーバーに任せます。地上 - 世界座標 0..65535 では、両方とも必須であり、負ではありません。ゲーム世界の画面ピクセルでも、ルートの終点でもありません。 -
y— ゼロ以外のコンテナの場合、ガンプ内の位置。 -1、-1 は配置をサーバーに任せます。地上 - 世界座標 0..65535 では、両方とも必須であり、負ではありません。ゲーム世界の画面ピクセルでも、ルートの終点でもありません。 -
z— 地面に配置したときのワールドの高さ。サイトの実際の高度を使用します (プロトコル範囲 -128..127)。コンテナの例では、0 と指定します。これは機器レイヤのインデックスではありません。 -
delayMS— 受け付けられたリクエスト間の遅延 (ミリ秒単位)。実際には、max(GrabDelay, max(0, DelayMS));最後の転送が送信された後も待機が発生します。 350 は 350 項目を意味するものではなく、350 ミリ秒以内の確認を保証するものでもありません。
登録object?実際には、少なくとも 1 つの転送リクエストが受け入れられた場合は int 1/true を返し、そうでない場合は 0/false を返します。これはアイテムの数ではなく、すべての一致が引き継がれることを保証するものでもありません。サーバーが応答したら、内容を確認します。緊急キャンセルの場合は手続きが中止されるため、false を返却する必要はありません。
- 8 つの引数はすべて必須です。元のコンテナの直接の子のリストが一度作成されます。再帰的な走査はありません。バッグがリストに追加されると、開梱されるのではなく、その内容とともに 1 つのアイテムとして移動されます。
- 各一致の現在のスタック全体を取得します。アイテムまたはユニットの数の制限は、このコマンドでは設定されません。このようなシナリオについては、UO.MassMove を参照してください。このサンプルの追加フィルターとして Ignore は使用されません。
- 各アクションの前に、アイテムがまだ元のコンテナ内にあるかどうかが再チェックされます。コンテナ自体/子孫内でコンテナをネストすることが禁止されており、アイテムが利用できない場合はスキップされる可能性があります。キューはトランザクションではありません。すでに送信されたアクションはロールバックされません。
- ソース=0、同一のソース/デスティネーション、または負の X/Y を持つグランドの場合、0 を返し、エラーを報告します。サーバーは解像度、範囲、容量、および最終結果を決定します。物を持ち上げた状態で他の作業を同時に行わないでください。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.MoveItems("lasttarget", 0x0EED, -1, "backpack", -1, -1, 0, 350);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 0x0EED - type ゴールド; -1 ~ ItemsColor - 任意の hue。 backpack の後の -1、-1 は、地上ではなくガンプ内の自動位置です。 350 ms - GrabDelay を考慮した、必要な最小遅延。まっすぐに積み重ねられた金はすべて丸ごと取り出されます。
var source = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(source == 0) || Truth(source == UO.Backpack()) || !(Truth(UO.Exists(source))))
{
return null;
}
var sent = UO.MoveItems(source, 0x0EED, -1, "backpack", -1, -1, 0, 350);
if (Truth(Truth(sent) == false))
{
UO.Print("No gold transfer request was accepted");
}
int Asc(object? value, int fallback = 0) { string text = Convert.ToString(value) ?? ""; if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback; return int.TryParse(text, out int number) ? number : fallback; }
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0x0E21 - 人体ではなく包帯です。 backpack が送信元、宛先はチェストの serial です。すべての試合は 1 点 30,40 に向けられます。サーバーはスタックをマージしたり、位置を調整したりできます。
return RunScenario();
object? RunScenario()
{
var destination = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(destination == 0) || Truth(destination == UO.Backpack()) || !(Truth(UO.Exists(destination))))
{
return null;
}
var sent = UO.MoveItems("backpack", 0x0E21, -1, destination, 30, 40, 0, 350);
if (Truth(sent != 0))
{
UO.Print("Transfer requested; verify the destination contents");
}
return null;
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- itemType は数量ではなくタイプを指定します。そのストレートスタックはすべてバックパックに入れて持ち運ばれます。 X+1/Y/Z は、同じ高さにある隣接点の例です。斜面/壁の場合は、正しい座標を選択します。ワールドモードでは0の割り当てが必要です。 true は、解放されたバックパックではなく、受け入れられたリクエストのみを示します。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (!(Truth(DropTypeBesideMe(0x0EED))))
{
UO.Print("No ground drop request was accepted");
}
return null;
}
dynamic DropTypeBesideMe(dynamic itemType)
{
if (!(Truth(UO.Connected())) || Truth(UO.Dead()))
{
return false;
}
var x = UO.GetX() + 1;
var y = UO.GetY();
var z = UO.GetZ();
return UO.MoveItems("backpack", itemType, -1, 0, x, y, z, 350);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
UO.MoveItems(container, itemsType, itemsColor, moveIntoID, x, y, z, delayMS) — UO.MoveItems(Any,Any,Any,Any,Any,Any,Any,Any)
引数: container (Any), itemsType (Any), itemsColor (Any), moveIntoID (Any), x (Any), y (Any), z (Any), delayMS (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MoveItems:bridge.MoveItems(Arg(0), ResolveType(arguments[1]), Arg(2), Arg(3), Arg(4), Arg(5), Arg(6), Arg(7)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]).
内部実装のコードです。単独のスクリプトとして実行できません。
case "moveitems": return new InjectionValue(bridge.MoveItems(Arg(0), ResolveType(arguments[1]), Arg(2), Arg(3), Arg(4), Arg(5), Arg(6), Arg(7)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Name();キャラクターの名前を読み上げます。
パラメータはありません。
string はクライアントに知られている名前です。空の文字列は、空/不明な値、またはオブジェクトがないことを意味します。これは、serial またはプロファイル パスではありません。ゲーム名/タイトルは言語 IDE によって翻訳されません。
- 受信済みのローカルデータを読み込みます。このリクエストはステータスをオープンせず、サーバーに更新の送信を強制しません。死亡、マップの遷移、またはオブジェクトの削除後、2 つの呼び出しの間で値が変化する可能性があります。
- C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Name();
UO.Print("Name: " + Convert.ToString(result));引数と実行の流れ:
- パラメータはありません。self が読み取られます。
- 空の文字列は明示的に処理されます。これは「0」というテキストではありません。
var text = UO.Name();
if (Truth(text != ""))
{
UO.Print(text);
}
else
{
UO.Print("Text is unavailable");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 文字が読み取られ、値が行として保存されます。
-
- 演算子は文字列を結合します。この結果には Convert.ToString は必要ありません。
return RunScenario();
object? RunScenario()
{
var text = UO.Name();
UO.Print("Player имя: " + text);
return null;
}引数と実行の流れ:
- どちらの呼び出しも self を参照します。 UO.Wait は一時停止1000 ミリ秒を設定します。
- その違いは、データの更新や世界からの離脱を意味する可能性があります。この例では、名前やタイトルは変更されません。
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 previous = UO.Name();
await Delay(1000);
var current = UO.Name();
if (Truth(previous != current))
{
UO.Print("Updated text: " + current);
}
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;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Name]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(bridge.Self). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
() => bridge.GetName(bridge.Self)API の作成: これらの関数は API を登録します。コマンドを呼ぶたびに実行されるものではありません。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Picking();クライアントのカーソルが選択されたアイテムによって占められているかどうかを確認します。
パラメータはありません。
int 1 - ItemHold.有効なセット; 0 - インストールされていません。これはクライアントの状態であり、ID やサーバーの配信確認ではありません。マウスまたは他のスクリプトによって選択されたオブジェクトが考慮されます。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- 読み取りではオブジェクトを拾ったり落としたりしません。
- 自分の転送については、Drag/DragItem; の結果も確認してください。他の誰かのビジーカーソルは、目的のアイテムが正常に取得されたことを意味するものではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Picking();
UO.Print("Picking: " + Convert.ToString(result));引数と実行の流れ:
- 議論はありません。
- 1または0が表示されます。
UO.Print(Convert.ToString(UO.Picking()));引数と実行の流れ:
- 1 つの引数 Drag はスタック全体とタイムアウト = 0 を意味します。
- Picking はクライアントの共有カーソルをチェックします。 2 つの独立した移行を同時に実行しないでください。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Picking() == 0))
{
if (Truth(UO.Drag("loot")))
{
var dropped = UO.DropItem("backpack", -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;引数と実行の流れ:
- チェックは、50 ミリ秒の休止を挟みながら、最大 20 回繰り返されます。
- このコマンドはカーソルを解放したり、他の人の移動をキャンセルしたりしません。
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 tries = 0;
while (Truth(UO.Picking()) && Truth(tries < 20))
{
await Delay(50);
tries = tries + 1;
}
if (Truth(UO.Picking()))
{
UO.Print("Cursor is still occupied");
}
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;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Picking. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Picking:bridge.Picking().
内部実装のコードです。単独のスクリプトとして実行できません。
public int Picking() => bridge.Picking();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ReceiveObjectName(object? id);
void UO.ReceiveObjectName(object? id, object? timeout);シングルクリック要求でオブジェクトの名前を要求します。
-
id— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。 -
timeout— オプションの int、ミリ秒。デフォルトは 0 です。負の値は期待値を追加しません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- Bridge.ReceiveObjectName は Click(id) を呼び出し、GetName(id) が空になるまで max(0,timeout) まで待機します。 25 ミリ秒以内に一時停止してください。すでによく知られている名前であれば、待機はすぐに終了します。
- タイムアウトなしでは、Click のみが実行されます。戻り名はありません: GetName を個別に読んでください。待機の終了はタイムアウトを意味する場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ReceiveObjectName");
UO.ReceiveObjectName("lasttarget");引数と実行の流れ:
- シングルクリック要求でオブジェクトの名前を要求します。
UO.ReceiveObjectName("lasttarget");引数と実行の流れ:
- Bridge.ReceiveObjectName は Click(id) を呼び出し、GetName(id) が空になるまで max(0,timeout) まで待機します。 25 ミリ秒以内に一時停止してください。すでによく知られている名前であれば、待機はすぐに終了します。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.ReceiveObjectName("lasttarget", 1000);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- タイムアウトなしでは、Click のみが実行されます。戻り名はありません: GetName を個別に読んでください。待機の終了はタイムアウトを意味する場合があります。
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.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.ReceiveObjectName(id, 1000);
UO.Print(UO.GetName(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.ReceiveObjectName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ReceiveObjectName:bridge.ReceiveObjectName(GetObject(id), 0). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void ReceiveObjectName(InjectionValue id) => bridge.ReceiveObjectName(GetObject(id), 0);引数: id (Any), timeout (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ReceiveObjectName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ReceiveObjectName:bridge.ReceiveObjectName(GetObject(id), NumberConversions.ToInt(timeout)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(timeout).
内部実装のコードです。単独のスクリプトとして実行できません。
public void ReceiveObjectName(InjectionValue id, InjectionValue timeout) => bridge.ReceiveObjectName(GetObject(id), NumberConversions.ToInt(timeout));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksUse();保存されたマークTicksUseを読み取ります。
パラメータはありません。
int — ランタイムの開始から 10 分の 1 秒で UO.Timer をマークします。 0 - マークがまだ設定されていない、またはイベントが最初の 10 分の 1 秒以内に発生しました。ミリ秒やカレンダー時間ではありません。
- フィールド ticksUse を返します。 UseObject によって更新されます。すべての手動/サーバーアクティビティを自動的に監視するわけではありません。コマンド自体はマークを変更しません。
- UO.Timer() - マークは年齢を 10 分の 1 秒単位で計算します。異なるランタイム間ではマークは比較されません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.TicksUse();
UO.Print("TicksUse: " + Convert.ToString(result));引数と実行の流れ:
- 保存されたマークTicksUseを読み取ります。
var stamp = UO.TicksUse();
UO.Print(stamp);引数と実行の流れ:
- フィールド ticksUse を返します。 UseObject によって更新されます。すべての手動/サーバーアクティビティを自動的に監視するわけではありません。コマンド自体はマークを変更しません。
return RunScenario();
object? RunScenario()
{
var stamp = UO.TicksUse();
var ageTenths = UO.Timer() - stamp;
UO.Print(ageTenths);
return null;
}引数と実行の流れ:
- UO.Timer() - マークは年齢を 10 分の 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 before = UO.TicksUse();
UO.Wait(250);
var after = UO.TicksUse();
UO.Print(before = after);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: int / Integer.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
public int TicksUse() => ticksUse;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UpdateObject(object? id);すでにロードされているオブジェクトの更新を要求します。
-
id— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- モバイルの場合、アイテム - SingleClick の場合、RequestMobileStatus(..., true) が呼び出されます。 serial が両方のローカル テーブルに存在しない場合、アクションはありません。これは、不明なオブジェクトをダウンロードしたり、更新を確認したりするものではありません。
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UpdateObject");
UO.UpdateObject(UO.GetSerial("lasttarget"));引数と実行の流れ:
- すでにロードされているオブジェクトの更新を要求します。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- モバイルの場合、アイテム - SingleClick の場合、RequestMobileStatus(..., true) が呼び出されます。 serial が両方のローカル テーブルに存在しない場合、アクションはありません。これは、不明なオブジェクトをダウンロードしたり、更新を確認したりするものではありません。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(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;引数と実行の流れ:
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
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()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(id);
}
}
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.UpdateObject. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UpdateObject:bridge.UpdateObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void UpdateObject(InjectionValue id) => bridge.UpdateObject(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.UseFromGround(object? @type);
int UO.UseFromGround(object? @type, object? color);地上/世界で指定された graphic のオブジェクトを検索し、即座にそのアプリケーションを呼び出します。通常、バックパックを開けるなど、近くにある物体に使用されます。このランタイムの重要な機能: 検索は FindType に基づいており、同じ body で mobile も見つけることができます。これは厳密には項目のみの選択ではありません。明示的な半径と最も近い選択範囲を持つ項目の場合は、UseType(..., ground, ...) を使用します。
-
type- 必須 graphic。たとえば、0x0E75 はバックパックです。数値または数値の 16 進文字列。負の数/0xFFFF — 任意の graphic。 0x0190 (男性) や 0x0191 (女性) などの身体値は mobile を選択できます。 type アイテムの代わりに使用しないでください。このフォームでは2種類を同時に送信することはできません。 -
color- オプションの hue、デフォルト - 1 (任意)。負の数/0xFFFF - 任意、0 - hue 0 のみ。他のパラメータはありません。コンテナ、距離、最近接、および maxZ はこのコマンドに追加されません。
最初に見つかったオブジェクトの int - serial は、UseObject または 0 に渡されます。これはオブジェクトの数ではなく、graphic や true/false ではありません。オブジェクトは見つかったかもしれませんが、サーバーがその使用を許可していない可能性があります。 id != 0 と期待されるゲーム効果を個別に確認してください。
- Ignore を考慮して、現在の FindDistance と FindVertical を使用します。検索コンテナは ground として固定され、ネストされたコンテンツは走査されません。携帯電話にはselfは含まれません。生命、知名度、悪名については別個の制限はありません。
- すべての検索一致で FindItem/FindCount/GetFoundItems を更新しますが、最初の結果のみが適用されます。最も近いものは保証されません。ワールド オブジェクトはモバイルの前にチェックされます。
- バックパック内のアイテムを拾ったり、キャラクターを動かしたり、サーバーの応答やターゲットの終了を待ちません。一致するものがない場合は、メッセージを出力します。アクションを行わずに検索するには、UO.FindType を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.UseFromGround(0x0E75);
UO.Print("UseFromGround: " + Convert.ToString(result));引数と実行の流れ:
- type のみ。どれかのhue。現在のFindDistance/FindVerticalが使用されます。バッグ - 最初の結果の ID ですが、必ずしも最も近いものではありません。コンテンツはサーバーが許可した場合にのみ開きます。
var bag = UO.UseFromGround(0x0E75);
if (Truth(bag != 0))
{
UO.AddObject("ground_bag", bag);
}
else
{
UO.Print("No loaded ground backpack matches the search settings");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 検索は 2 つのセルと同じ Z に限定されます。色0x0044は例として示されています。アイテムのhueと置き換えてください。エラーが発生しても設定は復元されます。
return RunScenario();
object? RunScenario()
{
var oldDistance = UO.FindDistance();
var oldZ = UO.FindVertical();
try
{
UO.FindDistance(2);
UO.FindVertical(0);
var bag = UO.UseFromGround(0x0E75, 0x0044);
if (Truth(bag != 0))
{
UO.AddObject("colored_ground_bag", bag);
}
}
finally
{
UO.FindDistance(oldDistance);
UO.FindVertical(oldZ);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- radius は 3 番目の引数 UseFromGround ではなく FindDistance を指定します。 3000 ms — 開封の確認ではなく、例を表示する時間。ウィンドウタイプ 3 - コンテナ。この検索の結果は Find* に残ります。
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 selected = OpenGroundBagWithin(2);
if (Truth(selected != 0))
{
await Delay(3000);
UO.CloseClientUIWindow(3, selected);
}
return null;
}
dynamic OpenGroundBagWithin(dynamic radius)
{
var previous = UO.FindDistance();
try
{
UO.FindDistance(radius);
return UO.UseFromGround(0x0E75, -1);
}
finally
{
UO.FindDistance(previous);
}
}
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;
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: type (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseFromGround. -
InjectionScript.Runtime.InjectionApiUO.UseFromGround:UseFromGround(type, new InjectionValue(-1)).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseFromGround(InjectionValue type) => UseFromGround(type, new InjectionValue(-1));引数: type (Any), color (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseFromGround. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(id). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("No matching item found on ground.").
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseFromGround(InjectionValue type, InjectionValue color)
{
int id = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (id != 0)
UseObject(id);
else
SystemMessage("No matching item found on ground.");
return id;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseItemOnMobile(object? itemSerial, object? targetSerial);キャラクターのターゲットを用意し、アイテムを使用します。
-
itemSerial— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。 -
targetSerial— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- ExecuteClientApiCompatibility は最初に Bridge.WaitTargetObject(TargetSerial) を呼び出し、次に Bridge.UseObject(ItemSerial) を呼び出します。引数は交換されません。これらの直接ブリッジ呼び出しでは、TicksTarget/TicksUse ランタイムは更新されません。
- ターゲット/アイテムのタイプをチェックせず、カーソルを待ちません。使用前にターゲットを準備すると、すぐに到着するターゲットを見逃すことがなくなりますが、アクションが有効かどうかはサーバーによって判断されます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UseItemOnMobile");
UO.UseItemOnMobile("0x40001234", "self");引数と実行の流れ:
- キャラクターのターゲットを用意し、アイテムを使用します。
UO.UseItemOnMobile("0x40001234", "self");引数と実行の流れ:
- ExecuteClientApiCompatibility は最初に Bridge.WaitTargetObject(TargetSerial) を呼び出し、次に Bridge.UseObject(ItemSerial) を呼び出します。引数は交換されません。これらの直接ブリッジ呼び出しでは、TicksTarget/TicksUse ランタイムは更新されません。
return RunScenario();
object? RunScenario()
{
var item = UO.GetSerial("lastobject");
var mobile = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(item)) && Truth(UO.Exists(mobile)))
{
UO.UseItemOnMobile(item, mobile);
}
return null;
}
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()
{
var item = UO.GetSerial("lastobject");
if (Truth(UO.Exists(item)))
{
UO.UseItemOnMobile(item, "self");
UO.Print(UO.Waiting());
}
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 を使います。
引数: itemSerial (Any), targetSerial (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0)).
内部実装のコードです。単独のスクリプトとして実行できません。
case "useitemonmobile": bridge.WaitTargetObject(Arg(1)); bridge.UseObject(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseObject(object? objID);serial によるオブジェクトの使用を要求します。ブリッジコール GameActions.DoubleClick; type ではアイテムは検索されません。
-
objID— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- GetObject はエイリアスを許可します。不明な名前は -1 を与えます。呼び出し後、ランタイムは TicksUse を UO.Timer の値で更新します。これはリクエストの瞬間であり、サーバーの確認ではありません。
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UseObject");
UO.UseObject(UO.GetSerial("lasttarget"));引数と実行の流れ:
- serial によるオブジェクトの使用を要求します。ブリッジコール GameActions.DoubleClick; type ではアイテムは検索されません。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UseObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- GetObject はエイリアスを許可します。不明な名前は -1 を与えます。呼び出し後、ランタイムは TicksUse を UO.Timer の値で更新します。これはリクエストの瞬間であり、サーバーの確認ではありません。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UseObject(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;引数と実行の流れ:
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
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()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UseObject(id);
}
}
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 を使います。
引数: objID (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "useobject": bridge.UseObject(Arg(0)); return InjectionValue.Unit;引数: objID (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseObject. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(id). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
内部実装のコードです。単独のスクリプトとして実行できません。
public void UseObject(int id)
{
bridge.UseObject(id);
ticksUse = Timer();
}引数: objID (Any/Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void UseObject(string id) => UseObject(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.UseType(object? @type);
int UO.UseType(object? @type, object? color);
int UO.UseType(object? @type, object? color, object? container);
int UO.UseType(object? @type, object? color, object? container, object? distance);
int UO.UseType(object? @type, object? color, object? container, object? distance, object? nearest);
int UO.UseType(object? @type, object? color, object? container, object? distance, object? nearest, object? maxZ);目的の graphic/type の項目を 1 つ検索し、適用します。たとえば、バックパックからポーションを飲んだり、近くのバックパックを開けたり、選択したコンテナからアイテムを使用したりできます。このコマンドはキャラクターの検索や移動を行いません。アイテムにスコープが必要な場合は、ターゲットを別途用意する必要があります。
-
type— 項目のグラフィック: 数値または 16 進文字列。たとえば、0x0F0C は治癒ポーションの一種、0x0E75 はバックパックです。これはserial や body のキャラクターではありません。負の数または 0xFFFF では、任意の type が許可されます。意味のあるアクションを行うには、正確な graphic の方が優れています。 -
color— アイテムの色相、デフォルト - 1 (任意)。負の数または 0xFFFF を指定すると、フィルターが削除されます。 0は未塗装品を選択します。知名度でもなければ、文字の色でもありません。 -
container— デフォルト - 1: バックパックとロードされたサブコンテナ。 「my」も同じ意味です。 "backpack" またはコンテナの明示的な serial は、再帰的走査のルートを指定します。 ground/"ground"/UO.Ground()、数値0/1はワールドのオブジェクトのみを表します。 Self は backpack の同義語ではありません。明示的なバックパックを使用してください。不明またはヌルのオブジェクト エイリアスはナップザックとして解決できます。まず、Exists を使用して、転送されたコンテナを確認します。 -
distance— パスの長さではなく、最大幾何学的 X/Y 範囲。デフォルトまたは負の引数は FindDistance です。 0 は同じセルを意味します。コンテナ内のアイテムの場合、クライアントは所有者までの距離を考慮します。 -
nearest— デフォルト true: 最も近いもの (等しい場合) より小さいもの serial を選択します。 false: ソートなしのトラバースで最初に見つかりました。アイテムの数や実行モードではありません。 -
maxZ— ワールド高さ Z とキャラクターの間の最大絶対差。デフォルトまたは負の引数は FindVertical です。 0 には同じ Z が必要です。バッグ内のアイテムの場合は、地面上の外側のコンテナの高さまたは所有者のキャラクターが使用されます。内部ガンプ座標はワールド座標とみなされません。これは高さのフィルターであり、歩きやすさや視線のチェックではありません。
UseObject が呼び出される項目の int - serial。一致するものがない場合は、0。 ReturnKind object に登録しても?実際には数値を返します。これは、true/false またはサーバーによる使用の確認ではありません。used == true ではなく、used != 0 を確認してください。効果を成功させるには、ステータス、コンテンツ、またはログを個別にチェックする必要があります。
- 1 から 6 までの引数。範囲を設定するには、色とコンテナも指定します。 maxZ を指定するには、6 つの位置をすべて入力します。配列 type、マスク経由 |また、追加の目標はこのコマンドでは受け入れられません。
- int/string を含む通常のフォームと拡張フォームは CompactUseType: アイテムのみ、Ignore、距離と高さを使用します。コンテナは、すでにロードされているコンテンツを再帰的に走査します。積載コンテナは自動的には開きません。 FindItem/FindCount/GetFoundItems はこのブランチでは更新されません。
- 共有所有者とコンテナーの高さは、各スタックの走査を繰り返すことを避けるために、呼び出しごとに 1 回計算されます。円形または過度に深いコンテナのチェーン (ルートが見つからない 128 リンク) は、高さの一致として使用されません。
- 2 つの object? の共通の互換性のある登録を維持しました。ナップザック上で FindType を使用してコールをブリッジにルーティングします。UseType、Find* を更新し、最初の結果を選択します。予測可能なコンパクトな形式を得るには、不適切な値型の暗黙的な変換ではなく、int/string を使用してください。
- UseObject はキャスト アクションを送信しますが、コマンドはターゲット、回復、飲酒、ウィンドウのオープン、またはサーバーの障害を待機しません。検索範囲はサーバーが許可する使用範囲を拡張するものではありません。
- 一致するものがない場合、コンパクト フォームはメッセージを出力し、0 を返します。キャラクター/つながりがない場合、結果は行為の許可とは見なされません。正確な ID には UO.UseObject を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.UseType(0x0F0C);
UO.Print("UseType: " + Convert.ToString(result));引数と実行の流れ:
- 0x0F0C は、標準的なタイプの治癒ポーションの一例です。サーバーは、キャラクターの状態、待ち時間、または独自のルールによりアクションを拒否する場合があります。色と範囲は個別に指定されず、デフォルトが適用されます。
if (!(Truth(UO.Connected())) || Truth(UO.Dead()))
{
return null;
}
var used = UO.UseType(0x0F0C);
if (Truth(used == 0))
{
UO.Print("No matching healing potion in the loaded backpack");
}
else
{
UO.Print("Potion use requested; check health and the game message");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 0x0E75 — バックパックの type、-1 — 任意の hue、ground — 世界のオブジェクト。 2 - セル X/Y、true - 最も近い、4 - 差Z。返却用バッグ — ID。コンテンツへのアクセスはサーバーによって決定されます。チームはバックパックを拾わない。
return RunScenario();
object? RunScenario()
{
var bag = UO.UseType(0x0E75, -1, "ground", 2, true, 4);
if (Truth(bag != 0))
{
UO.AddObject("nearby_bag", bag);
}
else
{
UO.Print("No suitable ground backpack within the selected bounds");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- itemType — graphic のもの、ソース — 別の serial コンテナー。ヘルパーは、UseType と同じ serial/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 source = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(source == 0) || !(Truth(UO.Exists(source))))
{
return null;
}
UO.AddObject("supply", source);
var used = UseFromNamedSupply(0x0F0C);
if (Truth(used == 0))
{
UO.Print("Supply item was not found with these filters");
}
return null;
}
dynamic UseFromNamedSupply(dynamic itemType)
{
var source = Asc(UO.GetSerial("supply"), 0);
if (Truth(source == 0) || !(Truth(UO.Exists(source))))
{
return 0;
}
return UO.UseType(itemType, 0, source, 2, false, 16);
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
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 を使います。
引数: type (Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(type, -1).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(int type) => UseType(type, -1);引数: type (Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(string type) => UseType(ResolveType(type));引数: type (Any/Integer/String), color (Any/Integer/String)
結果: int / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseType:bridge.UseType(ResolveType(arguments[0]), arguments.Length > 1 ? Arg(1) : -1). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1).
内部実装のコードです。単独のスクリプトとして実行できません。
case "usetype": return new InjectionValue(bridge.UseType(ResolveType(arguments[0]), arguments.Length > 1 ? Arg(1) : -1));引数: type (Any/Integer/String), color (Any/Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(new[] { new InjectionValue(type), new InjectionValue(color) }).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(int type, int color) => CompactUseType(new[]
{
new InjectionValue(type),
new InjectionValue(color)
});引数: type (Any/Integer/String), color (Any/Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(type, NumberConversions.ToInt(color)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(int type, string color) => UseType(type, NumberConversions.ToInt(color));引数: type (Any/Integer/String), color (Any/Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type), color). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(string type, int color) => UseType(ResolveType(type), color);引数: type (Any/Integer/String), color (Any/Integer/String)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type), NumberConversions.ToInt(color)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
内部実装のコードです。単独のスクリプトとして実行できません。
public int UseType(string type, string color) => UseType(ResolveType(type), NumberConversions.ToInt(color));引数: type (Any), color (Any), container (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactUseType(values))引数: type (Any), color (Any), container (Any), distance (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactUseType(values))引数: type (Any), color (Any), container (Any), distance (Any), nearest (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactUseType(values))引数: type (Any), color (Any), container (Any), distance (Any), nearest (Any), maxZ (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
呼び出し時には保存済みのハンドラー delegate を実行します。登録メソッドは API の構築時にこの delegate を作成します。
内部実装のコードです。単独のスクリプトとして実行できません。
values => new InjectionValue(CompactUseType(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseWorldObject(object? serialOrName);serialOrName から GetObject を有効にし、UseObject を呼び出します。文字列名はオブジェクトのエイリアスであり、名前 graphic/type ではありません。
-
serialOrName— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- UserObjectに直接メタデータに登録されます。これは serial の通常の使用法であり、サーバー全体の検索ではありません。
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UseWorldObject");
UO.UseWorldObject(UO.GetSerial("lasttarget"));引数と実行の流れ:
- serialOrName から GetObject を有効にし、UseObject を呼び出します。文字列名はオブジェクトのエイリアスであり、名前 graphic/type ではありません。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- UserObjectに直接メタデータに登録されます。これは serial の通常の使用法であり、サーバー全体の検索ではありません。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(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;引数と実行の流れ:
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
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()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(id);
}
}
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 を使います。
引数: serialOrName (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UserObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(serialOrName)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(serialOrName).
内部実装のコードです。単独のスクリプトとして実行できません。
public void UserObject(InjectionValue serialOrName)
=> UseObject(GetObject(serialOrName));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UserObject(object? serialOrName);serialOrName から GetObject を有効にし、UseObject を呼び出します。文字列名はオブジェクトのエイリアスであり、名前 graphic/type ではありません。
-
serialOrName— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- UO.UseWorldObject と同じ使用パス。このコマンドはカスタム オブジェクトを作成したり、名前 AddObject を追加したりしません。
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UserObject");
UO.UserObject(UO.GetSerial("lasttarget"));引数と実行の流れ:
- serialOrName から GetObject を有効にし、UseObject を呼び出します。文字列名はオブジェクトのエイリアスであり、名前 graphic/type ではありません。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UserObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- UO.UseWorldObject と同じ使用パス。このコマンドはカスタム オブジェクトを作成したり、名前 AddObject を追加したりしません。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UserObject(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;引数と実行の流れ:
- Bridge はゲーム ストリームでリクエストを送信します。サーバールールが適用されます。確認を待つ組み込み機能はありません。
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()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UserObject(id);
}
}
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 を使います。
引数: serialOrName (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UserObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(serialOrName)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(serialOrName).
内部実装のコードです。単独のスクリプトとして実行できません。
public void UserObject(InjectionValue serialOrName)
=> UseObject(GetObject(serialOrName));ClassicUO — Bad Newbie & C# Scripts IDE