设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1863|回复: 7
打印 上一主题 下一主题

[已经过期] 液..轩辕剑菜单美化怎么取消合成功能..

 关闭 [复制链接]

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
跳转到指定楼层
1
发表于 2011-6-1 14:34:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 魔之哆啦 于 2011-6-1 14:36 编辑
  1. #==============================================================================
  2. # ■ 仿轩辕剑式的菜单(美化&加强)--By whbm
  3. #==============================================================================
  4. # ■ 仿轩辕剑式的菜单--By 亿万星辰
  5. #==============================================================================
  6. # ■ Scene_Menu
  7. #------------------------------------------------------------------------------
  8. #  处理菜单画面的类。
  9. #==============================================================================

  10. class Scene_Menu
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化对像
  13.   #     menu_index : 命令光标的初期位置
  14.   #--------------------------------------------------------------------------
  15.   def initialize(menu_index = 0)
  16.     @menu_index = menu_index
  17.     @item_update = false
  18.     @skill_update = false
  19.     @equip_update = false
  20.     @status_update = false
  21.     @sys_update = false
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 主处理
  25.   #--------------------------------------------------------------------------
  26.   def main
  27.     #----------------------------- 主菜单 -----------------------------------
  28.     # 生成命令窗口
  29.     @command_window = Window_MenuCommand.new(@menu_index)
  30.     #........................................................................
  31.     @command_window.contents = Bitmap.new("Graphics/System/menu/bar.png")
  32.     @command_window.width = 672
  33.     @command_window.height = 128
  34.     @command_window.x = -16
  35.     @command_window.y = -16
  36.     @command_window.opacity = 0 #whbm
  37.     #........................................................................
  38.     # 同伴人数为 0 的情况下
  39.     if $game_party.actors.size == 0
  40.       # 物品、特技、装备、状态无效化
  41.       @command_window.disable_item(0)
  42.       @command_window.disable_item(1)
  43.       @command_window.disable_item(2)
  44.       @command_window.disable_item(3)
  45.     end
  46.     # 禁止存档的情况下
  47.     if $game_system.save_disabled
  48.       # 存档无效
  49.       @command_window.disable_item(4)
  50.     end
  51.     # 生成金钱窗口
  52.     @gold_window = Window_Gold_Menu.new
  53.     @gold_window.x = 0
  54.     @gold_window.y = 416
  55.     @gold_window.opacity = 0
  56.     # 生成状态窗口
  57.     @status_window = Window_MenuStatus.new
  58.     #........................................................................
  59.     @back_status = Window_Help.new
  60.     @back_status.height = 480
  61.     @back_status.width = 208
  62.     @back_status.opacity = 0
  63.     @back_status.z = 1
  64.     @back_status.contents = Bitmap.new("Graphics/System/menu/角色底板.png")
  65.     @back_status.x = -16
  66.     @back_status.y = 16
  67.     #........................................................................
  68.     @status_window.x = 0
  69.     @status_window.y = 32
  70.     @status_window.z = 2
  71.     @status_window.opacity = 0
  72.     @status_window1 = Window_MenuEquip.new
  73.     @status_window1.x = 0
  74.     @status_window1.z = 2
  75.     @status_window1.opacity = 0
  76.     @status_window1.y = 32
  77.     @status_window1.visible = false
  78.     # 遮蔽窗口
  79.     @dummy_window = Window_Base.new(160, 64, 480, 416)
  80.     #........................................................................
  81.     @dummy_sprite = Sprite.new(Viewport.new(0,0,640 + 32,480 + 32))
  82.     @dummy_sprite.x = 0
  83.     @dummy_sprite.y = 0
  84.     @dummy_window.opacity = 0       #BSY
  85.     #........................................................................
  86.     @dummy_window.back_opacity = 0
  87.     @old_index = @menu_index
  88.     case @menu_index
  89.     when 0
  90.       @pic_now = 0
  91.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/item.png")
  92.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
  93.     when 1
  94.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/skill.png")
  95.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
  96.     when 2
  97.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/equip.png")
  98.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
  99.     when 3
  100.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/craft.png")
  101.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
  102.     when 4
  103.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/status.png")
  104.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
  105.     when 5
  106.       @command_window.contents = Bitmap.new("Graphics/System/menu/head/system.png")
  107.       @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
  108.     end
  109.     # 执行过渡
  110.     Graphics.transition
  111.     # 主循环
  112.     loop do
  113.       # 刷新游戏画面
  114.       Graphics.update
  115.       # 刷新输入信息
  116.       Input.update
  117.       # 刷新画面
  118.       update
  119.       # 如果切换画面就中断循环
  120.       if $scene != self
  121.         break
  122.       end
  123.     end
  124.     # 准备过渡
  125.     Graphics.freeze
  126.     # 释放窗口
  127.     @command_window.dispose
  128.     @gold_window.dispose
  129.     @status_window.dispose
  130.     @status_window1.dispose
  131.     @dummy_window.dispose
  132.     @dummy_sprite.dispose
  133.     #........................................................................
  134.     @back_status.dispose
  135.     #........................................................................
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 刷新画面
  139.   #--------------------------------------------------------------------------
  140.   def update
  141.     # 刷新窗口
  142.     #----------------------------- 主菜单 -----------------------------------
  143.     @command_window.update
  144.     @gold_window.update
  145.     if @command_window.index == 2
  146.       @status_window.visible = false
  147.       @status_window1.visible = true
  148.       @status_window1.update
  149.     else
  150.       @status_window.visible = true and @status_window1.visible = false if !@status_window.visible
  151.       @status_window.update
  152.     end
  153.     if @command_window.index != @old_index
  154.       case @command_window.index
  155.       when 0
  156.         if @pic_now != 0
  157.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/item.png")
  158.           @pic_now = 0
  159.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
  160.         end
  161.       when 1
  162.         if @pic_now != 1
  163.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/skill.png")
  164.           @pic_now = 1
  165.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
  166.         end
  167.       when 2
  168.         if @pic_now != 2
  169.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/equip.png")
  170.           @pic_now = 2
  171.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
  172.         end
  173.       when 3
  174.         if @pic_now != 3
  175.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/craft.png")
  176.           @pic_now = 3
  177.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
  178.         end
  179.       when 4
  180.         if @pic_now != 4
  181.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/status.png")
  182.           @pic_now = 4
  183.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
  184.         end
  185.       when 5
  186.         if @pic_now != 5
  187.           @command_window.contents = Bitmap.new("Graphics/System/menu/head/system.png")
  188.           @pic_now = 5
  189.           @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
  190.         end
  191.       end
  192.       @old_index = @command_window.index
  193.     end
  194.     # 命令窗口被激活的情况下: 调用 update_command
  195.     if @command_window.active
  196.       update_command
  197.       return
  198.     end
  199.     # 状态窗口被激活的情况下: 调用 update_status
  200.     if @status_window.active
  201.       if @item_update
  202.         update_item_target
  203.         return
  204.       elsif @skill_update
  205.         update_skill_target
  206.         return
  207.       else
  208.         update_status
  209.         return
  210.       end
  211.     end
  212.     if @status_window1.active
  213.       update_status1
  214.       return
  215.     end
  216.         
  217.     #----------------------------- 物品菜单 ---------------------------------
  218.     if @item_update
  219.       @item_help_window.update
  220.       @item_window.update
  221.       # 物品窗口被激活的情况下: 调用 update_item
  222.       if @item_window.active  
  223.       #........................................................................
  224.         @equip_window.set_item(@item_window.item)
  225.         @equip_window.refresh
  226.       #........................................................................
  227.         update_item
  228.         return
  229.       end
  230.     #----------------------------- 奇术菜单 ---------------------------------
  231.     elsif @skill_update
  232.       # 刷新窗口
  233.       @skill_help_window.update
  234.       @skill_window.update
  235.       # 特技窗口被激活的情况下: 调用 update_skill
  236.       if @skill_window.active
  237.         #........................................................................
  238.           @skill_window_icon.set_skill(@skill_window.skill)
  239.           @skill_window_icon.refresh
  240.         #........................................................................
  241.         update_skill
  242.         return
  243.       end
  244.     #----------------------------- 装备菜单 ---------------------------------
  245.     elsif @equip_update
  246.       @equip_right_window.update
  247.       @equip_item_window.update
  248.       # 设置物品窗口的可视状态
  249.       @equip_item_window1.visible = (@equip_right_window.index == 0)
  250.       @equip_item_window2.visible = (@equip_right_window.index == 1)
  251.       @equip_item_window3.visible = (@equip_right_window.index == 2)
  252.       @equip_item_window4.visible = (@equip_right_window.index == 3)
  253.       @equip_item_window5.visible = (@equip_right_window.index == 4)
  254.       @equip_item_window6.visible = (@equip_right_window.index == 5)
  255.       @equip_item_window7.visible = (@equip_right_window.index == 6)
  256.       @equip_item_window8.visible = (@equip_right_window.index == 7)
  257.       # 获取当前装备中的物品
  258.       item1 = @equip_right_window.item
  259.       #........................................................................
  260.         @equip_window.set_item(item1)
  261.       #........................................................................
  262.       # 设置当前的物品窗口到 @item_window
  263.       case @equip_right_window.index
  264.       when 0
  265.         @equip_item_window = @equip_item_window1
  266.       when 1
  267.         @equip_item_window = @equip_item_window2
  268.       when 2
  269.         @equip_item_window = @equip_item_window3
  270.       when 3
  271.         @equip_item_window = @equip_item_window4
  272.       when 4
  273.         @equip_item_window = @equip_item_window5
  274.       when 5
  275.         @equip_item_window = @equip_item_window6
  276.       when 6
  277.         @equip_item_window = @equip_item_window7
  278.       when 7
  279.         @equip_item_window = @equip_item_window8
  280.       end
  281.       # 右窗口被激活的情况下
  282.       if @equip_right_window.active
  283.         # 删除变更装备后的能力
  284.         @status_window1.set_new_parameters(nil, nil, nil, @status_window1.index)
  285.       end
  286.       # 物品窗口被激活的情况下
  287.       if @equip_item_window.active
  288.         # 获取现在选中的物品
  289.         item2 = @equip_item_window.item
  290.       #........................................................................
  291.         @equip_window.set_item(item2)
  292.       #........................................................................
  293.         # 变更装备
  294.         last_hp = @actor.hp
  295.         last_sp = @actor.sp
  296.         @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
  297.         # 获取变更装备后的能力值
  298.         new_atk = @actor.atk
  299.         new_pdef = @actor.pdef
  300.         new_mdef = @actor.mdef
  301.         # 返回到装备
  302.         @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
  303.         @actor.hp = last_hp
  304.         @actor.sp = last_sp
  305.         # 描画左窗口
  306.         @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef, @status_window1.index)
  307.       end
  308.     #........................................................................
  309.     @equip_window.refresh
  310.     #........................................................................
  311.       # 右侧窗口被激活的情况下: 调用 update_right
  312.       if @equip_right_window.active
  313.         update_right
  314.         return
  315.       end
  316.       # 物品窗口被激活的情况下: 调用 update_item
  317.       if @equip_item_window.active
  318.         update_equip_item
  319.         return
  320.       end
  321.     #----------------------------- 状态菜单 ---------------------------------
  322.     elsif @status_update
  323.       update_status_status
  324.       return
  325.     #----------------------------- 系统菜单 ---------------------------------
  326.     elsif @sys_update
  327.       if @end_window != nil and !@end_window.disposed?
  328.         update_end
  329.       elsif @bgm_window != nil and !@bgm_window.disposed? and @currentbgm_window != nil and !@currentbgm_window.disposed?
  330.         update_bgm
  331.       elsif @sfx_window != nil and !@sfx_window.disposed? and @currentsfx_window != nil and !@currentsfx_window.disposed?
  332.         update_sfx
  333.       elsif !@system_window.disposed?
  334.         update_system
  335.       end
  336.       return
  337.     end
  338.   end
  339.   
  340.   def update_command
  341.     # 按下 B 键的情况下
  342.     if Input.trigger?(Input::B)
  343.       # 演奏取消 SE
  344.       $game_system.se_play($data_system.cancel_se)
  345.       # 切换的地图画面
  346.       $scene = Scene_Map.new
  347.       return
  348.     end
  349.     # 按下 C 键的情况下
  350.     if Input.trigger?(Input::C)
  351.       # 同伴人数为 0、存档、游戏结束以外的场合
  352.       if $game_party.actors.size == 0 and @command_window.index < 4
  353.         # 演奏冻结 SE
  354.         $game_system.se_play($data_system.buzzer_se)
  355.         return
  356.       end
  357.       # 命令窗口的光标位置分支
  358.       case @command_window.index
  359.       when 0  # 物品
  360.         # 演奏确定 SE
  361.         $game_system.se_play($data_system.decision_se)
  362.         # 生成帮助窗口、物品窗口
  363.         @item_help_window = Window_Help_New.new
  364.         @item_window = Window_Item_New.new
  365.         @item_window.z = 2
  366.         @item_window.y = 32 + 3
  367.         @item_window.height = 352 + 32
  368.         @item_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  369.         @item_window.back_opacity = 180
  370.         #........................................................................
  371.         @equip_window = Window_Equip.new
  372.         #........................................................................
  373.         # 关联帮助窗口
  374.         @item_window.help_window = @item_help_window
  375.         # 生成目标窗口 (设置为不可见・不活动)

  376.         # 切换到物品画面
  377.         @item_update = true
  378.         @command_window.active = false
  379.       when 1  # 特技
  380.         # 演奏确定 SE
  381.         $game_system.se_play($data_system.decision_se)
  382.         # 激活状态窗口
  383.         @command_window.active = false
  384.         @status_window.active = true
  385.         @status_window.index = 0
  386.       when 2  # 装备
  387.         # 演奏确定 SE
  388.         $game_system.se_play($data_system.decision_se)
  389.         # 激活状态窗口
  390.         @command_window.active = false
  391.         @status_window1.active = true
  392.         @status_window1.index = 0
  393.       when 3  # 合成
  394.         #@stagg = -1
  395.         # 演奏确定 SE
  396.         $game_system.se_play($data_system.decision_se)
  397.         # 激活合成窗口
  398.         @command_window.active = false
  399.         loadcraft
  400.         @command_window.active = true
  401.       when 4  # 状态
  402.         @stagg = -1
  403.         # 演奏确定 SE
  404.         $game_system.se_play($data_system.decision_se)
  405.         # 激活状态窗口
  406.         @command_window.active = false
  407.         @status_window.active = true
  408.         @status_window.index = 0
  409.       when 5  # 存档
  410.         @status_update = false
  411.         # 演奏确定 SE
  412.         $game_system.se_play($data_system.decision_se)
  413.         @system_window = Window_SysCommand.new
  414.         @command_window.active = false
  415.         @sys_update = true
  416.       end
  417.       return
  418.     end
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   def loadcraft(craft_index = 0)
  422.     @scene = 100
  423.     @craft_window = Window_Craft.new
  424.     @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  425.     @craft_window.index = craft_index
  426.     @craft_window.back_opacity = 180
  427.     @confirm_window = Window_Base.new(120, 188, 400, 64)
  428.     @confirm_window.contents = Bitmap.new(368, 32)
  429.     @confirm_window.contents.font.name = "黑体"
  430.     @confirm_window.contents.font.size = 20
  431.     @confirm_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  432.     @confirm_window.back_opacity = 180
  433.     @help_window = Window_Help_New_Craft.new
  434.     #........................................................................
  435.     @equip_icon = Window_Equip_Craft.new
  436.     @equip_icon.set_item_id
  437.     #........................................................................
  438.     @craft_window.help_window = @help_window
  439.     @result_window = Window_CraftResult.new
  440.     @result_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  441.     @result_window.back_opacity = 180
  442.     @ingredients_window = Window_CraftIngredients.new
  443.     @ingredients_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  444.     @ingredients_window.back_opacity = 180
  445.     @yes_no_window = Window_Command.new(100, ["确定", "放弃"])
  446.     @yes_no_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  447.     @yes_no_window.back_opacity = 180
  448.     @confirm_window.visible = false
  449.     @confirm_window.z = 1500
  450.     @yes_no_window.visible = false
  451.     @yes_no_window.active = false
  452.     @yes_no_window.index = 1
  453.     @yes_no_window.x = 270
  454.     @yes_no_window.y = 252
  455.     @yes_no_window.z = 1500
  456.     @label_window = Window_Base.new(450,200 - 32 + 5,190,52)
  457.     @label_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  458.     @label_window.back_opacity = 100
  459.     @label_window.contents=Bitmap.new(@label_window.width - 32,@label_window.height - 32)
  460.     @label_window.contents.font.size=20
  461.     @label_window.contents.font.color = @label_window.normal_color
  462.     @label_window.contents.font.name = "黑体"
  463.     @label_window.contents.draw_text(0, 0, @label_window.contents.width, 20, "  现有   需要")
  464.     loop do
  465.       Graphics.update
  466.       Input.update
  467.       update_loadcraft
  468.       if @scene == 99
  469.         break
  470.       end
  471.     end
  472.     @help_window.dispose
  473.     @equip_icon.dispose
  474.     @craft_window.dispose
  475.     @result_window.dispose
  476.     @ingredients_window.dispose
  477.     @confirm_window.dispose
  478.     @yes_no_window.dispose
  479.     @label_window.dispose
  480.   end

  481.   #--------------------------------------------------------------------------
  482.   #--------------------------------------------------------------------------
  483.   def update_loadcraft
  484.     @craft_window.update
  485.     @equip_icon.set_item(@craft_window.recipe)
  486.     @equip_icon.refresh
  487.     @ingredients_window.update
  488.     if $game_party.recipes.size > 0
  489.       @result_window.set_result(@craft_window.recipe.result, @craft_window.recipe.result_type)
  490.       @ingredients_window.set_ingredients(@craft_window.recipe.ingredients,
  491.                                                            @craft_window.recipe.ingredient_types,
  492.                                                            @craft_window.recipe.quantities)
  493.     end
  494.     if @craft_window.active
  495.       update_craft
  496.       return
  497.     end
  498.     if @yes_no_window.active
  499.       confirm_update
  500.       return
  501.     end
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   def update_craft
  505.     if Input.trigger?(Input::B)
  506.       $game_system.se_play($data_system.cancel_se)
  507.       @scene = 99
  508.       return
  509.     end
  510.     if Input.trigger?(Input::C) and $game_party.recipes.size != 0
  511.       @recipe = @craft_window.recipe
  512.       if @recipe.have
  513.         $game_system.se_play($data_system.decision_se)
  514.         @yes_no_window.active = true
  515.         @craft_window.active = false
  516.       else
  517.         $game_system.se_play($data_system.buzzer_se)
  518.         return
  519.       end
  520.     end
  521.   end

  522.   #--------------------------------------------------------------------------
  523.   def confirm_update
  524.     @craft_index = @craft_window.index
  525.     @confirm_window.visible = true
  526.     @confirm_window.z = 1500
  527.     @yes_no_window.visible = true
  528.     @yes_no_window.active = true
  529.     @yes_no_window.z = 1500
  530.     @yes_no_window.update
  531.     string = "合成 " + @recipe.name + "?"
  532.     cw = @confirm_window.contents.text_size(string).width
  533.     center = @confirm_window.contents.width/2 - cw /2
  534.     unless @drawn
  535.       @confirm_window.contents.draw_text(center, 0, cw, 30, string)
  536.       @drawn = true
  537.     end
  538.     if Input.trigger?(Input::C)
  539.       if @yes_no_window.index == 0
  540.         $game_system.se_play($data_system.decision_se)
  541.         @recipe.make
  542.         $game_system.se_play($data_system.save_se)
  543.         @confirm_window.visible = false
  544.         @yes_no_window.active = false
  545.         @yes_no_window.visible = false
  546.         @craft_window.dispose
  547.         @craft_window = Window_Craft.new
  548.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  549.         @craft_window.index = @craft_index
  550.         @craft_window.back_opacity = 180
  551.         @craft_window.active = true
  552.       else
  553.         $game_system.se_play($data_system.cancel_se)
  554.         @confirm_window.visible = false
  555.         @yes_no_window.active = false
  556.         @yes_no_window.visible = false
  557.         @craft_window.dispose
  558.         @craft_window = Window_Craft.new
  559.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  560.         @craft_window.index = @craft_index
  561.         @craft_window.back_opacity = 180
  562.         @craft_window.active = true
  563.       end
  564.     end
  565.     if Input.trigger?(Input::B)
  566.       $game_system.se_play($data_system.cancel_se)
  567.         @confirm_window.visible = false
  568.         @yes_no_window.active = false
  569.         @yes_no_window.visible = false
  570.         @craft_window.dispose
  571.         @craft_window = Window_Craft.new
  572.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  573.         @craft_window.index = @craft_index
  574.         @craft_window.back_opacity = 180
  575.         @craft_window.active = true
  576.     end
  577.   end

  578.   #--------------------------------------------------------------------------

  579.   def update_status
  580.     if @command_window.index == 4 and @stagg != @status_window.index
  581.         # 演奏确定 SE
  582.         # 切换到状态画面
  583.         # 获取角色
  584.         @actor = $game_party.actors[@status_window.index]
  585.         # 生成状态窗口
  586.         if @stagg != -1
  587.           @status_status_window.dispose
  588.         end
  589.         @stagg = @status_window.index
  590.         @status_status_window = Window_Status_New.new(@actor)
  591.         @status_update = true
  592.     end
  593.     # 按下 B 键的情况下
  594.     if Input.trigger?(Input::B)
  595.       # 演奏取消 SE
  596.       $game_system.se_play($data_system.cancel_se)
  597.       if @command_window.index == 4
  598.         @status_status_window.dispose
  599.         @stagg = -1
  600.       end
  601.       # 激活命令窗口
  602.       @command_window.active = true
  603.       @status_window.active = false
  604.       @status_window.index = -2
  605.       return
  606.     end
  607.     # 按下 C 键的情况下
  608.     if Input.trigger?(Input::C)
  609.       # 命令窗口的光标位置分支
  610.       case @command_window.index
  611.       when 1  # 特技
  612.         # 本角色的行动限制在 2 以上的情况下
  613.         if $game_party.actors[@status_window.index].restriction >= 2
  614.           # 演奏冻结 SE
  615.           $game_system.se_play($data_system.buzzer_se)
  616.           return
  617.         end
  618.         # 演奏确定 SE
  619.         $game_system.se_play($data_system.decision_se)
  620.         @window_index = @status_window.index
  621.         @actor = $game_party.actors[@status_window.index]
  622.         # 生成帮助窗口、状态窗口、特技窗口
  623.         @skill_help_window = Window_Help_New_Skill.new
  624.         @skill_window = Window_Skill_New.new(@actor)
  625.         #........................................................................
  626.         @skill_window_icon = Window_Skill_Icon.new
  627.         @skill_window_icon.y = 402
  628.         #........................................................................
  629.         # 关联帮助窗口
  630.         @skill_window.help_window = @skill_help_window
  631.         @status_window.active = false
  632.         @skill_update = true
  633.       end
  634.       return
  635.     end
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ● 物品刷新
  639.   #--------------------------------------------------------------------------
  640.   def update_item
  641.     # 按下 B 键的情况下
  642.     if Input.trigger?(Input::B)
  643.       # 演奏取消 SE
  644.       $game_system.se_play($data_system.cancel_se)
  645.       # 切换到菜单画面
  646.       @item_help_window.dispose
  647.       @item_window.dispose
  648.       #........................................................................
  649.       @equip_window.dispose
  650.       #........................................................................
  651.       @item_update = false
  652.       @command_window.active = true
  653.       return
  654.     end
  655.     # 按下 C 键的情况下
  656.     if Input.trigger?(Input::C)
  657.       # 获取物品窗口当前选中的物品数据
  658.       @item = @item_window.item

  659.       # 不使用物品的情况下
  660.       unless @item.is_a?(RPG::Item)
  661.         # 演奏冻结 SE
  662.         $game_system.se_play($data_system.buzzer_se)
  663.         return
  664.       end
  665.       # 不能使用的情况下
  666.       unless $game_party.item_can_use?(@item.id)
  667.         # 演奏冻结 SE
  668.         $game_system.se_play($data_system.buzzer_se)
  669.         return
  670.       end
  671.       # 演奏确定 SE
  672.       $game_system.se_play($data_system.decision_se)
  673.       # 效果范围是我方的情况下
  674.       if @item.scope >= 3
  675.         # 激活目标窗口
  676.         @item_window.active = false
  677.         @status_window.active = true
  678.         # 设置效果范围 (单体/全体) 的对应光标位置
  679.         if @item.scope == 4 || @item.scope == 6
  680.           @status_window.index = -1
  681.         else
  682.           @status_window.index = 0
  683.         end
  684.       # 效果在我方以外的情况下
  685.       else
  686.         # 公共事件 ID 有效的情况下
  687.         if @item.common_event_id > 0
  688.           # 预约调用公共事件
  689.           $game_temp.common_event_id = @item.common_event_id
  690.           # 演奏物品使用时的 SE
  691.           $game_system.se_play(@item.menu_se)
  692.           # 消耗品的情况下
  693.           if @item.consumable
  694.             # 使用的物品数减 1
  695.             $game_party.lose_item(@item.id, 1)
  696.             # 再描绘物品窗口的项目
  697.             @item_window.draw_item(@item_window.index)
  698.           end
  699.           @item_help_window.dispose
  700.           @item_window.dispose
  701.           #........................................................................
  702.           @equip_window.dispose
  703.           #........................................................................
  704.           # 切换到地图画面
  705.           $scene = Scene_Map.new
  706.           return
  707.         end
  708.       end
  709.       return
  710.     end
  711.   end
  712.   def update_item_target
  713.     # 按下 B 键的情况下
  714.     if Input.trigger?(Input::B)
  715.       # 演奏取消 SE
  716.       $game_system.se_play($data_system.cancel_se)
  717.       # 由于物品用完而不能使用的场合
  718.       unless $game_party.item_can_use?(@item.id)
  719.         # 再次生成物品窗口的内容
  720.         @item_window.refresh
  721.       end
  722.       # 删除目标窗口
  723.       @item_window.active = true
  724.       @status_window.index = -2
  725.       @status_window.active = false
  726.       return
  727.     end
  728.     # 按下 C 键的情况下
  729.     if Input.trigger?(Input::C)
  730.       # 如果物品用完的情况下
  731.       if $game_party.item_number(@item.id) == 0
  732.         # 演奏冻结 SE
  733.         $game_system.se_play($data_system.buzzer_se)
  734.         return
  735.       end
  736.       # 目标是全体的情况下
  737.       if @status_window.index == -1
  738.         # 对同伴全体应用物品使用效果
  739.         used = false
  740.         for i in $game_party.actors
  741.           used |= i.item_effect(@item)
  742.         end
  743.       end
  744.       # 目标是单体的情况下
  745.       if @status_window.index >= 0
  746.         # 对目标角色应用物品的使用效果
  747.         target = $game_party.actors[@status_window.index]
  748.         used = target.item_effect(@item)
  749.       end
  750.       # 使用物品的情况下
  751.       if used
  752.         # 演奏物品使用时的 SE
  753.         $game_system.se_play(@item.menu_se)
  754.         # 消耗品的情况下
  755.         if @item.consumable
  756.           # 使用的物品数减 1
  757.           $game_party.lose_item(@item.id, 1)
  758.           # 再描绘物品窗口的项目
  759.           @item_window.draw_item(@item_window.index)
  760.         end
  761.         # 再生成目标窗口的内容
  762.         @status_window.refresh
  763.         # 全灭的情况下
  764.         if $game_party.all_dead?
  765.           # 切换到游戏结束画面
  766.           $scene = Scene_Gameover.new
  767.           return
  768.         end
  769.         # 公共事件 ID 有效的情况下
  770.         if @item.common_event_id > 0
  771.           # 预约调用公共事件
  772.           $game_temp.common_event_id = @item.common_event_id
  773.           @item_help_window.dispose
  774.           @item_window.dispose
  775.           # 切换到地图画面
  776.           $scene = Scene_Map.new
  777.           return
  778.         end
  779.       end
  780.       # 无法使用物品的情况下
  781.       unless used
  782.         # 演奏冻结 SE
  783.         $game_system.se_play($data_system.buzzer_se)
  784.       end
  785.       return
  786.     end
  787.   end
  788.   #--------------------------------------------------------------------------
  789.   # ● 技能刷新
  790.   #--------------------------------------------------------------------------
  791.   def update_skill
  792.     # 按下 B 键的情况下
  793.     if Input.trigger?(Input::B)
  794.       # 演奏取消 SE
  795.       $game_system.se_play($data_system.cancel_se)
  796.       # 切换到菜单画面
  797.       @skill_help_window.dispose
  798.       @skill_window.dispose
  799.       @skill_window_icon.dispose
  800.       @skill_update = false
  801.       @status_window.active = true
  802.       @status_window.index = @window_index
  803.       return
  804.     end
  805.     # 按下 C 键的情况下
  806.     if Input.trigger?(Input::C)
  807.       # 获取特技窗口现在选择的特技的数据
  808.       @skill = @skill_window.skill
  809.       # 不能使用的情况下
  810.       if @skill == nil or not @actor.skill_can_use?(@skill.id)
  811.         # 演奏冻结 SE
  812.         $game_system.se_play($data_system.buzzer_se)
  813.         return
  814.       end
  815.       # 演奏确定 SE
  816.       $game_system.se_play($data_system.decision_se)
  817.       # 效果范围是我方的情况下
  818.       if @skill.scope >= 3
  819.         # 激活目标窗口
  820.         @skill_window.active = false
  821.         @status_window.active = true
  822.         # 设置效果范围 (单体/全体) 的对应光标位置
  823.         if @skill.scope == 4 || @skill.scope == 6
  824.           @status_window.index = -1
  825.         elsif @skill.scope == 7
  826.           @status_window.index = @actor_index - 10
  827.         else
  828.           @status_window.index = 0
  829.         end
  830.       # 效果在我方以外的情况下
  831.       else
  832.         # 公共事件 ID 有效的情况下
  833.         if @skill.common_event_id > 0
  834.           # 预约调用公共事件
  835.           $game_temp.common_event_id = @skill.common_event_id
  836.           # 演奏特技使用时的 SE
  837.           $game_system.se_play(@skill.menu_se)
  838.           # 消耗 SP
  839.           @actor.sp -= @skill.sp_cost
  840.           # 再生成各窗口的内容
  841.           @skill_window.refresh
  842.           @status_window.refresh
  843.           @skill_help_window.dispose
  844.           @skill_window.dispose
  845.           @skill_window_icon.dispose
  846.           @back_skill.dispose
  847.           # 切换到地图画面
  848.           $scene = Scene_Map.new
  849.           return
  850.         end
  851.       end
  852.       return
  853.     end
  854.   end
  855.   def update_skill_target
  856.     # 按下 B 键的情况下
  857.     if Input.trigger?(Input::B)
  858.       # 演奏取消 SE
  859.       $game_system.se_play($data_system.cancel_se)
  860.       # 删除目标窗口
  861.       @skill_window.active = true
  862.       @status_window.index = -2
  863.       @status_window.active = false
  864.       return
  865.     end
  866.     # 按下 C 键的情况下
  867.     if Input.trigger?(Input::C)
  868.       # 因为 SP 不足而无法使用的情况下
  869.       unless @actor.skill_can_use?(@skill.id)
  870.         # 演奏冻结 SE
  871.         $game_system.se_play($data_system.buzzer_se)
  872.         return
  873.       end
  874.       # 目标是全体的情况下
  875.       if @status_window.index == -1
  876.         # 对同伴全体应用特技使用效果
  877.         used = false
  878.         for i in $game_party.actors
  879.           used |= i.skill_effect(@actor, @skill)
  880.         end
  881.       end
  882.       # 目标是使用者的情况下
  883.       if @status_window.index <= -2
  884.         # 对目标角色应用特技的使用效果
  885.         target = $game_party.actors[@status_window.index + 10]
  886.         used = target.skill_effect(@actor, @skill)
  887.       end
  888.       # 目标是单体的情况下
  889.       if @status_window.index >= 0
  890.         # 对目标角色应用特技的使用效果
  891.         target = $game_party.actors[@status_window.index]
  892.         used = target.skill_effect(@actor, @skill)
  893.       end
  894.       # 使用特技的情况下
  895.       if used
  896.         # 演奏特技使用时的 SE
  897.         $game_system.se_play(@skill.menu_se)
  898. #-----修正------------------------------------------------------
  899.         @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
  900.         # SP 消費
  901.         @actor.sp -= @actor.skill_sp_cost[@skill.id]
  902. #---------------------------------------------------------------
  903.         # 再生成各窗口内容
  904.         @status_window.refresh
  905.         @skill_window.refresh
  906.         # 全灭的情况下
  907.         if $game_party.all_dead?
  908.           # 切换到游戏结束画面
  909.           $scene = Scene_Gameover.new
  910.           return
  911.         end
  912.         # 公共事件 ID 有效的情况下
  913.         if @skill.common_event_id > 0
  914.           # 预约调用公共事件
  915.           $game_temp.common_event_id = @skill.common_event_id
  916.           @skill_help_window.dispose
  917.           @skill_window.dispose
  918.           @back_skill.dispose
  919.          
  920.           # 释放窗口
  921.           @item_window.dispose
  922. #          @back_item.dispose
  923.           @status_window.dispose
  924.           # 切换到地图画面
  925.           $scene = Scene_Map.new
  926.           return
  927.         end
  928.       end
  929.       # 无法使用特技的情况下
  930.       unless used
  931.         # 演奏冻结 SE
  932.         $game_system.se_play($data_system.buzzer_se)
  933.       end
  934.       return
  935.     end
  936.   end
  937.   #--------------------------------------------------------------------------
  938.   # ● 装备刷新
  939.   #--------------------------------------------------------------------------
  940.   def update_right
  941.     # 按下 B 键的情况下
  942.     if Input.trigger?(Input::B)
  943.       # 演奏取消 SE
  944.       $game_system.se_play($data_system.cancel_se)
  945.       # 切换到菜单画面
  946.       @equip_help_window.dispose
  947.       @equip_right_window.dispose
  948.       @equip_item_window1.dispose
  949.       @equip_item_window2.dispose
  950.       @equip_item_window3.dispose
  951.       @equip_item_window4.dispose
  952.       @equip_item_window5.dispose
  953.       @equip_item_window6.dispose
  954.       @equip_item_window7.dispose
  955.       @equip_item_window8.dispose
  956.       #........................................................................
  957.       @equip_window.dispose
  958.       #........................................................................
  959.       @equip_update = false
  960.       @status_window1.active = true
  961.     end
  962.     # 按下 C 键的情况下
  963.     if Input.trigger?(Input::C)
  964.       # 固定装备的情况下
  965.       if @actor.equip_fix?(@equip_right_window.index)
  966.         # 演奏冻结 SE
  967.         $game_system.se_play($data_system.buzzer_se)
  968.         return
  969.       end
  970.       # 演奏确定 SE
  971.       $game_system.se_play($data_system.decision_se)
  972.       # 激活物品窗口
  973.       @equip_right_window.active = false
  974.       @equip_item_window.active = true
  975.       @equip_window.set_item_id
  976.       @equip_item_window.index = 0
  977.       return
  978.     end
  979.   end
  980.   def update_equip_item
  981.     # 按下 B 键的情况下
  982.     if Input.trigger?(Input::B)
  983.       # 演奏取消 SE
  984.       $game_system.se_play($data_system.cancel_se)
  985.       # 激活右侧窗口
  986.       @equip_right_window.active = true
  987.       @equip_item_window.active = false
  988.       @equip_item_window.index = -1
  989.       @equip_window.set_item_id
  990.       return
  991.     end
  992.     # 按下 C 键的情况下
  993.     if Input.trigger?(Input::C)      
  994.       # 演奏装备 SE
  995.       $game_system.se_play($data_system.equip_se)
  996.       # 获取物品窗口现在选择的装备数据
  997.       item = @equip_item_window.item
  998.       # 变更装备
  999.       @actor.equip(@equip_right_window.index, item == nil ? 0 : item.id)
  1000.       # 激活右侧窗口
  1001.       @equip_right_window.active = true
  1002.       @equip_item_window.active = false
  1003.       @equip_item_window.index = -1
  1004.       @equip_window.set_item_id
  1005.       # 再生成右侧窗口、物品窗口的内容
  1006.       @equip_right_window.refresh
  1007.       if @equip_right_window.index == 6 or @equip_right_window.index == 7
  1008.         @equip_item_window7.refresh
  1009.         @equip_item_window8.refresh
  1010.       else
  1011.         @equip_item_window.refresh
  1012.       end
  1013.       return
  1014.     end
  1015.   end
  1016.   def update_status1
  1017.     # 按下 B 键的情况下
  1018.     if Input.trigger?(Input::B)
  1019.       # 演奏取消 SE
  1020.       $game_system.se_play($data_system.cancel_se)
  1021.       # 激活命令窗口
  1022.       @command_window.active = true
  1023.       @status_window1.active = false
  1024.       @status_window1.index = -1
  1025.       return
  1026.     end
  1027.     # 按下 C 键的情况下
  1028.     if Input.trigger?(Input::C)
  1029.       # 命令窗口的光标位置分支
  1030.         # 演奏确定 SE
  1031.         $game_system.se_play($data_system.decision_se)
  1032.         @equip_index = 0
  1033.         @actor = $game_party.actors[@status_window1.index]
  1034.         @equip_help_window = Window_Help_New.new
  1035.         @equip_help_window.x = 137
  1036.         @equip_help_window.y = 480 - 64 - 32 - 8
  1037.         @equip_right_window = Window_EquipRight_New.new(@actor)
  1038.         @equip_item_window1 = Window_EquipItem_New.new(@actor, 0)
  1039.         @equip_item_window2 = Window_EquipItem_New.new(@actor, 1)
  1040.         @equip_item_window3 = Window_EquipItem_New.new(@actor, 2)
  1041.         @equip_item_window4 = Window_EquipItem_New.new(@actor, 3)
  1042.         @equip_item_window5 = Window_EquipItem_New.new(@actor, 4)
  1043.         @equip_item_window6 = Window_EquipItem_New.new(@actor, 5)
  1044.         @equip_item_window7 = Window_EquipItem_New.new(@actor, 6)
  1045.         @equip_item_window8 = Window_EquipItem_New.new(@actor, 6)
  1046.         #........................................................................
  1047.         @equip_window = Window_Equip.new
  1048.         @equip_window.y = 394
  1049.         @equip_window.set_item_id
  1050.         #........................................................................
  1051.         # 关联帮助窗口
  1052.         @equip_right_window.help_window = @equip_help_window
  1053.         @equip_item_window1.help_window = @equip_help_window
  1054.         @equip_item_window2.help_window = @equip_help_window
  1055.         @equip_item_window3.help_window = @equip_help_window
  1056.         @equip_item_window4.help_window = @equip_help_window
  1057.         @equip_item_window5.help_window = @equip_help_window
  1058.         @equip_item_window6.help_window = @equip_help_window
  1059.         @equip_item_window7.help_window = @equip_help_window
  1060.         @equip_item_window8.help_window = @equip_help_window
  1061.         # 设置光标位置
  1062.         @equip_right_window.index = @equip_index
  1063.         @status_window1.active = false
  1064.         @equip_update = true
  1065.         # 设置物品窗口的可视状态
  1066.         @equip_item_window1.visible = (@equip_right_window.index == 0)
  1067.         @equip_item_window2.visible = (@equip_right_window.index == 1)
  1068.         @equip_item_window3.visible = (@equip_right_window.index == 2)
  1069.         @equip_item_window4.visible = (@equip_right_window.index == 3)
  1070.         @equip_item_window5.visible = (@equip_right_window.index == 4)
  1071.         @equip_item_window6.visible = (@equip_right_window.index == 5)
  1072.         @equip_item_window7.visible = (@equip_right_window.index == 6)
  1073.         @equip_item_window8.visible = (@equip_right_window.index == 7)
  1074.         # 获取当前装备中的物品
  1075.         item1 = @equip_right_window.item
  1076.         # 设置当前的物品窗口到 @item_window
  1077.         @equip_window.set_item_id
  1078.         case @equip_right_window.index
  1079.         when 0
  1080.           @equip_item_window = @equip_item_window1
  1081.         when 1
  1082.           @equip_item_window = @equip_item_window2
  1083.         when 2
  1084.           @equip_item_window = @equip_item_window3
  1085.         when 3
  1086.           @equip_item_window = @equip_item_window4
  1087.         when 4
  1088.           @equip_item_window = @equip_item_window5
  1089.         when 5
  1090.           @equip_item_window = @equip_item_window6
  1091.         when 6
  1092.           @equip_item_window = @equip_item_window7
  1093.         when 7
  1094.           @equip_item_window = @equip_item_window8
  1095.         end
  1096.         # 右窗口被激活的情况下
  1097.         if @equip_right_window.active
  1098.           # 删除变更装备后的能力
  1099.           @status_window1.set_new_parameters(nil, nil, nil)
  1100.         end
  1101.         # 物品窗口被激活的情况下
  1102.         if @equip_item_window.active
  1103.           # 获取现在选中的物品
  1104.           item2 = @equip_item_window.item
  1105.           # 变更装备
  1106.           last_hp = @actor.hp
  1107.           last_sp = @actor.sp
  1108.           @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
  1109.           # 获取变更装备后的能力值
  1110.           new_atk = @actor.atk
  1111.           new_pdef = @actor.pdef
  1112.           new_mdef = @actor.mdef
  1113.           # 返回到装备
  1114.           @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
  1115.           @actor.hp = last_hp
  1116.           @actor.sp = last_sp
  1117.           # 描画左窗口
  1118.           @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef)
  1119.           #........................................................................
  1120.           @equip_window.set_item(item2)
  1121.           #........................................................................
  1122.         end
  1123.     end
  1124.   end
  1125.   #--------------------------------------------------------------------------
  1126.   # ● 状态刷新
  1127.   #--------------------------------------------------------------------------
  1128.   def update_status_status
  1129.     # 按下 B 键的情况下
  1130.     if Input.trigger?(Input::B)
  1131.       # 演奏取消 SE
  1132.       $game_system.se_play($data_system.cancel_se)
  1133.       # 切换到菜单画面
  1134.       @status_status_window.dispose
  1135.       @bgstatus.dispose
  1136.       @status_update = false
  1137.       @status_window.active = true
  1138.       return
  1139.     end
  1140.   end
  1141.   
  1142.   def update_system
  1143.     @system_window.update
  1144.     # 按下 B 键的情况下
  1145.     if Input.trigger?(Input::B)
  1146.       # 演奏取消 SE
  1147.       $game_system.se_play($data_system.cancel_se)
  1148.       # 切换到菜单画面
  1149.       @system_window.dispose
  1150.       @sys_update = false
  1151.       @command_window.active = true
  1152.       return
  1153.     end
  1154.     # 按下 C 键的情况下
  1155.     if Input.trigger?(Input::C)
  1156.       # 演奏确定 SE
  1157.       $game_system.se_play($data_system.decision_se)
  1158.       case @system_window.index
  1159.       when 0
  1160.         @bgm_window = Window_BGM_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
  1161.         @currentbgm_window = Window_CurrentBGM_Volume.new
  1162.         @system_window.active = false
  1163.       when 1
  1164.         @sfx_window = Window_SFX_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
  1165.         @currentsfx_window = Window_CurrentSFX_Volume.new
  1166.         @system_window.active = false
  1167.       when 2
  1168.         @system_window.dispose
  1169.         $scene = Scene_Save.new
  1170.       when 3
  1171.         @system_window.dispose
  1172.         $scene = Scene_Load.new(true)
  1173.       when 4
  1174.         @end_window = Window_EndCommand.new
  1175.         @system_window.active = false
  1176.       end
  1177.       return
  1178.     end
  1179.   end
  1180.   
  1181.   def update_bgm
  1182.     @bgm_window.update
  1183.     if Input.trigger?(Input::B)
  1184.       $game_system.se_play($data_system.cancel_se)
  1185.       @system_window.active = true
  1186.       @bgm_window.dispose
  1187.       @currentbgm_window.dispose
  1188.       return
  1189.     end
  1190.     if Input.trigger?(Input::C)
  1191.       case @bgm_window.index
  1192.       when 0
  1193.         $game_system.bgm_volume = 0
  1194.         $game_system.bgm_play($game_system.bgm_memorize)
  1195.         @currentbgm_window.refresh
  1196.       when 1
  1197.         $game_system.bgm_volume = 17
  1198.         $game_system.bgm_play($game_system.bgm_memorize)
  1199.         @currentbgm_window.refresh
  1200.       when 2
  1201.         $game_system.bgm_volume = 34
  1202.         $game_system.bgm_play($game_system.bgm_memorize)
  1203.         @currentbgm_window.refresh
  1204.       when 3
  1205.         $game_system.bgm_volume = 50
  1206.         $game_system.bgm_play($game_system.bgm_memorize)
  1207.         @currentbgm_window.refresh
  1208.       when 4
  1209.         $game_system.bgm_volume = 67
  1210.         $game_system.bgm_play($game_system.bgm_memorize)
  1211.         @currentbgm_window.refresh
  1212.       when 5
  1213.         $game_system.bgm_volume = 84
  1214.         $game_system.bgm_play($game_system.bgm_memorize)
  1215.         @currentbgm_window.refresh
  1216.       when 6
  1217.         $game_system.bgm_volume = 100
  1218.         $game_system.bgm_play($game_system.bgm_memorize)
  1219.         @currentbgm_window.refresh
  1220.       end
  1221.       return
  1222.     end
  1223.   end
  1224.   
  1225.   def update_sfx
  1226.     @sfx_window.update
  1227.     if Input.trigger?(Input::B)
  1228.       $game_system.se_play($data_system.cancel_se)
  1229.       @sfx_window.dispose
  1230.       @currentsfx_window.dispose
  1231.       @system_window.active = true
  1232.       return
  1233.     end
  1234.     if Input.trigger?(Input::C)
  1235.       case @sfx_window.index
  1236.       when 0
  1237.         $game_system.se_volume = 0
  1238.         $game_system.se_play($data_system.decision_se)
  1239.         @currentsfx_window.refresh
  1240.       when 1
  1241.         $game_system.se_volume = 17
  1242.         $game_system.se_play($data_system.decision_se)
  1243.         @currentsfx_window.refresh
  1244.       when 2
  1245.         $game_system.se_volume = 34
  1246.         $game_system.se_play($data_system.decision_se)
  1247.         @currentsfx_window.refresh
  1248.       when 3
  1249.         $game_system.se_volume = 50
  1250.         $game_system.se_play($data_system.decision_se)
  1251.         @currentsfx_window.refresh
  1252.       when 4
  1253.         $game_system.se_volume = 67
  1254.         $game_system.se_play($data_system.decision_se)
  1255.         @currentsfx_window.refresh
  1256.       when 5
  1257.         $game_system.se_volume = 84
  1258.         $game_system.se_play($data_system.decision_se)
  1259.         @currentsfx_window.refresh
  1260.       when 6
  1261.         $game_system.se_volume = 100
  1262.         $game_system.se_play($data_system.decision_se)
  1263.         @currentsfx_window.refresh
  1264.       end
  1265.       $game_map.autoplay
  1266.       return
  1267.     end
  1268.   end
  1269.   
  1270.   def update_end
  1271.     @end_window.update
  1272.     if Input.trigger?(Input::B)
  1273.       $game_system.se_play($data_system.cancel_se)
  1274.       @end_window.dispose
  1275.       @system_window.active = true
  1276.       return
  1277.     end
  1278.     if Input.trigger?(Input::C)
  1279.       case @end_window.index
  1280.       when 0
  1281.         @end_window.dispose
  1282.         @system_window.dispose
  1283.         command_to_title
  1284.       when 1
  1285.         command_shutdown
  1286.       end
  1287.       return
  1288.     end
  1289.   end

  1290.   def command_to_title
  1291.     $game_system.se_play($data_system.decision_se)
  1292.     Audio.bgm_fade(800)
  1293.     Audio.bgs_fade(800)
  1294.     Audio.me_fade(800)
  1295.     $scene = Scene_Title.new
  1296.   end

  1297.   def command_shutdown
  1298.     $game_system.se_play($data_system.decision_se)
  1299.     Audio.bgm_fade(800)
  1300.     Audio.bgs_fade(800)
  1301.     Audio.me_fade(800)
  1302.     $scene = nil
  1303.   end
  1304. end
