Skip to content

JA UO Topic targeting

Codex edited this page Oct 11, 2026 · 3 revisions

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

Targeting

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

ターゲットカーソルとプリセット応答WaitTargetによる手動応答。期待される目標の設定とアクションの実行は別の操作です。

セクション

トピック コマンドと説明
Target UO.Target
TargetID UO.TargetID
TargetToObject UO.TargetToObject
TargetToTile UO.TargetToTile
TargetToXYZ UO.TargetToXYZ
TargetByResource UO.TargetByResource
WaitTarget UO.WaitTarget
WaitTargetObject UO.WaitTargetObject
WaitTargetType UO.WaitTargetType
WaitTargetTile UO.WaitTargetTile
WaitTargetXYZ UO.WaitTargetXYZ
WaitTargetSelf UO.WaitTargetSelf
LastTarget UO.LastTarget
CancelTarget UO.CancelTarget
Client Target Response UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.WaitForClientTargetResponse · UO.ClientTargetResponse

すべてのテーマコマンド

ターゲット

UO.Target · UO.TargetID · UO.Targeting · UO.TargetPresent · UO.TargetToObject · UO.TargetToTile · UO.TargetToXYZ · UO.TargetByResource · UO.LastTarget · UO.LastTargetX · UO.LastTargetY · UO.LastTile · UO.TicksTarget

Waiting / キャンセル

UO.WaitTarget · UO.WaitTargetObject · UO.WaitTargetType · UO.WaitTargetObjectType · UO.WaitTargetTile · UO.WaitTargetXYZ · UO.WaitTargetSelf · UO.WaitTargetGround · UO.WaitTargetLast · UO.WaitForTarget · UO.IsWaitTargetActive · UO.CancelTarget · UO.CancelWaitTarget

クライアント Target の応答

UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.ClientTargetResponse · UO.ClientTargetResponsePresent · UO.WaitForClientTargetResponse

このトピックに関する例

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

UO.WaitTargetObject

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

UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");

UO.TargetToXYZ

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

if (Truth(UO.TargetPresent()))
{
    UO.TargetToXYZ(1445, 1690, 0);
}

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

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


UO.CancelTarget

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

C# のシグネチャ

void UO.CancelTarget();

アクティブなカーソルをキャンセルし、準備された十字線の応答をクリアします。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • すでにサーバーに送信された応答は取り消されません。
  • ローカル コールバック ターゲットはキャンセルされます。アクティブなサーバー ターゲットの場合、ターゲットのキャンセルが送信されます。
  • キューはクライアントに共通です。キューのクリアは、すべてのプロシージャの準備された応答に適用されます。

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

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

簡単な例

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

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

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

1。準備を解除 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。
  • self に対する保留中の応答は削除されます。
UO.WaitTargetSelf();
UO.CancelTarget();

2。以前に準備したポイントを置き換える - スクリプト関数

引数と実行の流れ:

  • 1445/1690/0 は、ワールド内の新しいポイントの例です。
  • 古い回答は、新しい目標を設定する前に削除されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.CancelTarget();
    UO.WaitTargetXYZ(1445, 1690, 0);
    return null;
}

3。タイムアウト後の拒否 - スクリプトクラス

引数と実行の流れ:

  • UO.Wait=1000 ミリ秒は、この例の制限です。
  • スキルの成功ではなく、残りのキューがチェックされます。サーバー十字線がない場合、次の外部コマンドは古い応答を受信しません。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.WaitTargetSelf();
        UO.UseSkill("Anatomy");
        await Delay(1000);
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelTarget();
        }

        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.CancelWaitTarget

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

C# のシグネチャ

void UO.CancelWaitTarget();

準備された十字線の応答をクリアします。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • すでにサーバーに送信された応答は取り消されません。
  • 開いているカーソルはアクティブのままです。後で手動で処理できます。
  • キューはクライアントに共通です。キューのクリアは、すべてのプロシージャの準備された応答に適用されます。

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

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

簡単な例

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

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

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

1。準備を解除 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。
  • self に対する保留中の応答は削除されます。
UO.WaitTargetSelf();
UO.CancelWaitTarget();

2。以前に準備したポイントを置き換える - スクリプト関数

引数と実行の流れ:

  • 1445/1690/0 は、ワールド内の新しいポイントの例です。
  • 古い回答は、新しい目標を設定する前に削除されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.CancelWaitTarget();
    UO.WaitTargetXYZ(1445, 1690, 0);
    return null;
}

3。タイムアウト後の拒否 - スクリプトクラス

引数と実行の流れ:

  • UO.Wait=1000 ミリ秒は、この例の制限です。
  • スキルの成功ではなく、残りのキューがチェックされます。サーバー十字線がない場合、次の外部コマンドは古い応答を受信しません。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.WaitTargetSelf();
        UO.UseSkill("Anatomy");
        await Delay(1000);
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

UO.ClientRequestObjectTarget

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

C# のシグネチャ

void UO.ClientRequestObjectTarget();

アイテムまたはキャラクターを手動で選択するためのローカル十字線を開きます。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • このランタイムの以前の結果はリセットされます。コマンドはクリックを待たずにすぐに戻ります。
  • 結果は、WaitForClientTargetResponse または ClientTargetResponsePresent の後に ClientTargetResponse が読み取られます。
  • 実行中のプロシージャを停止すると、そのプロシージャに属するスコープが最も近いフレームから削除されます。別のリクエストがすでにカーソルを置き換えている場合、それをキャンセルしても影響を受けません。
  • 1 つのクライアント インターフェイスの十字線を 2 つの独立した手動選択に同時に使用することはできません。前のリクエストが処理されるまで、新しいリクエストを開始しないでください。

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

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

簡単な例

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

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

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

1。アイテムまたはキャラクターを選択 - 直接スクリプト

引数と実行の流れ:

  • 5000 — ミリ秒単位の待機タイムアウトをクリックします。新しいクエリは前の結果をリセットします。
  • 5 つのフィールドの配列は、選択されたオブジェクトを示します。結果[0]はtypeではなく、serialです。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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;

2。キャンセルは応答ですが、オブジェクトではありません - スクリプト関数

引数と実行の流れ:

  • CancelTarget はローカル選択をキャンセルします。コールバックは空の結果を返します。
  • ClientTargetResponsePresent は 1 を与えますが、配列の長さは 0 です。長さを確認せずに result[0] にアクセスしないでください。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClientRequestObjectTarget();
    UO.CancelTarget();
    if (Truth(UO.ClientTargetResponsePresent()))
    {
        var result = UO.ClientTargetResponse();
        UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
    }

    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;

3。オブジェクトを選択して名前付き参照を保存 - スクリプト クラス

引数と実行の流れ:

  • 応答には 5 つのフィールドが含まれます。 serial は結果 [0] にあります。タイムアウトやキャンセルでは、使用可能な serial は生成されません。
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()
    {
        UO.ClientRequestObjectTarget();
        if (UO.WaitForClientTargetResponse(5000) == 0)
            return false;
        var result = UO.ClientTargetResponse();
        if (((object? [])result).Length != 5 || Convert.ToInt32(result[0]) == 0)
            return false;
        UO.AddObject("selected_object", result[0]);
        UO.Print($"Saved object: {UO.GetName(result[0])}");
        return true;
        return null;
    }
}

UO.ClientRequestTileTarget

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

C# のシグネチャ

void UO.ClientRequestTileTarget();

ポイント/タイルまたはオブジェクトを手動で選択するためのローカル十字線を開きます。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • このランタイムの以前の結果はリセットされます。コマンドはクリックを待たずにすぐに戻ります。
  • 結果は、WaitForClientTargetResponse または ClientTargetResponsePresent の後に ClientTargetResponse が読み取られます。
  • 実行中のプロシージャを停止すると、そのプロシージャに属するスコープが最も近いフレームから削除されます。別のリクエストがすでにカーソルを置き換えている場合、それをキャンセルしても影響を受けません。
  • 1 つのクライアント インターフェイスの十字線を 2 つの独立した手動選択に同時に使用することはできません。前のリクエストが処理されるまで、新しいリクエストを開始しないでください。

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

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

簡単な例

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

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

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

1。選択したタイルの座標を読み取る - 直接スクリプト

引数と実行の流れ:

  • 結果[1] - graphic、結果[2]/[3]/[4] - X/Y/Z。ワールド タイル serial の結果 [0] は 0 と同等です。
  • タイプ、座標、および serial は別のフィールドです。この配列には静的なレイヤー インデックスがありません。
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Type: " + UO.Int2Hex(result[1]));
        UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
    }
}

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;

2。選択したセルの座標を保存 - スクリプト関数

引数と実行の流れ:

  • セルの場合、X/Y/Z はフィールド 2/3/4 にあります。グローバルには文字列が格納されます。 graphic と serial はここでは座標を置き換えません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClientRequestTileTarget();
    if (UO.WaitForClientTargetResponse(5000) == 0)
        return false;
    var selection = (object? [])UO.ClientTargetResponse();
    if (selection.Length != 5)
        return false;
    UO.SetGlobal("route.x", Convert.ToString(selection[2]));
    UO.SetGlobal("route.y", Convert.ToString(selection[3]));
    UO.SetGlobal("route.z", Convert.ToString(selection[4]));
    return true;
    return null;
}

3。ローカルセルの選択を中止する - スクリプトクラス

引数と実行の流れ:

  • CancelTarget はローカル カーソルをオーバーライドします。キャンセル後のコールバックの存在は、選択が成功したことを意味するものではありません。
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()
    {
        UO.ClientRequestTileTarget();
        await WaitAsync(1000);
        UO.CancelTarget();
        if (UO.ClientTargetResponsePresent() != 0)
        {
            var result = (object? [])UO.ClientTargetResponse();
            UO.Print($"Response after cancel: {result.Length} fields");
        }

        return null;
    }
}

UO.ClientTargetResponse

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

C# のシグネチャ

dynamic UO.ClientTargetResponse();

最後のローカル ClientRequest* の結果を配列にコピーします。

引数

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

戻り値

5 つの int の配列: [0]=serial オブジェクト (0 地面/静的付近)、[1]=graphic/type、[2]=X、 [3]=Y、[4]=Z。選択前、新しいリクエストによってリセットされた後、またはキャンセルまたは不適切な選択時に、空の配列が返されます。 hue、マップ、静的レイヤー インデックス、土地/静的属性がありません。これは名前付きフィールドを持つオブジェクトではありません。

動作

  • 読み取りによって結果は消費されません。結果は再度読み取ることができます。新しい ClientRequest* がこれを置き換えます。
  • インデックスにアクセスする前に、必ず ArrayLength(結果)=5 を確認してください。

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

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

簡単な例

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

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

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

1。アイテムまたはキャラクターを選択 - 直接スクリプト

引数と実行の流れ:

  • 5000 — ミリ秒単位の待機タイムアウトをクリックします。新しいクエリは前の結果をリセットします。
  • 5 つのフィールドの配列は、選択されたオブジェクトを示します。結果[0]はtypeではなく、serialです。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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;

2。選択したタイルの座標を読み取る - スクリプト関数

引数と実行の流れ:

  • 結果[1] - graphic、結果[2]/[3]/[4] - X/Y/Z。ワールド タイル serial の結果 [0] は 0 と同等です。
  • タイプ、座標、および serial は別のフィールドです。この配列には静的なレイヤー インデックスがありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClientRequestTileTarget();
    if (Truth(UO.WaitForClientTargetResponse(5000)))
    {
        var result = UO.ClientTargetResponse();
        if (Truth(ArrayLength(result) == 5))
        {
            UO.Print("Type: " + UO.Int2Hex(result[1]));
            UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
        }
    }

    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;

3。キャンセルは応答ですが、オブジェクトではありません - スクリプト クラス

引数と実行の流れ:

  • CancelTarget はローカル選択をキャンセルします。コールバックは空の結果を返します。
  • ClientTargetResponsePresent は 1 を与えますが、配列の長さは 0 です。長さを確認せずに result[0] にアクセスしないでください。
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()
    {
        UO.ClientRequestObjectTarget();
        UO.CancelTarget();
        if (Truth(UO.ClientTargetResponsePresent()))
        {
            var result = UO.ClientTargetResponse();
            UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
        }

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

UO.ClientTargetResponsePresent

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

C# のシグネチャ

dynamic UO.ClientTargetResponsePresent();

最後のローカル選択リクエストに対する応答が受信されたかどうかを確認します。

引数

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

戻り値

int 1 — コールバックはキャンセルを含めてすでに応答しています。 0 - 新しい選択はまだ完了していません。値 1 はオブジェクトの存在を保証しません。キャンセルされると、ClientTargetResponse は空の配列を返します。

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

動作

  • サーバーサイトの存在を示すものではなく、WaitTarget キューについても説明しません。
  • 結果を読み取っても、このフラグはリセットされません。次の ClientRequest* によってリセットされます。

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

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

簡単な例

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

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

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

1。キャンセルは応答ですが、オブジェクトではありません - ストレート スクリプト

引数と実行の流れ:

  • CancelTarget はローカル選択をキャンセルします。コールバックは空の結果を返します。
  • ClientTargetResponsePresent は 1 を与えますが、配列の長さは 0 です。長さを確認せずに result[0] にアクセスしないでください。
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
    var result = UO.ClientTargetResponse();
    UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}

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;

2。オブジェクト選択後の準備状況の確認 - スクリプト関数

引数と実行の流れ:

  • 応答の準備状況とその内容の両方がチェックされます。属性 1 は serial オブジェクトではありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClientRequestObjectTarget();
    if (UO.WaitForClientTargetResponse(5000) == 0)
        return false;
    if (UO.ClientTargetResponsePresent() == 0)
        return false;
    var response = (object? [])UO.ClientTargetResponse();
    return response.Length == 5 && Convert.ToInt32(response[0]) != 0;
    return null;
}

3。セル選択の準備状況ポーリング - スクリプト クラス

引数と実行の流れ:

  • ポーリングは 5 秒に制限されています。応答がない場合、カーソルはキャンセルされます。 X/Y/Z フィールドは完全な応答から読み取り専用です。
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()
    {
        UO.ClientRequestTileTarget();
        for (int attempt = 0; attempt < 50; attempt++)
        {
            if (UO.ClientTargetResponsePresent() != 0)
            {
                var response = (object? [])UO.ClientTargetResponse();
                if (response.Length == 5)
                    UO.Print($"Selected tile: {response[2]},{response[3]},{response[4]}");
                return null;
            }

            await WaitAsync(100);
        }

        UO.CancelTarget();
        UO.Print("Selection timed out");
        return null;
    }
}

UO.IsWaitTargetActive

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

C# のシグネチャ

dynamic UO.IsWaitTargetActive();

準備された応答がターゲット キューに残っているかどうかを確認します。

引数

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

戻り値

int 1 - オブジェクト、タイルのキャンセルされていない遅延ターゲット、または次の光景のキャンセルがあります。 0 - キューは空です。開いたカーソルがありません。カーソルには TargetPresent/Targeting を使用します。

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

動作

  • クライアントのキュー全体が読み取られます。複数のプロシージャが同時に実行されている場合、それぞれの応答が考慮されます。
  • ゼロのみは保留中の応答がないことを意味します。サーバー上でスキルや呪文が正常に使用されたことを確認するものではありません。

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

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

簡単な例

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

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

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

1。チェックの準備 - 直接スクリプト

引数と実行の流れ:

  • WaitTargetSelf の後、サーバーターゲット 1 の前が予想されます。
  • CancelWaitTarget はキューをクリアします。次のテストでは 0 が得られます。
UO.WaitTargetSelf();
UO.Print(Convert.ToString(UO.IsWaitTargetActive()));
UO.CancelWaitTarget();

2。応答が消費されるまで境界を定めて待機する - スクリプト関数

引数と実行の流れ:

  • このチェックにはパラメータがありません。 UO.Wait=50 ミリ秒、最大20 の期待値。
  • 答えが残っている場合はキャンセルされます。サーバーアクションの結果のチェックを個別に追加します。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var attempts = 0;
    while (Truth(UO.IsWaitTargetActive()) && Truth(attempts < 20))
    {
        await Delay(50);
        attempts = attempts + 1;
    }

    if (Truth(UO.IsWaitTargetActive()))
    {
        UO.CancelWaitTarget();
    }

    return null;
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3。キューとサイトの違いを表示する - スクリプト クラス

引数と実行の流れ:

  • 最初の行は遅延応答を示し、2 行目はサイトの状態を示します。
  • カーソルのないキューとキューのないカーソルが可能です。これらの値は交換可能ではありません。
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()
    {
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        UO.Print("Cursor: " + Convert.ToString(UO.TargetPresent()));
        return null;
    }
}

UO.LastTarget

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

C# のシグネチャ

int UO.LastTarget();

最後に保存されたターゲットオブジェクトのserialを読み取ります。

引数

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

戻り値

int - serial/ID。type やbool ではありません。 0 は、目標オブジェクトの不在を意味します。 ground と static にも serial 0 がありますが、座標は保存できます。すべての32 ビットは保持されます。ゼロ以外の ID を確認するには、> 0 や == true ではなく、!= 0 を使用します。

動作

  • パラメータはありません。照準器をオンにせず、新しいターゲットを選択せず​​、攻撃したりパケットを送信したりしません。 LastTarget は、LastAttack および LastStatus とは異なります。通常の選択 self は最後のターゲットを置き換えません。明示的な ClientMarkChar によって変更できます。
  • SetEntity では、既知の Entity.X/Y が保存されます。コンテナ内のアイテムの場合、これは内容の座標になる可能性があります。 SetLand/SetStatic 選択したポイントのワールド X/Y を保存します。その後、オブジェクトを移動/削除しても、保存された座標は変更されません。現在位置については GetX/GetY(serial) を使用します。
  • Clear および World.Clear のクリアな記録 (スクリプトの保存時を含む)。明示的な設定の不明な serial は、以前の X/Y を継承せず、0 になります。これは、ターゲットがサーバー上に存在することを保証するものではありません。
  • serial と X/Y を別々のコマンドで読み取ることはアトミックではありません。ターゲット オブジェクト LastTile の場合、ネットワーク X/Y=65535 が格納されます。これは保存されたオブジェクトの位置ではありません。グランド/スタティック LastTile(1)/(2) の場合、選択された X/Y を読み取ります。括弧のない lasttarget は、変数によってオーバーライドされない限り、組み込みのライブ値です。
  • World.Clear は ClearWorldState を呼び出します: アクティブなコールバック、保存されたターゲット、およびリプレイ パケットをリセットします。通常のリセットでは履歴が保存されます。内部 TargetLast は、保存されているパケットをアクティブなサーバー ターゲットにのみ送信します。履歴がない場合、またはローカル コールバックの場合は、何も送信せず、ターゲットを保存します。アクティブなクライアント コールバックは、キャンセルとして null を 1 回受け取ります。応答が空の場合、ClientTargetResponsePresent は 1 になります。完了した選択は再度通知されません。

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

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

簡単な例

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

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

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

1。保存された値の読み取り - 直接スクリプト

引数と実行の流れ:

  • value はコマンドの唯一の結果です。 HEXはIDを示し、Convert.ToStringは座標です。この呼び出しでは何も選択されません。
var value = UO.LastTarget();
UO.Print("Saved value: " + Hex(value));

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

2。保存された位置と現在位置を比較 - スクリプト関数

