class Window_ItemCommand < Window_Command attr_accessor :calling_window def initialize(width, commands) super(width, commands) @item = nil @calling_window = nil self.z = 120 self.active = false self.visible = false end def item=(item) @item = item refresh end def refresh self.contents.clear (0...@item_max).each do |i| draw_item(i, normal_color) end unless @item.is_a?(RPG::Item) && $game_party.item_can_use?(@item.id) disable_item(0) end end def adjust_position if @calling_window.nil? return end if @calling_window.cursor_y + 32 + self.height < 480 self.y = @calling_window.cursor_y + 32 else self.y = @calling_window.cursor_y - self.height end self.x = @calling_window.cursor_x end end class Window_Selectable def cursor_x cursor_width = self.width / @column_max - 32 x = @index % @column_max * (cursor_width + 32) + self.x + 16 return x end def cursor_y y = @index / @column_max * 32 - self.oy + self.y + 16 return y end end class Window_Dump < Window_Base def initialize super(0, 0, 176, 96) self.contents = Bitmap.new(width - 32, height - 32) self.x = 320 - width / 2 self.y = 240 - height / 2 self.z = 200 self.active = false self.visible = false @max = 1 @number = 1 end def set(max) @max = max @number = 1 refresh end def number return @number end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(0, 0, 144, 32, "输入丢弃个数") self.contents.font.color = normal_color self.contents.draw_text(72, 32, 32, 32, "×") self.contents.draw_text(104, 32, 24, 32, @number.to_s, 2) self.cursor_rect.set(100, 32, 32, 32) end def update super if self.active # 光标右 (+1) if Input.repeat?(Input::RIGHT) and @number < @max $game_system.se_play($data_system.cursor_se) @number += 1 refresh end # 光标左 (-1) if Input.repeat?(Input::LEFT) and @number > 1 $game_system.se_play($data_system.cursor_se) @number -= 1 refresh end # 光标上 (+10) if Input.repeat?(Input::UP) and @number < @max $game_system.se_play($data_system.cursor_se) @number = [@number + 10, @max].min refresh end # 光标下 (-10) if Input.repeat?(Input::DOWN) and @number > 1 $game_system.se_play($data_system.cursor_se) @number = [@number - 10, 1].max refresh end end end end class Scene_Item alias rb_main main def main @dump_window = Window_Dump.new @command_window = Window_ItemCommand.new(108, ["使用", "丢弃"]) rb_main @dump_window.dispose @command_window.dispose end def update @command_window.calling_window = @item_window @dump_window.update @command_window.update @help_window.update @item_window.update @target_window.update if @item_window.active update_item return end if @target_window.active update_target return end if @command_window.active update_command return end if @dump_window.active update_dump return end end def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) @item = @item_window.item if @item.nil? $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @command_window.item = @item @command_window.adjust_position @command_window.index = 0 @command_window.active = true @command_window.visible = true @item_window.active = false return end end def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.visible = false @command_window.active = false @item_window.active = true return end if Input.trigger?(Input::C) case @command_window.index when 0 unless @item.is_a?(RPG::Item) && $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @command_window.active = false @command_window.visible = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @item_window.draw_item(@item_window.index) end $scene = Scene_Map.new return end end when 1 case @item when RPG::Item number = $game_party.item_number(@item.id) when RPG::Weapon number = $game_party.weapon_number(@item.id) when RPG::Armor number = $game_party.weapon_number(@item.id) end $game_system.se_play($data_system.decision_se) @dump_window.set(number) @dump_window.visible = true @dump_window.active = true @command_window.visible = false @command_window.active = false end end return end def update_dump if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @dump_window.visible = false @dump_window.active = false @command_window.active = true @command_window.visible = true return end if Input.trigger?(Input::C) $game_system.se_play($data_system.shop_se) number = @dump_window.number case @item when RPG::Item $game_party.lose_item(@item.id, number) when RPG::Weapon $game_party.lose_weapon(@item.id, number) when RPG::Armor $game_party.lose_armor(@item.id, number) end @dump_window.visible = false @dump_window.active = false @item_window.active = true @item_window.refresh return end end end
QQ截图20150731111912.png (4.25 KB, 下载次数: 13)
4
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |