Skip to content

JA UO Topic trade

Codex edited this page Oct 12, 2026 · 4 revisions

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

貿易

家 · C# · IDE · UO API · A–Z · 例 · Languages

プレイヤー間の安全な交換のためのウィンドウ: 参加者、コンテナ、ステータス、確認、キャンセル。

セクション

トピック コマンドと説明
IsTrade UO.IsTrade
取引相手 UO.GetTradeOpponent · UO.GetTradeOpponentName ​​
貿易コンテナ UO.GetTradeContainer
ConfirmTrade UO.ConfirmTrade
CancelTrade UO.CancelTrade

すべてのテーマコマンド

安全な取引

UO.IsTrade · UO.TradeCount · UO.TradeCheck · UO.TradeContainer · UO.GetTradeContainer · UO.TradeOpponent · UO.GetTradeOpponent · UO.TradeName · UO.GetTradeOpponentName · UO.ConfirmTrade · UO.CancelTrade

このトピックに関する例

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

UO.GetTradeContainer

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

var value = UO.GetTradeContainer(1, 1);
UO.Print(Hex(value));

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

UO.ConfirmTrade

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

var result = UO.ConfirmTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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


UO.CancelTrade

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

C# のシグネチャ

dynamic UO.CancelTrade(object? tradeNum);

選択した交換をキャンセルし、そのウィンドウを閉じます。

引数

  • tradeNum — 整数: 1 から TradeCount() までの現在のウィンドウ番号。 0 および負の値は許可されません。ここはserialではありません。

戻り値

int: 1 (条件が満たされた) - ウィンドウが見つかり、閉じられ、閉じることによってキャンセル要求が送信されます。 0 (条件が満たされていない) - 窓がありません。これはサーバーの応答を待っていません。閉じたウィンドウを再度キャンセルしても、2 番目のパケットは送信されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var result = UO.CancelTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。
return  RunScenario();
 object? RunScenario()
{
    var tradeNumber = 2;
    if (Truth(UO.TradeCount() >= tradeNumber))
    {
        var result = UO.CancelTrade(tradeNumber);
        UO.Print(Convert.ToString(result));
    }

    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。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var expectedPartner = UO.GetTradeOpponent(1);
        var result = ApplyToPartner(1, expectedPartner);
        UO.Print(Convert.ToString(result));
        return null;
    }

    dynamic ApplyToPartner(dynamic tradeNumber, dynamic expectedPartner)
    {
        if (Truth(expectedPartner == 0))
        {
            return false;
        }

        if (Truth(UO.GetTradeOpponent(tradeNumber) != expectedPartner))
        {
            return false;
        }

        return UO.CancelTrade(tradeNumber);
    }

    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.CancelTrade(tradeNum) — UO.CancelTrade(Any)

引数: tradeNum (Any)

結果: dynamic / Any.

呼び出し時:

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

case "canceltrade": return new InjectionValue(bridge.CancelTrade(Arg(0)));

UO.ConfirmTrade

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

C# のシグネチャ

dynamic UO.ConfirmTrade(object? tradeNum);

選択した取引所にカスタム同意フラグを設定します。

引数

  • tradeNum — 整数: 1 から TradeCount() までの現在のウィンドウ番号。 0 および負の値は許可されません。ここはserialではありません。

戻り値