复制代码
#==============================================================================
# ■ 仿轩辕剑式的菜单(美化&加强)--By whbm
#==============================================================================
# ■ 仿轩辕剑式的菜单--By 亿万星辰
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  处理菜单画面的类。
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     menu_index : 命令光标的初期位置
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
    @item_update = false
    @skill_update = false
    @equip_update = false
    @status_update = false
    @sys_update = false
  end
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    #----------------------------- 主菜单 -----------------------------------
    # 生成命令窗口
    @command_window = Window_MenuCommand.new(@menu_index)
    #........................................................................
    @command_window.contents = Bitmap.new("Graphics/System/menu/bar.png")
    @command_window.width = 672
    @command_window.height = 128
    @command_window.x = -16
    @command_window.y = -16
    @command_window.opacity = 0 #whbm
    #........................................................................
    # 同伴人数为 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
    # 生成金钱窗口
    @gold_window = Window_Gold_Menu.new
    @gold_window.x = 0
    @gold_window.y = 416
    @gold_window.opacity = 0
    # 生成状态窗口
    @status_window = Window_MenuStatus.new
    #........................................................................
    @back_status = Window_Help.new
    @back_status.height = 480
    @back_status.width = 208
    @back_status.opacity = 0
    @back_status.z = 1
    @back_status.contents = Bitmap.new("Graphics/System/menu/角色底板.png")
    @back_status.x = -16
    @back_status.y = 16
    #........................................................................
    @status_window.x = 0
    @status_window.y = 32
    @status_window.z = 2
    @status_window.opacity = 0
    @status_window1 = Window_MenuEquip.new
    @status_window1.x = 0
    @status_window1.z = 2
    @status_window1.opacity = 0
    @status_window1.y = 32
    @status_window1.visible = false
    # 遮蔽窗口
    @dummy_window = Window_Base.new(160, 64, 480, 416)
    #........................................................................
    @dummy_sprite = Sprite.new(Viewport.new(0,0,640 + 32,480 + 32))
    @dummy_sprite.x = 0
    @dummy_sprite.y = 0
    @dummy_window.opacity = 0       #BSY
    #........................................................................
    @dummy_window.back_opacity = 0
    @old_index = @menu_index
    case @menu_index
    when 0
      @pic_now = 0
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/item.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
    when 1
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/skill.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
    when 2
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/equip.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
    when 3
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/craft.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
    when 4
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/status.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
    when 5
      @command_window.contents = Bitmap.new("Graphics/System/menu/head/system.png")
      @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
    end
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @status_window1.dispose
    @dummy_window.dispose
    @dummy_sprite.dispose
    #........................................................................
    @back_status.dispose
    #........................................................................
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新窗口
    #----------------------------- 主菜单 -----------------------------------
    @command_window.update
    @gold_window.update
    if @command_window.index == 2
      @status_window.visible = false
      @status_window1.visible = true
      @status_window1.update
    else
      @status_window.visible = true and @status_window1.visible = false if !@status_window.visible
      @status_window.update
    end
    if @command_window.index != @old_index
      case @command_window.index
      when 0
        if @pic_now != 0
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/item.png")
          @pic_now = 0
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
        end
      when 1
        if @pic_now != 1
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/skill.png")
          @pic_now = 1
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
        end
      when 2
        if @pic_now != 2
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/equip.png")
          @pic_now = 2
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
        end
      when 3
        if @pic_now != 3
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/craft.png")
          @pic_now = 3
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
        end
      when 4
        if @pic_now != 4
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/status.png")
          @pic_now = 4
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
        end
      when 5
        if @pic_now != 5
          @command_window.contents = Bitmap.new("Graphics/System/menu/head/system.png")
          @pic_now = 5
          @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
        end
      end
      @old_index = @command_window.index
    end
    # 命令窗口被激活的情况下: 调用 update_command
    if @command_window.active
      update_command
      return
    end
    # 状态窗口被激活的情况下: 调用 update_status
    if @status_window.active
      if @item_update
        update_item_target
        return
      elsif @skill_update
        update_skill_target
        return
      else
        update_status
        return
      end
    end
    if @status_window1.active
      update_status1
      return
    end
        
    #----------------------------- 物品菜单 ---------------------------------
    if @item_update
      @item_help_window.update
      @item_window.update
      # 物品窗口被激活的情况下: 调用 update_item
      if @item_window.active  
      #........................................................................
        @equip_window.set_item(@item_window.item)
        @equip_window.refresh
      #........................................................................
        update_item
        return
      end
    #----------------------------- 奇术菜单 ---------------------------------
    elsif @skill_update
      # 刷新窗口
      @skill_help_window.update
      @skill_window.update
      # 特技窗口被激活的情况下: 调用 update_skill
      if @skill_window.active
        #........................................................................
          @skill_window_icon.set_skill(@skill_window.skill)
          @skill_window_icon.refresh
        #........................................................................
        update_skill
        return
      end
    #----------------------------- 装备菜单 ---------------------------------
    elsif @equip_update
      @equip_right_window.update
      @equip_item_window.update
      # 设置物品窗口的可视状态
      @equip_item_window1.visible = (@equip_right_window.index == 0)
      @equip_item_window2.visible = (@equip_right_window.index == 1)
      @equip_item_window3.visible = (@equip_right_window.index == 2)
      @equip_item_window4.visible = (@equip_right_window.index == 3)
      @equip_item_window5.visible = (@equip_right_window.index == 4)
      @equip_item_window6.visible = (@equip_right_window.index == 5)
      @equip_item_window7.visible = (@equip_right_window.index == 6)
      @equip_item_window8.visible = (@equip_right_window.index == 7)
      # 获取当前装备中的物品
      item1 = @equip_right_window.item
      #........................................................................
        @equip_window.set_item(item1)
      #........................................................................
      # 设置当前的物品窗口到 @item_window
      case @equip_right_window.index
      when 0
        @equip_item_window = @equip_item_window1
      when 1
        @equip_item_window = @equip_item_window2
      when 2
        @equip_item_window = @equip_item_window3
      when 3
        @equip_item_window = @equip_item_window4
      when 4
        @equip_item_window = @equip_item_window5
      when 5
        @equip_item_window = @equip_item_window6
      when 6
        @equip_item_window = @equip_item_window7
      when 7
        @equip_item_window = @equip_item_window8
      end
      # 右窗口被激活的情况下
      if @equip_right_window.active
        # 删除变更装备后的能力
        @status_window1.set_new_parameters(nil, nil, nil, @status_window1.index)
      end
      # 物品窗口被激活的情况下
      if @equip_item_window.active
        # 获取现在选中的物品
        item2 = @equip_item_window.item
      #........................................................................
        @equip_window.set_item(item2)
      #........................................................................
        # 变更装备
        last_hp = @actor.hp
        last_sp = @actor.sp
        @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
        # 获取变更装备后的能力值
        new_atk = @actor.atk
        new_pdef = @actor.pdef
        new_mdef = @actor.mdef
        # 返回到装备
        @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
        @actor.hp = last_hp
        @actor.sp = last_sp
        # 描画左窗口
        @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef, @status_window1.index)
      end
    #........................................................................
    @equip_window.refresh
    #........................................................................
      # 右侧窗口被激活的情况下: 调用 update_right
      if @equip_right_window.active
        update_right
        return
      end
      # 物品窗口被激活的情况下: 调用 update_item
      if @equip_item_window.active
        update_equip_item
        return
      end
    #----------------------------- 状态菜单 ---------------------------------
    elsif @status_update
      update_status_status
      return
    #----------------------------- 系统菜单 ---------------------------------
    elsif @sys_update
      if @end_window != nil and !@end_window.disposed?
        update_end
      elsif @bgm_window != nil and !@bgm_window.disposed? and @currentbgm_window != nil and !@currentbgm_window.disposed?
        update_bgm
      elsif @sfx_window != nil and !@sfx_window.disposed? and @currentsfx_window != nil and !@currentsfx_window.disposed?
        update_sfx
      elsif !@system_window.disposed?
        update_system
      end
      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)
        # 生成帮助窗口、物品窗口
        @item_help_window = Window_Help_New.new
        @item_window = Window_Item_New.new
        @item_window.z = 2
        @item_window.y = 32 + 3
        @item_window.height = 352 + 32
        @item_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
        @item_window.back_opacity = 180
        #........................................................................
        @equip_window = Window_Equip.new
        #........................................................................
        # 关联帮助窗口
        @item_window.help_window = @item_help_window
        # 生成目标窗口 (设置为不可见・不活动)

        # 切换到物品画面
        @item_update = true
        @command_window.active = false
      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_window1.active = true
        @status_window1.index = 0
      when 3  # 合成
        #@stagg = -1
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活合成窗口
        @command_window.active = false
        loadcraft
        @command_window.active = true
      when 4  # 状态
        @stagg = -1
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 5  # 存档
        @status_update = false
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        @system_window = Window_SysCommand.new
        @command_window.active = false
        @sys_update = true
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  def loadcraft(craft_index = 0)
    @scene = 100
    @craft_window = Window_Craft.new
    @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @craft_window.index = craft_index
    @craft_window.back_opacity = 180
    @confirm_window = Window_Base.new(120, 188, 400, 64)
    @confirm_window.contents = Bitmap.new(368, 32)
    @confirm_window.contents.font.name = "黑体"
    @confirm_window.contents.font.size = 20
    @confirm_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @confirm_window.back_opacity = 180
    @help_window = Window_Help_New_Craft.new
    #........................................................................
    @equip_icon = Window_Equip_Craft.new
    @equip_icon.set_item_id
    #........................................................................
    @craft_window.help_window = @help_window
    @result_window = Window_CraftResult.new
    @result_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @result_window.back_opacity = 180
    @ingredients_window = Window_CraftIngredients.new
    @ingredients_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @ingredients_window.back_opacity = 180
    @yes_no_window = Window_Command.new(100, ["确定", "放弃"])
    @yes_no_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @yes_no_window.back_opacity = 180
    @confirm_window.visible = false
    @confirm_window.z = 1500
    @yes_no_window.visible = false
    @yes_no_window.active = false
    @yes_no_window.index = 1
    @yes_no_window.x = 270
    @yes_no_window.y = 252
    @yes_no_window.z = 1500
    @label_window = Window_Base.new(450,200 - 32 + 5,190,52)
    @label_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
    @label_window.back_opacity = 100
    @label_window.contents=Bitmap.new(@label_window.width - 32,@label_window.height - 32)
    @label_window.contents.font.size=20
    @label_window.contents.font.color = @label_window.normal_color
    @label_window.contents.font.name = "黑体"
    @label_window.contents.draw_text(0, 0, @label_window.contents.width, 20, "  现有   需要")
    loop do
      Graphics.update
      Input.update
      update_loadcraft
      if @scene == 99
        break
      end
    end
    @help_window.dispose
    @equip_icon.dispose
    @craft_window.dispose
    @result_window.dispose
    @ingredients_window.dispose
    @confirm_window.dispose
    @yes_no_window.dispose
    @label_window.dispose
  end

  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  def update_loadcraft
    @craft_window.update
    @equip_icon.set_item(@craft_window.recipe)
    @equip_icon.refresh
    @ingredients_window.update
    if $game_party.recipes.size > 0
      @result_window.set_result(@craft_window.recipe.result, @craft_window.recipe.result_type)
      @ingredients_window.set_ingredients(@craft_window.recipe.ingredients,
                                                           @craft_window.recipe.ingredient_types,
                                                           @craft_window.recipe.quantities)
    end
    if @craft_window.active
      update_craft
      return
    end
    if @yes_no_window.active
      confirm_update
      return
    end
  end
  #--------------------------------------------------------------------------
  def update_craft
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @scene = 99
      return
    end
    if Input.trigger?(Input::C) and $game_party.recipes.size != 0
      @recipe = @craft_window.recipe
      if @recipe.have
        $game_system.se_play($data_system.decision_se)
        @yes_no_window.active = true
        @craft_window.active = false
      else
        $game_system.se_play($data_system.buzzer_se)
        return
      end
    end
  end

  #--------------------------------------------------------------------------
  def confirm_update
    @craft_index = @craft_window.index
    @confirm_window.visible = true
    @confirm_window.z = 1500
    @yes_no_window.visible = true
    @yes_no_window.active = true
    @yes_no_window.z = 1500
    @yes_no_window.update
    string = "合成 " + @recipe.name + "?"
    cw = @confirm_window.contents.text_size(string).width
    center = @confirm_window.contents.width/2 - cw /2
    unless @drawn
      @confirm_window.contents.draw_text(center, 0, cw, 30, string)
      @drawn = true
    end
    if Input.trigger?(Input::C)
      if @yes_no_window.index == 0
        $game_system.se_play($data_system.decision_se)
        @recipe.make
        $game_system.se_play($data_system.save_se)
        @confirm_window.visible = false
        @yes_no_window.active = false
        @yes_no_window.visible = false
        @craft_window.dispose
        @craft_window = Window_Craft.new
        @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
        @craft_window.index = @craft_index
        @craft_window.back_opacity = 180
        @craft_window.active = true
      else
        $game_system.se_play($data_system.cancel_se)
        @confirm_window.visible = false
        @yes_no_window.active = false
        @yes_no_window.visible = false
        @craft_window.dispose
        @craft_window = Window_Craft.new
        @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
        @craft_window.index = @craft_index
        @craft_window.back_opacity = 180
        @craft_window.active = true
      end
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
        @confirm_window.visible = false
        @yes_no_window.active = false
        @yes_no_window.visible = false
        @craft_window.dispose
        @craft_window = Window_Craft.new
        @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
        @craft_window.index = @craft_index
        @craft_window.back_opacity = 180
        @craft_window.active = true
    end
  end

  #--------------------------------------------------------------------------

  def update_status
    if @command_window.index == 4 and @stagg != @status_window.index
        # 演奏确定 SE
        # 切换到状态画面
        # 获取角色
        @actor = $game_party.actors[@status_window.index]
        # 生成状态窗口
        if @stagg != -1
          @status_status_window.dispose
        end
        @stagg = @status_window.index
        @status_status_window = Window_Status_New.new(@actor)
        @status_update = true
    end
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      if @command_window.index == 4
        @status_status_window.dispose
        @stagg = -1
      end
      # 激活命令窗口
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -2
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置分支
      case @command_window.index
      when 1  # 特技
        # 本角色的行动限制在 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)
        @window_index = @status_window.index
        @actor = $game_party.actors[@status_window.index]
        # 生成帮助窗口、状态窗口、特技窗口
        @skill_help_window = Window_Help_New_Skill.new
        @skill_window = Window_Skill_New.new(@actor)
        #........................................................................
        @skill_window_icon = Window_Skill_Icon.new
        @skill_window_icon.y = 402
        #........................................................................
        # 关联帮助窗口
        @skill_window.help_window = @skill_help_window
        @status_window.active = false
        @skill_update = true
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 物品刷新
  #--------------------------------------------------------------------------
  def update_item
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      @item_help_window.dispose
      @item_window.dispose
      #........................................................................
      @equip_window.dispose
      #........................................................................
      @item_update = false
      @command_window.active = true
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取物品窗口当前选中的物品数据
      @item = @item_window.item

      # 不使用物品的情况下
      unless @item.is_a?(RPG::Item)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 不能使用的情况下
      unless $game_party.item_can_use?(@item.id)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 效果范围是我方的情况下
      if @item.scope >= 3
        # 激活目标窗口
        @item_window.active = false
        @status_window.active = true
        # 设置效果范围 (单体/全体) 的对应光标位置
        if @item.scope == 4 || @item.scope == 6
          @status_window.index = -1
        else
          @status_window.index = 0
        end
      # 效果在我方以外的情况下
      else
        # 公共事件 ID 有效的情况下
        if @item.common_event_id > 0
          # 预约调用公共事件
          $game_temp.common_event_id = @item.common_event_id
          # 演奏物品使用时的 SE
          $game_system.se_play(@item.menu_se)
          # 消耗品的情况下
          if @item.consumable
            # 使用的物品数减 1
            $game_party.lose_item(@item.id, 1)
            # 再描绘物品窗口的项目
            @item_window.draw_item(@item_window.index)
          end
          @item_help_window.dispose
          @item_window.dispose
          #........................................................................
          @equip_window.dispose
          #........................................................................
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
  def update_item_target
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 由于物品用完而不能使用的场合
      unless $game_party.item_can_use?(@item.id)
        # 再次生成物品窗口的内容
        @item_window.refresh
      end
      # 删除目标窗口
      @item_window.active = true
      @status_window.index = -2
      @status_window.active = false
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 如果物品用完的情况下
      if $game_party.item_number(@item.id) == 0
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 目标是全体的情况下
      if @status_window.index == -1
        # 对同伴全体应用物品使用效果
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      # 目标是单体的情况下
      if @status_window.index >= 0
        # 对目标角色应用物品的使用效果
        target = $game_party.actors[@status_window.index]
        used = target.item_effect(@item)
      end
      # 使用物品的情况下
      if used
        # 演奏物品使用时的 SE
        $game_system.se_play(@item.menu_se)
        # 消耗品的情况下
        if @item.consumable
          # 使用的物品数减 1
          $game_party.lose_item(@item.id, 1)
          # 再描绘物品窗口的项目
          @item_window.draw_item(@item_window.index)
        end
        # 再生成目标窗口的内容
        @status_window.refresh
        # 全灭的情况下
        if $game_party.all_dead?
          # 切换到游戏结束画面
          $scene = Scene_Gameover.new
          return
        end
        # 公共事件 ID 有效的情况下
        if @item.common_event_id > 0
          # 预约调用公共事件
          $game_temp.common_event_id = @item.common_event_id
          @item_help_window.dispose
          @item_window.dispose
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end
      end
      # 无法使用物品的情况下
      unless used
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 技能刷新
  #--------------------------------------------------------------------------
  def update_skill
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      @skill_help_window.dispose
      @skill_window.dispose
      @skill_window_icon.dispose
      @skill_update = false
      @status_window.active = true
      @status_window.index = @window_index
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 获取特技窗口现在选择的特技的数据
      @skill = @skill_window.skill
      # 不能使用的情况下
      if @skill == nil or not @actor.skill_can_use?(@skill.id)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 效果范围是我方的情况下
      if @skill.scope >= 3
        # 激活目标窗口
        @skill_window.active = false
        @status_window.active = true
        # 设置效果范围 (单体/全体) 的对应光标位置
        if @skill.scope == 4 || @skill.scope == 6
          @status_window.index = -1
        elsif @skill.scope == 7
          @status_window.index = @actor_index - 10
        else
          @status_window.index = 0
        end
      # 效果在我方以外的情况下
      else
        # 公共事件 ID 有效的情况下
        if @skill.common_event_id > 0
          # 预约调用公共事件
          $game_temp.common_event_id = @skill.common_event_id
          # 演奏特技使用时的 SE
          $game_system.se_play(@skill.menu_se)
          # 消耗 SP
          @actor.sp -= @skill.sp_cost
          # 再生成各窗口的内容
          @skill_window.refresh
          @status_window.refresh
          @skill_help_window.dispose
          @skill_window.dispose
          @skill_window_icon.dispose
          @back_skill.dispose
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
  def update_skill_target
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 删除目标窗口
      @skill_window.active = true
      @status_window.index = -2
      @status_window.active = false
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 因为 SP 不足而无法使用的情况下
      unless @actor.skill_can_use?(@skill.id)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 目标是全体的情况下
      if @status_window.index == -1
        # 对同伴全体应用特技使用效果
        used = false
        for i in $game_party.actors
          used |= i.skill_effect(@actor, @skill)
        end
      end
      # 目标是使用者的情况下
      if @status_window.index <= -2
        # 对目标角色应用特技的使用效果
        target = $game_party.actors[@status_window.index + 10]
        used = target.skill_effect(@actor, @skill)
      end
      # 目标是单体的情况下
      if @status_window.index >= 0
        # 对目标角色应用特技的使用效果
        target = $game_party.actors[@status_window.index]
        used = target.skill_effect(@actor, @skill)
      end
      # 使用特技的情况下
      if used
        # 演奏特技使用时的 SE
        $game_system.se_play(@skill.menu_se)
