Skip to content

JA UO Topic containers

Codex edited this page Oct 12, 2026 · 4 revisions

Українська · Русский · 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

すべてのテーマコマンド

Backpack / Ground

UO.Backpack · UO.Ground

OpenContainer

UO.OpenContainer

LastContainer

UO.LastContainer

ContainerOf

UO.ContainerOf · UO.GetParent · UO.ContainerOff

IsContainer

UO.IsContainer

ネストされたコンテナ

UO.GetContent

受入容器

UO.SetReceivingContainer · UO.UnsetReceivingContainer

キャッチバッグ

UO.SetCatchBag · UO.UnsetCatchBag

このトピックに関する例

各コマンド カードには、直接コード、関数、クラスなどのいくつかの独立したシナリオがあります。以下は厳選された短いシナリオです。制限と完全な分析がカードに含まれています。

UO.OpenContainer

パラメータ、結果、およびすべてのシナリオ

UO.OpenContainer("lasttarget");

UO.EmptyContainer

パラメータ、結果、およびすべてのシナリオ

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;

コマンドの完全なリファレンス


UO.Backpack

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 は、接続、サーバーの解像度、コンテンツの読み込みを証明しません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

var result = UO.Backpack();
UO.Print("Backpack: " + Convert.ToString(result));

1。読み取りと出力 ID - 直接スクリプト

引数と実行の流れ:

  • id には 1 回の呼び出しの結果が格納されます。 HEX はログ用に serial をフォーマットします。この例では何も選択または使用していません。
var id = UO.Backpack();
UO.Print("ID: " + Hex(id));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。変更の検出 ID - スクリプト関数

引数と実行の流れ:

  • 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;

3。フル機能 IsOwnSerial - スクリプトクラス

引数と実行の流れ:

  • 候補者 - 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 を使います。

UO.Backpack() — UO.Backpack()

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "backpack": return new InjectionValue(bridge.Backpack);

UO.ContainerOf

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 つの有効な表現を使用します。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

var result = UO.ContainerOf("backpack");
UO.Print("ContainerOf: " + Convert.ToString(result));

1。アイテムのコンテナを見つける - 直接スクリプト

引数と実行の流れ:

  • アイテムは見つかったスタックの 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;

2。バックパックの所有者を調べる - スクリプト機能

引数と実行の流れ:

  • 議論の対象はバックパックそのものです。
  • 装備したバックパックの親はキャラクターの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;

3。 Check Item on Ground - Script Class

引数と実行の流れ:

  • 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 を使います。

UO.ContainerOf(name) — UO.ContainerOf(Any)

引数: name (Any)

結果: string / String.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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";

        }

UO.ContainerOff

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

void UO.ContainerOff();

指定された受信側ランタイム コンテナーをリセットします。

引数

パラメータはありません。

戻り値

void - 戻り値はありません。

動作

  • UnsetReceivingContainer を呼び出し、State.ReceivingContainer=0 を書き込みます。明示的な割り当てのない次の Grab 操作では、バックパックが使用可能な場合はバックパックを使用します。アイテムは移動せず、コンテナ ウィンドウも閉じません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.ContainerOff");
UO.ContainerOff();

1。割り当てのリセット - 直接スクリプト

引数と実行の流れ:

  • 状態 ReceivingContainer が 0 になります。
UO.ContainerOff();

2。割り当て後のリセット - スクリプト関数

引数と実行の流れ:

  • 割り当てはクリアされます。このアクションによってコンテンツは移動されません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer("backpack");
    UO.ContainerOff();
    return null;
}

3。リセット - スクリプト クラス

引数と実行の流れ:

  • ヌル状態では、繰り返しリセットできます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ContainerOff();
        UO.ContainerOff();
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.ContainerOff() — UO.ContainerOff()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();

UO.GetContent

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 スナップショットは変更されません。
  • 未開封のチェストは空であるように見える場合があります。受信したデータがないことは、サーバーが空であることを証明するものではありません。まず開いたコンテナを使用し、中身が入るまで待ちます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .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));

1。リスト サイズの取得 - 直接スクリプト

引数と実行の流れ:

  • 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;

2。見つかったすべてのIDをトラバース - スクリプト関数

引数と実行の流れ:

  • 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;

3。読み取る前に最初のレコードを確認する - スクリプト クラス

引数と実行の流れ:

  • 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;
}

4。ダウンロードされたすべての土地アイテムを取得 - 直接スクリプト

引数と実行の流れ:

  • 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 を使います。

UO.GetContent(id) — UO.GetContent(Any)

引数: id (Any)

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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());

                }

UO.GetParent

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 つの有効な表現を使用します。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .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));

1。アイテムのコンテナを見つける - 直接スクリプト

引数と実行の流れ:

  • アイテムは見つかったスタックの 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;

2。バックパックの所有者を調べる - スクリプト機能

引数と実行の流れ:

  • 議論の対象はバックパックそのものです。
  • 装備したバックパックの親はキャラクターの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;

3。 Check Item on Ground - Script Class

引数と実行の流れ:

  • 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 を使います。

UO.GetParent(objID) — UO.GetParent(Any)

