JA UO Topic shops vendors - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

ショップとベンダー

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

購入、販売、ストアの掲載、遅延、個人販売者の価格。 AllPrice と MassPriceMove は、オプションで指定されている項目の type を使用します。

売買:手順

完全なカタログとサンプルを開く

セクション

トピック コマンドと説明
Buy UO.Buy
Sell UO.Sell
AutoBuy UO.AutoBuy
AutoSell UO.AutoSell
Shop List UO.GetShopList · UO.ClearShopList · UO.Shop
Prices UO.GetPrice · UO.AllPrice · UO.MassPriceMove
VendorMenu UO.VendorMenu
SendShopReply UO.SendShopReply

すべてのテーマコマンド

買う/売る

UO.Buy · UO.Sell · UO.AutoBuy · UO.AutoBuyEx · UO.AutoSell · UO.Shop · UO.GetShopList · UO.ClearShopList · UO.VendorMenu · UO.SendShopReply

価格

UO.GetPrice · UO.AllPrice · UO.MassPriceMove

遅延

UO.GetAutoBuyDelay · UO.GetAutoSellDelay · UO.SetAutoBuyDelay · UO.SetAutoSellDelay

このトピックに関する例

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

UO.AllPrice

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

UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

UO.MassPriceMove

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

UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

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


UO.AllPrice

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

C# のシグネチャ

void UO.AllPrice();
void UO.AllPrice(object? price);
void UO.AllPrice(object? price, object? @type);

仕入先の在庫に品目を置いた後、自動価格入力を有効にします。チーム自体がアイテムを運ぶわけではありません。まずモードをオンにしてから、項目をドラッグします。価格は、対応するサーバーリクエストの後にのみ送信されます。 2 番目のパラメーターは、項目の TYPE をフィルターします。

引数

  • price — 最初のパラメータは、0 から 2147483647 までの公開アイテム/スタック全体の価格です。 125 は価格 125 を意味します。 0 - 明らかにゼロ価格 (サーバーで許可されていれば無料)、シャットダウンなし。負の値を指定するとモードがオフになります。引数なしのUO.AllPrice() を推奨します。
  • type — 2 番目のオプションのパラメーターは、TYPE/0 から 65535 までのグラフィック、数値または 16 進文字列 (0x0EED など) です。 0 または不在 - あらゆるタイプ。アイテムのシリアル番号とオブジェクト名が適切ではありません。カラーはフィルタリングされていません。

戻り値

void: 値がありません。 Activate AllPrice はアクティブ化を報告します。送信された価格の行は、サーバーによって確認された価格の受け入れではなく、応答が送信されたことを示します。

動作

  • このモードは、オフになるまで後続の転送に適用されます。包含/転送前にすでに保留されていた価格リクエストは、自動的には入力されません。ベンダー/ストアの名前変更リクエストには応答しません。
  • コンテナがクライアントに知られている別の文字/NPC に属している必要があります。ベンダーを管理する権利と価格の妥当性はサーバーによってチェックされます。キャラクターの通常のバックパック、地面にあるチェスト、および土地には自動価格が適用されません。
  • 標準ベンダーの場合、cliloc 1043303 価格リクエストはクライアントの言語に関係なく認識されます。 「価格を入力してください」、「価格を入力してください」、「価格を入力してください」、「価格を入力してください」、または「価格を入力してください」で始まるシステム テキスト プロンプトもサポートされています。不明な招待状は手動で応答するために残されます。
  • ASCII および Unicode サーバー クエリがサポートされています。招待状が 10 秒以内に届かない場合、遅延返信はキャンセルされます。一括転送中はキューも停止します。すでに送信された返信は取り消されません。
  • 他の TYPE アイテムには価格が付けられません。 MassMove が有効な場合、次の送信は価格リクエストが処理されるまで待機します。不明なリクエストまたは不適切なリクエストは、アイテムの混同を避けるためにキューを停止します。
  • AllPrice() は保留中の価格をクリアし、モードをオフにします。 TerminateAll()、終了、死亡、またはカードの変更も自動価格をリセットします。このコマンドは、すでにリストされている製品の価格を変更しません。

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

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

簡単な例

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

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

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

1。任意のタイプの後続アイテムに対する単一の価格 - 直接スクリプト

引数と実行の流れ:

  • Price=125 — 各アイテムの合計価格。 type なし: すべてのタイプが適しています。
  • 発売後、ベンダーの在庫に手動でアイテムを追加します。顧客は価格リクエストに 125 で応答します。後続の各アイテムには、スイッチがオフになるまで同じ価格が適用されます。
  • Print はアクションが似ているだけです。この手順自体は何も転送しません。
UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

2。指定されたタイプのみの自動価格 - スクリプト関数

引数と実行の流れ:

  • salePrice は価格=250 として送信されます。 itemType は、別製品の serial ではなく、type=0x0F7A として送信されます。
  • 価格 250 は、表示されているスタック全体を指します。このコマンドは、価格にその中のユニット数を乗算しません。
  • 他のタイプは自動応答なしのままです。これらの場合は、価格を手動で入力するか、別のフィルターで AllPrice を含めます。
return  RunScenario();
 object? RunScenario()
{
    var itemType = "0x0F7A";
    var salePrice = 250;
    UO.AllPrice(salePrice, itemType);
    return null;
}

3。アイテムを無料で明示的に公開する - スクリプト クラス

引数と実行の流れ:

  • Price=0 — 文字列 0 を価格としてサーバーに送信します。これはダイアログをキャンセルしたりシャットダウンしたりするものではありません。
  • type=0x0F7A は、無料価格をこのタイプに制限します。無料セールの動作はサーバーのルールによって異なります。
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.AllPrice(0, "0x0F7A");
        return null;
    }
}

4。自動価格設定を無効にする - 直接スクリプト

引数と実行の流れ:

  • 引数なし: モードはオフになり、保留中の応答は削除されます。
  • サーバーによってすでに設定されている価格は変更されません。ユーザーは次の価格リクエストを自分で入力します。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

UO.AllPrice();

コマンドの実装

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

UO.AllPrice() — UO.AllPrice()

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

結果: void / Unit.

呼び出し時:

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

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price) — UO.AllPrice(Any)

引数: price (Any)

結果: void / Unit.

呼び出し時:

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

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price, type) — UO.AllPrice(Any,Any)

引数: price (Any), type (Any)

結果: void / Unit.

呼び出し時:

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

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AutoBuy

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

C# のシグネチャ

void UO.AutoBuy(object? itemType, object? itemColor, object? quantity);

現在の Bad Newbie プロファイルのメインのデフォルト リストで自動購入ルールを作成、更新、または削除します。このコマンドは、NPC 販売者のオファーの今後の処理を構成します。売買を指示せず、店舗を開設せず、取引を確認しません。完全な手順: ストアの掲載情報。

引数

  • itemType - グラフィック製品 0..65535: 例: 0x0F7A - ブラックパール、0x0F51 - ダガー。これはベンダー/アイテムの serial ではなく、キャラクターの body でもありません。負の数値または 65535 より大きい数値は拒否されます。ここでの0xFFFFは特定のgraphicであり、すべての商品のマスクではありません。
  • itemColor — 製品の色相: 負の数または 0xFFFF — 任意。 0 - 未塗装品のみ。正確な hue には、0..65534 を使用します。この範囲外の色は使用しないでください。正の値は ushort に変換されます。必須。
  • quantity — 受け取った 1 店舗あたりの商品の単位数。スタックの数やバックパック内の望ましいバランスではありません。ポジは65535に限ります。 0/negative は、一致ルール type+color をデフォルトから削除します。それは「全量」ではありません。必須。

戻り値

void - 値なし。 var result = および if を使用せずに、別の回線で呼び出します。呼び出しの終了は、トランザクションの成功ではなく、セットアップの終了を意味します。プロファイルがない場合、または無効な graphic の場合、ルールは作成されません。誤差の数値結果はありません。実際のトランザクションをバックパックの中身、ゴールド、サーバーの応答で確認します。