#-----修正------------------------------------------------------
        @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
        # SP 消費
        @actor.sp -= @actor.skill_sp_cost[@skill.id]
#---------------------------------------------------------------
        # 再生成各窗口内容
        @status_window.refresh
        @skill_window.refresh
        # 全灭的情况下
        if $game_party.all_dead?
          # 切换到游戏结束画面
          $scene = Scene_Gameover.new
          return
        end
        # 公共事件 ID 有效的情况下
        if @skill.common_event_id > 0
          # 预约调用公共事件
          $game_temp.common_event_id = @skill.common_event_id
          @skill_help_window.dispose
          @skill_window.dispose
          @back_skill.dispose
         
          # 释放窗口
          @item_window.dispose
#          @back_item.dispose
          @status_window.dispose
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        end
      end
      # 无法使用特技的情况下
      unless used
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 装备刷新
  #--------------------------------------------------------------------------
  def update_right
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      @equip_help_window.dispose
      @equip_right_window.dispose
      @equip_item_window1.dispose
      @equip_item_window2.dispose
      @equip_item_window3.dispose
      @equip_item_window4.dispose
      @equip_item_window5.dispose
      @equip_item_window6.dispose
      @equip_item_window7.dispose
      @equip_item_window8.dispose
      #........................................................................
      @equip_window.dispose
      #........................................................................
      @equip_update = false
      @status_window1.active = true
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 固定装备的情况下
      if @actor.equip_fix?(@equip_right_window.index)
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 激活物品窗口
      @equip_right_window.active = false
      @equip_item_window.active = true
      @equip_window.set_item_id
      @equip_item_window.index = 0
      return
    end
  end
  def update_equip_item
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 激活右侧窗口
      @equip_right_window.active = true
      @equip_item_window.active = false
      @equip_item_window.index = -1
      @equip_window.set_item_id
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)      
      # 演奏装备 SE
      $game_system.se_play($data_system.equip_se)
      # 获取物品窗口现在选择的装备数据
      item = @equip_item_window.item
      # 变更装备
      @actor.equip(@equip_right_window.index, item == nil ? 0 : item.id)
      # 激活右侧窗口
      @equip_right_window.active = true
      @equip_item_window.active = false
      @equip_item_window.index = -1
      @equip_window.set_item_id
      # 再生成右侧窗口、物品窗口的内容
      @equip_right_window.refresh
      if @equip_right_window.index == 6 or @equip_right_window.index == 7
        @equip_item_window7.refresh
        @equip_item_window8.refresh
      else
        @equip_item_window.refresh
      end
      return
    end
  end
  def update_status1
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 激活命令窗口
      @command_window.active = true
      @status_window1.active = false
      @status_window1.index = -1
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置分支
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        @equip_index = 0
        @actor = $game_party.actors[@status_window1.index]
        @equip_help_window = Window_Help_New.new
        @equip_help_window.x = 137
        @equip_help_window.y = 480 - 64 - 32 - 8
        @equip_right_window = Window_EquipRight_New.new(@actor)
        @equip_item_window1 = Window_EquipItem_New.new(@actor, 0)
        @equip_item_window2 = Window_EquipItem_New.new(@actor, 1)
        @equip_item_window3 = Window_EquipItem_New.new(@actor, 2)
        @equip_item_window4 = Window_EquipItem_New.new(@actor, 3)
        @equip_item_window5 = Window_EquipItem_New.new(@actor, 4)
        @equip_item_window6 = Window_EquipItem_New.new(@actor, 5)
        @equip_item_window7 = Window_EquipItem_New.new(@actor, 6)
        @equip_item_window8 = Window_EquipItem_New.new(@actor, 6)
        #........................................................................
        @equip_window = Window_Equip.new
        @equip_window.y = 394
        @equip_window.set_item_id
        #........................................................................
        # 关联帮助窗口
        @equip_right_window.help_window = @equip_help_window
        @equip_item_window1.help_window = @equip_help_window
        @equip_item_window2.help_window = @equip_help_window
        @equip_item_window3.help_window = @equip_help_window
        @equip_item_window4.help_window = @equip_help_window
        @equip_item_window5.help_window = @equip_help_window
        @equip_item_window6.help_window = @equip_help_window
        @equip_item_window7.help_window = @equip_help_window
        @equip_item_window8.help_window = @equip_help_window
        # 设置光标位置
        @equip_right_window.index = @equip_index
        @status_window1.active = false
        @equip_update = true
        # 设置物品窗口的可视状态
        @equip_item_window1.visible = (@equip_right_window.index == 0)
        @equip_item_window2.visible = (@equip_right_window.index == 1)
        @equip_item_window3.visible = (@equip_right_window.index == 2)
        @equip_item_window4.visible = (@equip_right_window.index == 3)
        @equip_item_window5.visible = (@equip_right_window.index == 4)
        @equip_item_window6.visible = (@equip_right_window.index == 5)
        @equip_item_window7.visible = (@equip_right_window.index == 6)
        @equip_item_window8.visible = (@equip_right_window.index == 7)
        # 获取当前装备中的物品
        item1 = @equip_right_window.item
        # 设置当前的物品窗口到 @item_window
        @equip_window.set_item_id
        case @equip_right_window.index
        when 0
          @equip_item_window = @equip_item_window1
        when 1
          @equip_item_window = @equip_item_window2
        when 2
          @equip_item_window = @equip_item_window3
        when 3
          @equip_item_window = @equip_item_window4
        when 4
          @equip_item_window = @equip_item_window5
        when 5
          @equip_item_window = @equip_item_window6
        when 6
          @equip_item_window = @equip_item_window7
        when 7
          @equip_item_window = @equip_item_window8
        end
        # 右窗口被激活的情况下
        if @equip_right_window.active
          # 删除变更装备后的能力
          @status_window1.set_new_parameters(nil, nil, nil)
        end
        # 物品窗口被激活的情况下
        if @equip_item_window.active
          # 获取现在选中的物品
          item2 = @equip_item_window.item
          # 变更装备
          last_hp = @actor.hp
          last_sp = @actor.sp
          @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
          # 获取变更装备后的能力值
          new_atk = @actor.atk
          new_pdef = @actor.pdef
          new_mdef = @actor.mdef
          # 返回到装备
          @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
          @actor.hp = last_hp
          @actor.sp = last_sp
          # 描画左窗口
          @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef)
          #........................................................................
          @equip_window.set_item(item2)
          #........................................................................
        end
    end
  end
  #--------------------------------------------------------------------------
  # ● 状态刷新
  #--------------------------------------------------------------------------
  def update_status_status
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      @status_status_window.dispose
      @bgstatus.dispose
      @status_update = false
      @status_window.active = true
      return
    end
  end
  
  def update_system
    @system_window.update
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      @system_window.dispose
      @sys_update = false
      @command_window.active = true
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      case @system_window.index
      when 0
        @bgm_window = Window_BGM_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
        @currentbgm_window = Window_CurrentBGM_Volume.new
        @system_window.active = false
      when 1
        @sfx_window = Window_SFX_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
        @currentsfx_window = Window_CurrentSFX_Volume.new
        @system_window.active = false
      when 2
        @system_window.dispose
        $scene = Scene_Save.new
      when 3
        @system_window.dispose
        $scene = Scene_Load.new(true)
      when 4
        @end_window = Window_EndCommand.new
        @system_window.active = false
      end
      return
    end
  end
  
  def update_bgm
    @bgm_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @system_window.active = true
      @bgm_window.dispose
      @currentbgm_window.dispose
      return
    end
    if Input.trigger?(Input::C)
      case @bgm_window.index
      when 0
        $game_system.bgm_volume = 0
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 1
        $game_system.bgm_volume = 17
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 2
        $game_system.bgm_volume = 34
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 3
        $game_system.bgm_volume = 50
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 4
        $game_system.bgm_volume = 67
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 5
        $game_system.bgm_volume = 84
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      when 6
        $game_system.bgm_volume = 100
        $game_system.bgm_play($game_system.bgm_memorize)
        @currentbgm_window.refresh
      end
      return
    end
  end
  
  def update_sfx
    @sfx_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @sfx_window.dispose
      @currentsfx_window.dispose
      @system_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      case @sfx_window.index
      when 0
        $game_system.se_volume = 0
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 1
        $game_system.se_volume = 17
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 2
        $game_system.se_volume = 34
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 3
        $game_system.se_volume = 50
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 4
        $game_system.se_volume = 67
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 5
        $game_system.se_volume = 84
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      when 6
        $game_system.se_volume = 100
        $game_system.se_play($data_system.decision_se)
        @currentsfx_window.refresh
      end
      $game_map.autoplay
      return
    end
  end
  
  def update_end
    @end_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @end_window.dispose
      @system_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      case @end_window.index
      when 0
        @end_window.dispose
        @system_window.dispose
        command_to_title
      when 1
        command_shutdown
      end
      return
    end
  end

  def command_to_title
    $game_system.se_play($data_system.decision_se)
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    $scene = Scene_Title.new
  end

  def command_shutdown
    $game_system.se_play($data_system.decision_se)
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    $scene = nil
  end
