=begin ■ショップ機能拡張(大人買い、大人売り) RGSS2 DAIpage■ ●機能と使い方● ★機能★ ・通常のショップと変わりませんが、設定した数以上をまとめて売買すると  お得になります。FFみたいな感じですね。   ★設定★ ・カスタマイズポイントで個数・割引パーセンテージを設定します。 ・デフォルトだと30個以上まとめて買うと5%、30個以上まとめて売ると5%お得に  なります。 ・パーセンテージを100に設定することで「購入のみ」「売却のみ」のようにどちらかを  無効にできます。 ★仕様★ ・このスクリプトを導入するとゲーム内全ての通常ショップに効果が適用されます。 ●再定義している箇所● Scene_Shop、Window_ShopNumberを再定義。  ※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。 =end #============================================================================== # カスタマイズポイント #============================================================================== module DAI DISCOUNT_NUMBER = 30 # 購入時に割引になる境界個数(○個以上) DISCOUNT_RATE = 95 # 購入時の割引率(○%) PURCHASE_NUMBER = 30 # 売却時の割引になる境界個数(○個以上) PURCHASE_RATE = 105 # 売却時の割増率(○%) end #============================================================================== # ■ Scene_Shop #------------------------------------------------------------------------------ #  ショップ画面の処理を行うクラスです。 #============================================================================== class Scene_Shop < Scene_Base #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :buy_or_sell # 購入か売却かを記憶します #-------------------------------------------------------------------------- # ● コマンド選択の更新(再定義) #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) # キャンセルキーが押された場合 Sound.play_cancel # キャンセルSEを演奏 @buy_or_sell = [] # 一応MAPに戻る前に初期化 $scene = Scene_Map.new # MAPに戻る elsif Input.trigger?(Input::C) # 決定キーが押された場合 case @command_window.index when 0 # 購入する Sound.play_decision # 決定SEを演奏 @command_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true @buy_or_sell = 1 # ショップの状態(購入)を記憶 when 1 # 売却する if $game_temp.shop_purchase_only # 購入のみショップだった場合 Sound.play_buzzer # ブザーSEを演奏 else Sound.play_decision # 決定SEを演奏 @command_window.active = false @dummy_window.visible = false @sell_window.active = true @sell_window.visible = true @sell_window.refresh @buy_or_sell = 2 # ショップの状態(売却)を記憶 end when 2 # やめる Sound.play_decision # 決定SEを演奏 @buy_or_sell = [] # 一応MAPに戻る前に初期化 $scene = Scene_Map.new # MAPに戻る end end end #-------------------------------------------------------------------------- # ● 個数入力の決定 #-------------------------------------------------------------------------- def decide_number_input Sound.play_shop @number_window.active = false @number_window.visible = false case @command_window.index when 0 # 購入する # 購入時に取引量が所定数を上回れば価格変更、ゴールドを操作 if @number_window.number >= DAI::DISCOUNT_NUMBER $game_party.lose_gold(@number_window.number * (@item.price * DAI::DISCOUNT_RATE).round / 100) else $game_party.lose_gold(@number_window.number * @item.price) end $game_party.gain_item(@item, @number_window.number) # アイテムを増やす @gold_window.refresh @buy_window.refresh @status_window.refresh @buy_window.active = true @buy_window.visible = true when 1 # 売却する # 売却時に取引量が所定数を上回れば価格変更、ゴールドを操作 if @number_window.number >= DAI::DISCOUNT_NUMBER $game_party.gain_gold(@number_window.number * ((@item.price / 2) * DAI::PURCHASE_RATE).round / 100) else $game_party.gain_gold(@number_window.number * (@item.price / 2)) end $game_party.lose_item(@item, @number_window.number) # アイテムを減らす @gold_window.refresh @sell_window.refresh @status_window.refresh @sell_window.active = true @sell_window.visible = true @status_window.visible = false end end end #============================================================================== # ■ Window_ShopNumber #------------------------------------------------------------------------------ #  ショップ画面で、購入または売却するアイテムの個数を入力するウィンドウです。 #============================================================================== class Window_ShopNumber < Window_Base #-------------------------------------------------------------------------- # ● リフレッシュ(再定義) #-------------------------------------------------------------------------- def refresh y = 96 self.contents.clear draw_item_name(@item, 0, y) self.contents.font.color = normal_color self.contents.draw_text(212, y, 20, WLH, "×") self.contents.draw_text(248, y, 20, WLH, @number, 2) self.cursor_rect.set(244, y, 28, WLH) pri_1 = @price * @number # 通常価格 pri_2 = @number * (@price * DAI::DISCOUNT_RATE).round / 100 # お得購入価格 pri_3 = @number * (@price * DAI::PURCHASE_RATE).round / 100 # お得売却価格 if @buy_or_sell == 1 # ショップ状態が購入か? if @number >= DAI::DISCOUNT_NUMBER # 購入量が設定値以上 draw_currency_value(pri_2, 4, y + WLH * 2, 264) # 価格を変更 else draw_currency_value(pri_1, 4, y + WLH * 2, 264) # 通常価格 end else # ショップ状態が売却か? if @number >= DAI::PURCHASE_NUMBER # 売却量が設定値以上 draw_currency_value(pri_3, 4, y + WLH * 2, 264) # 価格を変更 else draw_currency_value(pri_1, 4, y + WLH * 2, 264) # 通常価格 end end end end