#============================================================================== # ■ Scene_Menu #------------------------------------------------------------------------------ # 处理菜单画面的类。 #============================================================================== class Scene_Menu #-------------------------------------------------------------------------- # ● 初始化对像 # menu_index : 命令光标的初期位置 #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main # 生成命令窗口 @command_window = Window_Menu.new#(160, [s1, s2, s3, s4, s5, s6]) @command_window.index = @menu_index # 同伴人数为 0 的情况下 if $game_party.actors.size == 0 # 物品、特技、装备、状态无效化 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end # 禁止存档的情况下 if $game_system.save_disabled # 存档无效 @command_window.disable_item(4) end # @window_equips = nil # 生成金钱窗口 @gold_window = Window_Gold.new @gold_window.x = 0 @gold_window.y = 632 # 生成状态窗口 @status_window = Window_MenuStatus.new @status_window.x = 0 @status_window.y = 64 # 执行过渡 Graphics.transition # 主循环 loop do # 刷新游戏画面 Graphics.update # 刷新输入信息 Input.update # 刷新画面 update # 如果切换画面就中断循环 if $scene != self break end end # 准备过渡 Graphics.freeze # 释放窗口 @command_window.dispose # @playtime_window.dispose # @equipRight_window.dispose @gold_window.dispose @status_window.dispose @window_crystal_command.dispose if @window_crystal_command != nil #显示回路装备菜单的背景 @window_crystal_back.dispose if @window_crystal_back != nil #显示可以装备的回路 @window_crystal_item.dispose if @window_crystal_item != nil #显示角色现在所拥有的属性 @window_crystal_elements.dispose if @window_crystal_elements != nil #显示装备回路后所学会的魔法 @window_crystal_magic.dispose if @window_crystal_magic != nil end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update # 刷新窗口 @command_window.update @command_window.refresh # @playtime_window.update # @equipRight_window.update @gold_window.update @status_window.update #刷新装备窗口 if @window_equips_item != nil and @window_equips_item.active @window_equips_item.update @window_equips.update_cur update_window_equips_item return end #显示人物现在装备的回路 if @window_crystal_command != nil and @window_crystal_command.active @window_crystal_command.update @window_crystal_command.update_cur @window_crystal_back.update_cur update_window_crystal_command return end #显示可以装备的回路 if @window_crystal_item != nil and @window_crystal_item.active @window_crystal_item.update @window_crystal_command.update_cur @window_crystal_back.update_cur update_window_crystal_item return end #显示装备回路后所学得的魔法 if @window_crystal_magic != nil and @window_crystal_magic.active @window_crystal_magic.update update_window_crystal_magic return end # 命令窗口被激活的情况下: 调用 update_command if @command_window.active update_command return end # 状态窗口被激活的情况下: 调用 update_status if @status_window.active update_status return end end #-------------------------------------------------------------------------- # ● 刷新画面 (命令窗口被激活的情况下) #-------------------------------------------------------------------------- def update_command # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 切换的地图画面 $scene = Scene_Map.new return end # 按下 C 键的情况下 if Input.trigger?(Input::C) # 同伴人数为 0、存档、游戏结束以外的场合 if $game_party.actors.size == 0 and @command_window.index < 4 # 演奏冻结 SE $game_system.se_play($data_system.buzzer_se) return end # 命令窗口的光标位置分支 case @command_window.index when 0 # 装备 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 激活状态窗口 @command_window.active = false @status_window.active = true @status_window.index = 0 when 1 # 特技 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 激活状态窗口 @command_window.active = false @status_window.active = true @status_window.index = 0 # when 2 # 装备 # 演奏确定 SE # $game_system.se_play($data_system.decision_se) # 激活状态窗口 # @command_window.active = false # @status_window.active = true # @status_window.index = 0 when 3 # 状态 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 激活状态窗口 @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # 物品 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到物品画面 $scene = Scene_Item.new when 5 # 存档 # 禁止存档的情况下 if $game_system.save_disabled # 演奏冻结 SE $game_system.se_play($data_system.buzzer_se) return end # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到存档画面 $scene = Scene_Save.new when 6 # 游戏结束 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到游戏结束画面 $scene = Scene_End.new when 7 # 状态 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 激活状态窗口 @command_window.active = false @status_window.active = true @status_window.index = 0 end return end end #-------------------------------------------------------------------------- # ● 刷新画面 (状态窗口被激活的情况下) #-------------------------------------------------------------------------- def update_status # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 激活命令窗口 @command_window.active = true @status_window.active = false @status_window.index = -1 return end # 按下 C 键的情况下 if Input.trigger?(Input::C) # 命令窗口的光标位置分支 case @command_window.index when 0 # 状态 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换的装备画面 $scene = Scene_Equip.new(@status_window.index) when 7 # 特技 # 本角色的行动限制在 2 以上的情况下 if $game_party.actors[@status_window.index].restriction >= 2 # 演奏冻结 SE $game_system.se_play($data_system.buzzer_se) return end # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到特技画面 $scene = Scene_Skill.new(@status_window.index) # when 2 # 装备 # 演奏确定 SE # $game_system.se_play($data_system.decision_se) # 切换的装备画面 # $scene = Scene_Equip.new(@status_window.index) when 3 # 状态 # 演奏确定 SE $game_system.se_play($data_system.decision_se) # 切换到状态画面 $scene = Scene_Status.new(@status_window.index) end return end end end 没找到啊 |
$scene = Scene_Menu.new(4) 后面的4就是返回的位置了,把那个数字改为对应的就好 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-23 08:03
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.