end
这是脚本..怎么把合成去掉 、 = =
江南何日?引人残,卷西风岁月,迷人倦。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2010-11-29
帖子
172
2
发表于 2011-6-1 15:09:33 | 只看该作者
我不知道
回复 支持 反对

使用道具 举报

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
3
 楼主| 发表于 2011-6-1 15:19:29 | 只看该作者
j12345678905022 发表于 2011-6-1 15:09
我不知道

自重啊自重!

点评

= =玩家看到不会坑么?  发表于 2011-6-1 15:30
其实你可以在合成功能后设置p"此功能被移除"  发表于 2011-6-1 15:27
江南何日?引人残,卷西风岁月,迷人倦。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2011-1-5
帖子
92
4
发表于 2011-6-5 10:55:19 | 只看该作者
把分歧项目里,合成那一段删了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
5
 楼主| 发表于 2011-6-5 12:13:27 | 只看该作者
删了的。但是让状态栏不能使用了= =
江南何日?引人残,卷西风岁月,迷人倦。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2011-1-5
帖子
92
6
发表于 2011-6-5 16:00:24 | 只看该作者
不是删状态栏的“合成”,而是删除“合成”定义的内容
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2011-1-5
帖子
92
7
发表于 2011-6-5 16:32:34 | 只看该作者
直接搜索when3 #合成,然后这一段删除。如果要删菜单里的话,要会排版,不然会很难看,还要修改项目,和删除多余的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
8
 楼主| 发表于 2011-6-5 20:34:34 | 只看该作者
能不能把脚本发给我,我是脚本白痴。。。
江南何日?引人残,卷西风岁月,迷人倦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-26 03:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表