引数と実行の流れ:

  • ID — serial が保存されました。 Exists は、GetX/GetY の前にオブジェクトの存在を確認します。保存された座標と現在の座標は異なる場合があります。 serial=0 を使用すると、例では選択された点が印刷されますが、0 自体はその点が選択されたことを証明しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
    }

    return null;
}

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

3。フルヘルパー ReadTargetValue - スクリプトクラス

引数と実行の流れ:

  • minimum/maximum は、API パラメータではなく、アシスタントの結果の許容範囲を指定します。アシスタントは完全に定義されています。 -1 は、それ自体が範囲外に出る兆候です。 ID の場合、チェックは範囲ではなく最上位ビットを含むゼロ以外のすべての serial を保存します。
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 value = ReadTargetValue();
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue()
    {
        var value = UO.LastTarget();
        if (Truth(value == 0))
        {
            return -1;
        }

        return value;
    }

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

UO.LastTargetX

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

C# のシグネチャ

int UO.LastTargetX();

最後にターゲットを選択したときに保存された X 座標を読み取ります。

引数

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

戻り値

int は、画面ピクセルではなく、X の保存された座標です。クリア前/後、または不明なオブジェクトの場合 - 0;実際の座標 0 も許容されます。 bool ではありません。グランド/スタティックの場合は、LastTarget()=0 でも機能します。

動作

  • パラメータはありません。照準器をオンにせず、新しいターゲットを選択せず​​、攻撃したりパケットを送信したりしません。 LastTarget は、LastAttack および LastStatus とは異なります。通常の選択 self は最後のターゲットを置き換えません。明示的な ClientMarkChar によって変更できます。
  • SetEntity では、既知の Entity.X/Y が保存されます。コンテナ内のアイテムの場合、これは内容の座標になる可能性があります。 SetLand/SetStatic 選択したポイントのワールド X/Y を保存します。その後、オブジェクトを移動/削除しても、保存された座標は変更されません。現在位置については GetX/GetY(serial) を使用します。
  • Clear および World.Clear のクリアな記録 (スクリプトの保存時を含む)。明示的な設定の不明な serial は、以前の X/Y を継承せず、0 になります。これは、ターゲットがサーバー上に存在することを保証するものではありません。
  • serial と X/Y を別々のコマンドで読み取ることはアトミックではありません。ターゲット オブジェクト LastTile の場合、ネットワーク X/Y=65535 が格納されます。これは保存されたオブジェクトの位置ではありません。グランド/スタティック LastTile(1)/(2) の場合、選択された X/Y を読み取ります。括弧のない lasttarget は、変数によってオーバーライドされない限り、組み込みのライブ値です。
  • World.Clear は ClearWorldState を呼び出します: アクティブなコールバック、保存されたターゲット、およびリプレイ パケットをリセットします。通常のリセットでは履歴が保存されます。内部 TargetLast は、保存されているパケットをアクティブなサーバー ターゲットにのみ送信します。履歴がない場合、またはローカル コールバックの場合は、何も送信せず、ターゲットを保存します。アクティブなクライアント コールバックは、キャンセルとして null を 1 回受け取ります。応答が空の場合、ClientTargetResponsePresent は 1 になります。完了した選択は再度通知されません。

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

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

簡単な例

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

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

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

1。保存された値の読み取り - 直接スクリプト

引数と実行の流れ:

  • value はコマンドの唯一の結果です。 HEXはIDを示し、Convert.ToStringは座標です。この呼び出しでは何も選択されません。
var value = UO.LastTargetX();
UO.Print("Saved value: " + Convert.ToString(value));

2。保存された位置と現在位置を比較 - スクリプト関数

引数と実行の流れ:

  • ID — serial が保存されました。 Exists は、GetX/GetY の前にオブジェクトの存在を確認します。保存された座標と現在の座標は異なる場合があります。 serial=0 を使用すると、例では選択された点が印刷されますが、0 自体はその点が選択されたことを証明しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
    }

    return null;
}

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

3。フルヘルパー ReadTargetValue - スクリプトクラス

引数と実行の流れ:

  • minimum/maximum は、API パラメータではなく、アシスタントの結果の許容範囲を指定します。アシスタントは完全に定義されています。 -1 は、それ自体が範囲外に出る兆候です。 ID の場合、チェックは範囲ではなく最上位ビットを含むゼロ以外のすべての serial を保存します。
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 value = ReadTargetValue(0, 65535);
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
    {
        var value = UO.LastTargetX();
        if (Truth(value < minimum) || Truth(value > maximum))
        {
            return -1;
        }

        return value;
    }

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

UO.LastTargetY

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

C# のシグネチャ

int UO.LastTargetY();

最後にターゲットを選択したときに保存された Y 座標を読み取ります。

引数

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

戻り値

int は、画面ピクセルではなく、Y の保存された座標です。クリア前/後、または不明なオブジェクトの場合 - 0;実際の座標 0 も許容されます。 bool ではありません。グランド/スタティックの場合は、LastTarget()=0 でも機能します。

動作

  • パラメータはありません。照準器をオンにせず、新しいターゲットを選択せず​​、攻撃したりパケットを送信したりしません。 LastTarget は、LastAttack および LastStatus とは異なります。通常の選択 self は最後のターゲットを置き換えません。明示的な ClientMarkChar によって変更できます。
  • SetEntity では、既知の Entity.X/Y が保存されます。コンテナ内のアイテムの場合、これは内容の座標になる可能性があります。 SetLand/SetStatic 選択したポイントのワールド X/Y を保存します。その後、オブジェクトを移動/削除しても、保存された座標は変更されません。現在位置については GetX/GetY(serial) を使用します。
  • Clear および World.Clear のクリアな記録 (スクリプトの保存時を含む)。明示的な設定の不明な serial は、以前の X/Y を継承せず、0 になります。これは、ターゲットがサーバー上に存在することを保証するものではありません。
  • serial と X/Y を別々のコマンドで読み取ることはアトミックではありません。ターゲット オブジェクト LastTile の場合、ネットワーク X/Y=65535 が格納されます。これは保存されたオブジェクトの位置ではありません。グランド/スタティック LastTile(1)/(2) の場合、選択された X/Y を読み取ります。括弧のない lasttarget は、変数によってオーバーライドされない限り、組み込みのライブ値です。
  • World.Clear は ClearWorldState を呼び出します: アクティブなコールバック、保存されたターゲット、およびリプレイ パケットをリセットします。通常のリセットでは履歴が保存されます。内部 TargetLast は、保存されているパケットをアクティブなサーバー ターゲットにのみ送信します。履歴がない場合、またはローカル コールバックの場合は、何も送信せず、ターゲットを保存します。アクティブなクライアント コールバックは、キャンセルとして null を 1 回受け取ります。応答が空の場合、ClientTargetResponsePresent は 1 になります。完了した選択は再度通知されません。

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

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

簡単な例

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

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

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

1。保存された値の読み取り - 直接スクリプト

引数と実行の流れ:

  • value はコマンドの唯一の結果です。 HEXはIDを示し、Convert.ToStringは座標です。この呼び出しでは何も選択されません。
var value = UO.LastTargetY();
UO.Print("Saved value: " + Convert.ToString(value));

2。保存された位置と現在位置を比較 - スクリプト関数

引数と実行の流れ:

  • ID — serial が保存されました。 Exists は、GetX/GetY の前にオブジェクトの存在を確認します。保存された座標と現在の座標は異なる場合があります。 serial=0 を使用すると、例では選択された点が印刷されますが、0 自体はその点が選択されたことを証明しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var id = UO.LastTarget();
    var x = UO.LastTargetX();
    var y = UO.LastTargetY();
    UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
    if (Truth(id != 0) && Truth(UO.Exists(id)))
    {
        UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
    }

    return null;
}

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

3。フルヘルパー ReadTargetValue - スクリプトクラス

引数と実行の流れ:

  • minimum/maximum は、API パラメータではなく、アシスタントの結果の許容範囲を指定します。アシスタントは完全に定義されています。 -1 は、それ自体が範囲外に出る兆候です。 ID の場合、チェックは範囲ではなく最上位ビットを含むゼロ以外のすべての serial を保存します。
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 value = ReadTargetValue(0, 65535);
        UO.Print("Checked value: " + Convert.ToString(value));
        return null;
    }

    dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
    {
        var value = UO.LastTargetY();
        if (Truth(value < minimum) || Truth(value > maximum))
        {
            return -1;
        }

        return value;
    }

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

UO.LastTile

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

C# のシグネチャ

string UO.LastTile();
int UO.LastTile(object? arg0);

最後に保存されたタイル ターゲットを読み取ります。

引数

  • index - オプション int 0..3: 0=graphic、1=X、2=Y、 3=Z。範囲外 - 0。インデックスがない場合は、レコード全体の行が返されます。

戻り値

引数なし string "graphic X Y Z" 10 進フィールドあり。 1 つのフィールドのインデックス - int 付き。欠落している/短いエントリにはゼロが埋め込まれます。

動作

  • NormalizeLastTile は、不足しているフィールドを 4 つまで補完します。この行にはmap/hue/serialが含まれていません。値 0 は、実際の graphic/座標、またはフィールドを意味しない可能性があります。
  • このコマンドは、保存されたタイル ターゲットのみを読み取ります。ターゲットを作成したり、新しいセルを選択したりしません。 WaitTargetTile("lasttile") は、別のレコードの存在チェックを使用します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 最後に保存されたタイル ターゲットを読み取ります。
UO.Print(UO.LastTile());

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

引数と実行の流れ:

  • NormalizeLastTile は、不足しているフィールドを 4 つまで補完します。この行にはmap/hue/serialが含まれていません。値 0 は、実際の graphic/座標、またはフィールドを意味しない可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.Print(UO.LastTile(1));
    UO.Print(UO.LastTile(2));
    UO.Print(UO.LastTile(3));
    return null;
}

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

