Repository navigation
JA UO Topic containers
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 例 · Languages
内容を読み、宛先コンテナを開いて選択します。閉じられたコンテナまたはまだロードされていないコンテナは、クライアントにアイテムの完全なリストを提供しません。
| トピック | コマンドと説明 |
|---|---|
| Backpack | UO.Backpack |
| Bank | UO.ObjAtLayerEx · UO.OpenContainer |
| OpenContainer | UO.OpenContainer |
| LastContainer | UO.LastContainer |
| ContainerOf | UO.ContainerOf · UO.GetParent |
| IsContainer | UO.IsContainer |
| ネストされたコンテナ | UO.GetContent · UO.FindTypeEx · UO.FindTypesArrayEx |
| Receiving Container | UO.SetReceivingContainer · UO.UnsetReceivingContainer |
| Catch Bag | UO.SetCatchBag · UO.UnsetCatchBag |
| Container Transfers | UO.MoveItem · UO.MoveItems · UO.MassMove · UO.EmptyContainer |
UO.ContainerOf · UO.GetParent · UO.ContainerOff
UO.SetReceivingContainer · UO.UnsetReceivingContainer
UO.SetCatchBag · UO.UnsetCatchBag
各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。
UO.OpenContainer("lasttarget");UO.Print("Select a chest or corpse");
var sent = UO.EmptyContainer(350);
if (Truth(sent == 0))
{
UO.Print("Cancelled, empty, unavailable, or a transfer failed");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Backpack();現在のキャラクターが装備しているバックパックの ID を返します。
パラメータはありません。
int - serial/ID、graphic/type、レイヤー、項目数、bool ではありません。 0 - 現在のオブジェクトはありません。すべての 32 ビット serial が保存されます。 == true や > 0 ではなく、!= 0 を確認してください。保存された結果自体は更新されません。現在のプレーヤーのレイヤーBackpackで削除されていないアイテムを検索します。プレイヤーがいない/破壊された、バックパックやバッグが取り外されていない - 0。内容ではなくコンテナを返します。新しいバッグは作成しません。
- パラメータはありません。ゲーム ストリームの Invoke を介してローカル データを読み取ります。スクリプトをキャンセルすると、そのスレッドの待機が中断されます。パッケージを送信せず、コンテナ/ターゲットを開けず、アイテムを転送しません。
- 括弧のない組み込みの self/backpack は、スクリプト変数によってオーバーライドされない限り、再度読み取られます。文字列名は受信コマンドによって処理されます。持ち運び先の「self」はバックパックを意味し、UO.Self()はキャラクターのserialを返します。 ID コンテナーの場合は、明示的に UO.Backpack() を使用します。
- World.Clear はプレーヤーを削除します。その後の読み取り値は 0 となります。ワールドに入るか、装備しているバッグを変更すると、IDが変化します。個々の読み取りはアトミックではありません。ゼロ以外の ID は、接続、サーバーの解像度、コンテンツの読み込みを証明しません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Backpack();
UO.Print("Backpack: " + Convert.ToString(result));引数と実行の流れ:
- id には 1 回の呼び出しの結果が格納されます。 HEX はログ用に serial をフォーマットします。この例では何も選択または使用していません。
var id = UO.Backpack();
UO.Print("ID: " + Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- before/afterは250ms間隔で読み込まれます。 UO.Wait は例としてのみ追加されました。等しいとは、最終的な ID が同一であることを意味します。中間の変更が見逃される可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var before = UO.Backpack();
await Delay(250);
var after = UO.Backpack();
if (Truth(before != after))
{
UO.Print("ID changed: " + Hex(after));
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
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;引数と実行の流れ:
- 候補者 - ID LastTarget が保存されました。 IsOwnSerial(候補)は 1 つの serial を受け取り、bool: true を現在の非ゼロの自身の ID に対して、それ以外の場合は false を返します。関数定義は完全に示されています。目標は変わりません。
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 candidate = UO.LastTarget();
if (Truth(Truth(IsOwnSerial(candidate)) == true))
{
UO.Print("Own object selected");
}
else
{
UO.Print("Different object or no own object");
}
return null;
}
dynamic IsOwnSerial(dynamic candidate)
{
var current = UO.Backpack();
return Truth(current != 0) && Truth(current == candidate);
}
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.Backpack:bridge.Backpack.
内部実装のコードです。単独のスクリプトとして実行できません。
case "backpack": return new InjectionValue(bridge.Backpack);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.ContainerOf(object? name);項目の直接の親を読み取ります。
-
name— 特定のオブジェクトのシリアル/ID: int、10 進数/16 進数の文字列、またはセットエイリアス self、backpack、lasttarget、lastobject または名前 AddObject。これはgraphic/typeではありません。
フォーム「0x40001234」のstring - コンテナ/キャラクター所有者のserial。地上のアイテムの場合は「0x00000000」または「0xFFFFFFFF」のいずれかです。不明な名前/オブジェクトまたはモバイルの場合 - 「0x00000000」。これはコンテナの graphic ではなく、アイテム自体の ID でもなく、ネストされたバッグのルート所有者でもありません。
- ローカル項目の Container フィールドは、再帰的な走査やサーバーの呼び出しを行わずに読み取られます。 null の結果を解釈する前に、Exists を確認してください。 Ground は 2 つの有効な表現を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.ContainerOf("backpack");
UO.Print("ContainerOf: " + Convert.ToString(result));引数と実行の流れ:
- アイテムは見つかったスタックの serial です。 type=0x0EEDはFindTypeによってのみ送信されます。
- 親は、バックパックを含むキャラクターではなく、実際のバックパックを示します。
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
var parent = UO.ContainerOf(item);
UO.Print(Convert.ToString(parent));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 議論の対象はバックパックそのものです。
- 装備したバックパックの親はキャラクターのserialとなります。
return RunScenario();
object? RunScenario()
{
var bag = UO.GetSerial("backpack");
if (Truth(UO.Exists(bag)))
{
UO.Print(Convert.ToString(UO.ContainerOf(bag)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- GetContent("ground") はコンテナの外にあるアイテムを ID に与えます。
- 土地の表現は両方とも有効です。 Exists のない 1 つの 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()
{
var items = UO.GetContent("ground");
if (Truth(ArrayLength(items) > 0))
{
var item = items[0];
if (Truth(UO.Exists(item)))
{
UO.Print(Convert.ToString(UO.ContainerOf(item)));
}
}
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 を使います。
引数: name (Any)
結果: string / String.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ContainerOf. -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(name, out int id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ContainerOf:bridge.ContainerOf(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public string ContainerOf(InjectionValue name)
{
if (TryGetObject(name, out int id))
{
var containerId = bridge.ContainerOf(id);
if (containerId < 0)
return "0xFFFFFFFF";
return $"0x{containerId:X8}";
}
return "0x00000000";
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ContainerOff();指定された受信側ランタイム コンテナーをリセットします。
パラメータはありません。
void - 戻り値はありません。
- UnsetReceivingContainer を呼び出し、State.ReceivingContainer=0 を書き込みます。明示的な割り当てのない次の Grab 操作では、バックパックが使用可能な場合はバックパックを使用します。アイテムは移動せず、コンテナ ウィンドウも閉じません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.ContainerOff");
UO.ContainerOff();引数と実行の流れ:
- 状態 ReceivingContainer が 0 になります。
UO.ContainerOff();引数と実行の流れ:
- 割り当てはクリアされます。このアクションによってコンテンツは移動されません。
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer("backpack");
UO.ContainerOff();
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.ContainerOff();
UO.ContainerOff();
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer().
内部実装のコードです。単独のスクリプトとして実行できません。
public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetContent(object? id);コンテナまたは地上に積まれているアイテムの内容を直接読み取ります。
-
id— 特定のオブジェクトのシリアル/ID: int、10 進数/16 進数の文字列、またはセットエイリアス self、backpack、lasttarget、lastobject または名前 AddObject。これはgraphic/typeではありません。 my/backpack 行はバックパックを選択します。明示的な 0、「0」、または「ground」のみが土地を選択します。不明なエイリアス、バックパックの欠落、負の ID、または不適切な値の型の場合は、空の配列になります。
各直接の子の配列 - serial。 ground/0 - コンテナ外のアイテム。通常のグランド マーク 0 と 0xFFFFFFFF の両方が考慮されます。エントリがない場合は、空の配列が返されます。リストには type ではなく ID が含まれており、レイヤーも含まれていません。
- クライアントによって既にダウンロードされているデータが読み込まれます。このコマンドは、コンテナを開いたり、アイテムを移動したり、サーバー全体からオブジェクトをダウンロードしたりしません。
- 配列 - 0 から始まるインデックスを持つ配列。 varに保存し、アクセスする前にArrayLengthを確認してください。スナップショットを作成した後、要素がワールドから消える可能性があります。アクションを実行する前に、Exists(serial) を確認してください。
- ネストされたバッグの再帰的走査、距離ソート、Ignore または FindDistance/FindVertical フィルターはありません。通常の FindType スナップショットは変更されません。
- 未開封のチェストは空であるように見える場合があります。受信したデータがないことは、サーバーが空であることを証明するものではありません。まず開いたコンテナを使用し、中身が入るまで待ちます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetContent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- ID="backpack" - 現在のキャラクターのバックパック、直接ネストされたアイテムのみ。
- 長さ - レコード数/ID。これはスタック内の Amount の量ではありません。空のリストは 0 を与えます。
var items = UO.GetContent("backpack");
UO.Print(Convert.ToString(ArrayLength(items)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;引数と実行の流れ:
- ID="backpack" - 現在のキャラクターのバックパック、直接ネストされたアイテムのみ。
- items[i] — 数値 serial。 16 進数は出力のみに使用されます。ループは最後のインデックスにはアクセスしません。
return RunScenario();
object? RunScenario()
{
var items = UO.GetContent("backpack");
var i = 0;
while (Truth(i < ArrayLength(items)))
{
UO.Print("0x" + Hex(items[i]));
i = i + 1;
}
return null;
}
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;引数と実行の流れ:
- ID="backpack" - 現在のキャラクターのバックパック、直接ネストされたアイテムのみ。
- スナップショット内のレコードと現在のオブジェクトの存在という 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 items = UO.GetContent("backpack");
if (Truth(ArrayLength(items) > 0))
{
var first = items[0];
if (Truth(UO.Exists(first)))
{
UO.Print(UO.GetName(first));
}
}
else
{
UO.Print("Empty list");
}
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;
}引数と実行の流れ:
- ID="ground" は明示的にグランドを選択します。 NPC/プレイヤーはこのリストには含まれていません。
- ここでの検索範囲はFindDistanceに限定されません。フィルターtype と距離には、GetWorldItems(type,色,距離)があります。
var groundItems = UO.GetContent("ground");
UO.Print(Convert.ToString(ArrayLength(groundItems)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: id (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.NumberConversions.TryStr2Int:NumberConversions.TryStr2Int(text, out int literal). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(text). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetEquipment:bridge.GetEquipment(container). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetContent:bridge.GetContent(container). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Backpack:bridge.Backpack.
内部実装のコードです。単独のスクリプトとして実行できません。
case "getcontent":
case "getequipment":
{
InjectionValue selection = arguments[0];
bool ground = false, explicitZero;
int container;
if (selection.Kind == InjectionValueKind.String)
{
string text = Text(0).Trim();
ground = text.Equals("ground", StringComparison.OrdinalIgnoreCase);
explicitZero = NumberConversions.TryStr2Int(text, out int literal) && literal == 0;
container = ground ? 0 : text.Equals("my", StringComparison.OrdinalIgnoreCase)
? bridge.Backpack : GetObject(text);
}
else
{
if (selection.Kind != InjectionValueKind.Integer && selection.Kind != InjectionValueKind.Decimal)
return new InjectionValue(Array.Empty<InjectionValue>());
container = Arg(0);
explicitZero = selection.Kind == InjectionValueKind.Integer ? selection.Integer == 0 : selection.Decimal == 0d;
}
// Only an explicit ground/zero selector may query world items.
if (container < 0 || container == 0 && !ground && !explicitZero)
return new InjectionValue(Array.Empty<InjectionValue>());
bool equipment = name.Equals("GetEquipment", StringComparison.OrdinalIgnoreCase);
int[] items = equipment
? container == 0 ? Array.Empty<int>() : bridge.GetEquipment(container)
: bridge.GetContent(container);
return new InjectionValue(items.Select(serial => new InjectionValue(serial)).ToArray());
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetParent(object? objID);項目の直接の親を読み取ります。
-
objID— 特定のオブジェクトのシリアル/ID: int、10 進数/16 進数の文字列、またはセットエイリアス self、backpack、lasttarget、lastobject または名前 AddObject。これはgraphic/typeではありません。
int - serial コンテナ/キャラクターの所有者。地上のアイテムの場合、クライアントの入力に応じて、0 または -1 (ビット 0xFFFFFFFF) になります。未知のオブジェクトまたはモバイルの場合 - 0。これはコンテナの graphic ではなく、アイテム自体の ID でもなく、ネストされたバッグのルート所有者でもありません。
- ローカル項目の Container フィールドは、再帰的な走査やサーバーの呼び出しを行わずに読み取られます。 null の結果を解釈する前に、Exists を確認してください。 Ground は 2 つの有効な表現を使用します。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.GetParent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- アイテムは見つかったスタックの serial です。 type=0x0EEDはFindTypeによってのみ送信されます。
- 親は、バックパックを含むキャラクターではなく、実際のバックパックを示します。
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
var parent = UO.GetParent(item);
UO.Print(Convert.ToString(parent));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- 議論の対象はバックパックそのものです。
- 装備したバックパックの親はキャラクターのserialとなります。
return RunScenario();
object? RunScenario()
{
var bag = UO.GetSerial("backpack");
if (Truth(UO.Exists(bag)))
{
UO.Print(Convert.ToString(UO.GetParent(bag)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- GetContent("ground") はコンテナの外にあるアイテムを ID に与えます。
- 土地の表現は両方とも有効です。 Exists のない 1 つの 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()
{
var items = UO.GetContent("ground");
if (Truth(ArrayLength(items) > 0))
{
var item = items[0];
if (Truth(UO.Exists(item)))
{
UO.Print(Convert.ToString(UO.GetParent(item)));
}
}
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 を使います。
引数: objID (Any)
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ContainerOf:bridge.ContainerOf(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "getparent": return new InjectionValue(bridge.ContainerOf(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Ground();検索コンテナパラメータまたは転送先の特別なランド指定子を返します。
パラメータはありません。
int、常に 0。このゼロは有効な地上指定子であり、false、検索エラー、ID 項目、graphic、地図番号または座標ではありません。成功の兆候として Ground() をチェックしないでください。この値が渡された検索または転送の結果を確認してください。
- パラメータはありません。 Ground() 呼び出し自体は、何も検索せず、何も移動せず、ターゲットを開いたり、パケットを送信したり、前の検索の結果を変更したりしません。ゲームに入る前には、0 も返されます。
- FindType、FindList、Count、FindTypeEx、FindTypesArrayEx、CountEx、MoveItem コマンドをコンテナ/宛先の位置に送信します。検索では、読み込まれたワールド オブジェクトが表示されますが、離れたセルは読み込まれません。地面への転送用 X/Y/Z - コンテナ ウィンドウのピクセルではなく、世界座標。
- FindType(type, color) は引き続きインベントリに表示されます。2 番目のパラメータは color です。土地の場合は、FindType(type、カラー、UO.Ground())と記入します。古いコンパクト FindType/MoveItem では、数字 -1 は在庫を示します。互換性のある FindTypeEx/FindTypesArrayEx/CountEx - 1 もアースとして使用できます。 UO.Ground() または明示的な名前 ground を使用し、チェックせずに異なるコマンド間で数値指定を転送しないでください。
- コマンドと上記の例の間の表記の違いは、このクライアントについて説明しています。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.Ground();
UO.Print("Ground: " + Convert.ToString(result));引数と実行の流れ:
- 宛先は int 0 を受信し、Print はこの番号を出力します。呼び出し自体は何も破棄しません。
var destination = UO.Ground();
UO.Print(Convert.ToString(destination));引数と実行の流れ:
- 0x0EED - ゴールドのグラフィック。 2 番目の -1 は、任意の hue を意味します。 Ground() はワールド内の検索を設定し、false はコンテナーの再帰を無効にします。結果がない場合、FindTypeEx は 1 つの serial または 0 を返します。 != 0 は、この serial をチェックします。現在の FindDistance/FindVertical とリスト Ignore が使用されます。
return RunScenario();
object? RunScenario()
{
var id = UO.FindTypeEx(0x0EED, -1, UO.Ground(), false);
if (Truth(id != 0))
{
UO.Print(Hex(id));
}
else
{
UO.Print("0");
}
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;引数と実行の流れ:
- FindGroundTypes(firstType, secondType, 半径, 高さ) は、半径=5、高さ=10で金0x0EEDと黒真珠0x0F7Aを検索します。変数 type[1] を宣言すると 2 つのセルが作成されます。カラー[0]とコンテナ[0] - 各1つ。スタック全体が 1 つの結果としてカウントされます。タイプ/色は代替であり、交差するコンテナは ID と重複しません。この関数は保存された配列 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()
{
var ids = FindGroundTypes(0x0EED, 0x0F7A, 5, 10);
foreach (var id in ids)
{
UO.Print(Hex(id));
}
return null;
}
dynamic FindGroundTypes(dynamic firstType, dynamic secondType, dynamic radius, dynamic height)
{
var oldDistance = UO.FindDistance();
var oldVertical = UO.FindVertical();
dynamic[] types = new dynamic[checked((int)(1) + 1)];
types[0] = firstType;
types[1] = secondType;
dynamic[] colors = new dynamic[checked((int)(0) + 1)];
colors[0] = -1;
dynamic[] containers = new dynamic[checked((int)(0) + 1)];
containers[0] = UO.Ground();
try
{
UO.FindDistance(radius);
UO.FindVertical(height);
UO.FindTypesArrayEx(types, colors, containers, false);
return UO.GetFoundItems();
}
finally
{
UO.FindDistance(oldDistance);
UO.FindVertical(oldVertical);
}
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}引数と実行の流れ:
- 0x40001001 を入手可能なアイテムの serial に置き換えます。 IsObjectExists はまずロードされたオブジェクトをチェックします。 MoveItem(アイテム、金額、目的地、X、Y、Z): 金額=0 - スタック全体、Ground() - 土地、GetX/GetY/GetZ - キャラクターのワールドセル。クライアントが転送リクエストを受け入れた場合、結果は 1、それ以外の場合は 0 です。これは Ground() ではなく MoveItem の結果であり、サーバーからの配信確認ではありません。
var item = 0x40001001;
if (Truth(UO.IsObjectExists(item)))
{
var result = UO.MoveItem(item, 0, UO.Ground(), UO.GetX("self"), UO.GetY("self"), UO.GetZ("self"));
}
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.
呼び出し時:
内部実装のコードです。単独のスクリプトとして実行できません。
case "ground": return new InjectionValue(0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsContainer(object? objID);ロードされたアイテムのグラフィック タイプのタイルデータ内のコンテナ フラグを確認します。
-
objID— 特定のオブジェクトの必須 serial/ID: int、16 進文字列またはエイリアス self、backpack、lasttarget、lastobject、lastcontainer、laststatus、finditem、lastcorpse または name AddObject。これはgraphic/typeではありません。指定されていない名前は 0 に解決されます。このコマンドは新しいターゲットを開きません。
int 1 - 既知のアイテムの graphic データにコンテナ属性があります。 int 0 - そのような兆候はありません。オブジェクトは mobile で、不明または削除されています。これはコンテナ内の物の数ではなく、ガンプが開いている兆候でも、中身へのアクセスの確認でもありません。
コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。
- ローカル クライアント モデルが読み取られます。サーバーへのリクエストはなく、待機や移動もありません。
- 結果は読書の瞬間を指します。 UO.Wait またはその他のアクションの後、オブジェクトとそのフラグが変更される場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
var result = UO.IsContainer(UO.GetSerial("lastobject"));
UO.Print("IsContainer: " + Convert.ToString(result));引数と実行の流れ:
- item はオブジェクト lastobject の serial であり、その type ではありません。
- このコマンドはコンテナー属性を読み取るだけで、オープンしません。
var item = UO.GetSerial("lastobject");
if (Truth(UO.IsContainer(item)))
{
UO.Print("Known container: " + item);
}
else
{
UO.Print("Not a known container");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- バッグは事前に選択し、中身をクライアントに知らせる必要があります。
- FindType は、type ゴールド、任意の hue および serial コンテナを受け取ります。結果が空であっても、サーバー コンテナが空であることは証明されません。
return RunScenario();
object? RunScenario()
{
var bag = UO.GetSerial("lasttarget");
if (Truth(UO.IsContainer(bag)))
{
var found = UO.FindType(0x0EED, -1, bag);
UO.Print("Known gold item: " + found);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;引数と実行の流れ:
- Exists と IsContainer は、同じ serial についての異なる質問に答えます。
- tiledata が不適切であるか、まだ利用できない場合、分類は予期されたものと異なる可能性があります。胸の権利を確認するためにそれを使用しないでください。
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 bag = UO.GetSerial("backpack");
var exists = UO.Exists(bag);
var container = UO.IsContainer(bag);
UO.Print("Loaded: " + Convert.ToString(exists));
UO.Print("Container flag: " + Convert.ToString(container));
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: objID (Any)
結果: int / Integer.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsContainer:bridge.IsContainer(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
内部実装のコードです。単独のスクリプトとして実行できません。
case "iscontainer": return new InjectionValue(bridge.IsContainer(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastContainer();最後のコンテナのserialを読み取ります。
パラメータはありません。
int — 保存済み serial; 0 は、serial がインストールされていないことを意味します。 bool ではなく、graphic/type でもありません。ゼロ以外の ID はもう世界に存在しない可能性があります。
- フィールドソース: _world.LastContainer。このコマンドはオブジェクトを選択、使用、または攻撃しません。
- 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。
object? result = UO.LastContainer();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));引数と実行の流れ:
- 最後のコンテナのserialを読み取ります。
var id = UO.LastContainer();
UO.Print(Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");引数と実行の流れ:
- フィールドソース: _world.LastContainer。このコマンドはオブジェクトを選択、使用、または攻撃しません。
return RunScenario();
object? RunScenario()
{
var id = UO.LastContainer();
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
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;引数と実行の流れ:
- 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
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.LastContainer();
UO.Wait(500);
var after = UO.LastContainer();
UO.Print(before = after);
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: dynamic / Any.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetLastContainer:bridge.GetLastContainer().
内部実装のコードです。単独のスクリプトとして実行できません。
case "lastcontainer": return new InjectionValue(bridge.GetLastContainer());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.OpenContainer(object? id);
void UO.OpenContainer(object? id, object? timeout);コンテナを開くリクエスト。
-
id— シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。 -
timeout— オプションの int、ミリ秒。デフォルトは 0 です。負の値は期待値を追加しません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- Bridge.OpenContainer は、タイムアウト > 0 の場合にのみ、UseObject(id) を呼び出し、次に UO.Wait(timeout) を呼び出します。一時停止は固定されています。コンテナの存在/内容はチェックされません。
- タイムアウトがなければ、一時停止はありません。一時停止の終了は、コンテンツが開かれた、または完全にロードされたという証拠とみなされるべきではありません。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.OpenContainer");
UO.OpenContainer("lasttarget");引数と実行の流れ:
- コンテナを開くリクエスト。
UO.OpenContainer("lasttarget");引数と実行の流れ:
- Bridge.OpenContainer は、タイムアウト > 0 の場合にのみ、UseObject(id) を呼び出し、次に UO.Wait(timeout) を呼び出します。一時停止は固定されています。コンテナの存在/内容はチェックされません。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.OpenContainer("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;引数と実行の流れ:
- タイムアウトがなければ、一時停止はありません。一時停止の終了は、コンテンツが開かれた、または完全にロードされたという証拠とみなされるべきではありません。
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.OpenContainer(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.OpenContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenContainer:bridge.OpenContainer(GetObject(id), 0). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void OpenContainer(InjectionValue id) => bridge.OpenContainer(GetObject(id), 0);引数: id (Any), timeout (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.OpenContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenContainer:bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(timeout).
内部実装のコードです。単独のスクリプトとして実行できません。
public void OpenContainer(InjectionValue id, InjectionValue timeout) => bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetCatchBag();
void UO.SetCatchBag(object? container);-
container— コンテナのシリアル、その保存名、「backpack」または「my」。 0 割り当てを解除します。引数を指定しないと、リセットではなく、最後に適用されたオブジェクトである lastobject が使用されます。名前が正の serial に解決されない場合、割り当ては削除されます。インストール自体は、サーバーの可用性と移行対象のオブジェクトの適合性をチェックしません。
void: 戻り値はありません。 UO.SetCatchBag(...) の場合、var 結果 = UO.SetCatchBag(...) を使用したり、確認として数値 1 を期待したりすることはできません。実際の移動は、Grab などの別のコマンドによって実行されます。
- UO.SetCatchBag() と UO.SetReceivingContainer() は、引数なしで異なる形式の値を持ちます。最初のものは lastobject を受け取り、2 つ目はコンテナをリセットします。
- 明示的なリセット: UO.UnsetCatchBag()、UO.UnsetReceivingContainer()、または UO.SetCatchBag(0)。リセット後、Grab は個別の割り当てなしでバックパックを使用します。
- serial を設定しても、サーバーがアイテムをそこに配置できることを意味するものではありません。実際の転送時に距離、存在、空き状況が確認されます。
- 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SetCatchBag");
UO.SetCatchBag();引数と実行の流れ:
- 単一のコンテナー パラメーターは文字列「backpack」を受け取ります。ランタイムにより、バックパックの serial でそれが許可されます。
- 呼び出しは Unit を返すため、var の結果なしで別の行に書き込まれます。メッセージPrint は設定を説明するものであり、アイテムの転送を確認するものではありません。
var destination = "backpack";
UO.SetCatchBag(destination);
UO.Print("Receiving container: own backpack");引数と実行の流れ:
- このオーバーロードにはパラメーターがありません。内部的には lastobject という名前が使用されます。
- 空の括弧はリセットを意味しません。ダブルクリックするだけで、適切なコンテナを事前に選択できます。実際のキャリーバッグが利用できるかどうかは、ゲームの現在の状況によって異なります。
return RunScenario();
object? RunScenario()
{
UO.SetCatchBag();
UO.Print("Destination taken from lastobject");
return null;
}引数と実行の流れ:
- 最初の呼び出しでは、container=bag に 16 進文字列 serial が含まれています。 0x40001234 は例です。独自の値に置き換える必要があります。
- 2 回目の呼び出しでは、container=0 によって割り当てが解除されます。明示的なコンテナを持たない次の Grab はバックパックを使用します。
- リセットは、意図したキャリー ブロックの後に配置されます。セットとリセットは結果を返さず、項目を独自に移動しません。
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 bag = "0x40001234";
UO.SetCatchBag(bag);
UO.Print("Configured destination: " + bag);
UO.SetCatchBag(0);
UO.Print("Destination reset to the normal backpack fallback");
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject"). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString().
内部実装のコードです。単独のスクリプトとして実行できません。
case "setcatchbag":
SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");
break;引数: container (Any)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject"). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString().
内部実装のコードです。単独のスクリプトとして実行できません。
case "setcatchbag":
SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetReceivingContainer();
void UO.SetReceivingContainer(object? id);今後の Grab の受信コンテナを設定します。
-
id- オプションの serial/エイリアス。 「my」/「backpack」 - 現在のバックパック。陽性の ID は存在チェックなしで保持されます。 0/negative/引数なしは設定をクリアします。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- 特別な my/backpack を除き、文字列は GetObject に解決されます。 Bridge.SetReceivingContainer は State.ReceivingContainer を割り当てます。この呼び出しではアイテムは転送されません。
- クリア後、Grabは明確な目的もなくバックパックを使用します。肯定的な ID だけでは、コンテナーがロードされているか、サーバーにアクセスできるかどうかは確認されません。
- 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.SetReceivingContainer");
UO.SetReceivingContainer();引数と実行の流れ:
- 今後の Grab の受信コンテナを設定します。
UO.SetReceivingContainer("backpack");引数と実行の流れ:
- 特別な my/backpack を除き、文字列は GetObject に解決されます。 Bridge.SetReceivingContainer は State.ReceivingContainer を割り当てます。この呼び出しではアイテムは転送されません。
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer();
return null;
}引数と実行の流れ:
- クリア後、Grabは明確な目的もなくバックパックを使用します。肯定的な 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()
{
var bag = UO.GetSerial("lastcontainer");
if (Truth(UO.IsContainer(bag)))
{
UO.SetReceivingContainer(bag);
}
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 を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer:UnsetReceivingContainer().
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetReceivingContainer() => UnsetReceivingContainer();引数: id (Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetReceivingContainer:bridge.SetReceivingContainer(id).
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetReceivingContainer(int id)
{
if (id <= 0)
bridge.UnsetReceivingContainer();
else
bridge.SetReceivingContainer(id);
}引数: id (Integer/String)
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(bridge.Backpack). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Backpack:bridge.Backpack.
内部実装のコードです。単独のスクリプトとして実行できません。
public void SetReceivingContainer(string id)
{
string name = (id ?? string.Empty).Trim();
if (name.Equals("my", StringComparison.OrdinalIgnoreCase)
|| name.Equals("backpack", StringComparison.OrdinalIgnoreCase))
{
SetReceivingContainer(bridge.Backpack);
return;
}
SetReceivingContainer(GetObject(id));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetCatchBag();Grab の受信コンテナをクリアします。
パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- ExecuteLegacyManualAlias は UnsetReceivingContainer を呼び出します。ブリッジは ReceivingContainer=0 を割り当てます。続くGrabではバックパックを使用。これはバッグの取り外しではありません。
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
- 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UnsetCatchBag");
UO.UnsetCatchBag();引数と実行の流れ:
- Grab の受信コンテナをクリアします。
UO.UnsetCatchBag();引数と実行の流れ:
- ExecuteLegacyManualAlias は UnsetReceivingContainer を呼び出します。ブリッジは ReceivingContainer=0 を割り当てます。続くGrabではバックパックを使用。これはバッグの取り外しではありません。
return RunScenario();
object? RunScenario()
{
UO.SetCatchBag("backpack");
UO.UnsetCatchBag();
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.UnsetCatchBag();
UO.Print(UO.Backpack());
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer:UnsetReceivingContainer().
内部実装のコードです。単独のスクリプトとして実行できません。
case "unsetcatchbag": UnsetReceivingContainer(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetReceivingContainer();保存されている受信コンテナをクリアします。
パラメータはありません。
void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。
- UnsetReceivingContainer は ReceivingContainer=0 を割り当てます。続くGrabでは、明確な目的もなくバックパックを使用します。アイテムは転送されません。
- 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
- 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。
各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。
このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。
コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。
UO.Print("Calling UO.UnsetReceivingContainer");
UO.UnsetReceivingContainer();引数と実行の流れ:
- 保存されている受信コンテナをクリアします。
UO.UnsetReceivingContainer();引数と実行の流れ:
- UnsetReceivingContainer は ReceivingContainer=0 を割り当てます。続くGrabでは、明確な目的もなくバックパックを使用します。アイテムは転送されません。
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer("backpack");
UO.UnsetReceivingContainer();
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.UnsetReceivingContainer();
UO.Print(UO.Backpack());
return null;
}
}C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。
引数: 引数はありません。
結果: void / Unit.
呼び出し時:
-
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer().
内部実装のコードです。単独のスクリプトとして実行できません。
public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();ClassicUO — Bad Newbie & C# Scripts IDE