int: 1 (条件が満たされた) - ウィンドウが見つかり、それ自体の合意がオンになっています (またはすでにオンになっています)。 0 (条件が満たされていない) - 窓がありません。サーバーによるアイテムの転送は確認されません。再度電話しても同意は削除されません。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var result = UO.ConfirmTrade(1);
if (Truth(Truth(result) == true))
{
    UO.Print("Local request processed");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。
return  RunScenario();
 object? RunScenario()
{
    var tradeNumber = 2;
    if (Truth(UO.TradeCount() >= tradeNumber))
    {
        var result = UO.ConfirmTrade(tradeNumber);
        UO.Print(Convert.ToString(result));
    }

    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。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var expectedPartner = UO.GetTradeOpponent(1);
        var result = ApplyToPartner(1, expectedPartner);
        UO.Print(Convert.ToString(result));
        return null;
    }

    dynamic ApplyToPartner(dynamic tradeNumber, dynamic expectedPartner)
    {
        if (Truth(expectedPartner == 0))
        {
            return false;
        }

        if (Truth(UO.GetTradeOpponent(tradeNumber) != expectedPartner))
        {
            return false;
        }

        return UO.ConfirmTrade(tradeNumber);
    }

    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.ConfirmTrade(tradeNum) — UO.ConfirmTrade(Any)

引数: tradeNum (Any)

結果: dynamic / Any.

呼び出し時:

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

case "confirmtrade": return new InjectionValue(bridge.ConfirmTrade(Arg(0)));

UO.GetTradeContainer

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

C# のシグネチャ

dynamic UO.GetTradeContainer(object? tradeNum, object? num);

2 つの交換コンテナのうちの 1 つの数値 serial を返します。

引数

  • tradeNum — 整数: 1 から TradeCount() までの現在のウィンドウ番号。 0 および負の値は許可されません。ここはserialではありません。
  • num - 1 - 自身のコンテナ、2 - パートナーのコンテナ。残りの値は 0 を返します。

戻り値

int: 32 ビット serial コンテナ。 0 ウィンドウがない場合、または番号が間違っている場合。ここはtypeではありません。最上位ビットは保持されます。> 0 や == true ではなく、!= 0 を確認してください。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.GetTradeContainer(1, 1);
UO.Print(Hex(value));

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

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var ours = UO.GetTradeContainer(1, 1);
    var theirs = UO.GetTradeContainer(1, 2);
    UO.Print(Hex(ours) + " / " + Hex(theirs));
    return null;
}

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

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Hex(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return 0;
        }

        return UO.GetTradeContainer(index, 1);
    }

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

コマンドの実装

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

UO.GetTradeContainer(tradeNum, num) — UO.GetTradeContainer(Any,Any)

引数: tradeNum (Any), num (Any)

結果: dynamic / Any.

呼び出し時:

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

case "gettradecontainer": return new InjectionValue(bridge.GetTradeContainer(Arg(0), Arg(1)));

UO.GetTradeOpponent

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

C# のシグネチャ

dynamic UO.GetTradeOpponent(object? tradeNum);

パートナーキャラクターの数値serialを返します。

引数

  • tradeNum — 整数: 1 から TradeCount() までの現在のウィンドウ番号。 0 および負の値は許可されません。ここはserialではありません。

戻り値

int: LocalSerial ウィンドウの serial 文字。窓がない場合は0。コンテナでも bool でもありません。 != 0 を確認してください。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.GetTradeOpponent(1);
UO.Print(Hex(value));

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

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(1); index <= total - 0; index += (int)(1))
    {
        var value = UO.GetTradeOpponent(index);
        UO.Print(Convert.ToString(index) + ": " + Hex(value));
    }

    return null;
}

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

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Hex(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return 0;
        }

        return UO.GetTradeOpponent(index);
    }

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

コマンドの実装

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

UO.GetTradeOpponent(tradeNum) — UO.GetTradeOpponent(Any)

引数: tradeNum (Any)

結果: dynamic / Any.

呼び出し時:

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

case "gettradeopponent": return new InjectionValue(bridge.GetTradeOpponent(Arg(0)));

UO.GetTradeOpponentName

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

C# のシグネチャ

dynamic UO.GetTradeOpponentName(object? tradeNum);

交換ウィンドウとともに受け取ったパートナー名を返します。

引数

  • tradeNum — 整数: 1 から TradeCount() までの現在のウィンドウ番号。 0 および負の値は許可されません。ここはserialではありません。

戻り値

string: 交換開始パッケージの名前。ウィンドウまたは名前がない場合は空の文字列。もう名前は聞かない。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.GetTradeOpponentName(1);
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(1); index <= total - 0; index += (int)(1))
    {
        var value = UO.GetTradeOpponentName(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(1);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 1) || Truth(index >= total + 1))
        {
            return "";
        }

        return UO.GetTradeOpponentName(index);
    }

    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.GetTradeOpponentName(tradeNum) — UO.GetTradeOpponentName(Any)

引数: tradeNum (Any)

結果: dynamic / Any.