引数: objID (Any)

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "getparent": return new InjectionValue(bridge.ContainerOf(Arg(0)));

UO.Ground

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 を使用し、チェックせずに異なるコマンド間で数値指定を転送しないでください。
  • コマンドと上記の例の間の表記の違いは、このクライアントについて説明しています。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

var result = UO.Ground();
UO.Print("Ground: " + Convert.ToString(result));

1。土地記号の読み取り - 直接スクリプト

引数と実行の流れ:

  • 宛先は int 0 を受信し、Print はこの番号を出力します。呼び出し自体は何も破棄しません。
var destination = UO.Ground();
UO.Print(Convert.ToString(destination));

2。地面にある金の山を見つける - スクリプト関数

引数と実行の流れ:

  • 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;

3。地球上の 2 つのグラフを見つけるための完全な関数 - スクリプト クラス

引数と実行の流れ:

  • 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");
}

4。既知のアイテムをキャラクターのセルに移動 - 直接スクリプト

引数と実行の流れ:

  • 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 を使います。

UO.Ground() — UO.Ground()

引数: 引数はありません。

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "ground": return new InjectionValue(0);

UO.IsContainer

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 またはその他のアクションの後、オブジェクトとそのフラグが変更される場合があります。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

var result = UO.IsContainer(UO.GetSerial("lastobject"));
UO.Print("IsContainer: " + Convert.ToString(result));

1。最後に使用したアイテムを確認する - 直接スクリプト

引数と実行の流れ:

  • 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;

2。検索前にコンテナを選択 - スクリプト関数

引数と実行の流れ:

  • バッグは事前に選択し、中身をクライアントに知らせる必要があります。
  • 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;

3。存在と分類を個別に確認 - シナリオクラス

引数と実行の流れ:

  • 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 を使います。

UO.IsContainer(objID) — UO.IsContainer(Any)

引数: objID (Any)

結果: int / Integer.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "iscontainer": return new InjectionValue(bridge.IsContainer(Arg(0)));

UO.LastContainer

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

dynamic UO.LastContainer();

最後のコンテナのserialを読み取ります。

引数

パラメータはありません。

戻り値

int — 保存済み serial; 0 は、serial がインストールされていないことを意味します。 bool ではなく、graphic/type でもありません。ゼロ以外の ID はもう世界に存在しない可能性があります。

動作

  • フィールドソース: _world.LastContainer。このコマンドはオブジェクトを選択、使用、または攻撃しません。
  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

1 回の呼び出し結果をジャーナルに表示します。数値は bool に変換されません。配列の場合は要素数を表示します。

object? result = UO.LastContainer();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 最後のコンテナのserialを読み取ります。
var id = UO.LastContainer();
UO.Print(Hex(id));

string Hex(object? value) => Convert.ToInt64(value).ToString("X");

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • フィールドソース: _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;

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 現在のローカル状態を読み取ります。パッケージ、ターゲット、自動アップデートはありません。個々の読み取りでは異なる状態が表示される場合があります。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.LastContainer();
        UO.Wait(500);
        var after = UO.LastContainer();
        UO.Print(before = after);
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.LastContainer() — UO.LastContainer()

引数: 引数はありません。

結果: dynamic / Any.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "lastcontainer": return new InjectionValue(bridge.GetLastContainer());

UO.OpenContainer

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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) を呼び出します。一時停止は固定されています。コンテナの存在/内容はチェックされません。
  • タイムアウトがなければ、一時停止はありません。一時停止の終了は、コンテンツが開かれた、または完全にロードされたという証拠とみなされるべきではありません。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.OpenContainer");
UO.OpenContainer("lasttarget");

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • コンテナを開くリクエスト。
UO.OpenContainer("lasttarget");

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • 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;

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • タイムアウトがなければ、一時停止はありません。一時停止の終了は、コンテンツが開かれた、または完全にロードされたという証拠とみなされるべきではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        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 を使います。

UO.OpenContainer(id) — UO.OpenContainer(Any)

引数: id (Any)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void OpenContainer(InjectionValue id) => bridge.OpenContainer(GetObject(id), 0);

UO.OpenContainer(id, timeout) — UO.OpenContainer(Any,Any)

引数: id (Any), timeout (Any)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void OpenContainer(InjectionValue id, InjectionValue timeout) => bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout));

UO.SetCatchBag

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 はロードされたワールドに対して引き続きチェックされます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.SetCatchBag");
UO.SetCatchBag();

1。バックパックを明示的に割り当てる - 直接スクリプト

引数と実行の流れ:

  • 単一のコンテナー パラメーターは文字列「backpack」を受け取ります。ランタイムにより、バックパックの serial でそれが許可されます。
  • 呼び出しは Unit を返すため、var の結果なしで別の行に書き込まれます。メッセージPrint は設定を説明するものであり、アイテムの転送を確認するものではありません。
var destination = "backpack";
UO.SetCatchBag(destination);
UO.Print("Receiving container: own backpack");

2。最後に使用したコンテナの選択 - スクリプト関数

