Project1

标题: 显示窗口(子选项) [打印本页]

作者: 789456qwe    时间: 2013-6-24 10:26
标题: 显示窗口(子选项)
本帖最后由 789456qwe 于 2013-6-24 20:16 编辑

显示窗口(没改脚本)怎样修改
按回车键之后,第二个窗口显示(子选项)

152.PNG (105.99 KB, 下载次数: 11)

152.PNG

作者: heiwang1997    时间: 2013-6-30 21:05
把Scene_End里的command_window照抄过来就可以了
但注意Scene_Menu里已经有同名窗口了,再改个名字即可
以下内容覆盖Scene_Menu
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     menu_index : 命令光标的初期位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # 生成命令窗口
  19.     s1 = $data_system.words.item
  20.     s2 = $data_system.words.skill
  21.     s3 = $data_system.words.equip
  22.     s4 = "状态"
  23.     s5 = "存档"
  24.     s6 = "结束游戏"
  25.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
  26.     @command_window.index = @menu_index
  27.     # 同伴人数为 0 的情况下
  28.     if $game_party.actors.size == 0
  29.       # 物品、特技、装备、状态无效化
  30.       @command_window.disable_item(0)
  31.       @command_window.disable_item(1)
  32.       @command_window.disable_item(2)
  33.       @command_window.disable_item(3)
  34.     end
  35.     # 禁止存档的情况下
  36.     if $game_system.save_disabled
  37.       # 存档无效
  38.       @command_window.disable_item(4)
  39.     end
  40.     # 生成游戏时间窗口
  41.     @playtime_window = Window_PlayTime.new
  42.     @playtime_window.x = 0
  43.     @playtime_window.y = 224
  44.     # 生成步数窗口
  45.     @steps_window = Window_Steps.new
  46.     @steps_window.x = 0
  47.     @steps_window.y = 320
  48.     # 生成金钱窗口
  49.     @gold_window = Window_Gold.new
  50.     @gold_window.x = 0
  51.     @gold_window.y = 416
  52.     # 生成状态窗口
  53.     @status_window = Window_MenuStatus.new
  54.     @status_window.x = 160
  55.     @status_window.y = 0
  56.     # 生成结束窗口
  57.     s1 = "返回标题画面"
  58.     s2 = "退出"
  59.     s3 = "取消"
  60.     @end_window = Window_Command.new(192, [s1, s2, s3])
  61.     @end_window.x = 160
  62.     @end_window.y = 160
  63.     @end_window.visible = false
  64.     @end_window.active = false
  65.     @end_window.z = 1000
  66.     # 执行过渡
  67.     Graphics.transition
  68.     # 主循环
  69.     loop do
  70.       # 刷新游戏画面
  71.       Graphics.update
  72.       # 刷新输入信息
  73.       Input.update
  74.       # 刷新画面
  75.       update
  76.       # 如果切换画面就中断循环
  77.       if $scene != self
  78.         break
  79.       end
  80.     end
  81.     # 准备过渡
  82.     Graphics.freeze
  83.     # 释放窗口
  84.     @command_window.dispose
  85.     @playtime_window.dispose
  86.     @steps_window.dispose
  87.     @gold_window.dispose
  88.     @status_window.dispose
  89.     @end_window.dispose
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 刷新画面
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     # 刷新窗口
  96.     @command_window.update
  97.     @playtime_window.update
  98.     @steps_window.update
  99.     @gold_window.update
  100.     @status_window.update
  101.     @end_window.update
  102.     # 命令窗口被激活的情况下: 调用 update_command
  103.     if @command_window.active
  104.       update_command
  105.       return
  106.     end
  107.     # 状态窗口被激活的情况下: 调用 update_status
  108.     if @status_window.active
  109.       update_status
  110.       return
  111.     end
  112.     # 结束窗口被激活的情况下: 调用 update_end
  113.     if @end_window.active
  114.       update_end
  115.       return
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 刷新画面 (命令窗口被激活的情况下)
  120.   #--------------------------------------------------------------------------
  121.   def update_command
  122.     # 按下 B 键的情况下
  123.     if Input.trigger?(Input::B)
  124.       # 演奏取消 SE
  125.       $game_system.se_play($data_system.cancel_se)
  126.       # 切换的地图画面
  127.       $scene = Scene_Map.new
  128.       return
  129.     end
  130.     # 按下 C 键的情况下
  131.     if Input.trigger?(Input::C)
  132.       # 同伴人数为 0、存档、游戏结束以外的场合
  133.       if $game_party.actors.size == 0 and @command_window.index < 4
  134.         # 演奏冻结 SE
  135.         $game_system.se_play($data_system.buzzer_se)
  136.         return
  137.       end
  138.       # 命令窗口的光标位置分支
  139.       case @command_window.index
  140.       when 0  # 物品
  141.         # 演奏确定 SE
  142.         $game_system.se_play($data_system.decision_se)
  143.         # 切换到物品画面
  144.         $scene = Scene_Item.new
  145.       when 1  # 特技
  146.         # 演奏确定 SE
  147.         $game_system.se_play($data_system.decision_se)
  148.         # 激活状态窗口
  149.         @command_window.active = false
  150.         @status_window.active = true
  151.         @status_window.index = 0
  152.       when 2  # 装备
  153.         # 演奏确定 SE
  154.         $game_system.se_play($data_system.decision_se)
  155.         # 激活状态窗口
  156.         @command_window.active = false
  157.         @status_window.active = true
  158.         @status_window.index = 0
  159.       when 3  # 状态
  160.         # 演奏确定 SE
  161.         $game_system.se_play($data_system.decision_se)
  162.         # 激活状态窗口
  163.         @command_window.active = false
  164.         @status_window.active = true
  165.         @status_window.index = 0
  166.       when 4  # 存档
  167.         # 禁止存档的情况下
  168.         if $game_system.save_disabled
  169.           # 演奏冻结 SE
  170.           $game_system.se_play($data_system.buzzer_se)
  171.           return
  172.         end
  173.         # 演奏确定 SE
  174.         $game_system.se_play($data_system.decision_se)
  175.         # 切换到存档画面
  176.         $scene = Scene_Save.new
  177.       when 5  # 游戏结束
  178.         # 演奏确定 SE
  179.         $game_system.se_play($data_system.decision_se)
  180.         # 切换到游戏结束画面
  181.         @command_window.active = false
  182.         @end_window.active = true
  183.         @end_window.visible = true
  184.         @end_window.index = 0
  185.       end
  186.       return
  187.     end
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● 刷新画面 (状态窗口被激活的情况下)
  191.   #--------------------------------------------------------------------------
  192.   def update_status
  193.     # 按下 B 键的情况下
  194.     if Input.trigger?(Input::B)
  195.       # 演奏取消 SE
  196.       $game_system.se_play($data_system.cancel_se)
  197.       # 激活命令窗口
  198.       @command_window.active = true
  199.       @status_window.active = false
  200.       @status_window.index = -1
  201.       return
  202.     end
  203.     # 按下 C 键的情况下
  204.     if Input.trigger?(Input::C)
  205.       # 命令窗口的光标位置分支
  206.       case @command_window.index
  207.       when 1  # 特技
  208.         # 本角色的行动限制在 2 以上的情况下
  209.         if $game_party.actors[@status_window.index].restriction >= 2
  210.           # 演奏冻结 SE
  211.           $game_system.se_play($data_system.buzzer_se)
  212.           return
  213.         end
  214.         # 演奏确定 SE
  215.         $game_system.se_play($data_system.decision_se)
  216.         # 切换到特技画面
  217.         $scene = Scene_Skill.new(@status_window.index)
  218.       when 2  # 装备
  219.         # 演奏确定 SE
  220.         $game_system.se_play($data_system.decision_se)
  221.         # 切换的装备画面
  222.         $scene = Scene_Equip.new(@status_window.index)
  223.       when 3  # 状态
  224.         # 演奏确定 SE
  225.         $game_system.se_play($data_system.decision_se)
  226.         # 切换到状态画面
  227.         $scene = Scene_Status.new(@status_window.index)
  228.       end
  229.       return
  230.     end
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 刷新画面 (结束窗口被激活的情况下)
  234.   #--------------------------------------------------------------------------
  235.   def update_end
  236.     # 刷新命令窗口
  237.     @command_window.update
  238.     # 按下 B 键的情况下
  239.     if Input.trigger?(Input::B)
  240.       # 演奏取消 SE
  241.       $game_system.se_play($data_system.cancel_se)
  242.       # 切换到菜单画面
  243.       @end_window.visible = false
  244.       @end_window.active = false
  245.       @command_window.active = true
  246.       return
  247.     end
  248.     # 按下 C 键的场合下
  249.     if Input.trigger?(Input::C)
  250.       # 命令窗口光标位置分支
  251.       case @end_window.index
  252.       when 0  # 返回标题画面
  253.         command_to_title
  254.       when 1  # 退出
  255.         command_shutdown
  256.       when 2  # 取消
  257.         command_cancel
  258.       end
  259.       return
  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● 选择命令 [返回标题画面] 时的处理
  264.   #--------------------------------------------------------------------------
  265.   def command_to_title
  266.     # 演奏确定 SE
  267.     $game_system.se_play($data_system.decision_se)
  268.     # 淡入淡出 BGM、BGS、ME
  269.     Audio.bgm_fade(800)
  270.     Audio.bgs_fade(800)
  271.     Audio.me_fade(800)
  272.     # 切换到标题画面
  273.     $scene = Scene_Title.new
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 选择命令 [退出] 时的处理
  277.   #--------------------------------------------------------------------------
  278.   def command_shutdown
  279.     # 演奏确定 SE
  280.     $game_system.se_play($data_system.decision_se)
  281.     # 淡入淡出 BGM、BGS、ME
  282.     Audio.bgm_fade(800)
  283.     Audio.bgs_fade(800)
  284.     Audio.me_fade(800)
  285.     # 退出
  286.     $scene = nil
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 选择命令 [取消] 时的处理
  290.   #--------------------------------------------------------------------------
  291.   def command_cancel
  292.     # 演奏确定 SE
  293.     $game_system.se_play($data_system.decision_se)
  294.     # 切换到菜单画面
  295.     @end_window.visible = false
  296.     @end_window.active = false
  297.     @command_window.active = true
  298.   end
  299. end
复制代码
自寻亮点
作者: 789456qwe    时间: 2013-7-3 22:14
heiwang1997 发表于 2013-6-30 21:05
把Scene_End里的command_window照抄过来就可以了
但注意Scene_Menu里已经有同名窗口了,再改个名字即可
以 ...

{:2_249:} 多谢!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1