-
Notifications
You must be signed in to change notification settings - Fork 0
API UO SendShopReply ja
ClassicUO / Basic IDE
最後の有効な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は同じ状態を表示し、分離時に数量とスクロールを保持します。サーバー終了通知に再返信しません。
先に目的のNPCで購入または売却を開き、サーバーの提示を待ちます。商人検索、取引開始、自分のvendorの値付け、コンテナ間移動は行いません。商人ID引数はなく、最後の提示を使います。
文字列"serial:quantity"。複数行は|、;、カンマで区切り、:の代わりに=も使えます。serialはGetShopListの商品行ID(10進または0x)で、種類や商人IDではありません。quantityは正の整数の単位数で、山の数ではなく省略時1。大文字小文字を問わない"accept"または"1"は下書きを確定し、空文字列は空の応答で取り消します。
プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 SendShopReply.
明示リストは下書きを置き換えます。同じserialは数量を合算し、提示全数量で上限を設けます。不明なID、不正または0以下の数量は応答全体を送信前に拒否し、提示を保持します。提示がないSendShopReplyはエラー。"0"は取消ではなく""を使います。
マネージャーは画面がなくてもセッションに提示と下書きを保持し、画面を開き直すと復元します。店自体を閉じる、応答、サーバーの終了通知、切断で提示はなくなります。Bad Newbie自動売買が先に処理する場合があります。
プロジェクトのソース: src/ClassicUO.Client/Game/Managers/SessionShops.cs; 関数 SessionShop.ParseSelection/Reply.
Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。
# 先頭行から最大3個を選ぶ
#
# 最後の有効なNPC取引へ商品選択を送ります。購入か売却かは開いた取引の種類で決まります。
#
# Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。
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取引へ商品選択を送ります。購入か売却かは開いた取引の種類で決まります。
#
# Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。
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取引へ商品選択を送ります。購入か売却かは開いた取引の種類で決まります。
#
# Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。
SUB Main()
# 先に店の画面で数量を選択。"accept"は画面を閉じても残る下書きを確定します。未選択なら空の応答。"1"も確定の別名です。
UO.SendShopReply("accept")
END SUBパラメーターと実行の説明:
- 先に店の画面で数量を選択。"accept"は画面を閉じても残る下書きを確定します。未選択なら空の応答。"1"も確定の別名です。
# 提示を取り消す
#
# 最後の有効なNPC取引へ商品選択を送ります。購入か売却かは開いた取引の種類で決まります。
#
# Unit:値、Boolean、合計額、購入確認を返しません。サーバーが可否を決めるので、その後の所持品、金額、メッセージを確認してください。
SUB Main()
# 空文字列は空の応答を送り提示を閉じます。GetShopListでは空の提示と提示なしを区別できません。
IF GetArrayLength(UO.GetShopList()) > 0 THEN
UO.SendShopReply("")
END IF
END SUBパラメーターと実行の説明:
- 空文字列は空の応答を送り提示を閉じます。GetShopListでは空の提示と提示なしを区別できません。
Shop lists / Списки покупки и продажи
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь