Skip to content

API UO GetShopList ja

Codex edited this page Sep 23, 2026 · 1 revision

UO.GetShopList

ClassicUO / Basic IDE

Home · API · Trading

最後の有効なNPC商人の提示商品を読み、購入・売却前に種類、数量、価格を確認します。

正確な構文

UO.GetShopList() -> Any

パラメーター

引数はありません。

戻り値

Array of String、添字は0から。行はserial|graphic|hue|amount|price|name。serialは商品行ID、graphicは種類、hueは色で、この3項目は0x表記です。amountは提示数量から画面の下書き選択を引いた単位数、priceは単価です。取引がなければ空配列、Booleanではありません。区切りは先頭5個の|だけで、残りは名前です。名前にも|が含まれ得ます。

動作

  • 先に目的のNPCで購入または売却を開き、サーバーの提示を待ちます。商人検索、取引開始、自分のvendorの値付け、コンテナ間移動は行いません。商人ID引数はなく、最後の提示を使います。
  • マネージャーは画面がなくてもセッションに提示と下書きを保持し、画面を開き直すと復元します。店自体を閉じる、応答、サーバーの終了通知、切断で提示はなくなります。Bad Newbie自動売買が先に処理する場合があります。
  • 読み取りは通信しません。受信データのスナップショットで、現在の在庫を保証しません。amountは単位数、GetArrayLength(rows)は行数です。SendShopReplyに価格は渡せません。
  • 明示リストは下書きを置き換えます。同じserialは数量を合算し、提示全数量で上限を設けます。不明なID、不正または0以下の数量は応答全体を送信前に拒否し、提示を保持します。提示がないSendShopReplyはエラー。"0"は取消ではなく""を使います。

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

SessionShopsが全リストと価格を検査して保存し、bridgeがセッションスレッドで実行します。GetItemsは行を作成、ParseSelectionは選択を検査、Replyは購入0x3Bか売却0x9Fを送り提示を閉じます。ShopGumpは同じ状態を表示し、分離時に数量とスクロールを保持します。サーバー終了通知に再返信しません。

1. GetShopList

先に目的のNPCで購入または売却を開き、サーバーの提示を待ちます。商人検索、取引開始、自分のvendorの値付け、コンテナ間移動は行いません。商人ID引数はなく、最後の提示を使います。

Array of String、添字は0から。行はserial|graphic|hue|amount|price|name。serialは商品行ID、graphicは種類、hueは色で、この3項目は0x表記です。amountは提示数量から画面の下書き選択を引いた単位数、priceは単価です。取引がなければ空配列、Booleanではありません。区切りは先頭5個の|だけで、残りは名前です。名前にも|が含まれ得ます。

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

2. SessionShop.GetItems

読み取りは通信しません。受信データのスナップショットで、現在の在庫を保証しません。amountは単位数、GetArrayLength(rows)は行数です。SendShopReplyに価格は渡せません。

マネージャーは画面がなくてもセッションに提示と下書きを保持し、画面を開き直すと復元します。店自体を閉じる、応答、サーバーの終了通知、切断で提示はなくなります。Bad Newbie自動売買が先に処理する場合があります。

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

読み取りは通信しません。受信データのスナップショットで、現在の在庫を保証しません。amountは単位数、GetArrayLength(rows)は行数です。SendShopReplyに価格は渡せません。

使用例

先頭行の項目を読む

# 先頭行の項目を読む
#
# 最後の有効なNPC商人の提示商品を読み、購入・売却前に種類、数量、価格を確認します。
#
# Array of
# String、添字は0から。行はserial|graphic|hue|amount|price|name。serialは商品行ID、graphicは種類、hueは色で、この3項目は0x表記です。amountは提示数量から画面の下書き選択を引いた単位数、priceは単価です。取引がなければ空配列、Booleanではありません。区切りは先頭5個の|だけで、残りは名前です。名前にも|が含まれ得ます。

SUB Main()
    # GetWordは0がserial、1がgraphic、2がhue、3が数量、4が価格。rows[0]の前に長さを確認します。

    VAR rows = UO.GetShopList()
    IF GetArrayLength(rows) = 0 THEN
        RETURN
    END IF
    VAR serial = GetWord(rows[0], 0, "|")
    VAR itemType = GetWord(rows[0], 1, "|")
    VAR amount = CInt(GetWord(rows[0], 3, "|"))
    VAR price = CDbl(GetWord(rows[0], 4, "|"))
    UO.Print(serial + " / " + itemType + " / " + CStr(amount) + " / " + CStr(price))
END SUB

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

  • GetWordは0がserial、1がgraphic、2がhue、3が数量、4が価格。rows[0]の前に長さを確認します。

単価上限付きで包帯を最大10個購入

# 単価上限付きで包帯を最大10個購入
#
# 最後の有効なNPC商人の提示商品を読み、購入・売却前に種類、数量、価格を確認します。
#
# Array of
# String、添字は0から。行はserial|graphic|hue|amount|price|name。serialは商品行ID、graphicは種類、hueは色で、この3項目は0x表記です。amountは提示数量から画面の下書き選択を引いた単位数、priceは単価です。取引がなければ空配列、Booleanではありません。区切りは先頭5個の|だけで、残りは名前です。名前にも|が含まれ得ます。

SUB Main()
    # 開いた購入提示専用。0x0E21は包帯、5は単価上限、10は数量上限。最初の該当行の実際のserialを使います。

    VAR rows = UO.GetShopList()
    FOR VAR i = 0 TO GetArrayLength(rows) - 1
        VAR row = rows[i]
        IF GetWord(row, 1, "|") = "0x0E21" THEN
            VAR price = CDbl(GetWord(row, 4, "|"))
            VAR amount = CInt(GetWord(row, 3, "|"))
            IF price > 0 AND price <= 5 AND amount > 0 THEN
                IF amount > 10 THEN
                    amount = 10
                END IF
                UO.SendShopReply(GetWord(row, 0, "|") + ":" + CStr(amount))
                RETURN
            END IF
        END IF
    NEXT
END SUB

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

  • 開いた購入提示専用。0x0E21は包帯、5は単価上限、10は数量上限。最初の該当行の実際のserialを使います。

種類別在庫を数える

# 種類別在庫を数える
#
# 最後の有効なNPC商人の提示商品を読み、購入・売却前に種類、数量、価格を確認します。
#
# Array of
# String、添字は0から。行はserial|graphic|hue|amount|price|name。serialは商品行ID、graphicは種類、hueは色で、この3項目は0x表記です。amountは提示数量から画面の下書き選択を引いた単位数、priceは単価です。取引がなければ空配列、Booleanではありません。区切りは先頭5個の|だけで、残りは名前です。名前にも|が含まれ得ます。

SUB Main()
    # 補助関数全体を掲載。種類が一致する全行のamountを合算し、空なら0。所持品や生き物の数ではなく購入可能単位数です。

    VAR available = CountOfferedType("0x0E21")
    IF available < 10 THEN
        UO.Print("Bandage stock below 10: " + CStr(available))
    END IF
END SUB

FUNCTION CountOfferedType(itemType)
    VAR total = 0
    VAR rows = UO.GetShopList()
    FOR VAR i = 0 TO GetArrayLength(rows) - 1
        IF GetWord(rows[i], 1, "|") = itemType THEN
            total = total + CInt(GetWord(rows[i], 3, "|"))
        END IF
    NEXT
    RETURN total
END FUNCTION

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

  • 補助関数全体を掲載。種類が一致する全行のamountを合算し、空なら0。所持品や生き物の数ではなく購入可能単位数です。

Shop lists / Списки покупки и продажи

Shop lists / Списки покупки и продажи

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

Clone this wiki locally