#============================================================================== # ■ ショップ画面 商品分類 ver 1.01 #------------------------------------------------------------------------------ #  配布元: # 白の魔 http://www12.plala.or.jp/izumiizayoi/tkool/ # #  利用規約: # RPGツクールVXの正規の登録者のみご利用になれます。 # 利用報告・著作権表示とかは必要ありません。 # 改造もご自由にどうぞ。 # 何か問題が発生しても責任は持ちません。 #============================================================================== #-------------------------------------------------------------------------- # ★ 初期設定。 # ショップ画面で表示されるコマンド名を指定します。 #-------------------------------------------------------------------------- module WD_categorizeshop_ini Item_command = "道具" #道具のコマンド名 Weapon_command = "武器" #武器のコマンド名 Armor_command = "防具" #防具のコマンド名 end #-------------------------------------------------------------------------- # ★ 初期設定おわり #-------------------------------------------------------------------------- class Scene_Shop < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @help_window = Window_Help.new @gold_window = Window_Gold.new(384, 56) @dummy_window = Window_Base.new(0, 112, 544, 304) @buy_window = Window_ShopBuy.new(0, 112) @buy_window.active = false @buy_window.visible = false @buy_window.help_window = @help_window @sell_window = Window_ShopSell.new(0, 112, 544, 304) @sell_window.active = false @sell_window.visible = false @sell_window.help_window = @help_window @number_window = Window_ShopNumber.new(0, 112) @number_window.active = false @number_window.visible = false @status_window = Window_ShopStatus.new(304, 112) @status_window.visible = false create_categorize_window @categorize_window.active = false @categorize_window.visible = false end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super dispose_menu_background dispose_command_window @help_window.dispose @gold_window.dispose @dummy_window.dispose @buy_window.dispose @sell_window.dispose @number_window.dispose @status_window.dispose dispose_categorize_window end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super update_menu_background @help_window.update @command_window.update @gold_window.update @dummy_window.update @buy_window.update @sell_window.update @number_window.update @status_window.update @categorize_window.update if @command_window.active update_command_selection elsif @categorize_window.active update_categorize_selection elsif @buy_window.active update_buy_selection elsif @sell_window.active update_sell_selection elsif @number_window.active update_number_input end end #-------------------------------------------------------------------------- # ● コマンド選択の更新 #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) case @command_window.index when 0 # 購入する Sound.play_decision @command_window.active = false @categorize_window.active = true @categorize_window.visible = true when 1 # 売却する if $game_temp.shop_purchase_only Sound.play_buzzer else Sound.play_decision @command_window.active = false @dummy_window.visible = false @sell_window.active = true @sell_window.visible = true @sell_window.refresh end when 2 # やめる Sound.play_decision $scene = Scene_Map.new end end end #-------------------------------------------------------------------------- # ● 購入アイテム選択の更新 #-------------------------------------------------------------------------- def update_buy_selection @status_window.item = @buy_window.item if Input.trigger?(Input::B) Sound.play_cancel @categorize_window.active = true @categorize_window.visible = true @dummy_window.visible = true @buy_window.active = false @buy_window.visible = false @status_window.visible = false @status_window.item = nil @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @buy_window.item number = $game_party.item_number(@item) if @item == nil or @item.price > $game_party.gold or number == 99 Sound.play_buzzer else Sound.play_decision max = @item.price == 0 ? 99 : $game_party.gold / @item.price max = [max, 99 - number].min @buy_window.active = false @buy_window.visible = false @number_window.set(@item, max, @item.price) @number_window.active = true @number_window.visible = true end end end #-------------------------------------------------------------------------- # ● コマンドウィンドウの作成 #-------------------------------------------------------------------------- def create_categorize_window s1 = WD_categorizeshop_ini::Item_command s2 = WD_categorizeshop_ini::Weapon_command s3 = WD_categorizeshop_ini::Armor_command @categorize_window = Window_Command.new(304, [s1, s2, s3], 3) @categorize_window.y = 112 if check_goods(0) == false @categorize_window.draw_item(0, false) end if check_goods(1) == false @categorize_window.draw_item(1, false) end if check_goods(2) == false @categorize_window.draw_item(2, false) end end #-------------------------------------------------------------------------- # ● コマンドウィンドウの解放 #-------------------------------------------------------------------------- def dispose_categorize_window @categorize_window.dispose end #-------------------------------------------------------------------------- # ● コマンド選択の更新 #-------------------------------------------------------------------------- def update_categorize_selection if Input.trigger?(Input::B) Sound.play_cancel @command_window.active = true @categorize_window.active = false @categorize_window.visible = false elsif Input.trigger?(Input::C) case @categorize_window.index when 0 # 道具 if check_goods(0) == false Sound.play_buzzer else Sound.play_decision @buy_window.category(0) @categorize_window.active = false @categorize_window.visible = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true end when 1 # 武器 if check_goods(1) == false Sound.play_buzzer else Sound.play_decision @buy_window.category(1) @categorize_window.active = false @categorize_window.visible = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true end when 2 # 防具 if check_goods(2) == false Sound.play_buzzer else Sound.play_decision @buy_window.category(2) @categorize_window.active = false @categorize_window.visible = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true end end end end #-------------------------------------------------------------------------- # ● 商品の有無の判別 #-------------------------------------------------------------------------- def check_goods(category) data = [] for goods_item in $game_temp.shop_goods item = nil case goods_item[0] when 0 item = $data_items[goods_item[1]] if category == 0 when 1 item = $data_weapons[goods_item[1]] if category == 1 when 2 item = $data_armors[goods_item[1]] if category == 2 end if item != nil data.push(item) end end return true if data.size > 0 return false if data.size == 0 end end class Window_ShopBuy < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 304, 304) @shop_goods = $game_temp.shop_goods refresh self.index = 0 end def refresh @data = [] for goods_item in @shop_goods item = nil case goods_item[0] when 0 item = $data_items[goods_item[1]] if @category == 0 when 1 item = $data_weapons[goods_item[1]] if @category == 1 when 2 item = $data_armors[goods_item[1]] if @category == 2 end if item != nil @data.push(item) end end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # ● 商品の種類の指定 #-------------------------------------------------------------------------- def category(i) @category = i @index = 0 if @category != @last_category @last_category = i end end