呼び出し時:

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

case "gettradeopponentname": return new InjectionValue(bridge.GetTradeOpponentName(Arg(0)));

UO.IsTrade

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

C# のシグネチャ

int UO.IsTrade();

開いている安全な交換ウィンドウを確認します。

引数

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

戻り値

int: 1 (条件が満たされた) - オープンな交換があります。 0 (条件が満たされていません) - いいえ。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.IsTrade();
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 前/後 - 500 ミリ秒間隔の 2 つの個別のスナップショット。一時停止は特定の交換を待ちません。読み取りの間に状態が数回変化する可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.IsTrade();
    await Delay(500);
    var after = UO.IsTrade();
    UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeState();
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeState()
    {
        return UO.IsTrade();
    }
}

コマンドの実装

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

UO.IsTrade() — UO.IsTrade()

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

結果: int / Integer.

呼び出し時:

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

case "istrade": return new InjectionValue(bridge.IsTrade());

UO.TradeCheck

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

C# のシグネチャ

int UO.TradeCheck(object? windowIndex);
dynamic UO.TradeCheck(object? tradeNum, object? num);
int UO.TradeCheck(object? windowIndex, object? checkbox, object? stateValue);

同意フラグを読み取ります。 3 つのパラメータのフォームでは、独自のチェックボックスも変更されます。

引数

  • windowIndex — 整数: 0 から TradeCount()-1 までの現在のウィンドウ インデックス。負のインデックスまたは欠落したインデックスを指定すると、空の結果が生成されます。ここはserialではありません。
  • tradeNum — 整数: 0 から TradeCount()-1 までの現在のウィンドウ インデックス。負のインデックスまたは欠落したインデックスを指定すると、空の結果が生成されます。ここはserialではありません。
  • num — 2 つのパラメータ形式のみ: 1 — 自身のフラグ、2 — パートナーのフラグ。他の意味は 0 になります。ここのTradeNumは0から始まります。
  • checkbox — 3 つのパラメータ形式のみ: 0 — 自分のフラグ、1 — パートナーのフラグ。他の人のフラグは読み取られるだけです。別の意味は0によって与えられます。
  • stateValue — チェックボックス = 0 を使用した場合のみ: 0/false は、ゼロ以外の数値/true を含む同意を削除します。 checkbox=1 の場合、値は無視されます。

戻り値

int: 1 (条件が満たされた) - 選択されたチェックボックスが選択されています。 0 (条件が満たされていない) - 削除されているか、窓がないか、側面が間違っています。記録フォームは、トランザクションが成功したことを示すのではなく、ステータスを返します。チェックボックスをオフにすると、0 が返されます。

コマンドの結果は数値フラグです。1 は条件が満たされたことを意味し、0 は条件が満たされていないことを意味します。 var result = command(...) の後、(result != 0) または (result == 0) を確認します。 1 回の呼び出しの結果を保存します。呼び出しを繰り返すと、アクションを再度実行したり、すでに変更された状態を読み取ることができます。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • UO.TradeCheck(0) と UO.TradeCheck(0,1) は、最初のウィンドウの合意を読み取ります。 UO.TradeCheck(0,2) - 他の人のもの。録音や自動確認はありません。
var own = UO.TradeCheck(0);
var sameOwn = UO.TradeCheck(0, 1);
var other = UO.TradeCheck(0, 2);
UO.Print(Convert.ToString(own) + "/" + Convert.ToString(sameOwn) + "/" + Convert.ToString(other));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • UO.TradeCheck(0,0,false) は同意を撤回します。 UO.TradeCheck(0,1,false) はパートナーの同意のみを読み取ります。 false は他の人の側を変更できません。撤退後の結果0を期待します。
return  RunScenario();
 object? RunScenario()
{
    var cleared = UO.TradeCheck(0, 0, false);
    var other = UO.TradeCheck(0, 1, false);
    UO.Print(Convert.ToString(cleared) + "/" + Convert.ToString(other));
    return null;
}

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var accepted = BothAccepted(0);
        if (Truth(Truth(accepted) == true))
        {
            UO.Print("Both boxes are checked; server completion is not known");
        }

        return null;
    }

    dynamic BothAccepted(dynamic index)
    {
        if (Truth(index < 0) || Truth(index >= UO.TradeCount()))
        {
            return false;
        }

        var own = UO.TradeCheck(index, 1);
        var other = UO.TradeCheck(index, 2);
        return Truth(Truth(own) == true) && Truth(Truth(other) == true);
    }

    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.TradeCheck(windowIndex) — UO.TradeCheck(Any)