引数と実行の流れ:

  • このコマンドは、保存されたタイル ターゲットのみを読み取ります。ターゲットを作成したり、新しいセルを選択したりしません。 WaitTargetTile("lasttile") は、別のレコードの存在チェックを使用します。
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 graphic = UO.LastTile(0);
        var x = UO.LastTile(1);
        var y = UO.LastTile(2);
        var z = UO.LastTile(3);
        UO.Print(Convert.ToString(graphic) + " " + Convert.ToString(x) + " " + Convert.ToString(y) + " " + Convert.ToString(z));
        return null;
    }
}

UO.Target

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

C# のシグネチャ

void UO.Target();
void UO.Target(object? arg0);
void UO.Target(object? arg0, object? arg1);
void UO.Target(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6);

予想されるターゲットをキャンセル/設定するか、明示的なターゲット パケットを送信します。

引数

  • object — 1 つの引数: serial/alias が WaitTargetObject を介して配置されます。引数なし - CancelTarget。
  • targetKey — ID ターゲット クエリの int 引数の 2/7 形式で、通常は UO.TargetID() です。これはパッケージに直接渡され、キー押下ではありません。
  • target — フォーム 2: serial/エイリアスまたは「lasttile」。形状 7: serial オブジェクト; 「ground」はserial=0を残します。
  • targetType - 7 フォームのみ: プロトコル タイプ ターゲット、通常は 0 オブジェクト、1 タイル。 byte に還元可能。
  • type - 7 形状のみ: graphic およびタイル/未知のオブジェクトの世界座標。 graphic/X/Yはushort、Zはsbyteに減少します。既知のエンティティ ブリッジの場合は、実際のエンティティ フィールドに置き換えます。
  • x - 7 形状のみ: graphic およびタイル/未知のオブジェクトの世界座標。 graphic/X/Yはushort、Zはsbyteに減少します。既知のエンティティ ブリッジの場合は、実際のエンティティ フィールドに置き換えます。
  • y - 7 形状のみ: graphic およびタイル/未知のオブジェクトの世界座標。 graphic/X/Yはushort、Zはsbyteに減少します。既知のエンティティ ブリッジの場合は、実際のエンティティ フィールドに置き換えます。
  • z - 7 形状のみ: graphic およびタイル/未知のオブジェクトの世界座標。 graphic/X/Yはushort、Zはsbyteに減少します。既知のエンティティ ブリッジの場合は、実際のエンティティ フィールドに置き換えます。

戻り値

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

動作

  • 引数がないか、引数が 1 つもないフォームは ExecuteLegacyManualAlias に沿って進み、キューを制御します。フォーム 2/7 は、次のターゲットのキューではなく、Target を直接呼び出し、Send_TargetObject を送信します。
  • 2 の形式では、「lasttile」は、保存されているターゲット タイルの graphic/X/Y/Z を取得します。存在しない場合はメッセージが表示されます。不明なオブジェクト エイリアスもメッセージを表示します。 targetType=0 を含むフォーム 7 は、serial を解決しようとします。他のタイプは serial=0 のままです。
  • Bridge.Target はアクティブなカーソル/一致 targetKey をチェックしません。電流IDを通過させます。前回のリクエストの古いキーは使用しないでください。呼び出しはサーバーによる受け入れを待ちません。
  • 2/7 引数の明示的な形式は、パケットを直接送信します。負の serial は 0 になり、targetKey は uint に減らされます。このブランチはローカル カーソル/キューをクリアしたり、TicksTarget を更新したりしません。 TargetToObject/TargetToTile は、クライアントのアクティブな目的のために異なるパスを使用します。

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

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

簡単な例

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

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

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

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

引数と実行の流れ:

  • 予想されるターゲットをキャンセル/設定するか、明示的なターゲット パケットを送信します。
UO.Target("self");
UO.Print(UO.Waiting());
UO.Target();

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

引数と実行の流れ:

  • 引数がないか、引数が 1 つもないフォームは ExecuteLegacyManualAlias に沿って進み、キューを制御します。フォーム 2/7 は、次のターゲットのキューではなく、Target を直接呼び出し、Send_TargetObject を送信します。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.TargetPresent()))
    {
        UO.Target(UO.TargetID(), "self");
    }

    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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • Bridge.Target はアクティブなカーソル/一致 targetKey をチェックしません。電流IDを通過させます。前回のリクエストの古いキーは使用しないでください。呼び出しはサーバーによる受け入れを待ちません。
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()
    {
        if (Truth(UO.TargetPresent()))
        {
            UO.Target(UO.TargetID(), "ground", 1, 0, UO.GetX(), UO.GetY(), UO.GetZ());
        }

        return null;
    }

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

UO.TargetByResource

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

C# のシグネチャ

void UO.TargetByResource(object? arg0, object? arg1);

graphicでアイテムを検索し、指定されたターゲットを準備し、見つかったアイテムを使用します。

引数

  • ObjID — シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
  • Resource — 検索するグラフィック/type アイテム、ResolveType が許可されます。これは Pascal API のリソース フィールド番号ではありません。

戻り値

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

動作

  • この実装では、FindType(ResolveType(リソース), -1, 0, -1, true) が項目を検索します。 != 0 が見つかった場合、最初に Bridge.WaitTargetObject(ObjID)、次に Bridge.UseObject(見つかった)。
  • 何も見つかりませんでした。何もインストールまたは使用されていません。このコマンドは、別個のリソース ターゲット パケットを送信しません。 scope=0 は、インベントリの内容/装備を含む、RootContainer=Player.Serial を持つアイテムを選択します。 recursive=true はブリッジに渡されますが、このscope0 ブランチ自体は RootContainer を使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.TargetByResource");
UO.TargetByResource("self", "0x0E21");

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

引数と実行の流れ:

  • graphicでアイテムを検索し、指定されたターゲットを準備し、見つかったアイテムを使用します。
UO.TargetByResource("self", "0x0E21");

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

引数と実行の流れ:

  • この実装では、FindType(ResolveType(リソース), -1, 0, -1, true) が項目を検索します。 != 0 が見つかった場合、最初に Bridge.WaitTargetObject(ObjID)、次に Bridge.UseObject(見つかった)。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        UO.TargetByResource("lasttarget", "0x0E21");
    }

    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。完全なヘルパー関数 - スクリプト クラス

引数と実行の流れ:

  • 何も見つかりませんでした。何もインストールまたは使用されていません。このコマンドは、別個のリソース ターゲット パケットを送信しません。 scope=0 は、インベントリの内容/装備を含む、RootContainer=Player.Serial を持つアイテムを選択します。 recursive=true はブリッジに渡されますが、このscope0 ブランチ自体は RootContainer を使用します。
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()
    {
        UO.TargetByResource("self", "0x0E21");
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

UO.TargetID

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

C# のシグネチャ

dynamic UO.TargetID();

現在のターゲット カーソルの ID を読み取ります。

引数

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

戻り値

int - 32 最後のオブジェクトの serial ではなく、カーソルのID ビット。カーソルがない場合は0が返されます。最上位ビットが設定されている場合、int は負になります。 Int2Hex はビットを保存します。実数 cursorID=0 とローカル スコープでは 0 も得られます: アクティビティについては TargetPresent を確認してください。このクライアントでは、null ID の特別な非 null 置換は使用されません。

動作

  • LastTarget/GetSerial("lasttarget") は選択されたオブジェクトを指し、TargetID はターゲット リクエストを指します。これらの値を相互に置き換えることはできません。

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

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

簡単な例

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

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

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

1。アクティブなカーソルのIDを印刷 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。
  • Int2Hex を使用すると、最上位ビットを含む ID のすべてのビットを確認できます。
if (Truth(UO.TargetPresent()))
{
    UO.Print(UO.Int2Hex(UO.TargetID()));
}

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

2。 2 つのタイプを区別する ID - スクリプト関数

引数と実行の流れ:

  • カーソル — 照準の ID、オブジェクトの object — serial。
  • TargetToObjectには、カーソルではなくobjectが渡されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var cursor = UO.TargetID();
    var targetSerial = UO.GetSerial("lasttarget");
    UO.Print("Cursor: " + UO.Int2Hex(cursor));
    UO.Print("Object: " + targetSerial);
    return null;
}

3。待機後のチェック - スクリプトクラス

引数と実行の流れ:

  • 1000 — ミリ秒単位の待機タイムアウト。
  • 発生の兆候は結果 WaitForTarget です。この場合、カーソルの符号はチェックされません。
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()
    {
        if (Truth(UO.WaitForTarget(1000)))
        {
            var cursor = UO.TargetID();
            UO.Print("Request: " + UO.Int2Hex(cursor));
        }
        else
        {
            UO.Print("No cursor arrived");
        }

        return null;
    }

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

UO.TargetPresent

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

C# のシグネチャ

dynamic UO.TargetPresent();

クライアント内のアクティブなターゲット選択カーソルを確認します。

引数

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

戻り値

int 1 - TargetManager.IsTargeting installed; 0 - no active cursor.ローカル コールバック ターゲットも考慮されます。これは、serial やキュー状態 WaitTarget ではありません。

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

動作

  • 状態を 1 回読み取ります。カーソルが表示されるのを待ちません。
  • ゲームアクション後にサーバーの十字線を待つには、WaitForTarget を使用します。ローカル ClientRequest* - WaitForClientTargetResponse の結果について。

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

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

簡単な例

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

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

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

1。ステータスの表示 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。
  • 1または0が表示されます。
UO.Print(Convert.ToString(UO.TargetPresent()));

2。オープンカーソルのキャンセル - スクリプト関数

引数と実行の流れ:

  • 状態はアクティブ カーソルによってチェックされます。
  • このクライアントの CancelTarget も、準備された応答をクリアします。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.TargetPresent()))
    {
        UO.CancelTarget();
    }

    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。ゲームアクションリクエスト後 - シナリオクラス