動作

  • すべての 3 引数は必須です。これはルール設定であり、待機機能ではありません。
  • デフォルトでは、ルールキーはgraphic、マスクはhueです。繰り返し呼び出すと、このルールの数量およびその他のフィールドが置き換えられます。前の制限に加えて別の制限が追加されることはありません。価格/名前を指定しないと、これらのフィールドに対する以前の制限が削除されます。
  • 新しい/更新された Enabled=true ルール。一般的な売買スイッチはルールの存在に基づいて設定され、プロファイルが保存されます。無効になっているデフォルト リスト自体は自動的に有効になりません。一般モードとリストの両方を設定で有効にする必要があります。他の名前付きリストは変更されません。
  • 商品リストが到着すると処理が始まります。この制限は、1 つのルールに一致する行の合計で消費されます。各位置について、最初に一致する有効なルールが使用されます。ルールが有効な間、ストアを再開すると、新しいオファーと新しい制限が提供されます。
  • Bad Newbie で完全に動作します。クラシックでは、この自動化は無効になっています。パラメータ内の名前 NPC または保存されたリストの名前を置き換えないでください。 AutoBuyEx は購入時に価格/名前フィルターを追加します。 ClearShopList ​​は両方のオートメーションを完全にリセットします。

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

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

簡単な例

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

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

UO.Print("Calling UO.AutoBuy");
UO.AutoBuy(0x0F7A, -1, 1);

1。 1 ユニットの試薬の購入を準備する - 直接スクリプト

引数と実行の流れ:

  • 0x0F7A - graphic 試薬、ID NPC ではありません。数量 - 1;色 - 任意。このフォームでは価格の上限は指定されていません。スクリプト自体は何も言わず、ストアを開きません。このルールは、変更または無効にするまで、後続の文に適用され続けます。
UO.AutoBuy(0x0F7A, -1, 1);

2。 1 つのストア オファーの試薬供給をセットアップする - スクリプト機能

引数と実行の流れ:

  • 20 - 最大 1 つの店舗応答であり、「数量を 20 に持ってくる」ではありません。 AutoBuy には価格と名前の引数がありません。必要な場合は、AutoBuyEx を使用します。完全な例は以下のリンクから入手できます。物品、資金、サーバーのルールの不足が結果を左右します。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0F7A, 0, 20);
    return null;
}

3。他のリストをリセットせずに選択したルールを削除します - スクリプト クラス

引数と実行の流れ:

  • アシスタントは graphic を受け入れます。 AnyHue を持つデフォルト ルールのみが削除されます。個々のルール hue=0 は保持されます。これによって、サーバーに送信済みの取引はキャンセルされません。正確な色を削除するには、ルールの作成に使用したものと同じ hue を渡します。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuy(itemType, -1, 0);
    }
}

コマンドの実装

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

UO.AutoBuy(itemType, itemColor, quantity) — UO.AutoBuy(Any,Any,Any)

引数: itemType (Any), itemColor (Any), quantity (Any)

結果: void / Unit.

呼び出し時:

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

case "autobuy":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), 0, string.Empty); return InjectionValue.Unit;

UO.AutoBuyEx

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

C# のシグネチャ

void UO.AutoBuyEx(object? itemType, object? itemColor, object? quantity, object? price, object? name);

現在の Bad Newbie プロファイルのメインのデフォルト リストで自動購入ルールを作成、更新、または削除します。このコマンドは、NPC 販売者のオファーの今後の処理を構成します。売買を指示せず、店舗を開設せず、取引を確認しません。完全な手順: ストアの掲載情報。

引数

  • itemType - グラフィック製品 0..65535: 例: 0x0F7A - ブラックパール、0x0F51 - ダガー。これはベンダー/アイテムの serial ではなく、キャラクターの body でもありません。負の数値または 65535 より大きい数値は拒否されます。ここでの0xFFFFは特定のgraphicであり、すべての商品のマスクではありません。
  • itemColor — 製品の色相: 負の数または 0xFFFF — 任意。 0 - 未塗装品のみ。正確な hue には、0..65534 を使用します。この範囲外の色は使用しないでください。正の値は ushort に変換されます。必須。
  • quantity — 受け取った 1 店舗あたりの商品の単位数。スタックの数やバックパック内の望ましいバランスではありません。ポジは65535に限ります。 0/negative は、一致ルール type+color をデフォルトから削除します。それは「全量」ではありません。必須。
  • price — トランザクション全体ではなく、1 ユニットの最大価格。 0/ネガティブ – 価格上限なし。プラスの制限よりも高価な商品は通過できます。価格はサーバー上で取引または変更されません。必須。
  • name — 製品名の部分文字列。大文字と小文字は区別されません。エッジスペースは削除され、空の行 - フィルターはありません。これは販売者の名前や出品の名前ではありません。たとえば、「Black Pearl」は、サーバーがそのような名前を送信したかどうか、店舗の位置のテキストをチェックします。必須。

戻り値

void - 値なし。 var result = および if を使用せずに、別の回線で呼び出します。呼び出しの終了は、トランザクションの成功ではなく、セットアップの終了を意味します。プロファイルがない場合、または無効な graphic の場合、ルールは作成されません。誤差の数値結果はありません。実際のトランザクションをバックパックの中身、ゴールド、サーバーの応答で確認します。

動作

  • すべての 5 引数は必須です。これはルール設定であり、待機機能ではありません。
  • デフォルトでは、ルールキーはgraphic、マスクはhueです。繰り返し呼び出すと、このルールの数量およびその他のフィールドが置き換えられます。前の制限に加えて別の制限が追加されることはありません。価格/名前を指定しないと、これらのフィールドに対する以前の制限が削除されます。
  • 新しい/更新された Enabled=true ルール。一般的な売買スイッチはルールの存在に基づいて設定され、プロファイルが保存されます。無効になっているデフォルト リスト自体は自動的に有効になりません。一般モードとリストの両方を設定で有効にする必要があります。他の名前付きリストは変更されません。
  • 商品リストが到着すると処理が始まります。この制限は、1 つのルールに一致する行の合計で消費されます。各位置について、最初に一致する有効なルールが使用されます。ルールが有効な間、ストアを再開すると、新しいオファーと新しい制限が提供されます。
  • Bad Newbie で完全に動作します。クラシックでは、この自動化は無効になっています。パラメータ内の名前 NPC または保存されたリストの名前を置き換えないでください。 AutoBuyEx は購入時に価格/名前フィルターを追加します。 ClearShopList ​​は両方のオートメーションを完全にリセットします。

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

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

簡単な例

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

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

UO.Print("Calling UO.AutoBuyEx");
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

1。 1 ユニットの試薬の購入を準備する - 直接スクリプト

引数と実行の流れ:

  • 0x0F7A - graphic 試薬、ID NPC ではありません。数量 - 1;色 - 任意。ユニットあたりの価格上限 5。スクリプト自体は何も言わず、ストアを開きません。このルールは、変更または無効にするまで、後続の文に適用され続けます。
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

2。 1 つのストア オファーの試薬供給をセットアップする - スクリプト機能

引数と実行の流れ:

  • 20 - 1 つの店舗の応答での最大値であり、「数量を 20 にする」ではありません。 5 — 単位あたりの価格、「Black Pearl」 — 製品名の部分文字列。サーバーが試薬を別の方法で呼び出す場合は、フィルターを変更するか、「」を渡します。物品、資金、サーバーのルールの不足が結果を左右します。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuyEx(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3。他のリストをリセットせずに選択したルールを削除します - スクリプト クラス

引数と実行の流れ:

  • アシスタントは graphic を受け入れます。 AnyHue を持つデフォルト ルールのみが削除されます。個々のルール hue=0 は保持されます。これによって、サーバーに送信済みの取引はキャンセルされません。正確な色を削除するには、ルールの作成に使用したものと同じ hue を渡します。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuyEx(itemType, -1, 0, 0, "");
    }
}

コマンドの実装

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

UO.AutoBuyEx(itemType, itemColor, quantity, price, name) — UO.AutoBuyEx(Any,Any,Any,Any,Any)

引数: itemType (Any), itemColor (Any), quantity (Any), price (Any), name (Any)

結果: void / Unit.

呼び出し時:

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

case "autobuyex":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

UO.AutoSell

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

C# のシグネチャ

void UO.AutoSell(object? itemType, object? itemColor, object? quantity);

現在の Bad Newbie プロファイルのメインのデフォルト リストで自動販売ルールを作成、更新、または削除します。このコマンドは、NPC 販売者のオファーの今後の処理を構成します。売買を指示せず、店舗を開設せず、取引を確認しません。完全な手順: ストアの掲載情報。

引数

  • itemType - グラフィック製品 0..65535: 例: 0x0F7A - ブラックパール、0x0F51 - ダガー。これはベンダー/アイテムの serial ではなく、キャラクターの body でもありません。負の数値または 65535 より大きい数値は拒否されます。ここでの0xFFFFは特定のgraphicであり、すべての商品のマスクではありません。
  • itemColor — 製品の色相: 負の数または 0xFFFF — 任意。 0 - 未塗装品のみ。正確な hue には、0..65534 を使用します。この範囲外の色は使用しないでください。正の値は ushort に変換されます。必須。
  • quantity — 受け取った 1 店舗あたりの商品の単位数。スタックの数やバックパック内の望ましいバランスではありません。ポジは65535に限ります。 0/negative は、一致ルール type+color をデフォルトから削除します。それは「全量」ではありません。必須。

戻り値

void - 値なし。 var result = および if を使用せずに、別の回線で呼び出します。呼び出しの終了は、トランザクションの成功ではなく、セットアップの終了を意味します。プロファイルがない場合、または無効な graphic の場合、ルールは作成されません。誤差の数値結果はありません。実際のトランザクションをバックパックの中身、ゴールド、サーバーの応答で確認します。

動作

  • すべての 3 引数は必須です。これはルール設定であり、待機機能ではありません。
  • デフォルトでは、ルールキーはgraphic、マスクはhueです。繰り返し呼び出すと、このルールの数量およびその他のフィールドが置き換えられます。前の制限に加えて別の制限が追加されることはありません。価格/名前を指定しないと、これらのフィールドに対する以前の制限が削除されます。
  • 新しい/更新された Enabled=true ルール。一般的な売買スイッチはルールの存在に基づいて設定され、プロファイルが保存されます。無効になっているデフォルト リスト自体は自動的に有効になりません。一般モードとリストの両方を設定で有効にする必要があります。他の名前付きリストは変更されません。
  • 商品リストが到着すると処理が始まります。この制限は、1 つのルールに一致する行の合計で消費されます。各位置について、最初に一致する有効なルールが使用されます。ルールが有効な間、ストアを再開すると、新しいオファーと新しい制限が提供されます。
  • Bad Newbie で完全に動作します。クラシックでは、この自動化は無効になっています。パラメータ内の名前 NPC または保存されたリストの名前を置き換えないでください。 AutoBuyEx は購入時に価格/名前フィルターを追加します。 ClearShopList ​​は両方のオートメーションを完全にリセットします。

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

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

簡単な例

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

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

UO.Print("Calling UO.AutoSell");
UO.AutoSell(0x0F51, -1, 1);

1。ダガー 1 個の販売を許可 - 直接スクリプト

引数と実行の流れ:

  • 0x0F51 - graphic ダガー、任意の hue、1 - 文ごとに 1 つ。チームは特定の serial を選択せず​​、アイテムの有用性や価値をテストしません。アイテムの正確な type/色を選択してください。
UO.AutoSell(0x0F51, -1, 1);

2。特定の色のローブのみを販売するのはスクリプトの機能です

引数と実行の流れ:

  • 0x1F03 は標準の graphic ローブの例であり、0x0044 は hue の例です。両方を製品と交換してください。 5 — 価格ではなく単位。最低価格と名前パラメーター Sell/AutoSell は受け入れられません。サーバーは販売オファーに商品を含める必要があります。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoSell(0x1F03, 0x0044, 5);
    return null;
}

3。 NPC - スクリプトクラスに進む前に 2 種類の販売を無効にします

引数と実行の流れ:

  • プロシージャ名は任意です。 itemType と hue はそのパラメータです。他のルール、購入、およびカスタムの名前付きリストは保持されます。別の有効なリストでもこれらのアイテムを販売している場合は、設定を通じてそのリスト内の対応するルールを無効にします。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.AutoSell(itemType, hue, 0);
    }
}

コマンドの実装

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

UO.AutoSell(itemType, itemColor, quantity) — UO.AutoSell(Any,Any,Any)

引数: itemType (Any), itemColor (Any), quantity (Any)

結果: void / Unit.

呼び出し時:

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

case "autosell":

                    bridge.SetAutoSellRule(Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;

UO.Buy

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

C# のシグネチャ

void UO.Buy(object? @type);
void UO.Buy(object? @type, object? color);
void UO.Buy(object? @type, object? color, object? quantity);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice, object? name);

現在の Bad Newbie プロファイルのメインのデフォルト リストで自動購入ルールを作成、更新、または削除します。このコマンドは、NPC 販売者のオファーの今後の処理を構成します。売買を指示せず、店舗を開設せず、取引を確認しません。完全な手順: ストアの掲載情報。

引数

  • type - グラフィック製品 0..65535: 例: 0x0F7A - ブラックパール、0x0F51 - ダガー。これはベンダー/アイテムの serial ではなく、キャラクターの body でもありません。負の数値または 65535 より大きい数値は拒否されます。ここでの0xFFFFは特定のgraphicであり、すべての商品のマスクではありません。
  • color — 製品の色相: 負の数または 0xFFFF — 任意。 0 - 未塗装品のみ。正確な hue には、0..65534 を使用します。この範囲外の色は使用しないでください。正の値は ushort に変換されます。デフォルトは1です。
  • quantity — 受け取った 1 店舗あたりの商品の単位数。スタックの数やバックパック内の望ましいバランスではありません。ポジは65535に限ります。 0/negative は、一致ルール type+color をデフォルトから削除します。それは「全量」ではありません。デフォルトは1です。
  • maxPrice — トランザクション全体ではなく、1 ユニットの最大価格。 0/ネガティブ – 価格上限なし。プラスの制限よりも高価な商品は通過できます。価格はサーバー上で取引または変更されません。デフォルトは0です。
  • name — 製品名の部分文字列。大文字と小文字は区別されません。エッジスペースは削除され、空の行 - フィルターはありません。これは販売者の名前や出品の名前ではありません。たとえば、「Black Pearl」は、サーバーがそのような名前を送信したかどうか、店舗の位置のテキストをチェックします。デフォルトは空の文字列です。

戻り値

void - 値なし。 var result = および if を使用せずに、別の回線で呼び出します。呼び出しの終了は、トランザクションの成功ではなく、セットアップの終了を意味します。プロファイルがない場合、または無効な graphic の場合、ルールは作成されません。誤差の数値結果はありません。実際のトランザクションをバックパックの中身、ゴールド、サーバーの応答で確認します。

動作

  • Buy は 1 から 5 までの引数を受け取ります。右側に色=-1、数量=1、maxPrice=0、名前=”がありません。
  • デフォルトでは、ルールキーはgraphic、マスクはhueです。繰り返し呼び出すと、このルールの数量およびその他のフィールドが置き換えられます。前の制限に加えて別の制限が追加されることはありません。価格/名前を指定しないと、これらのフィールドに対する以前の制限が削除されます。
  • 新しい/更新された Enabled=true ルール。一般的な売買スイッチはルールの存在に基づいて設定され、プロファイルが保存されます。無効になっているデフォルト リスト自体は自動的に有効になりません。一般モードとリストの両方を設定で有効にする必要があります。他の名前付きリストは変更されません。
  • 商品リストが到着すると処理が始まります。この制限は、1 つのルールに一致する行の合計で消費されます。各位置について、最初に一致する有効なルールが使用されます。ルールが有効な間、ストアを再開すると、新しいオファーと新しい制限が提供されます。
  • Bad Newbie で完全に動作します。クラシックでは、この自動化は無効になっています。パラメータ内の名前 NPC または保存されたリストの名前を置き換えないでください。 AutoBuyEx は購入時に価格/名前フィルターを追加します。 ClearShopList ​​は両方のオートメーションを完全にリセットします。

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

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

簡単な例

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

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

UO.Print("Calling UO.Buy");
UO.Buy(0x0F7A);

1。 1 ユニットの試薬の購入を準備する - 直接スクリプト

引数と実行の流れ:

  • 0x0F7A - graphic 試薬、ID NPC ではありません。数量 - 1;色 - 任意。このフォームでは価格の上限は指定されていません。スクリプト自体は何も言わず、ストアを開きません。このルールは、変更または無効にするまで、後続の文に適用され続けます。
UO.Buy(0x0F7A);

2。 1 つのストア オファーの試薬供給をセットアップする - スクリプト機能

引数と実行の流れ:

  • 20 - 1 つの店舗の応答での最大値であり、「数量を 20 にする」ではありません。 5 — 単位あたりの価格、「Black Pearl」 — 製品名の部分文字列。サーバーが試薬を別の方法で呼び出す場合は、フィルターを変更するか、「」を渡します。物品、資金、サーバーのルールの不足が結果を左右します。
return  RunScenario();
 object? RunScenario()
{
    UO.Buy(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3。他のリストをリセットせずに選択したルールを削除します - スクリプト クラス

引数と実行の流れ:

  • アシスタントは graphic を受け入れます。 AnyHue を持つデフォルト ルールのみが削除されます。個々のルール hue=0 は保持されます。これによって、サーバーに送信済みの取引はキャンセルされません。正確な色を削除するには、ルールの作成に使用したものと同じ hue を渡します。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.Buy(itemType, -1, 0);
    }
}

コマンドの実装

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

UO.Buy(type) — UO.Buy(Any)

引数: type (Any)

結果: void / Unit.

呼び出し時:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color) — UO.Buy(Any,Any)

引数: type (Any), color (Any)

結果: void / Unit.

呼び出し時:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity) — UO.Buy(Any,Any,Any)

引数: type (Any), color (Any), quantity (Any)

結果: void / Unit.

呼び出し時:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice) — UO.Buy(Any,Any,Any,Any)

引数: type (Any), color (Any), quantity (Any), maxPrice (Any)

結果: void / Unit.

呼び出し時:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice, name) — UO.Buy(Any,Any,Any,Any,Any)

引数: type (Any), color (Any), quantity (Any), maxPrice (Any), name (Any)

結果: void / Unit.

呼び出し時:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.ClearShopList

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

C# のシグネチャ

void UO.ClearShopList();

アクティブなプロファイルの自動売買のルールを削除します。

引数

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

戻り値

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

動作

  • BackNewbieAutoBuyRules と BackNewbieAutoSellRules をクリアし、共有の AutoBuy/AutoSell をオフにし、OptionsGump を更新してプロファイルを保存します。戦利品のリストは変わりません。プロファイルが存在しない場合、空のアクションが与えられます。

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

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

簡単な例

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

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

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

1。状態のクリア - 直接スクリプト

引数と実行の流れ:

  • アクティブなプロファイルの自動売買のルールを削除します。
UO.ClearShopList();

2。セットアップ後にクリア - スクリプト機能

引数と実行の流れ:

  • 残りの取引ルールとともに包帯購入のルールも削除します。
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0E21, -1, 10);
    UO.ClearShopList();
    return null;
}

3。再パージ - スクリプト クラス

引数と実行の流れ:

  • 空のセットをクリアすることは許容され、新しい設定は作成されません。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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.ClearShopList();
        UO.ClearShopList();
        return null;
    }
}

コマンドの実装

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

UO.ClearShopList() — UO.ClearShopList()

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

結果: void / Unit.

呼び出し時:

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

case "clearshoplist":

                    bridge.ClearAutoShopRules(); return InjectionValue.Unit;

UO.GetAutoBuyDelay

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

C# のシグネチャ

dynamic UO.GetAutoBuyDelay();

顧客プロファイルから現在の自動購入の遅延を読み取ります。

引数

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

戻り値

int — 現在の遅延 (ミリ秒単位)。設定者が書き込む値は0…65535に限定されます。 0 は追加の遅延がないことを意味します。これは間違いではありません。ロードされたプロファイルがない場合は、3 が返されます。読み取りによって商品の数量が返されたり、トランザクションが確認されたりすることはありません。

動作

  • この設定は現在のプロファイルの一般的なものです。別のスクリプトまたは UI での変更は、次回それを読み取るときに表示されます。ゼロは有効な設定ですが、データが欠落していることを示すものではなく、古いスクリプト キャッシュを返す理由にもなりません。
  • デフォルト値は 3 ミリ秒です。自動操作を送信した後、マネージャーは次に許可される操作の時間を設定します。先に到着したベンダー リストは、このパスでは処理されません。 getter は待機をトリガーせず、売買自体を送信しません。
  • これは、MassMove、Drag/Drop の遅延や手動取引ではありません。新しい値は、次の遅延をスケジュールするときに適用されます。すでに割り当てられているモーメントは再計算されません。

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

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

簡単な例

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

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

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

1。現在の遅延を表示 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。遅延 — ミリ秒単位の時間。
  • 値は通話時のプロファイルを反映します。保存された var は後で更新されません。
var delay = UO.GetAutoBuyDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2。設定変更と制限値読み出し - スクリプト機能

引数と実行の流れ:

  • セッターは 70000 ミリ秒を取得します。許容最大値は 65535 です。この例では、プロファイル設定を変更します。
  • プロファイルがロードされるとき、実際には 65535 が含まれている必要があります。 Getter は、元の引数 70000 ではなく、実際の制約された値を返します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(70000);
    var actual = UO.GetAutoBuyDelay();
    UO.Print(Convert.ToString(actual));
    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()
    {
        var current = UO.GetAutoBuyDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

        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.GetAutoBuyDelay() — UO.GetAutoBuyDelay()

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

結果: dynamic / Any.

呼び出し時:

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

case "getautobuydelay":

                    return new InjectionValue(bridge.GetAutoBuyDelay());

UO.GetAutoSellDelay

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

C# のシグネチャ

dynamic UO.GetAutoSellDelay();

顧客プロファイルから現在の自動販売遅延を読み取ります。

引数

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

戻り値

int — 現在の遅延 (ミリ秒単位)。設定者が書き込む値は0…65535に限定されます。 0 は追加の遅延がないことを意味します。これは間違いではありません。ロードされたプロファイルがない場合は、3 が返されます。読み取りによって商品の数量が返されたり、トランザクションが確認されたりすることはありません。

動作

  • この設定は現在のプロファイルの一般的なものです。別のスクリプトまたは UI での変更は、次回それを読み取るときに表示されます。ゼロは有効な設定ですが、データが欠落していることを示すものではなく、古いスクリプト キャッシュを返す理由にもなりません。
  • デフォルト値は 3 ミリ秒です。自動操作を送信した後、マネージャーは次に許可される操作の時間を設定します。先に到着したベンダー リストは、このパスでは処理されません。 getter は待機をトリガーせず、売買自体を送信しません。
  • これは、MassMove、Drag/Drop の遅延や手動取引ではありません。新しい値は、次の遅延をスケジュールするときに適用されます。すでに割り当てられているモーメントは再計算されません。

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

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

簡単な例

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

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

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

1。現在の遅延を表示 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。遅延 — ミリ秒単位の時間。
  • 値は通話時のプロファイルを反映します。保存された var は後で更新されません。
var delay = UO.GetAutoSellDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2。設定変更と制限値読み出し - スクリプト機能

引数と実行の流れ:

  • セッターは 70000 ミリ秒を取得します。許容最大値は 65535 です。この例では、プロファイル設定を変更します。
  • プロファイルがロードされるとき、実際には 65535 が含まれている必要があります。 Getter は、元の引数 70000 ではなく、実際の制約された値を返します。
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(70000);
    var actual = UO.GetAutoSellDelay();
    UO.Print(Convert.ToString(actual));
    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()
    {
        var current = UO.GetAutoSellDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

        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.GetAutoSellDelay() — UO.GetAutoSellDelay()

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

結果: dynamic / Any.

呼び出し時:

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

case "getautoselldelay":

                    return new InjectionValue(bridge.GetAutoSellDelay());

UO.GetPrice

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

C# のシグネチャ

dynamic UO.GetPrice(object? objID);

クライアントに知られている serial アイテムの Item.Price を読み取ります。

引数

  • objID — オブジェクトのシリアル番号、または self/backpack/lasttarget/saved オブジェクトのサポートされている名前。数値文字列と 0x 文字列は実行時に解決されます。

戻り値

int — uint Item.Price から int へのチェックされていない変換。不足しているアイテムは 0 を与えます。 2147483647 を超える価格はマイナスの int として表示されます。

動作

  • チームはベンダーの提案を要求しません。値は、クライアントが以前に受信したデータによって異なります。ゼロは、価格が不明/ゼロであるか、アイテムが存在しないことを示します。オブジェクトを確認するには、Exists を使用します。

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

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

簡単な例

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

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

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

1。選択したアイテムの価格 - 直接スクリプト

引数と実行の流れ:

  • 結果はキャッシュされたItem.Priceです。
var item = UO.LastTarget();
if (Truth(UO.Exists(item)))
{
    var price = UO.GetPrice(item);
    UO.Print(Convert.ToString(price));
}

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

2。ゼロ serial – スクリプト関数

引数と実行の流れ:

  • 欠品がある場合は 0 が与えられます。
return  RunScenario();
 object? RunScenario()
{
    var price = UO.GetPrice(0);
    UO.Print(Convert.ToString(price));
    return null;
}

3。価格スナップショット - スクリプトクラス

引数と実行の流れ:

  • 新しい呼び出しのみがモデルを再読み込みします。一時停止自体に料金はかかりません。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        var item = UO.LastTarget();
        var before = UO.GetPrice(item);
        await Delay(500);
        var after = UO.GetPrice(item);
        UO.Print(Convert.ToString(before) + " " + Convert.ToString(after));
        return null;
    }

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

コマンドの実装

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

UO.GetPrice(objID) — UO.GetPrice(Any)

引数: objID (Any)

結果: dynamic / Any.

呼び出し時:

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

case "getprice":

                    return new InjectionValue(bridge.GetPrice(Arg(0)));

UO.GetShopList

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

C# のシグネチャ

dynamic UO.GetShopList();

NPC 販売者の最後のアクティブなオファーの製品を読み取ります。購入または販売する前に、種類、数量、価格を確認できます。

引数

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

戻り値

string の配列 — 文字列の配列、0 からのインデックス。各行: serial|graphic|hue|金額|価格|名前。シリアル - ID 特定の位置、graphic - タイプ、hue - 色。最初の 3 つのフィールドは 0x 形式で書き込まれます。金額 — 利用可能な単位からウィンドウ内のドラフトを引いたもの、価格 — 1 単位の価格、名前 — 名前。これは、serial リストでも、bool リストでもありません。オファーがない場合、配列は空になります。名前には | を含めることができます。最初の 5 つの区切り文字はフィールドを定義し、残りは名前です。

動作

  • まず、通常のゲームアクションとして、目的の NPC から売買を開始し、サーバーがオファーするのを待ちます。これらのチーム自体は売り手を探したり、取引を開いたり、個人ベンダーの価格を設定したり、チェスト間でアイテムを転送したりすることはありません。販売者のID はパラメータとして渡されません。複数のオファーの場合、最後のオファーが使用されます。
  • マネージャーでは、オファーはゲーム セッションに保存されます。グラフィカル クライアントを閉じると提案とドラフトが保存され、開くとウィンドウが復元されます。ストア自体を閉じる、応答する、サーバーを閉じる、または接続を切断すると、オファーは削除されます。自動購入/自動販売 Bad Newbie はスクリプトの前に処理できます。
  • 読み取りではサーバーにリクエストは送信されません。これはすでに受け取った供給のスナップショットであり、NPC の現在の在庫を保証するものではありません。数量フィールドには、行/スタックの数ではなく、単位が反映されます。 ArrayLength(行) は位置をカウントします。ここでの価格は GetShopList となります。 SendShopReplyは価格を受け入れません。
  • 明示的なリストはドラフトを置き換えるものであり、ドラフトには追加されません。 1 つの serial を繰り返すと数量が加算されます。合計は、オファー内の商品の合計数量によって制限されます。不明な serial、数量が正しくないか、正ではない場合、送信する前に応答全体が拒否され、オファーが保存されます。文がない場合、SendShopReply はエラーを報告します。 「0」行は元に戻すコマンドではありません。使用 ""。

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

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

簡単な例

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

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

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

1。最初の位置を解析 - 直接スクリプト

引数と実行の流れ:

  • GetWord は、0 のインデックスを使用します: 0 - serial、1 - graphic、2 - hue、3 - 数量、4 - 価格。 rows[0] の前に配列の長さがチェックされます。
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var serial = ReadField(rows[0], 0, "|");
var itemType = ReadField(rows[0], 1, "|");
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
var price = Convert.ToDouble(ReadField(rows[0], 4, "|"));
UO.Print(serial + " / " + itemType + " / " + Convert.ToString(amount) + " / " + Convert.ToString(price));

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2。制限価格で最大 10 個の包帯を購入 - スクリプト機能

引数と実行の流れ:

  • プレオープン購入オファーのみ。 0x0E21 — 包帯、5 — 最大単価、10 — 必要な数量。最初の適切な位置が取られます。文から正確な serial が読み取られます。コード自体は購入を開始しません。
return  RunScenario();
 object? RunScenario()
{
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= 5) && Truth(amount > 0))
            {
                if (Truth(amount > 10))
                {
                    amount = 10;
                }

                UO.SendShopReply(ReadField(row, 0, "|") + ":" + Convert.ToString(amount));
                return null;
            }
        }
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3。選択したタイプの利用可能な在庫を計算します - シナリオ クラス

引数と実行の流れ:

  • 補助関数は完全に指定されており、指定されたタイプのすべての位置の量フィールドを合計します。句が空の場合は、0 を返します。これは利用可能なユニットの数であり、キャラクターの動物やアイテムの数ではありません。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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 available = CountOfferedType("0x0E21");
        if (Truth(available < 10))
        {
            UO.Print("Bandage stock below 10: " + Convert.ToString(available));
        }

        return null;
    }

    dynamic CountOfferedType(dynamic itemType)
    {
        var total = 0;
        var rows = UO.GetShopList();
        for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
        {
            if (Truth(ReadField(rows[i], 1, "|") == itemType))
            {
                total = total + Convert.ToInt32(ReadField(rows[i], 3, "|"));
            }
        }

        return total;
    }

    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;
    string ReadField(object? row, int index, string separator)
    {
        string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
        return index >= 0 && index < fields.Length ? fields[index] : "";
    }
}

コマンドの実装

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

UO.GetShopList() — UO.GetShopList()

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

結果: dynamic / Any.

呼び出し時:

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

public InjectionValue GetShopList()

            => new InjectionValue((bridge.GetShopList() ?? Array.Empty<string>()).Select(item => new InjectionValue(item)).ToArray());

UO.MassPriceMove

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

C# のシグネチャ

void UO.MassPriceMove();
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination, object? x, object? y, object? z);

ベンダーの在庫で自動価格設定を使用して、1 つの TYPE のアイテムを一括転送できます。ソースは最初の手動転送によって決定されます。各スタックは完全に転送され、1 つのアイテムとみなされます。価格要求の後、クライアントは応答し、それから初めてキューを続行します。

引数

  • delay — 最初のパラメータは、転送リクエスト間の遅延 (ミリ秒単位) で、0 から 2147483647 までの整数です。 350 は 0,35 秒を意味します。 0 では、ゲーム フレームごとに次のキャリーが 1 つだけ送信されます。 GrabDelay には遅延は追加されません。負の値を指定するとモードが無効になり、キューがクリアされます。スイッチをオフにする場合は、明確な UO.MassPriceMove() 表記が推奨されます。
  • quantity - 2 番目のパラメーターは、最初の手動転送を含む、個々の項目 (アイテム) の合計制限です。中の数量に関係なく、1 スタック/スタックで 1 つのアイテムとみなされます。 50 は、最大 50 スタック全体、または 50 単一アイテムを意味します。スタックはこの制限では分割されません。 0 - すべての適切なアイテム。負の値は許可されません。
  • type - 3 番目のパラメーターは、アイテム タイプ コード (グラフィック/タイプ)、整数 0..65535、たとえば 0x0EED またはゴールドの場合は文字列 "0x0EED" です。これはserial/ID ではなく、AddObject という名前でもありません。 0は最初の手動転送でタイプを決定します。明示的なタイプの場合、別のタイプをドラッグしてもキューはアクティブになりません。このモードは適切なアイテムを待ち続けます。
  • price — 4 番目の必須パラメーターは、表示されている完全なアイテム/スタックごとの全体価格 0..2147483647 です。 0 は、無料、シャットダウンなしを意味します。マイナス価格は拒否されます。
  • destination - 5 番目のオプションのパラメータは、serial、またはベンダーの在庫に保存されているコンテナの名前です。存在しない場合は、手動リセットから取得されます。普通のバックパック、地面にあるチェスト、目的地=0 はここでは逸脱しています。地上で価格を設定することは不可能です。
  • x — 6 番目のパラメータはベンダーコンテナ内の X です。自動配置の場合は -1 または 65535、それ以外の場合は 0..65535 です。 Y および Z と一緒にのみ示されます。
  • y - 7 番目のパラメータ - ベンダーコンテナ内の Y: 自動配置の場合は -1/65535、それ以外の場合は 0..65535。 X および Z と一緒にのみ示されます。
  • z — 8 番目のパラメーターは高さ -128..127、コンテナー内の通常は0 です。明示的な X/Y/Z がない場合、指定された宛先では、-1、-1,0 が使用されます。手動で割り当てる場合、リセットされた場所が取得されます。

戻り値

void: 値がありません。 MassPriceMove をアクティブにすると、手動サンプル待機が有効になります。転送メッセージと価格メッセージは、送信されたリクエストを示すものであり、サーバーの受け入れを保証するものではありません。