引数: windowIndex (Any)

結果: int / Integer.

呼び出し時:

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

public int TradeCheck(InjectionValue windowIndex)

            => bridge.TradeCheck(NumberConversions.ToInt(windowIndex), 0, 0, false);

UO.TradeCheck(tradeNum, num) — UO.TradeCheck(Any,Any)

引数: tradeNum (Any), num (Any)

結果: dynamic / Any.

呼び出し時:

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

case "tradecheck":

                    // The compatibility reader uses participants 1/2; the legacy

                    // one/three-argument forms use checkbox indices 0/1.

                    int tradeSide = Arg(1);

                    return new InjectionValue(tradeSide is 1 or 2

                        ? bridge.TradeCheck(Arg(0), tradeSide - 1, 0, false) : 0);

UO.TradeCheck(windowIndex, checkbox, stateValue) — UO.TradeCheck(Any,Any,Any)

引数: windowIndex (Any), checkbox (Any), stateValue (Any)

結果: int / Integer.

呼び出し時:

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

public int TradeCheck(InjectionValue windowIndex, InjectionValue checkbox, InjectionValue stateValue)

            => bridge.TradeCheck(NumberConversions.ToInt(windowIndex), NumberConversions.ToInt(checkbox), NumberConversions.ToInt(stateValue), true);

UO.TradeContainer

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

C# のシグネチャ

string UO.TradeContainer(object? windowIndex);

交換コンテナの serial を 16 進文字列として返します。

引数

  • windowIndex — 整数: 0 から TradeCount()-1 までの現在のウィンドウ インデックス。負のインデックスまたは欠落したインデックスを指定すると、空の結果が生成されます。ここはserialではありません。

戻り値

string: 「0x40000011」の形式の 16 進数。窓がない場合は「0x00000000」。これはコンテナの ID であり、bool や空の文字列ではありません。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.TradeContainer(0);
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeContainer(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "0x00000000";
        }

        return UO.TradeContainer(index);
    }

    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.TradeContainer(windowIndex) — UO.TradeContainer(Any)

引数: windowIndex (Any)

結果: string / String.

呼び出し時:

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

public string TradeContainer(InjectionValue windowIndex) => NumberConversions.ToHex(bridge.TradeContainer(NumberConversions.ToInt(windowIndex)));

UO.TradeCount

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

C# のシグネチャ

int UO.TradeCount();

開いている交換ウィンドウの数を返します。

引数

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

戻り値

int: 0 からのウィンドウの数。これは数量であり、bool ではありません。空き状況を確認するには > 0 を使用してください。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.TradeCount();
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 前/後 - 500 ミリ秒間隔の 2 つの個別のスナップショット。一時停止は特定の交換を待ちません。読み取りの間に状態が数回変化する可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var before = UO.TradeCount();
    await Delay(500);
    var after = UO.TradeCount();
    UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeState();
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeState()
    {
        return UO.TradeCount();
    }
}

コマンドの実装

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

UO.TradeCount() — UO.TradeCount()

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

結果: int / Integer.

呼び出し時:

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

public int TradeCount() => bridge.TradeCount();

UO.TradeName

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

C# のシグネチャ

string UO.TradeName(object? windowIndex);

交換ウィンドウからパートナーの名前をゼロからのインデックスで返します。

引数

  • windowIndex — 整数: 0 から TradeCount()-1 までの現在のウィンドウ インデックス。負のインデックスまたは欠落したインデックスを指定すると、空の結果が生成されます。ここはserialではありません。

戻り値

string: 保存されたパートナー名。ウィンドウ/名前がない場合は空の文字列。コンテナ項目名は使用されません。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.TradeName(0);
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeName(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "";
        }

        return UO.TradeName(index);
    }

    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.TradeName(windowIndex) — UO.TradeName(Any)