引数と実行の流れ:

  • UseSkill はスキルをリクエストし、WaitForTarget は 3000 ミリ秒まで待機します。
  • TargetToObject はアクティブなサーバーターゲットにのみ応答します。タイムアウトが発生した場合、分岐は実行されません。
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()
    {
        UO.UseSkill("Anatomy");
        if (Truth(UO.WaitForTarget(3000)))
        {
            if (Truth(UO.TargetPresent()))
            {
                UO.TargetToObject("self");
            }
        }

        return null;
    }

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

UO.TargetToObject

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

C# のシグネチャ

void UO.TargetToObject(object? arg0);

すでにアクティブなサーバーターゲット serial オブジェクトに即座に応答します。

引数

  • ObjID — 項目または文字のシリアル/ID、数値または 16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject、または保存された名前 AddObject。これはtypeではありません。名前付きオブジェクトを操作する前に、Exists を確認してください。未解決のエイリアスは serial 0 を与えます。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • アクティブなサーバー カーソルがないと、何も行われず、遅延応答も作成されません。事前準備にはWaitTargetObject/WaitTargetTile/WaitTargetXYZを使用します。
  • ローカル ClientRequest* およびその他のコールバック サイトは、このコマンドでは処理されません。
  • サーバーはターゲットが有効かどうかを判断します。メモリ不足の serial の場合、ID はグラフィック/座標フィールドがゼロで送信されます。

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

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

簡単な例

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

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

UO.Print("Calling UO.TargetToObject");
UO.TargetToObject("self");

1。オープンサイトへの返信 - 直接スクリプト

引数と実行の流れ:

  • パラメーターはキャラクター自体を定義します。
  • 将来のスコープ キューには何も追加されません。
if (Truth(UO.TargetPresent()))
{
    UO.TargetToObject("self");
}

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

2。まずは視界を待つ - スクリプト関数

引数と実行の流れ:

  • 3000 — ミリ秒単位の最大待機時間。照準を要求したアクションは事前に実行する必要があります。
  • このコマンドは、サイトが表示された後にのみ呼び出されます。ゲームのアクションはサーバー障害で終了する可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToObject("self");
    }
    else
    {
        UO.Print("Target timeout");
    }

    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。遅延応答のチェック - スクリプト クラス

引数と実行の流れ:

  • CancelTarget は古いサイトを閉じてキューをクリアします。
  • 新しい範囲がなければ、その挑戦は期待を引き起こしません。別のスクリプトが変更しない限り、キューの出力は 0 のままです。
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()
    {
        UO.CancelTarget();
        UO.TargetToObject("self");
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

UO.TargetToTile

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

C# のシグネチャ

void UO.TargetToTile(object? arg0, object? arg1, object? arg2, object? arg3);

タイル座標を使用して、すでにアクティブなサーバー ターゲットに即座に応答します。

引数

  • Tile - グラフィック/type タイル、0..65535、serial ではありません。ゼロは、グラフィックスが指定されていない座標ターゲットを示します。
  • X — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • x — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • Y — 現在のマップ上の世界 Y 座標、0..65535。
  • y — 現在のマップ上の世界 Y 座標、0..65535。
  • Z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。
  • z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • アクティブなサーバー カーソルがないと、何も行われず、遅延応答も作成されません。事前準備にはWaitTargetObject/WaitTargetTile/WaitTargetXYZを使用します。
  • ローカル ClientRequest* およびその他のコールバック サイトは、このコマンドでは処理されません。
  • graphic=0 のターゲットには十字線が必要です。対物照準器は地面を受け入れません。

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

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

簡単な例

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

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

UO.Print("Calling UO.TargetToTile");
UO.TargetToTile(0x0CCA, 1445, 1690, 0);

1。オープンサイトへの返信 - 直接スクリプト

引数と実行の流れ:

  • パラメータは実際の点の例を示しています。座標と graphic を目的の値に置き換えます。
  • 将来のスコープ キューには何も追加されません。
if (Truth(UO.TargetPresent()))
{
    UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}

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

2。まずは視界を待つ - スクリプト関数

引数と実行の流れ:

  • 3000 — ミリ秒単位の最大待機時間。照準を要求したアクションは事前に実行する必要があります。
  • このコマンドは、サイトが表示された後にのみ呼び出されます。ゲームのアクションはサーバー障害で終了する可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToTile(0x0CCA, 1445, 1690, 0);
    }
    else
    {
        UO.Print("Target timeout");
    }

    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。遅延応答のチェック - スクリプト クラス

引数と実行の流れ:

  • CancelTarget は古いサイトを閉じてキューをクリアします。
  • 新しい範囲がなければ、その挑戦は期待を引き起こしません。別のスクリプトが変更しない限り、キューの出力は 0 のままです。
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()
    {
        UO.CancelTarget();
        UO.TargetToTile(0x0CCA, 1445, 1690, 0);
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

UO.TargetToXYZ

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

C# のシグネチャ

void UO.TargetToXYZ(object? arg0, object? arg1, object? arg2);

タイル座標を使用して、すでにアクティブなサーバー ターゲットに即座に応答します。

引数

  • X — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • x — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • Y — 現在のマップ上の世界 Y 座標、0..65535。
  • y — 現在のマップ上の世界 Y 座標、0..65535。
  • Z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。
  • z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • アクティブなサーバー カーソルがないと、何も行われず、遅延応答も作成されません。事前準備にはWaitTargetObject/WaitTargetTile/WaitTargetXYZを使用します。
  • ローカル ClientRequest* およびその他のコールバック サイトは、このコマンドでは処理されません。
  • graphic=0 のターゲットには十字線が必要です。対物照準器は地面を受け入れません。

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

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

簡単な例

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

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

UO.Print("Calling UO.TargetToXYZ");
UO.TargetToXYZ(1445, 1690, 0);

1。オープンサイトへの返信 - 直接スクリプト

引数と実行の流れ:

  • パラメータは実際の点の例を示しています。座標と graphic を目的の値に置き換えます。
  • 将来のスコープ キューには何も追加されません。
if (Truth(UO.TargetPresent()))
{
    UO.TargetToXYZ(1445, 1690, 0);
}

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

2。まずは視界を待つ - スクリプト関数

引数と実行の流れ:

  • 3000 — ミリ秒単位の最大待機時間。照準を要求したアクションは事前に実行する必要があります。
  • このコマンドは、サイトが表示された後にのみ呼び出されます。ゲームのアクションはサーバー障害で終了する可能性があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.WaitForTarget(3000)))
    {
        UO.TargetToXYZ(1445, 1690, 0);
    }
    else
    {
        UO.Print("Target timeout");
    }

    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。遅延応答のチェック - スクリプト クラス

引数と実行の流れ:

  • CancelTarget は古いサイトを閉じてキューをクリアします。
  • 新しい範囲がなければ、その挑戦は期待を引き起こしません。別のスクリプトが変更しない限り、キューの出力は 0 のままです。
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()
    {
        UO.CancelTarget();
        UO.TargetToXYZ(1445, 1690, 0);
        UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
        return null;
    }
}

UO.Targeting

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

C# のシグネチャ

int UO.Targeting();

クライアント内のアクティブなターゲット選択カーソルを確認します。

引数

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

戻り値

int 1 - TargetManager.IsTargeting installed; 0 - no active cursor.ローカル コールバック ターゲットも考慮されます。これは、serial やキュー状態 WaitTarget ではありません。

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

動作

  • 状態を 1 回読み取ります。カーソルが表示されるのを待ちません。
  • ゲームアクション後にサーバーの十字線を待つには、WaitForTarget を使用します。ローカル ClientRequest* - WaitForClientTargetResponse の結果について。

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

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

簡単な例

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

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

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

1。ステータスの表示 - 直接スクリプト

引数と実行の流れ:

  • 議論はありません。
  • 1または0が表示されます。
UO.Print(Convert.ToString(UO.Targeting()));

2。オープンカーソルのキャンセル - スクリプト関数

引数と実行の流れ:

  • 状態はアクティブ カーソルによってチェックされます。
  • このクライアントの CancelTarget も、準備された応答をクリアします。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Targeting()))
    {
        UO.CancelTarget();
    }

    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。ゲームアクションリクエスト後 - シナリオクラス

引数と実行の流れ:

  • UseSkill はスキルをリクエストし、WaitForTarget は 3000 ミリ秒まで待機します。
  • TargetToObject はアクティブなサーバーターゲットにのみ応答します。タイムアウトが発生した場合、分岐は実行されません。
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()
    {
        UO.UseSkill("Anatomy");
        if (Truth(UO.WaitForTarget(3000)))
        {
            if (Truth(UO.Targeting()))
            {
                UO.TargetToObject("self");
            }
        }

        return null;
    }

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

UO.TicksTarget

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

C# のシグネチャ

int UO.TicksTarget();

WaitTargetObject/WaitTargetTile とその呼び出しシェルを介して、ターゲットの最後のプロビジョニング タイムスタンプを読み取ります。

引数

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

戻り値

int — 準備時の UO.Timer の値 (実行開始から 10 分の 1 秒単位)。最初のそのようなトレーニングの前 - 0。これはマークであり、待機期間、ミリ秒、および ID ターゲットではありません。

動作

  • 即時 TargetToObject/TargetToTile/TargetToXYZ はキューを準備せず、このマークを更新しません。
  • 一部の検索コマンドは、ブリッジを介して直接答えを返します。 TicksTarget は、目標変更の世界時ではありません。

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

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

簡単な例

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

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

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

1。準備の瞬間を思い出してください - 直接脚本

引数と実行の流れ:

  • 引数はありません。 WaitTargetSelf は標高を更新します。
  • スタンプは 10 分の 1 秒単位で測定されます。
UO.WaitTargetSelf();
var stamp = UO.TicksTarget();
UO.Print(Convert.ToString(stamp));
UO.CancelWaitTarget();

2。経過時間の計算 - スクリプト関数