引数と実行の流れ:

  • このオーバーロードにはパラメーターがありません。内部的には lastobject という名前が使用されます。
  • 空の括弧はリセットを意味しません。ダブルクリックするだけで、適切なコンテナを事前に選択できます。実際のキャリーバッグが利用できるかどうかは、ゲームの現在の状況によって異なります。
return  RunScenario();
 object? RunScenario()
{
    UO.SetCatchBag();
    UO.Print("Destination taken from lastobject");
    return null;
}

3。特定の serial を設定し、デフォルトの宛先 - スクリプト クラスを返します。

引数と実行の流れ:

  • 最初の呼び出しでは、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 を使います。

UO.SetCatchBag() — UO.SetCatchBag()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "setcatchbag":

                    SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");

                    break;

UO.SetCatchBag(container) — UO.SetCatchBag(Any)

引数: container (Any)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "setcatchbag":

                    SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");

                    break;

UO.SetReceivingContainer

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

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 はロードされたワールドに対して引き続きチェックされます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.SetReceivingContainer");
UO.SetReceivingContainer();

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 今後の Grab の受信コンテナを設定します。
UO.SetReceivingContainer("backpack");

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • 特別な my/backpack を除き、文字列は GetObject に解決されます。 Bridge.SetReceivingContainer は State.ReceivingContainer を割り当てます。この呼び出しではアイテムは転送されません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer();
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • クリア後​​、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 を使います。

UO.SetReceivingContainer() — UO.SetReceivingContainer()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void SetReceivingContainer() => UnsetReceivingContainer();

UO.SetReceivingContainer(id) — UO.SetReceivingContainer(Integer)

引数: id (Integer/String)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void SetReceivingContainer(int id)

        {

            if (id <= 0)

                bridge.UnsetReceivingContainer();

            else

                bridge.SetReceivingContainer(id);

        }

UO.SetReceivingContainer(id) — UO.SetReceivingContainer(String)

引数: id (Integer/String)

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

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));

        }

UO.UnsetCatchBag

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

void UO.UnsetCatchBag();

Grab の受信コンテナをクリアします。

引数

パラメータはありません。

戻り値

void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。

動作

  • ExecuteLegacyManualAlias は UnsetReceivingContainer を呼び出します。ブリッジは ReceivingContainer=0 を割り当てます。続くGrabではバックパックを使用。これはバッグの取り外しではありません。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.UnsetCatchBag");
UO.UnsetCatchBag();

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • Grab の受信コンテナをクリアします。
UO.UnsetCatchBag();

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • ExecuteLegacyManualAlias は UnsetReceivingContainer を呼び出します。ブリッジは ReceivingContainer=0 を割り当てます。続くGrabではバックパックを使用。これはバッグの取り外しではありません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetCatchBag("backpack");
    UO.UnsetCatchBag();
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.UnsetCatchBag();
        UO.Print(UO.Backpack());
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.UnsetCatchBag() — UO.UnsetCatchBag()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

case "unsetcatchbag": UnsetReceivingContainer(); break;

UO.UnsetReceivingContainer

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C# のシグネチャ

void UO.UnsetReceivingContainer();

保存されている受信コンテナをクリアします。

引数

パラメータはありません。

戻り値

void - 値がありません。別の回線で電話してください。完了してもサーバーのアクションは確認されません。

動作

  • UnsetReceivingContainer は ReceivingContainer=0 を割り当てます。続くGrabでは、明確な目的もなくバックパックを使用します。アイテムは転送されません。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

単独で実行できる C# スクリプト

各サンプルは個別のファイル .csx として保存し、IDE で実行できます。 UO オブジェクトと待機関数は、現在のゲーム セッションのホストを提供します。デモの serial の名前、座標、アドレスを自分のものに置き換えます。

簡単な例

このコードを独立した .csx ファイルとして実行します。引数は呼び出しに直接記載されています。例の名前、serial、アドレスを自分の値に置き換えてください。

コマンドは独立した文です。直前のメッセージは呼び出しの開始を示し、サーバーの動作完了を確認するものではありません。

UO.Print("Calling UO.UnsetReceivingContainer");
UO.UnsetReceivingContainer();

1。直接呼び出し - 直接スクリプト

引数と実行の流れ:

  • 保存されている受信コンテナをクリアします。
UO.UnsetReceivingContainer();

2。明示的なオプション - スクリプト関数

引数と実行の流れ:

  • UnsetReceivingContainer は ReceivingContainer=0 を割り当てます。続くGrabでは、明確な目的もなくバックパックを使用します。アイテムは転送されません。
return  RunScenario();
 object? RunScenario()
{
    UO.SetReceivingContainer("backpack");
    UO.UnsetReceivingContainer();
    return null;
}

3。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.UnsetReceivingContainer();
        UO.Print(UO.Backpack());
        return null;
    }
}

コマンドの実装

C# は大文字と小文字を区別します。正確な UO 名を使用してください。数値フラグは 0 と比較し、戻り値が bool の場合だけ bool を使います。

UO.UnsetReceivingContainer() — UO.UnsetReceivingContainer()

引数: 引数はありません。

結果: void / Unit.

呼び出し時:

内部実装のコードです。単独のスクリプトとして実行できません。

public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();

Clone this wiki locally