動作

  • 0、4、5、または8 引数を含むフォーム。正確な順序: 遅延、数量、type、価格、目的地、x、y、z。部分的な座標トリプルはサポートされていません。
  • まずコマンドを呼び出し、次に適切な項目全体を選択してドラッグします。 0 と入力すると TYPE が記憶されます。明示的なタイプは、他のタイプの手動ラップをスキップします。ソースは常に最初の適切な項目から取得されます。
  • 数量には最初の手動品目が含まれます。 50 は、スタックの 50 ユニットではなく、100 からの 50 のフルスタックを意味します。 0 - すべての適切な直線オブジェクト。カラーはフィルターされず、ネストされたコンテナーは展開されません。
  • ASCII/Unicode および 10 秒の待機を含む、AllPrice 価格リクエスト認識ルールが適用されます。一時停止遅延 - 最小間隔: サーバーが遅い場合は、価格を混乱させないように遅延を増やします。
  • 一般モード AllPrice を有効にする必要はありません。この操作の価格は AllPrice より優先されます。キュー中に価格 AllPrice を変更したり、追加のアイテムを手動で転送したりすることはお勧めできません。不明な応答やサーバー障害によりキューが中断されます。
  • MassPriceMove() は現在の転送キューをオフにし、保留中の価格応答をキャンセルします。一般的な AllPrice が個別に有効になっている場合は、保持されます。 TerminateAll() は両方のモードをオフにします。これは MassMove と共通の 1 つのキューです。新しいアクティベーションが古いアクティベーションを置き換えます。
  • 価格リクエストが認識されない場合、コマンドは手動入力用のダイアログを終了し、それ以上の送金を停止します。サーバーの障害、死亡、マップの変更、使用できないアイテムやコンテナも機能を停止します。
  • モードがまだ最初のマウスドラッグを待機している間に、同じコマンドを繰り返し正しく呼び出すと、待機がオフになります: Deactivate MassMove/MassPriceMove がゲームウィンドウに直接表示されます。次の呼び出しでは、モードが再びオンになります。最初の転送後、引数なしの形式を使用して残りのキューを停止します。すでに送信されたリクエストはロールバックされません。

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

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

簡単な例

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

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

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

1。 50 スタックを価格とともに移動し、マウスでタイプを決定 - 直接スクリプト

引数と実行の流れ:

  • 遅延=350ミリ秒;個々のアイテムの数量=50 (最初の手動アイテムを含む); type=0 は TYPE サンプルを記憶します。各アイテム全体の価格=125。
  • 目的地と座標が欠落しています。サンプルをベンダーの在庫に直接ドラッグしてください。
  • 元のスタックが 100 の場合、最大 50 の完全なスタックが転送されます。サーバーがリクエストした後、それぞれが価格 125 を受け取ります。
UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

2。既知のタイプのすべてのアイテムを選択したベンダー バッグに入れる - スクリプト関数

引数と実行の流れ:

  • AddObject は、ベンダー バッグを選択するように求め、それをvendor_bag として保存します。ここが ID の目的地です。 type はコード 0x0F7A のままです。
  • 遅延=500、数量=0、無制限、type=0x0F7A、価格=250、目的地=vendor_bag。
  • X/Y/Z が欠落しています: -1、-1,0。キューを開始するには、適切なタイプの項目を 1 つ手動でドラッグします。そこからオリジナルのバッグが決まります。
return  RunScenario();
 object? RunScenario()
{
    UO.AddObject("vendor_bag");
    UO.MassPriceMove(500, 0, "0x0F7A", 250, "vendor_bag");
    UO.Print("Now drag one matching item from the source");
    return null;
}

3。 8 つのパラメータすべてとバッグ内の場所を指定します - シナリオ クラス

引数と実行の流れ:

  • 遅延=350ミリ秒;数量=10 全商品; type=itemType=0x0EED;フルスタックごとに価格=1000。
  • destination=vendorBag はベンダーのバッグの実際の ID です。例を置き換えてください。これは 4 番目のパラメーターではなく、5 番目のパラメーターです。
  • x=60、y=70はこのバッグ内の場所、z=0です。これらはマップ上のキャラクターの座標ではありません。
  • 呼び出されたら、ソースから適切なサンプルを手動でドラッグ アンド ドロップします。サーバーが配置を拒否した場合、それ以降のリクエストは停止されます。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var itemType = "0x0EED";
        var vendorBag = "0x40005678";
        UO.MassPriceMove(350, 10, itemType, 1000, vendorBag, 60, 70, 0);
        return null;
    }
}

4。キューと保留中の価格応答をキャンセル - 直接スクリプト

引数と実行の流れ:

  • 引数を指定しないと、このコマンドは一般的な一括転送キューをオフにし、保留中の価格応答をクリアします。
  • サーバーによってすでに受け入れられた価格と送金はロールバックされません。他の手順を停止し、個別に有効化した AllPrice を停止するには、UO.TerminateAll() を使用します。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

UO.MassPriceMove();

コマンドの実装

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

UO.MassPriceMove() — UO.MassPriceMove()

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

結果: void / Unit.

呼び出し時:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price) — UO.MassPriceMove(Any,Any,Any,Any)

引数: delay (Any), quantity (Any), type (Any), price (Any)

結果: void / Unit.

呼び出し時:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination) — UO.MassPriceMove(Any,Any,Any,Any,Any)

引数: delay (Any), quantity (Any), type (Any), price (Any), destination (Any)

結果: void / Unit.

呼び出し時:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination, x, y, z) — UO.MassPriceMove(Any,Any,Any,Any,Any,Any,Any,Any)

引数: delay (Any), quantity (Any), type (Any), price (Any), destination (Any), x (Any), y (Any), z (Any)

結果: void / Unit.

呼び出し時:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.Sell

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

C# のシグネチャ

void UO.Sell(object? @type);
void UO.Sell(object? @type, object? color);
void UO.Sell(object? @type, object? color, object? quantity);

現在の Bad Newbie プロファイルのメインのデフォルト リストで自動販売ルールを作成、更新、または削除します。このコマンドは、NPC 販売者のオファーの今後の処理を構成します。売買を指示せず、店舗を開設せず、取引を確認しません。完全な手順: ストアの掲載情報。

引数

  • type - グラフィック製品 0..65535: 例: 0x0F7A - ブラックパール、0x0F51 - ダガー。これはベンダー/アイテムの serial ではなく、キャラクターの body でもありません。負の数値または 65535 より大きい数値は拒否されます。ここでの0xFFFFは特定のgraphicであり、すべての商品のマスクではありません。
  • color — 製品の色相: 負の数または 0xFFFF — 任意。 0 - 未塗装品のみ。正確な hue には、0..65534 を使用します。この範囲外の色は使用しないでください。正の値は ushort に変換されます。デフォルトは1です。
  • quantity — 受け取った 1 店舗あたりの商品の単位数。スタックの数やバックパック内の望ましいバランスではありません。ポジは65535に限ります。 0/negative は、一致ルール type+color をデフォルトから削除します。それは「全量」ではありません。デフォルトは1です。

戻り値

void - 値なし。 var result = および if を使用せずに、別の回線で呼び出します。呼び出しの終了は、トランザクションの成功ではなく、セットアップの終了を意味します。プロファイルがない場合、または無効な graphic の場合、ルールは作成されません。誤差の数値結果はありません。実際のトランザクションをバックパックの中身、ゴールド、サーバーの応答で確認します。

動作

  • Sell は 1 から 3 までの引数を受け入れます。右側の色=-1、数量=1が欠品しています。
  • デフォルトでは、ルールキーはgraphic、マスクはhueです。繰り返し呼び出すと、このルールの数量およびその他のフィールドが置き換えられます。前の制限に加えて別の制限が追加されることはありません。価格/名前を指定しないと、これらのフィールドに対する以前の制限が削除されます。
  • 新しい/更新された Enabled=true ルール。一般的な売買スイッチはルールの存在に基づいて設定され、プロファイルが保存されます。無効になっているデフォルト リスト自体は自動的に有効になりません。一般モードとリストの両方を設定で有効にする必要があります。他の名前付きリストは変更されません。
  • 商品リストが到着すると処理が始まります。この制限は、1 つのルールに一致する行の合計で消費されます。各位置について、最初に一致する有効なルールが使用されます。ルールが有効な間、ストアを再開すると、新しいオファーと新しい制限が提供されます。
  • Bad Newbie で完全に動作します。クラシックでは、この自動化は無効になっています。パラメータ内の名前 NPC または保存されたリストの名前を置き換えないでください。 AutoBuyEx は購入時に価格/名前フィルターを追加します。 ClearShopList ​​は両方のオートメーションを完全にリセットします。

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

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

