Skip to content

API UO SendShopReply ja

Codex edited this page Sep 23, 2026 · 1 revision

UO.SendShopReply

ClassicUO / Basic IDE

Home · API · Trading

最後の有効なNPC取引へ商品選択を送ります。購入か売却かは開いた取引の種類で決まります。

正確な構文

UO.SendShopReply(reply:Any) -> Unit

パラメーター

  • reply — 文字列"serial:quantity"。複数行は|、;、カンマで区切り、:の代わりに=も使えます。serialはGetShopListの商品行ID(10進または0x)で、種類や商人IDではありません。quantityは正の整数の単位数で、山の数ではなく省略時1。大文字小文字を問わない"accept"または"1"は下書きを確定し、空文字列は空の応答で取り消します。

戻り値

Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。

動作

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

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

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

1. SendShopReply

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

文字列"serial:quantity"。複数行は|、;、カンマで区切り、:の代わりに=も使えます。serialはGetShopListの商品行ID(10進または0x)で、種類や商人IDではありません。quantityは正の整数の単位数で、山の数ではなく省略時1。大文字小文字を問わない"accept"または"1"は下書きを確定し、空文字列は空の応答で取り消します。

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

2. SessionShop.ParseSelection/Reply

明示リストは下書きを置き換えます。同じserialは数量を合算し、提示全数量で上限を設けます。不明なID、不正または0以下の数量は応答全体を送信前に拒否し、提示を保持します。提示がないSendShopReplyはエラー。"0"は取消ではなく""を使います。

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

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

Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。

使用例

先頭行から最大3個を選ぶ

# 先頭行から最大3個を選ぶ
#
# 最後の有効なNPC取引へ商品選択を送ります購入か売却かは開いた取引の種類で決まります#
# UnitBoolean合計額購入確認を返しませんサーバーが可否を決めるのでその後の所持品金額メッセージを確認してくださいSUB Main()
    # 実際の先頭行から最大3個購入提示なら購入売却提示なら売却です方向を先に確認してくださいVAR rows = UO.GetShopList()
    IF GetArrayLength(rows) = 0 THEN
        RETURN
    END IF
    VAR amount = CInt(GetWord(rows[0], 3, "|"))
    IF amount > 3 THEN
        amount = 3
    END IF
    IF amount > 0 THEN
        UO.SendShopReply(GetWord(rows[0], 0, "|") + ":" + CStr(amount))
    END IF
END SUB

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

  • 実際の先頭行から最大3個。購入提示なら購入、売却提示なら売却です。方向を先に確認してください。

予算内で選ぶ

# 予算内で選ぶ
#
# 最後の有効なNPC取引へ商品選択を送ります購入か売却かは開いた取引の種類で決まります#
# UnitBoolean合計額購入確認を返しませんサーバーが可否を決めるのでその後の所持品金額メッセージを確認してくださいSUB Main()
    # 購入専用予算30種類0x0E21正の価格が残予算内の行から1個ずつ選び、|で1つの応答にまとめますVAR budget = 30
    VAR reply = ""
    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 <= budget AND amount > 0 THEN
                IF reply <> "" THEN
                    reply = reply + "|"
                END IF
                reply = reply + GetWord(row, 0, "|") + ":1"
                budget = budget - price
            END IF
        END IF
    NEXT
    IF reply <> "" THEN
        UO.SendShopReply(reply)
    END IF
END SUB

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

  • 購入専用。予算30、種類0x0E21。正の価格が残予算内の行から1個ずつ選び、|で1つの応答にまとめます。

画面の下書きを確定

# 画面の下書きを確定
#
# 最後の有効なNPC取引へ商品選択を送ります購入か売却かは開いた取引の種類で決まります#
# UnitBoolean合計額購入確認を返しませんサーバーが可否を決めるのでその後の所持品金額メッセージを確認してくださいSUB Main()
    # 先に店の画面で数量を選択"accept"は画面を閉じても残る下書きを確定します未選択なら空の応答"1"も確定の別名ですUO.SendShopReply("accept")
END SUB

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

  • 先に店の画面で数量を選択。"accept"は画面を閉じても残る下書きを確定します。未選択なら空の応答。"1"も確定の別名です。

提示を取り消す

# 提示を取り消す
#
# 最後の有効なNPC取引へ商品選択を送ります購入か売却かは開いた取引の種類で決まります#
# UnitBoolean合計額購入確認を返しませんサーバーが可否を決めるのでその後の所持品金額メッセージを確認してくださいSUB Main()
    # 空文字列は空の応答を送り提示を閉じますGetShopListでは空の提示と提示なしを区別できませんIF GetArrayLength(UO.GetShopList()) > 0 THEN
        UO.SendShopReply("")
    END IF
END SUB

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

  • 空文字列は空の応答を送り提示を閉じます。GetShopListでは空の提示と提示なしを区別できません。

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

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

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

Clone this wiki locally