引数: windowIndex (Any)

結果: string / String.

呼び出し時:

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

public string TradeName(InjectionValue windowIndex) => bridge.TradeName(NumberConversions.ToInt(windowIndex));

UO.TradeOpponent

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

C# のシグネチャ

string UO.TradeOpponent(object? windowIndex);

パートナーコンテナの serial を 16 進文字列として返します。これは ID キャラクターではありません。

引数

  • windowIndex — 整数: 0 から TradeCount()-1 までの現在のウィンドウ インデックス。負のインデックスまたは欠落したインデックスを指定すると、空の結果が生成されます。ここはserialではありません。

戻り値

string: 他人のコンテナ ID2 の 16 進数 serial。窓がない場合は「0x00000000」。 ID 文字の場合は、GetTradeOpponent(インデックス + 1) を使用します。

動作

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade 1 でウィンドウを番号付けします。 TradeContainer/TradeOpponent/TradeName および TradeCheck のすべての形式 - 0。これは、このクライアントの明らかな互換性です。異なるエンジンの外部リファレンス ブックは、異なる参照ポイントを使用します。
  • 読み取りは、現在の世界のライブ ウィンドウを使用してゲーム スレッド上で実行されます。閉じた窓はカウントされません。読み取り呼び出しはパケットを送信せず、応答を待ちません。 UI の順序は、ウィンドウを開いたり閉じたり、上に移動したりすると変更されることがあります。この番号は永続的な識別子ではありません。
  • ConfirmTrade とその TradeCheck レコードは、同意が変更された場合にのみパケットを送信します。他の人の同意はサーバーによって決定されます。 CancelTradeは一度キャンセルを送信します。 1/true はローカルの状態/処理であり、交換の完了を保証するものではありません。名前と両方の契約は、品目の構成が変わっていないことを証明するものではありません。

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

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

簡単な例

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

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

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

1。直接読み取りまたはアクション - 直接スクリプト

引数と実行の流れ:

  • 呼び出しは 1 回行われ、結果は value/result に格納されます。 0 は最初のインデックス、1 は最初の番号です (このコマンドの構文を参照)。 HEX は数値の serial を示します。 Convert.ToString — 数値または文字列。
var value = UO.TradeOpponent(0);
UO.Print(Convert.ToString(value));

2。その他のスクリプトとオプション - スクリプト機能

引数と実行の流れ:

  • 合計 — ウィンドウ数のスナップショット。 Index - 現在のインデックス/番号。列挙例では何も確認できません。 GetTradeContainer では、2 つの呼び出しが最初のウィンドウ (1) の自分のコンテナー (1) ​​と他の人のコンテナー (2) を読み取ります。
return  RunScenario();
 object? RunScenario()
{
    var total = UO.TradeCount();
    for (int index = (int)(0); index <= total - 1; index += (int)(1))
    {
        var value = UO.TradeOpponent(index);
        UO.Print(Convert.ToString(index) + ": " + Convert.ToString(value));
    }

    return null;
}

3。すべての機能を備えた完全なヘルパー - スクリプト クラス

引数と実行の流れ:

  • ヘルパーは完全に指定されており、実際には Main から呼び出されます。範囲/ID チェックはエラーのリスクを軽減しますが、複数の呼び出しはアトミックではありません。呼び出し間でウィンドウが変更される可能性があります。アクション expectedPartner — 保存された serial キャラクター。これは交換の価格や内容をレビューするものではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = ReadTradeValue(0);
        UO.Print(Convert.ToString(value));
        return null;
    }

    dynamic ReadTradeValue(dynamic index)
    {
        var total = UO.TradeCount();
        if (Truth(index < 0) || Truth(index >= total + 0))
        {
            return "0x00000000";
        }

        return UO.TradeOpponent(index);
    }

    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.TradeOpponent(windowIndex) — UO.TradeOpponent(Any)

引数: windowIndex (Any)

結果: string / String.

呼び出し時:

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

public string TradeOpponent(InjectionValue windowIndex) => NumberConversions.ToHex(bridge.TradeOpponent(NumberConversions.ToInt(windowIndex)));

Clone this wiki locally