簡単な例

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

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

UO.Print("Calling UO.Sell");
UO.Sell(0x0F51);

1。ダガー 1 個の販売を許可 - 直接スクリプト

引数と実行の流れ:

  • 0x0F51 - graphic ダガー、任意の hue、1 - 文ごとに 1 つ。チームは特定の serial を選択せず​​、アイテムの有用性や価値をテストしません。アイテムの正確な type/色を選択してください。
UO.Sell(0x0F51);

2。特定の色のローブのみを販売するのはスクリプトの機能です

引数と実行の流れ:

  • 0x1F03 は標準の graphic ローブの例であり、0x0044 は hue の例です。両方を製品と交換してください。 5 — 価格ではなく単位。最低価格と名前パラメーター Sell/AutoSell は受け入れられません。サーバーは販売オファーに商品を含める必要があります。
return  RunScenario();
 object? RunScenario()
{
    UO.Sell(0x1F03, 0x0044, 5);
    return null;
}

3。 NPC - スクリプトクラスに進む前に 2 種類の販売を無効にします

引数と実行の流れ:

  • プロシージャ名は任意です。 itemType と hue はそのパラメータです。他のルール、購入、およびカスタムの名前付きリストは保持されます。別の有効なリストでもこれらのアイテムを販売している場合は、設定を通じてそのリスト内の対応するルールを無効にします。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

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()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.Sell(itemType, hue, 0);
    }
}

コマンドの実装

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

UO.Sell(type) — UO.Sell(Any)

引数: type (Any)

結果: void / Unit.

呼び出し時:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color) — UO.Sell(Any,Any)

引数: type (Any), color (Any)

結果: void / Unit.

呼び出し時:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color, quantity) — UO.Sell(Any,Any,Any)

引数: type (Any), color (Any), quantity (Any)

結果: void / Unit.

呼び出し時:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.SendShopReply

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

C# のシグネチャ

void UO.SendShopReply(object? reply);

NPC 販売者の最後のアクティブなオファーに製品選択を送信します。取引の方向性はオファーによって決まります。NPC から買うか、彼に売るかです。

引数

  • reply — 文字列: "serial:数量";複数の位置は |, ; で区切られます。またはカンマ。 : の代わりに = と言いましょう。シリアル - GetShopList からの ID の位置、10 進数または 0x、graphic および ID セラーではありません。数量は、スタックの数ではなく、1 の正の整数です。それがなければ、1 が取られます。 「accept」は大文字と小文字を区別しません。「1」は下書きウィンドウを確認します。空の行を指定すると、空の応答でトランザクションがキャンセルされます。

戻り値

void - 戻り値はありません。true/false、金額、購入確認のいずれもありません。サーバーはトランザクションが有効かどうかを判断します。送信後、更新されたアイテム、ゴールド、またはサーバー メッセージを確認してください。

動作

  • まず、通常のゲームアクションとして、目的の NPC から売買を開始し、サーバーがオファーするのを待ちます。これらのチーム自体は売り手を探したり、取引を開いたり、個人ベンダーの価格を設定したり、チェスト間でアイテムを転送したりすることはありません。販売者のID はパラメータとして渡されません。複数のオファーの場合、最後のオファーが使用されます。
  • マネージャーでは、オファーはゲーム セッションに保存されます。グラフィカル クライアントを閉じると提案とドラフトが保存され、開くとウィンドウが復元されます。ストア自体を閉じる、応答する、サーバーを閉じる、または接続を切断すると、オファーは削除されます。自動購入/自動販売 Bad Newbie はスクリプトの前に処理できます。
  • 読み取りではサーバーにリクエストは送信されません。これはすでに受け取った供給のスナップショットであり、NPC の現在の在庫を保証するものではありません。数量フィールドには、行/スタックの数ではなく、単位が反映されます。 ArrayLength(行) は位置をカウントします。ここでの価格は GetShopList となります。 SendShopReplyは価格を受け入れません。
  • 明示的なリストはドラフトを置き換えるものであり、ドラフトには追加されません。 1 つの serial を繰り返すと数量が加算されます。合計は、オファー内の商品の合計数量によって制限されます。不明な serial、数量が正しくないか、正ではない場合、送信する前に応答全体が拒否され、オファーが保存されます。文がない場合、SendShopReply はエラーを報告します。 「0」行は元に戻すコマンドではありません。使用 ""。

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

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

簡単な例

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

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

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

1。最初の位置のユニットを 3 つまで選択 - 直接スクリプト

引数と実行の流れ:

  • 最大 3 の最初の位置のユニットが選択されます。 serialは皮膚が硬いわけではありません。購入オファーの場合は購入、販売オファーの場合は販売です。どのオファーを開いているかを確認してください。
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
if (Truth(amount > 3))
{
    amount = 3;
}
if (Truth(amount > 0))
{
    UO.SendShopReply(ReadField(rows[0], 0, "|") + ":" + Convert.ToString(amount));
}

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2。予算内で一度に 1 つの項目を選択 - スクリプト機能

引数と実行の流れ:

  • 購入オファーのみ: 予算 30、タイプ 0x0E21。価格がプラスで残りの予算内にある場合、対象となる各アイテムから 1 つのユニットが選択されます。文字列は |; を使用して連結されます。 1 つの SendShopReply は選択範囲全体を送信します。
return  RunScenario();
 object? RunScenario()
{
    double budget = 30;
    var reply = "";
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= budget) && Truth(amount > 0))
            {
                if (Truth(reply != ""))
                {
                    reply = reply + "|";
                }

                reply = reply + ReadField(row, 0, "|") + ":1";
                budget = budget - price;
            }
        }
    }

    if (Truth(reply != ""))
    {
        UO.SendShopReply(reply);
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3。ウィンドウドラフトの確認 - スクリプトクラス

引数と実行の流れ:

  • ストアウィンドウで数量を事前に選択します。 「accept」はまさにこのドラフトを送信します。ゲームウィンドウを閉じると保存されます。何も選択されていない場合は、空の応答が送信されます。 「1」は確認の同義語であり、serial の件名ではありません。
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.SendShopReply("accept");
        return null;
    }
}

4。オファーをキャンセル - 直接スクリプト

引数と実行の流れ:

  • 空の行は空の応答を送信し、アクティブなオファーを閉じます。 GetShopList チェックは、商品がない場合に呼び出されるのを回避しますが、空の文と不在の文を区別しません。

Shop リスト / 売買リスト

Shop リスト / 売買リスト

if (Truth(ArrayLength(UO.GetShopList()) > 0))
{
    UO.SendShopReply("");
}

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.SendShopReply(reply) — UO.SendShopReply(Any)

引数: reply (Any)

結果: void / Unit.

呼び出し時:

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

public void SendShopReply(InjectionValue reply) => bridge.SendShopReply(reply.ToString());

UO.SetAutoBuyDelay

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

C# のシグネチャ

void UO.SetAutoBuyDelay(object? value);

自動購入の遅延を設定し、現在のプロファイルを保存します。

引数

  • value — 必要なミリ秒数。負の値は 0 に制限され、65535 より大きい値は数値 65535 に制限されます。 0 は追加の遅延を無効にしますが、自動取引自体は無効にしません。

戻り値

void - 戻り値はありません。別の行として呼び出してから、GetAutoBuyDelay() を使用して有効な設定を読み取ります。プロファイルがない場合、セッターは何も保存しません。この状態のゲッターは標準 3 ミリ秒を与えます。

動作

  • この設定は現在のプロファイルの一般的なものです。別のスクリプトまたは UI での変更は、次回それを読み取るときに表示されます。ゼロは有効な設定ですが、データが欠落していることを示すものではなく、古いスクリプト キャッシュを返す理由にもなりません。
  • デフォルト値は 3 ミリ秒です。自動操作を送信した後、マネージャーは次に許可される操作の時間を設定します。先に到着したベンダー リストは、このパスでは処理されません。 getter は待機をトリガーせず、売買自体を送信しません。
  • これは、MassMove、Drag/Drop の遅延や手動取引ではありません。新しい値は、次の遅延をスケジュールするときに適用されます。すでに割り当てられているモーメントは再計算されません。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetAutoBuyDelay");
UO.SetAutoBuyDelay(350);

1。間隔を設定 350 ms - 直接スクリプト

引数と実行の流れ:

  • 値=350 — 許可される自動操作間のミリ秒。
  • 設定は現在のプロファイルに保存され、他のスクリプトから参照できるようになります。
UO.SetAutoBuyDelay(350);
UO.Print(Convert.ToString(UO.GetAutoBuyDelay()));

2。追加の遅延を削除する - スクリプト関数

引数と実行の流れ:

  • Value=0 には独立した意味があります。以前のゼロ以外の値には置き換えられません。
  • 遅延だけが変わります。ルール、リスト、一般的な自動売買スイッチは別途設定されます。
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(0);
    var actual = UO.GetAutoBuyDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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。計算値の適用 - スクリプト クラス

引数と実行の流れ:

  • requested=70000 が最大値を超えています。適用されると、セッター制限の後にプロファイルが読み取られます。
  • プロファイルがロードされると、結果は 65535 になります。標準の遅延に戻すには、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 requested = 70000;
        UO.SetAutoBuyDelay(requested);
        var applied = UO.GetAutoBuyDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        return null;
    }
}

コマンドの実装

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

UO.SetAutoBuyDelay(value) — UO.SetAutoBuyDelay(Any)

引数: value (Any)

結果: void / Unit.

呼び出し時:

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

case "setautobuydelay":

                    state.AutoBuyDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoBuyDelay(state.AutoBuyDelay);

                    return InjectionValue.Unit;

UO.SetAutoSellDelay

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

C# のシグネチャ

void UO.SetAutoSellDelay(object? value);

自動販売遅延を設定し、現在のプロファイルを保存します。

引数

  • value — 必要なミリ秒数。負の値は 0 に制限され、65535 より大きい値は数値 65535 に制限されます。 0 は追加の遅延を無効にしますが、自動取引自体は無効にしません。

戻り値

void - 戻り値はありません。別の行として呼び出してから、GetAutoSellDelay() を使用して有効な設定を読み取ります。プロファイルがない場合、セッターは何も保存しません。この状態のゲッターは標準 3 ミリ秒を与えます。

動作

  • この設定は現在のプロファイルの一般的なものです。別のスクリプトまたは UI での変更は、次回それを読み取るときに表示されます。ゼロは有効な設定ですが、データが欠落していることを示すものではなく、古いスクリプト キャッシュを返す理由にもなりません。
  • デフォルト値は 3 ミリ秒です。自動操作を送信した後、マネージャーは次に許可される操作の時間を設定します。先に到着したベンダー リストは、このパスでは処理されません。 getter は待機をトリガーせず、売買自体を送信しません。
  • これは、MassMove、Drag/Drop の遅延や手動取引ではありません。新しい値は、次の遅延をスケジュールするときに適用されます。すでに割り当てられているモーメントは再計算されません。
  • 通常のクライアント ホストでは、この状態データは GetPersistentState マネージャーから取得され、同じワールド/プロファイルのスクリプト/チャット/マクロに共通であり、1 つのスクリプトに属しません。別のプロセス、または明らかに別個の InjectionRuntimeState の状態は異なります。プロファイルをロード/クリアすると、プロファイルを置き換えることができます。保存された serial はロードされたワールドに対して引き続きチェックされます。

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

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

簡単な例

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

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

UO.Print("Calling UO.SetAutoSellDelay");
UO.SetAutoSellDelay(350);

1。間隔を設定 350 ms - 直接スクリプト

引数と実行の流れ:

  • 値=350 — 許可される自動操作間のミリ秒。
  • 設定は現在のプロファイルに保存され、他のスクリプトから参照できるようになります。
UO.SetAutoSellDelay(350);
UO.Print(Convert.ToString(UO.GetAutoSellDelay()));

2。追加の遅延を削除する - スクリプト関数

引数と実行の流れ:

  • Value=0 には独立した意味があります。以前のゼロ以外の値には置き換えられません。
  • 遅延だけが変わります。ルール、リスト、一般的な自動売買スイッチは別途設定されます。
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(0);
    var actual = UO.GetAutoSellDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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。計算値の適用 - スクリプト クラス

引数と実行の流れ:

  • requested=70000 が最大値を超えています。適用されると、セッター制限の後にプロファイルが読み取られます。
  • プロファイルがロードされると、結果は 65535 になります。標準の遅延に戻すには、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 requested = 70000;
        UO.SetAutoSellDelay(requested);
        var applied = UO.GetAutoSellDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        return null;
    }
}

コマンドの実装

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

UO.SetAutoSellDelay(value) — UO.SetAutoSellDelay(Any)

引数: value (Any)

結果: void / Unit.

呼び出し時:

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

case "setautoselldelay":

                    state.AutoSellDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoSellDelay(state.AutoSellDelay);

                    return InjectionValue.Unit;

UO.Shop

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

C# のシグネチャ

void UO.Shop();

貿易ラインのローカルリストを出力します。

引数

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

戻り値

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

動作

  • ExecuteLegacyManualAlias は、bridge.GetShopList を読み取り、「|」を介して行を連結します。 SystemMessage用。出品者メニューが開かず、売買も行われません。
  • 指定されたローカル データのみを変更または表示します。このコマンドにはサーバーの確認はありません。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 貿易ラインのローカルリストを出力します。
UO.Shop();

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

引数と実行の流れ:

  • ExecuteLegacyManualAlias は、bridge.GetShopList を読み取り、「|」を介して行を連結します。 SystemMessage用。出品者メニューが開かず、売買も行われません。
return  RunScenario();
 object? RunScenario()
{
    UO.Shop();
    UO.Print(UO.GetArrayLength(UO.GetShopList()));
    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.Shop();
        UO.TextOpen();
        UO.TextPrint("Shop list was printed in the journal");
        return null;
    }
}

コマンドの実装

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

UO.Shop() — UO.Shop()

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

結果: void / Unit.

呼び出し時:

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

case "shop": SystemMessage(string.Join(" | ", bridge.GetShopList())); break;

UO.VendorMenu

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

C# のシグネチャ

void UO.VendorMenu(object? vendor);
void UO.VendorMenu(object? menu, object? choice);

セラーを使用するか、永続的なメニューフックを登録します。

引数

  • vendor — 引数を 1 つ持つフォーム: serial/売り手オブジェクトのエイリアス。
  • menu — 2 つの引数を持つフォーム: タイトルとメニュー要素 (両方ともテキスト)。これは別の操作です。最初の引数は serial ではありません。
  • choice — 2 つの引数を持つフォーム: タイトルとメニュー要素 (両方ともテキスト)。これは別の操作です。最初の引数は serial ではありません。

戻り値

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

動作

  • 1 つの引数は、bridge.UseObject を呼び出します。 2 つの引数は、bridge.AddMenuHook(menu,choice,true) を呼び出します。ここで、true は反復可能なフックを意味します。
  • 自動的に売買することはありません。メニューを開いて選択する方法はサーバーによって決定されます。登録されたフックは、キャンセルされるまで、次の一致するメニューで動作します。
  • メニュー/選択フォームの場合、マネージャーはタイトルにプロンプ​​トが含​​まれる最初のメニューを選択します (大文字と小文字は区別されません)。 SessionMenu は、名前に選択肢が含まれる最初の項目を選択します。これも大文字と小文字は区別されません。 Blank text is suitable for anyone;数値テキストは名前の一部であり、インデックスではありません。選択が成功すると、応答が送信され、ローカル メニューが閉じます。ワンタイムフックは、選択が成功した後にのみ削除されます。 a permanent hook remains.

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • セラーを使用するか、永続的なメニューフックを登録します。
if (Truth(UO.Exists("lasttarget")))
{
    UO.VendorMenu("lasttarget");
}

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

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

引数と実行の流れ:

  • 1 つの引数は、bridge.UseObject を呼び出します。 2 つの引数は、bridge.AddMenuHook(menu,choice,true) を呼び出します。ここで、true は反復可能なフックを意味します。
return  RunScenario();
 object? RunScenario()
{
    UO.VendorMenu("Vendor", "Buy");
    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.VendorMenu("Vendor", "Buy");
        UO.Print(UO.MenuHookPresent());
        UO.CancelMenu();
        return null;
    }
}

コマンドの実装

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

UO.VendorMenu(vendor) — UO.VendorMenu(Any)

引数: vendor (Any)

結果: void / Unit.

呼び出し時:

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

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;

UO.VendorMenu(menu, choice) — UO.VendorMenu(Any,Any)

引数: menu (Any), choice (Any)

結果: void / Unit.

呼び出し時:

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

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;
⚠️ **GitHub.com Fallback** ⚠️