引数と実行の流れ:

  • UO.Wait=250 ミリ秒。
  • マークが離散的であるため、経過時間は通常、250 ではなく 2 または 3 になります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTargetObject("self");
    await Delay(250);
    var elapsed = UO.Timer() - UO.TicksTarget();
    UO.Print("Tenths: " + Convert.ToString(elapsed));
    UO.CancelWaitTarget();
    return null;
}

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

3。数値 serial - シナリオ クラスが同じ時間を確保する

引数と実行の流れ:

  • あなたのキャラクターのselfId - int serial。
  • 数値形式は文字列形式と同様にマークを更新します。 TicksTarget にはパラメータがありません。
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 selfId = UO.Hex2Int(UO.GetSerial("self"));
        UO.WaitTargetObject(selfId);
        UO.Print(Convert.ToString(UO.TicksTarget()));
        UO.CancelWaitTarget();
        return null;
    }
}

UO.WaitForClientTargetResponse

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

C# のシグネチャ

dynamic UO.WaitForClientTargetResponse(object? arg0);

ローカル選択 ClientRequestObjectTarget/ClientRequestTileTarget が完了するまで待機します。

引数

  • MaxWaitTimeMS — ミリ秒単位の最大時間。 0 と負の値の場合、無期限に待つことなく 1 回のチェックが行われます。

戻り値

int 1 - キャンセルを含む応答はすでに受信されています。 0 - タイムアウトが経過しました。 1 の場合も、ClientTargetResponse の長さを確認します。 0 では、カーソル自体は自動的に閉じません。

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

動作

  • 待機はスクリプト スレッド内で最大 25 ミリ秒の間隔で発生し、スクリプトを停止すると中断されます。
  • 前の ClientRequest* がなければ、新しい選択は開始されません。

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

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

簡単な例

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

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

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

1。アイテムまたはキャラクターを選択 - 直接スクリプト

引数と実行の流れ:

  • 5000 — ミリ秒単位の待機タイムアウトをクリックします。新しいクエリは前の結果をリセットします。
  • 5 つのフィールドの配列は、選択されたオブジェクトを示します。結果[0]はtypeではなく、serialです。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
    var result = UO.ClientTargetResponse();
    if (Truth(ArrayLength(result) == 5))
    {
        UO.Print("Serial: " + UO.Int2Hex(result[0]));
    }
    else
    {
        UO.Print("Selection cancelled");
    }
}

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;

2。選択したタイルの座標を読み取る - スクリプト関数

引数と実行の流れ:

  • 結果[1] - graphic、結果[2]/[3]/[4] - X/Y/Z。ワールド タイル serial の結果 [0] は 0 と同等です。
  • タイプ、座標、および serial は別のフィールドです。この配列には静的なレイヤー インデックスがありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.ClientRequestTileTarget();
    if (Truth(UO.WaitForClientTargetResponse(5000)))
    {
        var result = UO.ClientTargetResponse();
        if (Truth(ArrayLength(result) == 5))
        {
            UO.Print("Type: " + UO.Int2Hex(result[1]));
            UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
        }
    }

    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;

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()
    {
        UO.ClientRequestTileTarget();
        int ready = UO.WaitForClientTargetResponse(3000);
        if (ready == 0)
        {
            UO.CancelTarget();
            UO.Print("Selection timed out");
            return false;
        }

        var response = (object? [])UO.ClientTargetResponse();
        if (response.Length != 5)
            return false;
        UO.Print($"Tile coordinates: {response[2]}, {response[3]}, {response[4]}");
        return true;
        return null;
    }
}

UO.WaitForTarget

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

C# のシグネチャ

dynamic UO.WaitForTarget(object? arg0);

アクティブなターゲット カーソルがタイムアウト内に表示されるまで待機します。

引数

  • MaxWaitTimeMS — ミリ秒単位の最大待機時間。ゼロと負の値を指定すると、即時に 1 つのチェックが行われます。終わりのない待ち時間ではありません。

戻り値

int 1 — カーソルは検証中にアクティブでした。 0 - カーソルなしでタイムアウト。ローカル コールバック ターゲットもこのテストを満たします。これは、準備された WaitTarget の使用を確認するものではありません。自動応答は、チェックする前にすでにカーソルを使い果たしている可能性があります。

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

動作

  • チェックはスクリプト スレッド内で最大 25 ミリ秒の一時停止を伴って実行され、スクリプト スレッドを停止することで中断できます。
  • メソッド自体は十字線を作成したり、ターゲットを選択したりしません。

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

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

簡単な例

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

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

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

1。スキルサイト待ち - ダイレクトスクリプト

引数と実行の流れ:

  • MaxWaitTimeMS=3000の場合、selfが選択されます。
  • WaitTargetSelf は事前設定されていません: この例は明示的に答えています。
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
    UO.TargetToObject("self");
}

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

2。ワンチェック - スクリプト機能

引数と実行の流れ:

  • MaxWaitTimeMS=0.
  • 準備完了 - 1 または 0;長い休止期間はありません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var ready = UO.WaitForTarget(0);
    UO.Print(Convert.ToString(ready));
    return null;
}

3。ハンドルタイムアウト - スクリプトクラス

引数と実行の流れ:

  • 500 - 0.5秒。
  • 視界がない場合は、アクションが失敗したか、自動的に処理されている可能性があります。ゲーム ログを確認してください。
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()
    {
        if (Truth(UO.WaitForTarget(500) == 0))
        {
            UO.CancelWaitTarget();
            UO.Print("Cursor did not arrive");
        }

        return null;
    }

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

UO.WaitTarget

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

C# のシグネチャ

void UO.WaitTarget(object? arg0);
void UO.WaitTarget(object? arg0, object? arg1);
void UO.WaitTarget(object? arg0, object? arg1, object? arg2);
void UO.WaitTarget(object? arg0, object? arg1, object? arg2, object? arg3);
void UO.WaitTarget(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4);
void UO.WaitTarget(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5);
void UO.WaitTarget(object? arg0, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6);

serial を次のターゲット要求のキューに入れるか、フィルターを使用してターゲットを選択します。

引数

  • target — 正の値が許可されます serial/alias は直接設定され、他のパラメータは無視されます。 0 または -1 は検索を有効にします。別の数値センチネルは次のターゲットをキャンセルします。
  • type - オプションの graphic/type またはタイプマスク。 -1 制限なし。名前付きタイプは、ResolveType/ParseTypeMask によって解決されます。
  • color - オプションの hue: -1 または 0xFFFF (制限なし)。
  • distance — セル内のオプションの最大距離。デフォルトは GetFindDistance です。 ResolveCompactDistance を解析すると、検索設定に従って特別な値が許可されます。
  • notoriety - オプションの番号/マスクの悪名。空でないマスクはモバイル候補を制限します。それがなければ、携帯電話とworld アイテムが考慮されます。
  • nearest - オプションの bool、デフォルトの true: 距離で並べ替え、次に serial です。
  • maxZ — オプションの最大絶対値(Z-selfZ)、デフォルトはGetFindVertical。

戻り値

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

動作

  • 検索時には、self、serial=0、通常の無視リスト、および選択された名前付きtype フィルターが除外されます。重複は削除されます。直接ポジティブ serial はこれらのフィルターを通過しません。
  • 検索では、ロードされたオブジェクトのみが読み取られます。一致しない/無効なセンチネル - メッセージと CancelNextTarget。選択が成功すると、WaitTargetObject が呼び出され、TicksTarget が更新されます。 WaitTarget 自体はアイテムを使用せず、ターゲットをオープンせず、サーバーがそれを処理するのを待ちません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTarget");
UO.WaitTarget("self");

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

引数と実行の流れ:

  • serial を次のターゲット要求のキューに入れるか、フィルターを使用してターゲットを選択します。
UO.WaitTarget("self");

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

引数と実行の流れ:

  • 検索時には、self、serial=0、通常の無視リスト、および選択された名前付きtype フィルターが除外されます。重複は削除されます。直接ポジティブ serial はこれらのフィルターを通過しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTarget(0, -1, -1, 10, 3, true, 20);
    return null;
}

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

引数と実行の流れ:

  • 検索では、ロードされたオブジェクトのみが読み取られます。一致しない/無効なセンチネル - メッセージと CancelNextTarget。選択が成功すると、WaitTargetObject が呼び出され、TicksTarget が更新されます。 WaitTarget 自体はアイテムを使用せず、ターゲットをオープンせず、サーバーがそれを処理するのを待ちません。
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()
    {
        UO.WaitTarget("lasttarget");
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

UO.WaitTargetGround

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

C# のシグネチャ

void UO.WaitTargetGround(object? arg0);
void UO.WaitTargetGround(object? arg0, object? arg1);

graphic/hue でアイテムを検索し、次のターゲットのキューに入れます。

引数

  • type - グラフィック/type int、type という名前の 16 進文字列またはセット。これはserial のアイテムではありません。
  • color - オプションのint hue;デフォルト -1 - 任意の色。

戻り値

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

動作

  • スコープ: ground/コンテナ セレクター 1 (再帰検索なし)。 Bridge.FindType は、見つかった serial を返します。 serial>0 Bridge.WaitTargetObject が呼び出されたとき。これらのメソッドはランタイム TicksTarget を直接更新しません。
  • 項目はありません - メッセージと CancelNextTarget。検索により、一般的な FindItem/FoundItems が変更される場合があります。このコマンドは、見つかった項目を使用せず、カーソルを待機しません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetGround");
UO.WaitTargetGround("0x0E21");

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

引数と実行の流れ:

  • graphic/hue でアイテムを検索し、次のターゲットのキューに入れます。
UO.WaitTargetGround("0x0E21");

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

引数と実行の流れ:

  • スコープ: ground/コンテナ セレクター 1 (再帰検索なし)。 Bridge.FindType は、見つかった serial を返します。 serial>0 Bridge.WaitTargetObject が呼び出されたとき。これらのメソッドはランタイム TicksTarget を直接更新しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTargetGround("0x0E21", -1);
    return null;
}

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

引数と実行の流れ:

  • 項目はありません - メッセージと CancelNextTarget。検索により、一般的な FindItem/FoundItems が変更される場合があります。このコマンドは、見つかった項目を使用せず、カーソルを待機しません。
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()
    {
        UO.WaitTargetGround("0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

UO.WaitTargetLast

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

C# のシグネチャ

void UO.WaitTargetLast();

エイリアス lasttarget を介して次のサーバー ターゲットへの応答を準備します。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • チームは応答を準備するだけであり、アイテム、スキル、呪文自体は使用しません。次のサーバー ターゲットは、クライアント フレームの処理時に準備されたターゲットを受け取ります。
  • 連続した呼び出しにより、共通のクライアント キューが形成されます。オブジェクトと座標ターゲットは一度に 1 つずつ処理されます。ローカル選択ウィンドウ ClientRequest*/Info/container はそれを消費しません。
  • CancelWaitTarget はキューをクリアします。 TerminateAll は完全にクリーニングします。まだ実行中のプロシージャを停止すると、そのプロシージャ自体の保留中の応答も無効になります。通常、短い手順を完了しても、準備されたターゲットはキャンセルされません。
  • 応答の送信は、サーバー上でのアクションを保証するものではありません。オブジェクトの範囲、アクセス可能性、可視性、およびアクション ルールがチェックされます。コントロールするには、ゲーム結果とログを使用します。

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

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

簡単な例

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

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

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

1。ターゲットの準備 - 直接スクリプト

引数と実行の流れ:

  • 引数はありません。 lasttarget が使用されます。
  • このコマンドはサイトを開いてアクション自体を実行するわけではありません。
UO.WaitTargetLast();

2。選択したオブジェクトの存在を確認する - スクリプト関数

引数と実行の流れ:

  • lasttarget は、このスキルのロードされたキャラクターに解決される必要があります。
  • Exists チェックは、不明なオブジェクトを除外します。オブジェクト タイプの選択とスキルの有効性はスクリプト条件のままです。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("lasttarget")))
    {
        UO.CancelWaitTarget();
        UO.WaitTargetLast();
        UO.UseSkill("Anatomy");
    }

    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。準備されたターゲットのキャンセル - スクリプト クラス

引数と実行の流れ:

  • IsWaitTargetActive は応答キューをチェックします。
  • CancelWaitTarget は、すでに開いているカスタム十字線を閉じずに準備を解除します。
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()
    {
        UO.WaitTargetLast();
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

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

UO.WaitTargetObject

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

C# のシグネチャ

void UO.WaitTargetObject(object? arg0);
void UO.WaitTargetObject(object? arg0, object? arg1);

サーバーサイトに対する 1 つまたは 2 つの連続した serial 応答を準備します。

引数

  • id — 項目または文字のシリアル/ID、数値または 16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject、または保存された名前 AddObject。ここはtypeではありません。名前付きオブジェクトを操作する前に、Exists を確認してください。未解決のエイリアスは serial 0 を与えます。 1 つの引数で 1 つの目標を指定します。数値形式と文字列形式も同様に TicksTarget を更新します。
  • ObjID — 項目または文字のシリアル/ID、数値または 16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject、または保存された名前 AddObject。ここはtypeではありません。名前付きオブジェクトを操作する前に、Exists を確認してください。未解決のエイリアスは serial 0 を与えます。 1 つの引数で 1 つの目標を指定します。数値形式と文字列形式も同様に TicksTarget を更新します。
  • id1 — 項目または文字のシリアル/ID、数値または 16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject、または保存された名前 AddObject。これはtypeではありません。名前付きオブジェクトを操作する前に、Exists を確認してください。未解決のエイリアスは serial 0 を与えます。フォームの最初の目標は 2 行にすることです。
  • id2 — 項目または文字のシリアル/ID、数値または 16 進数/10 進数の文字列、self/backpack/lasttarget/lastobject、または保存された名前 AddObject。これはtypeではありません。名前付きオブジェクトを操作する前に、Exists を確認してください。未解決のエイリアスは serial 0 を与えます。フォームの 2 番目の目的は 2 行であることです。次の個々のスコープに適用されます。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • チームは応答を準備するだけであり、アイテム、スキル、呪文自体は使用しません。次のサーバー ターゲットは、クライアント フレームの処理時に準備されたターゲットを受け取ります。
  • 連続した呼び出しにより、共通のクライアント キューが形成されます。オブジェクトと座標ターゲットは一度に 1 つずつ処理されます。ローカル選択ウィンドウ ClientRequest*/Info/container はそれを消費しません。
  • CancelWaitTarget はキューをクリアします。 TerminateAll は完全にクリーニングします。まだ実行中のプロシージャを停止すると、そのプロシージャ自体の保留中の応答も無効になります。通常、短い手順を完了しても、準備されたターゲットはキャンセルされません。
  • 応答の送信は、サーバー上でのアクションを保証するものではありません。オブジェクトの範囲、アクセス可能性、可視性、およびアクション ルールがチェックされます。コントロールするには、ゲーム結果とログを使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetObject");
UO.WaitTargetObject("self");

1。スキル用に自分自身を事前に選択 - 直接スクリプト

引数と実行の流れ:

  • あなたのキャラクターの id="self" - serial。 CancelWaitTarget は、以前に用意された回答を削除します。
  • UseSkill はスキルをリクエストします。彼のサーバーサイトは準備されたターゲットを受け取ります。
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");

2。既知のオブジェクトを数値で選択 serial - スクリプト関数

引数と実行の流れ:

  • objectId - 例 serial: 自分のものに置き換えます。これはgraphic/typeではありません。
  • ここでターゲットは準備されたばかりです。スクリプトの次のステップでは、実際にターゲットを期待するアクションを呼び出す必要があります。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var objectId = 0x40001234;
    if (Truth(UO.Exists(objectId)))
    {
        UO.WaitTargetObject(objectId);
        UO.Print("Object target prepared");
    }

    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。 2 つのサイト: 最初のオブジェクトと 2 番目のオブジェクト - スクリプト クラス

引数と実行の流れ:

  • ソースと宛先は事前定義された名前 AddObject です。 GetSerial は、形式 id1/id2 に一致する行を返します。
  • 最初のサーバーサイトは最初を使用し、2番目は2番目を使用します。 2 つの連続照準器を使用するアクションにのみ適しています。別のアクションを実行する前に、不要な 2 番目のターゲットをクリアしてください。
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 first = UO.GetSerial("source");
        var second = UO.GetSerial("destination");
        if (Truth(UO.Exists(first)) && Truth(UO.Exists(second)))
        {
            UO.CancelWaitTarget();
            UO.WaitTargetObject(first, second);
        }

        return null;
    }

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

UO.WaitTargetObjectType

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

C# のシグネチャ

void UO.WaitTargetObjectType(object? arg0, object? arg1);
void UO.WaitTargetObjectType(object? arg0, object? arg1, object? arg2);

指定されたオブジェクトと地上で見つかったオブジェクトの 2 つの連続したターゲットを準備します。

引数

  • id — シリアル/ID オブジェクト: int、数値/16 進文字列、または確立されたエイリアス (例: "lasttarget")。これはgraphic/typeではありません。アクションを実行する前に、ロードされたオブジェクトを確認してください。
  • type - 2 番目のアイテムのグラフィック/type、int/16 進数/名前付きtype。
  • color - 2 番目の主題のオプションの hue。デフォルトでは -1 どれでも。

戻り値

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

動作

  • 最初の serial から GetObject までを許可します。 2 番目は、FindType(type,color,1,-1,false) を探します。両方が正の場合、bridge.WaitTargetObject(first,second) を呼び出します。ターゲットの順序は維持されます。
  • 少なくとも 1 つの目標が欠落している/非ポジティブである場合 (メッセージと CancelNextTarget)、両方の目標は設定されていません。ブランチはTicksTargetを更新せず、アイテムを使用しません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetObjectType");
UO.WaitTargetObjectType("self", "0x0E21");

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

引数と実行の流れ:

  • 指定されたオブジェクトと地上で見つかったオブジェクトの 2 つの連続したターゲットを準備します。
UO.WaitTargetObjectType("self", "0x0E21");

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

引数と実行の流れ:

  • 最初の serial から GetObject までを許可します。 2 番目は、FindType(type,color,1,-1,false) を探します。両方が正の場合、bridge.WaitTargetObject(first,second) を呼び出します。ターゲットの順序は維持されます。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTargetObjectType("lasttarget", "0x0E21", -1);
    return null;
}

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

引数と実行の流れ:

  • 少なくとも 1 つの目標が欠落している/非ポジティブである場合 (メッセージと CancelNextTarget)、両方の目標は設定されていません。ブランチはTicksTargetを更新せず、アイテムを使用しません。
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()
    {
        UO.WaitTargetObjectType("self", "0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

UO.WaitTargetSelf

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

C# のシグネチャ

void UO.WaitTargetSelf();

エイリアス self を介して次のサーバー ターゲットへの応答を準備します。

引数

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

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • チームは応答を準備するだけであり、アイテム、スキル、呪文自体は使用しません。次のサーバー ターゲットは、クライアント フレームの処理時に準備されたターゲットを受け取ります。
  • 連続した呼び出しにより、共通のクライアント キューが形成されます。オブジェクトと座標ターゲットは一度に 1 つずつ処理されます。ローカル選択ウィンドウ ClientRequest*/Info/container はそれを消費しません。
  • CancelWaitTarget はキューをクリアします。 TerminateAll は完全にクリーニングします。まだ実行中のプロシージャを停止すると、そのプロシージャ自体の保留中の応答も無効になります。通常、短い手順を完了しても、準備されたターゲットはキャンセルされません。
  • 応答の送信は、サーバー上でのアクションを保証するものではありません。オブジェクトの範囲、アクセス可能性、可視性、およびアクション ルールがチェックされます。コントロールするには、ゲーム結果とログを使用します。

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

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

簡単な例

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

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

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

1。ターゲットの準備 - 直接スクリプト

引数と実行の流れ:

  • 引数はありません。 self が使用されます。
  • このコマンドはサイトを開いてアクション自体を実行するわけではありません。
UO.WaitTargetSelf();

2。選択したオブジェクトの存在を確認する - スクリプト関数

引数と実行の流れ:

  • self は、このスキルのロードされたキャラクターに解決される必要があります。
  • Exists チェックは、不明なオブジェクトを除外します。オブジェクト タイプの選択とスキルの有効性はスクリプト条件のままです。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    if (Truth(UO.Exists("self")))
    {
        UO.CancelWaitTarget();
        UO.WaitTargetSelf();
        UO.UseSkill("Anatomy");
    }

    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。準備されたターゲットのキャンセル - スクリプト クラス

引数と実行の流れ:

  • IsWaitTargetActive は応答キューをチェックします。
  • CancelWaitTarget は、すでに開いているカスタム十字線を閉じずに準備を解除します。
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()
    {
        UO.WaitTargetSelf();
        if (Truth(UO.IsWaitTargetActive()))
        {
            UO.CancelWaitTarget();
        }

        return null;
    }

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

UO.WaitTargetTile

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

C# のシグネチャ

void UO.WaitTargetTile(object? arg0);
void UO.WaitTargetTile(object? arg0, object? arg1, object? arg2);
void UO.WaitTargetTile(object? arg0, object? arg1, object? arg2, object? arg3);

オプションのタイル グラフィックを使用して座標ターゲットを準備します。

引数

  • selector - 引数が 1 つの形式のみ: 格納されたポイントを繰り返す文字列「lasttile」。
  • type - グラフィック/type タイル、0..65535、serial ではありません。ゼロは、グラフィックスが指定されていない座標ターゲットを示します。 4 つの引数形式で表示されます。 x/y/z の形式では、0 と等しくなります。
  • X — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • x — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • Y — 現在のマップ上の世界 Y 座標、0..65535。
  • y — 現在のマップ上の世界 Y 座標、0..65535。
  • Z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。
  • z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • チームは応答を準備するだけであり、アイテム、スキル、呪文自体は使用しません。次のサーバー ターゲットは、クライアント フレームの処理時に準備されたターゲットを受け取ります。
  • 連続した呼び出しにより、共通のクライアント キューが形成されます。オブジェクトと座標ターゲットは一度に 1 つずつ処理されます。ローカル選択ウィンドウ ClientRequest*/Info/container はそれを消費しません。
  • CancelWaitTarget はキューをクリアします。 TerminateAll は完全にクリーニングします。まだ実行中のプロシージャを停止すると、そのプロシージャ自体の保留中の応答も無効になります。通常、短い手順を完了しても、準備されたターゲットはキャンセルされません。
  • 応答の送信は、サーバー上でのアクションを保証するものではありません。オブジェクトの範囲、アクセス可能性、可視性、およびアクション ルールがチェックされます。コントロールするには、ゲーム結果とログを使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetTile");
UO.WaitTargetTile("lasttile");

1。 graphic を使用しない座標 - 直接スクリプト

引数と実行の流れ:

  • x=1445、y=1690、z=0;欠落している type は 0 と等しくなります。
  • これが世界の要点です。このコマンドはキャラクターを移動したり、ガンプにアイテムを配置したりしません。
UO.CancelWaitTarget();
UO.WaitTargetTile(1445, 1690, 0);

2。 graphicタイルを明示的に指定 - スクリプト関数

引数と実行の流れ:

  • type=0x0CCA — グラフィックの例;選択したタイルの実際の type を使用します。 x/y/z はワールド位置です。
  • グラフィックと座標は、目的のマップ オブジェクトを記述する必要があります。サーバーはターゲットの有効性をチェックします。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.CancelWaitTarget();
    UO.WaitTargetTile(0x0CCA, 1445, 1690, 0);
    return null;
}

3。最後のターゲットの保存されたポイントを繰り返す - スクリプト クラス

引数と実行の流れ:

  • セレクターでは、lasttile 文字列のみが許可され、大文字と小文字は区別されません。 1 引数形式の別の文字列または数値を使用すると、エラーが発生します。
  • TargetManager のタイルの最後のフィールドが使用されます。最初の選択の前にゼロにすることもできます。まず、ゲーム内の目的のポイントを選択します。 3 つまたは 4 つの引数を使用すると、明示的に設定できます。
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()
    {
        UO.WaitTargetTile("lasttile");
        return null;
    }
}

UO.WaitTargetType

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

C# のシグネチャ

void UO.WaitTargetType(object? arg0);
void UO.WaitTargetType(object? arg0, object? arg1);

graphic/hue でアイテムを検索し、次のターゲットのキューに入れます。

引数

  • type - グラフィック/type int、type という名前の 16 進文字列またはセット。これはserial のアイテムではありません。
  • color - オプションのint hue;デフォルト -1 - 任意の色。

戻り値

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

動作

  • 範囲: 再帰的検索を備えたバックパック。 Bridge.FindType は、見つかった serial を返します。 serial>0 Bridge.WaitTargetObject が呼び出されたとき。これらのメソッドはランタイム TicksTarget を直接更新しません。
  • 項目はありません - メッセージと CancelNextTarget。検索により、一般的な FindItem/FoundItems が変更される場合があります。このコマンドは、見つかった項目を使用せず、カーソルを待機しません。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetType");
UO.WaitTargetType("0x0E21");

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

引数と実行の流れ:

  • graphic/hue でアイテムを検索し、次のターゲットのキューに入れます。
UO.WaitTargetType("0x0E21");

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

引数と実行の流れ:

  • 範囲: 再帰的検索を備えたバックパック。 Bridge.FindType は、見つかった serial を返します。 serial>0 Bridge.WaitTargetObject が呼び出されたとき。これらのメソッドはランタイム TicksTarget を直接更新しません。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.WaitTargetType("0x0E21", -1);
    return null;
}

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

引数と実行の流れ:

  • 項目はありません - メッセージと CancelNextTarget。検索により、一般的な FindItem/FoundItems が変更される場合があります。このコマンドは、見つかった項目を使用せず、カーソルを待機しません。
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()
    {
        UO.WaitTargetType("0x0E21", -1);
        UO.Print(UO.Waiting());
        UO.CancelWaitTarget();
        return null;
    }
}

UO.WaitTargetXYZ

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

C# のシグネチャ

void UO.WaitTargetXYZ(object? arg0, object? arg1, object? arg2);

次のサーバーサイト用に graphic=0 の座標ターゲットを準備します。

引数

  • X — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • x — 現在のマップ上の世界 X 座標、0..65535。これは画面のピクセルやガンプ座標ではありません。
  • Y — 現在のマップ上の世界 Y 座標、0..65535。
  • y — 現在のマップ上の世界 Y 座標、0..65535。
  • Z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。
  • z - ゲーム ポイントの高さ。ネットワーク ターゲットの場合、-128..127 を使用します。これは床や機器の層ではありません。

戻り値

void - 戻り値はありません。別の回線で電話してください。 true/false、serial、またはtypeとしては使用しないでください。メタデータ object?互換性のあるフォームの場合、実際の結果 void は変わりません。

動作

  • チームは応答を準備するだけであり、アイテム、スキル、呪文自体は使用しません。次のサーバー ターゲットは、クライアント フレームの処理時に準備されたターゲットを受け取ります。
  • 連続した呼び出しにより、共通のクライアント キューが形成されます。オブジェクトと座標ターゲットは一度に 1 つずつ処理されます。ローカル選択ウィンドウ ClientRequest*/Info/container はそれを消費しません。
  • CancelWaitTarget はキューをクリアします。 TerminateAll は完全にクリーニングします。まだ実行中のプロシージャを停止すると、そのプロシージャ自体の保留中の応答も無効になります。通常、短い手順を完了しても、準備されたターゲットはキャンセルされません。
  • 応答の送信は、サーバー上でのアクションを保証するものではありません。オブジェクトの範囲、アクセス可能性、可視性、およびアクション ルールがチェックされます。コントロールするには、ゲーム結果とログを使用します。

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

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

簡単な例

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

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

UO.Print("Calling UO.WaitTargetXYZ");
UO.WaitTargetXYZ(1445, 1690, 0);

1。ワールド内の点を指定 - 直接スクリプト

引数と実行の流れ:

  • X=1445、Y=1690、Z=0。グラフィックは0と同等です。
  • サーバー座標サイトが表示されたときに応答が送信されます。
UO.WaitTargetXYZ(1445, 1690, 0);

2。文字の下にドットを使用する - スクリプト関数

引数と実行の流れ:

  • X/Y/Zは自分のキャラクターから読み取られます。
  • これは座標ターゲットであり、キャラクターの serial 上の object ターゲットではありません。後者の場合は、WaitTargetSelf が必要です。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var x = UO.GetX();
    var y = UO.GetY();
    var z = UO.GetZ();
    UO.WaitTargetXYZ(x, y, z);
    return null;
}

3。ツールポイントの準備 - スクリプトクラス

引数と実行の流れ:

  • 座標を抽出点に置き換えます。 UseType はバックパックに入っている任意の色のシャベル type=0x0F39 を探しています。
  • 適切なツールが利用できない場合は、別のアクションに進む前に、CancelWaitTarget を介して準備を削除してください。
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()
    {
        UO.CancelWaitTarget();
        UO.WaitTargetXYZ(1445, 1690, 0);
        UO.UseType(0x0F39, -1);
        return null;
    }
}

Clone this wiki locally