API UO FindDistance ja - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.FindDistance

ClassicUO • Runtime API

検索の既定の水平半径を読み取るか変更します。

正確な構文

UO.FindDistance() -> Integer
UO.FindDistance(value:Any) -> Unit

パラメーター

  • value — 省略可能な Integer。省略すると読み取り、value を指定すると設定します。0..255 に制限され、負数は無制限ではなく 0 になります。新規 runtime の既定値は 18。復元した状態では異なる場合があります。小数はゼロ方向へ切り捨て、decimal/0x の数値文字列も受け付けます。暗黙変換を避けるには Integer を使用してください。

戻り値

引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

動作

  • 距離はクライアントの現在の距離基準点から max(abs(dx), abs(dy)) で計算し、斜めも 1 タイルです。境界を含み、0 は同じ X/Y のみ許可します。移動中の Mobile はステップキューの最終位置を使います。
  • 現在のスクリプト runtime に保存し、そのプロシージャで共有します。独立した runtime の設定は別です。読み書きは検索や FindItem/FindCount/GetFoundItems の消去、パケット送信、移動、遠方オブジェクトの読み込みを行いません。
  • FindTypeEx と FindTypesArrayEx は地面の検索で使用し、コンテナ内には適用しません。type、hue、Ignore、読み込み済みオブジェクトの条件は有効です。FindAtCoord は両方を無視します。拡張コマンドの明示的 distance/maxZ は既定値を上書きできます。これらの引数の -1 は既定値を使い、本設定を -1 にする場合とは異なります。FindList はコンテナ内でも Z を検査し、上記の例外は適用されません。
  • 一時検索の前に保存し Finally で復元してください。自動で元には戻りません。Finally は通常終了と捕捉可能なスクリプトエラーに対応します。緊急停止を後始末の手段にしないでください。
  • 参照:Stealth FindDistance。本クライアント固有の初期値/範囲は FindDistance 18 / 0..255、FindVertical 2 / 0..120 です。上記の Basic 構文と拡張フィルターは本プロジェクトの仕様です。

内部関数:呼び出しから結果まで

実際の内部処理を示します。CountGroundInRange は完全なユーザー関数で、隠れた組み込みコマンドではありません。

1. ExecuteStealthCompatibility

引数 0 個なら読み取り、1 個なら value を変換して書き込みます。メタデータは Integer と Unit を区別します。

引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

プロジェクトのソース: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; 関数 ExecuteStealthCompatibility.

2. GetFindDistance

Bridge は runtime の設定を読むか、整数を制限して保存します。ワールドは走査しません。

引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 GetFindDistance.

3. SetFindDistance

Bridge は runtime の設定を読むか、整数を制限して保存します。ワールドは走査しません。

省略可能な Integer。省略すると読み取り、value を指定すると設定します。0..255 に制限され、負数は無制限ではなく 0 になります。新規 runtime の既定値は 18。復元した状態では異なる場合があります。小数はゼロ方向へ切り捨て、decimal/0x の数値文字列も受け付けます。暗黙変換を避けるには Integer を使用してください。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 SetFindDistance.

4. FindType

後続の検索は明示的な上書きがなければ設定を読みます。地面の Item と Mobile は対応する距離・高さフィルターを通ります。

FindTypeEx と FindTypesArrayEx は地面の検索で使用し、コンテナ内には適用しません。type、hue、Ignore、読み込み済みオブジェクトの条件は有効です。FindAtCoord は両方を無視します。拡張コマンドの明示的 distance/maxZ は既定値を上書きできます。これらの引数の -1 は既定値を使い、本設定を -1 にする場合とは異なります。FindList はコンテナ内でも Z を検査し、上記の例外は適用されません。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 FindType.

5. FindList

後続の検索は明示的な上書きがなければ設定を読みます。地面の Item と Mobile は対応する距離・高さフィルターを通ります。

FindTypeEx と FindTypesArrayEx は地面の検索で使用し、コンテナ内には適用しません。type、hue、Ignore、読み込み済みオブジェクトの条件は有効です。FindAtCoord は両方を無視します。拡張コマンドの明示的 distance/maxZ は既定値を上書きできます。これらの引数の -1 は既定値を使い、本設定を -1 にする場合とは異なります。FindList はコンテナ内でも Z を検査し、上記の例外は適用されません。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 FindList.

