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

UO.Ground

ClassicUO • Runtime API

検索先コンテナや移動先の引数に渡す、地面を表す特別な値を返します。

正確な構文

UO.Ground() -> Integer

パラメーター

引数はありません。

戻り値

Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground() 自体ではなく、それを使った検索や移動の結果を使います。

動作

  • 引数はありません。Ground() 単体は検索、移動、ターゲット表示、パケット送信、検索結果の変更を行いません。ログイン前も 0 を返します。
  • FindType、FindList、Count、FindTypeEx、FindTypesArrayEx、CountEx、MoveItem の container/destination に渡します。検索対象は読み込み済みオブジェクトで、遠方のセルは読み込みません。地面の X/Y/Z はワールド座標であり、コンテナ画面のピクセルではありません。
  • FindType(type, color) は引き続き所持品を検索します。第 2 引数は色です。地面は FindType(type, color, UO.Ground()) と指定します。従来の簡略 FindType/MoveItem の -1 は所持品、互換 FindTypeEx/FindTypesArrayEx/CountEx の -1 は地面にも使用できます。コマンド間で数値を流用せず UO.Ground() または名前 ground を推奨します。
  • 一次資料:Stealth Ground。上記の規則と例は本クライアントの仕様です。

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

実際の内部処理です。FindGroundTypes は完全なユーザー関数で、追加の組み込みコマンドではありません。

1. ExecuteStealthCompatibility

引数なしの runtime 分岐はゲーム bridge を呼ばず Integer 0 を返します。

Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground() 自体ではなく、それを使った検索や移動の結果を使います。

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

2. ConvertContainer

簡略検索は明示的な 0 を内部の地面指定へ変換し、-1 は所持品の既定値として残します。互換検索は 0 と従来の -1 を地面として受け付け、名前付きコンテナは別に解決します。

FindType(type, color) は引き続き所持品を検索します。第 2 引数は色です。地面は FindType(type, color, UO.Ground()) と指定します。従来の簡略 FindType/MoveItem の -1 は所持品、互換 FindTypeEx/FindTypesArrayEx/CountEx の -1 は地面にも使用できます。コマンド間で数値を流用せず UO.Ground() または名前 ground を推奨します。

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

3. ConvertStealthSearchContainer

簡略検索は明示的な 0 を内部の地面指定へ変換し、-1 は所持品の既定値として残します。互換検索は 0 と従来の -1 を地面として受け付け、名前付きコンテナは別に解決します。

FindType(type, color) は引き続き所持品を検索します。第 2 引数は色です。地面は FindType(type, color, UO.Ground()) と指定します。従来の簡略 FindType/MoveItem の -1 は所持品、互換 FindTypeEx/FindTypesArrayEx/CountEx の -1 は地面にも使用できます。コマンド間で数値を流用せず UO.Ground() または名前 ground を推奨します。

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

4. ResolveTransferDestination

移動先の解析では地面を 0 として保持します。bridge はワールド座標を使用し、ドロップパケットのコンテナ欄は 0xFFFFFFFF となります。API 値とパケット欄は表現が異なります。

0x40001001 を操作可能なアイテムの serial に変更します。IsObjectExists は読み込み済みの存在を検査します。MoveItem(item, amount, destination, X, Y, Z):amount=0 は全スタック、Ground() は地面、GetX/GetY/GetZ はプレイヤーのワールド位置です。result=1 はクライアントが要求を受け付けたこと、0 は不成立です。Ground() の戻り値でもサーバーの完了応答でもありません。

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

5. MoveItem

移動先の解析では地面を 0 として保持します。bridge はワールド座標を使用し、ドロップパケットのコンテナ欄は 0xFFFFFFFF となります。API 値とパケット欄は表現が異なります。

0x40001001 を操作可能なアイテムの serial に変更します。IsObjectExists は読み込み済みの存在を検査します。MoveItem(item, amount, destination, X, Y, Z):amount=0 は全スタック、Ground() は地面、GetX/GetY/GetZ はプレイヤーのワールド位置です。result=1 はクライアントが要求を受け付けたこと、0 は不成立です。Ground() の戻り値でもサーバーの完了応答でもありません。

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

引数はありません。Ground() 単体は検索、移動、ターゲット表示、パケット送信、検索結果の変更を行いません。ログイン前も 0 を返します。

使用例

指定値を読む

# 指定値を読む
#
# 検索先コンテナや移動先の引数に渡す、地面を表す特別な値を返します。
#
# Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground()
# 自体ではなく、それを使った検索や移動の結果を使います。

SUB Main()
    # destination は Integer 0 を受け取り、Print が表示します。何も置きません。

    VAR destination = UO.Ground()
    UO.Print(CStr(destination))
END SUB

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

  • destination は Integer 0 を受け取り、Print が表示します。何も置きません。

地面の金貨スタックを探す

# 地面の金貨スタックを探す
#
# 検索先コンテナや移動先の引数に渡す、地面を表す特別な値を返します。
#
# Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground()
# 自体ではなく、それを使った検索や移動の結果を使います。

SUB Main()
    # 0x0EED は金貨のグラフィック、第 2 引数の -1 は全色です。Ground() はワールド、FALSE はコンテナ再帰なしです。FindTypeEx は serial または 0
    # を返し、<> 0 はその serial を検査します。FindDistance/FindVertical と Ignore が適用されます。

    VAR id = UO.FindTypeEx(0x0EED, -1, UO.Ground(), FALSE)
    IF id <> 0 THEN
        UO.Print(HEX(id))
    ELSE
        UO.Print('0')
    END IF
END SUB

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

  • 0x0EED は金貨のグラフィック、第 2 引数の -1 は全色です。Ground() はワールド、FALSE はコンテナ再帰なしです。FindTypeEx は serial または 0 を返し、<> 0 はその serial を検査します。FindDistance/FindVertical と Ignore が適用されます。

2 種類のグラフィックを探す完全な関数

# 2 種類のグラフィックを探す完全な関数
#
# 検索先コンテナや移動先の引数に渡す、地面を表す特別な値を返します。
#
# Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground()
# 自体ではなく、それを使った検索や移動の結果を使います。

SUB Main()
    # FindGroundTypes(firstType, secondType, radius, height) は金貨 0x0EED と黒真珠 0x0F7A を
    # radius=5、height=10 で探します。DIM types[1] は 2 要素、colors[0] と containers[0] は各 1 要素です。スタックは 1
    # オブジェクトで、型/色は候補のいずれか、コンテナの重複による ID 重複はありません。保存した serial 配列を返し、Finally が両設定を復元、Main が ID
    # を表示します。関数全体を記載しています。

    VAR ids = FindGroundTypes(0x0EED, 0x0F7A, 5, 10)
    FOR EACH id IN ids
        UO.Print(HEX(id))
    NEXT
END SUB

FUNCTION FindGroundTypes(firstType, secondType, radius, height)
    VAR oldDistance = UO.FindDistance()
    VAR oldVertical = UO.FindVertical()
    DIM types[1]
    types[0] = firstType
    types[1] = secondType
    DIM colors[0]
    colors[0] = -1
    DIM containers[0]
    containers[0] = UO.Ground()
    TRY
        UO.FindDistance(radius)
        UO.FindVertical(height)
        UO.FindTypesArrayEx(types, colors, containers, FALSE)
        RETURN UO.GetFoundItems()
    FINALLY
        UO.FindDistance(oldDistance)
        UO.FindVertical(oldVertical)
    END TRY
END FUNCTION

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

  • FindGroundTypes(firstType, secondType, radius, height) は金貨 0x0EED と黒真珠 0x0F7A を radius=5、height=10 で探します。DIM types[1] は 2 要素、colors[0] と containers[0] は各 1 要素です。スタックは 1 オブジェクトで、型/色は候補のいずれか、コンテナの重複による ID 重複はありません。保存した serial 配列を返し、Finally が両設定を復元、Main が ID を表示します。関数全体を記載しています。

既知のアイテムをプレイヤーのセルへ置く

# 既知のアイテムをプレイヤーのセルへ置く
#
# 検索先コンテナや移動先の引数に渡す、地面を表す特別な値を返します。
#
# Integer、常に 0。このゼロは有効な地面指定値であり、FALSE、検索失敗、ID、グラフィック、マップ番号、座標ではありません。成功判定には Ground()
# 自体ではなく、それを使った検索や移動の結果を使います。

SUB Main()
    # 0x40001001 を操作可能なアイテムの serial に変更します。IsObjectExists は読み込み済みの存在を検査します。MoveItem(item, amount,
    # destination, X, Y, Z):amount=0 は全スタック、Ground() は地面、GetX/GetY/GetZ はプレイヤーのワールド位置です。result=1
    # はクライアントが要求を受け付けたこと、0 は不成立です。Ground() の戻り値でもサーバーの完了応答でもありません。

    VAR item = 0x40001001
    IF UO.IsObjectExists(item) THEN
        VAR result = UO.MoveItem(item, 0, UO.Ground(), UO.GetX('self'), UO.GetY('self'), UO.GetZ('self'))
    END IF
END SUB

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

  • 0x40001001 を操作可能なアイテムの serial に変更します。IsObjectExists は読み込み済みの存在を検査します。MoveItem(item, amount, destination, X, Y, Z):amount=0 は全スタック、Ground() は地面、GetX/GetY/GetZ はプレイヤーのワールド位置です。result=1 はクライアントが要求を受け付けたこと、0 は不成立です。Ground() の戻り値でもサーバーの完了応答でもありません。

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

Basic