現在のスクリプト runtime に保存し、そのプロシージャで共有します。独立した runtime の設定は別です。読み書きは検索や FindItem/FindCount/GetFoundItems の消去、パケット送信、移動、遠方オブジェクトの読み込みを行いません。

使用例

読み取り・設定・上限制御

# 読み取り・設定・上限制御
#
# 検索の既定の水平半径を読み取るか変更します。
#
# 引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value
# あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

SUB Main()
    # previous に実際の設定を保存します。value:=5 は通常の制限、1000 は 255 への制限を示します。Print は別の読み取りで結果を表示します。Finally で
    # previous を復元します。

    VAR previous = UO.FindDistance()
    TRY
        UO.FindDistance(value:=5)
        UO.Print(CStr(UO.FindDistance()))
        UO.FindDistance(1000)
        UO.Print(CStr(UO.FindDistance()))
    FINALLY
        UO.FindDistance(previous)
    END TRY
END SUB

パラメーターと実行の説明:

  • previous に実際の設定を保存します。value:=5 は通常の制限、1000 は 255 への制限を示します。Print は別の読み取りで結果を表示します。Finally で previous を復元します。

地面の一時検索

# 地面の一時検索
#
# 検索の既定の水平半径を読み取るか変更します。
#
# 引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value
# あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

SUB Main()
    # previous は呼び出し元の設定です。5 は FindDistance のみ変更し、もう一方は保持します。0x0EED は金貨のグラフィック、-1 は全色、Container=-1
    # はワールド、FALSE はコンテナ再帰なしです。id は serial、<> 0 は存在確認です。FindCount はオブジェクト/スタック数です。Finally
    # は設定を戻し、結果リストは戻しません。

    VAR previous = UO.FindDistance()
    TRY
        UO.FindDistance(5)
        VAR id = UO.FindTypeEx(0x0EED, -1, -1, FALSE)
        IF id <> 0 THEN
            UO.Print(HEX(id) + ':' + CStr(UO.FindCount()))
        ELSE
            UO.Print('0')
        END IF
    FINALLY
        UO.FindDistance(previous)
    END TRY
END SUB

パラメーターと実行の説明:

  • previous は呼び出し元の設定です。5 は FindDistance のみ変更し、もう一方は保持します。0x0EED は金貨のグラフィック、-1 は全色、Container=-1 はワールド、FALSE はコンテナ再帰なしです。id は serial、<> 0 は存在確認です。FindCount はオブジェクト/スタック数です。Finally は設定を戻し、結果リストは戻しません。

完全な CountGroundInRange 関数

# 完全な CountGroundInRange 関数
#
# 検索の既定の水平半径を読み取るか変更します。
#
# 引数なし:Integer、現在の制限(タイル単位の距離)。ID、個数、Boolean ではありません。0 は失敗ではなく範囲ゼロです。value
# あり:Unit、戻り値なし。TRUE/FALSE や変更前の値ではありません。設定後に FindDistance() で保存値を確認できます。

SUB Main()
    # CountGroundInRange(graphic, radius, height) は両設定を保存し、radius=5、height=10 で graphic=0x0EED を検索して
    # FindCount() を返します。1 スタックは 1 オブジェクトです。関数全体は Main の後にあります。Return で終了しても Finally
    # が両設定を復元し、検索結果は残ります。

    VAR count = CountGroundInRange(0x0EED, 5, 10)
    UO.Print(CStr(count))
END SUB

FUNCTION CountGroundInRange(graphic, radius, height)
    VAR oldDistance = UO.FindDistance()
    VAR oldVertical = UO.FindVertical()
    TRY
        UO.FindDistance(radius)
        UO.FindVertical(height)
        UO.FindTypeEx(graphic, -1, -1, FALSE)
        RETURN UO.FindCount()
    FINALLY
        UO.FindDistance(oldDistance)
        UO.FindVertical(oldVertical)
    END TRY
END FUNCTION

パラメーターと実行の説明:

  • CountGroundInRange(graphic, radius, height) は両設定を保存し、radius=5、height=10 で graphic=0x0EED を検索して FindCount() を返します。1 スタックは 1 オブジェクトです。関数全体は Main の後にあります。Return で終了しても Finally が両設定を復元し、検索結果は残ります。

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic