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

Project1

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

[已经解决] 关于仿轩辕剑式的菜单(美化&加强)的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
190
在线时间
54 小时
注册时间
2015-7-10
帖子
9
跳转到指定楼层
1
发表于 2015-7-24 22:38:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 suwenhai 于 2015-7-31 12:59 编辑

如图:

图1:是轩辕剑菜单的各“部件”。(也许没有全部找齐)

图2:是测试中出现的错误。


注:脚本是“仿轩辕剑式的菜单(美化&加强)”,作者是whbm、亿万星辰。



脚本内容:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 仿轩辕剑式的菜单(美化&加强)--By whbm
  3. #==============================================================================
  4. # ■ 仿轩辕剑式的菜单--By 亿万星辰
  5. #==============================================================================
  6. #有问题,找蚂蚁 redant修改
  7. # ■ Scene_Menu
  8. #------------------------------------------------------------------------------
  9. #  处理菜单画面的类。
  10. #==============================================================================
  11.  
  12. class Scene_Menu
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化对像
  15.   #     menu_index : 命令光标的初期位置
  16.   #--------------------------------------------------------------------------
  17.   def initialize(menu_index = 0)
  18.     @menu_index = menu_index
  19.     @item_update = false
  20.     @skill_update = false
  21.     @equip_update = false
  22.     @status_update = false
  23.     @sys_update = false
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 主处理
  27.   #--------------------------------------------------------------------------
  28.   def main
  29.     #----------------------------- 主菜单 -----------------------------------
  30.     # 生成命令窗口
  31.     picture = "Graphics/System/menu/【菜单】菜单.jpg"
  32.    @sprite = Sprite.new
  33.    @sprite.bitmap = Bitmap.new(picture)
  34.  
  35.     @command_window = Window_MenuCommand.new(@menu_index)
  36.     #........................................................................
  37.    # @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】菜单.jpg")
  38.    @command_window.width = 640
  39.    @command_window.height = 480
  40.    @command_window.x = -16
  41.    @command_window.y = -16
  42.    @command_window.z = 999
  43.    @command_window.opacity = 0
  44.     #whbm
  45.     #........................................................................
  46.     # 同伴人数为 0 的情况下
  47.     if $game_party.actors.size == 0
  48.       # 物品、特技、装备、状态无效化
  49.       @command_window.disable_item(0)
  50.       @command_window.disable_item(1)
  51.       @command_window.disable_item(2)
  52.       @command_window.disable_item(3)
  53.     end
  54.     # 禁止存档的情况下
  55.     if $game_system.save_disabled
  56.       # 存档无效
  57.       @command_window.disable_item(5)
  58.     end
  59.     # 生成金钱窗口
  60.     @gold_window = Window_Gold_Menu.new
  61.     @gold_window.x = 155
  62.     @gold_window.y = 382
  63.     @gold_window.opacity = 0
  64.     # 生成状态窗口
  65.     @status_window = Window_MenuStatus.new
  66.     #........................................................................
  67.     @back_status = Window_Help.new
  68.     @back_status.height = 640
  69.     @back_status.width = 596
  70.     @back_status.opacity = 0
  71.     @back_status.z = 1
  72.    # @back_status.contents = Bitmap.new("Graphics/System/menu/【菜单】菜单.jpg")
  73.     #@back_status.x = -16
  74.     #@back_status.y = -16
  75.     #........................................................................
  76.     @status_window.x = 120
  77.     @status_window.y = 32
  78.     @status_window.z = 2
  79.     @status_window.opacity = 0
  80.     @status_window1 = Window_MenuEquip.new
  81.     @status_window1.x = 120
  82.     @status_window1.z = 2
  83.     @status_window1.opacity = 0
  84.     @status_window1.y = 32
  85.     @status_window1.visible = false
  86.     # 遮蔽窗口
  87.    #@dummy_window = Window_Base.new(0, 0, 640, 480)
  88.     #........................................................................
  89.     #@dummy_sprite = Sprite.new(Viewport.new(0,0,640 + 32,480 + 32))
  90.     #@dummy_sprite.x = 0
  91.    #@dummy_sprite.y = 0
  92.    # @dummy_window.opacity = 0       #BSY
  93.     #........................................................................
  94.     #@dummy_window.back_opacity = 0
  95.     @old_index = @menu_index
  96.     case @menu_index
  97.     when 1
  98.      # @pic_now = 0
  99.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】物品.png")
  100.       #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
  101.     when 3
  102.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】武术.png")
  103.       #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
  104.     when 2
  105.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】装备.png")
  106.       #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
  107.     when 4
  108.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】任务.png")
  109.       #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
  110.     when 0
  111.       @pic_now = 0
  112.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】状态.png")
  113.       #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
  114.     when 5
  115.       @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】系统.png")
  116.  
  117.      # @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
  118.     end
  119.     # 执行过渡
  120.     Graphics.transition
  121.     # 主循环
  122.     loop do
  123.       # 刷新游戏画面
  124.       Graphics.update
  125.       # 刷新输入信息
  126.       Input.update
  127.       # 刷新画面
  128.       update
  129.       # 如果切换画面就中断循环
  130.       if $scene != self
  131.         break
  132.       end
  133.     end
  134.     # 准备过渡
  135.     Graphics.freeze
  136.     # 释放窗口
  137.      @sprite.dispose
  138.     #  @renwu_window.dispose
  139.     @command_window.dispose
  140.     @gold_window.dispose
  141.     @status_window.dispose
  142.     @status_window1.dispose
  143. #   @dummy_window.dispose
  144. #    @dummy_sprite.dispose
  145.     #........................................................................
  146.     @back_status.dispose
  147.     #........................................................................
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 刷新画面
  151.   #--------------------------------------------------------------------------
  152.   def update
  153.     # 刷新窗口
  154.     #----------------------------- 主菜单 -----------------------------------
  155.     @command_window.update
  156.     @gold_window.update
  157. #    @renwu_window.update
  158.     if @command_window.index ==2
  159.       @status_window.visible = false
  160.       @status_window1.visible = true
  161.       @status_window1.update
  162.     else
  163.       @status_window.visible = true and @status_window1.visible = false if !@status_window.visible
  164.       @status_window.update
  165.     end
  166.     if @command_window.index != @old_index
  167.       case @command_window.index
  168.       when 1
  169.         if @pic_now != 1
  170.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】物品.png")
  171.           @pic_now = 1
  172.           #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_物品")
  173.         end
  174.       when 3
  175.         if @pic_now != 3
  176.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】武术.png")
  177.           @pic_now = 3
  178.           #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_奇术")
  179.         end
  180.       when 2
  181.         if @pic_now != 2
  182.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】装备.png")
  183.           @pic_now = 2
  184.           #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_装备")
  185.         end
  186.       when 4
  187.         if @pic_now != 4
  188.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】任务.png")
  189.           @pic_now = 4
  190.          # @dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_合成")
  191.         end
  192.       when 0
  193.         if @pic_now != 0
  194.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】状态.png")
  195.           @pic_now = 0
  196.           #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_状态")
  197.         end
  198.       when 5
  199.         if @pic_now != 5
  200.           @command_window.contents = Bitmap.new("Graphics/System/menu/【菜单】系统.png")
  201.           @pic_now = 5
  202.  
  203.           #@dummy_sprite.bitmap = Bitmap.new("Graphics/System/menu/底图_天书")
  204.         end
  205.  
  206.       end
  207.       @old_index = @command_window.index
  208.     end
  209.     # 命令窗口被激活的情况下: 调用 update_command
  210.     if @command_window.active
  211.       update_command
  212.       return
  213.     end
  214.     # 状态窗口被激活的情况下: 调用 update_status
  215.     if @status_window.active
  216.       if @item_update
  217.         update_target#update_item_target
  218.         return
  219.       elsif @skill_update
  220.         update_skill_target
  221.         return
  222.       else
  223.         update_status
  224.         return
  225.       end
  226.     end
  227.     if @status_window1.active
  228.       update_status1
  229.       return
  230.     end
  231.  
  232.  
  233.  
  234.     #----------------------------- 物品菜单 ---------------------------------
  235.     if @item_update
  236.       @itemcommand_window.update
  237.      # @help_window.update
  238.        # @equip_window.update
  239.        #@equip_window.refresh
  240.       @itemlist_window.update
  241.      @status_window.update# @target_window.update
  242.  
  243.       # 物品窗口被激活的情况下: 调用 update_item
  244.  
  245.  
  246.  
  247.       if @command_index != @itemcommand_window.index
  248.      @command_index = @itemcommand_window.index
  249.       @itemlist_window.set_item(@command_index)
  250.     end
  251.     # コマンドウィンドウがアクティブの場合: update_itemcommand を呼ぶ
  252.     if @itemcommand_window.active
  253.    @equip_window.refresh
  254.       @equip_window.set_item(@itemlist_window.item)#(nil)
  255.       update_itemcommand
  256.       return
  257.     end
  258.     # アイテムウィンドウがアクティブの場合: update_itemlist を呼ぶ
  259.     if @itemlist_window.active
  260.       @equip_window.refresh
  261.       @equip_window.set_item(@itemlist_window.item)#@item_window.item)
  262.       # @equip_window.refresh
  263.       update_itemlist
  264.  
  265.       #........................................................................
  266.        # update_itemcommand
  267.       return
  268.     end
  269.     # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
  270.     if @target_window.active
  271.     update_target
  272.     # @equip_window.refresh
  273.       return
  274.     end
  275.     #----------------------------- 奇术菜单 ---------------------------------
  276.     elsif @skill_update
  277.       # 刷新窗口
  278.       @skill_help_window.update
  279.       @skill_window.update
  280.       # 特技窗口被激活的情况下: 调用 update_skill
  281.       if @skill_window.active
  282.         #........................................................................
  283.           @skill_window_icon.set_skill(@skill_window.skill)
  284.           @skill_window_icon.refresh
  285.         #........................................................................
  286.         update_skill
  287.         return
  288.       end
  289.     #----------------------------- 装备菜单 ---------------------------------
  290.     elsif @equip_update
  291.       @equip_right_window.update
  292.       @equip_item_window.update
  293.       # 设置物品窗口的可视状态
  294.       @equip_item_window1.visible = (@equip_right_window.index == 0)
  295.       @equip_item_window2.visible = (@equip_right_window.index == 1)
  296.       @equip_item_window3.visible = (@equip_right_window.index == 2)
  297.       @equip_item_window4.visible = (@equip_right_window.index == 3)
  298.       @equip_item_window5.visible = (@equip_right_window.index == 4)
  299.       @equip_item_window6.visible = (@equip_right_window.index == 5)
  300.       @equip_item_window7.visible = (@equip_right_window.index == 6)
  301.       @equip_item_window8.visible = (@equip_right_window.index == 7)
  302.       # 获取当前装备中的物品
  303.       item1 = @equip_right_window.item
  304.       #........................................................................
  305.         @equip_window.set_item(item1)
  306.       #........................................................................
  307.       # 设置当前的物品窗口到 @item_window
  308.       case @equip_right_window.index
  309.       when 0
  310.         @equip_item_window = @equip_item_window1
  311.       when 1
  312.         @equip_item_window = @equip_item_window2
  313.       when 2
  314.         @equip_item_window = @equip_item_window3
  315.       when 3
  316.         @equip_item_window = @equip_item_window4
  317.       when 4
  318.         @equip_item_window = @equip_item_window5
  319.       when 5
  320.         @equip_item_window = @equip_item_window6
  321.       when 6
  322.         @equip_item_window = @equip_item_window7
  323.       when 7
  324.         @equip_item_window = @equip_item_window8
  325.       end
  326.       # 右窗口被激活的情况下
  327.       if @equip_right_window.active
  328.         # 删除变更装备后的能力
  329.         @status_window1.set_new_parameters(nil, nil, nil, @status_window1.index)
  330.       end
  331.       # 物品窗口被激活的情况下
  332.       if @equip_item_window.active
  333.         # 获取现在选中的物品
  334.         item2 = @equip_item_window.item
  335.       #........................................................................
  336.         @equip_window.set_item(item2)
  337.       #........................................................................
  338.         # 变更装备
  339.         last_hp = @actor.hp
  340.         last_sp = @actor.sp
  341.         @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
  342.         # 获取变更装备后的能力值
  343.         new_atk = @actor.atk
  344.         new_pdef = @actor.pdef
  345.         new_mdef = @actor.mdef
  346.         # 返回到装备
  347.         @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
  348.         @actor.hp = last_hp
  349.         @actor.sp = last_sp
  350.         # 描画左窗口
  351.         @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef, @status_window1.index)
  352.       end
  353.     #........................................................................
  354.     @equip_window.refresh
  355.     #........................................................................
  356.       # 右侧窗口被激活的情况下: 调用 update_right
  357.       if @equip_right_window.active
  358.         update_right
  359.         return
  360.       end
  361.       # 物品窗口被激活的情况下: 调用 update_item
  362.       if @equip_item_window.active
  363.         update_equip_item
  364.         return
  365.       end
  366.     #----------------------------- 状态菜单 ---------------------------------
  367.     elsif @status_update
  368.       update_status_status
  369.       return
  370.     #----------------------------- 系统菜单 ---------------------------------
  371.     elsif @sys_update
  372.       if @end_window != nil and !@end_window.disposed?
  373.         update_end
  374.       elsif @bgm_window != nil and !@bgm_window.disposed? and @currentbgm_window != nil and !@currentbgm_window.disposed?
  375.         update_bgm
  376.       elsif @sfx_window != nil and !@sfx_window.disposed? and @currentsfx_window != nil and !@currentsfx_window.disposed?
  377.         update_sfx
  378.       elsif !@system_window.disposed?
  379.         update_system
  380.       end
  381.       return
  382.     end
  383.   end
  384.  
  385.   def update_command
  386.     # 按下 B 键的情况下
  387.     if Input.trigger?(Input::B)
  388.       # 演奏取消 SE
  389.       $game_system.se_play($data_system.cancel_se)
  390.       # 切换的地图画面
  391.       $scene = Scene_Map.new
  392.       return
  393.     end
  394.     # 按下 C 键的情况下
  395.     if Input.trigger?(Input::C)
  396.       # 同伴人数为 0、存档、游戏结束以外的场合
  397.       if $game_party.actors.size == 0 and @command_window.index < 4
  398.         # 演奏冻结 SE
  399.         $game_system.se_play($data_system.buzzer_se)
  400.         return
  401.       end
  402.       # 命令窗口的光标位置分支
  403.       case @command_window.index
  404.       when 1  # 物品
  405.         # 演奏确定 SE
  406.         $game_system.se_play($data_system.decision_se)
  407.          # 切换到物品画面
  408.         @item_update = true
  409.         @itemlist_update = true
  410.  
  411.         @command_window.active = false
  412.          wupin
  413.          @command_window.active = true
  414.       when 3  # 特技
  415.         # 演奏确定 SE
  416.         $game_system.se_play($data_system.decision_se)
  417.         # 激活状态窗口
  418.         @command_window.active = false
  419.         @status_window.active = true
  420.         @status_window.index = 0
  421.       when 2  # 装备
  422.         # 演奏确定 SE
  423.         $game_system.se_play($data_system.decision_se)
  424.         # 激活状态窗口
  425.         @command_window.active = false
  426.         @status_window1.active = true
  427.         @status_window1.index = 0
  428.       when 4  # 合成
  429.         #@stagg = -1
  430.         # 演奏确定 SE
  431.         $game_system.se_play($data_system.decision_se)
  432.         # 激活合成窗口
  433.         @command_window.active = false
  434.         #$scene = Scene_Mession.new
  435.          renwu
  436.         #loadcraft
  437.         @command_window.active = true
  438.       when 0  # 状态
  439.         @stagg = -1
  440.         # 演奏确定 SE
  441.         $game_system.se_play($data_system.decision_se)
  442.         # 激活状态窗口
  443.         @command_window.active = false
  444.         @status_window.active = true
  445.         @status_window.index = 0
  446.       when 5  # 存档
  447.         @status_update = false
  448.         # 演奏确定 SE
  449.         $game_system.se_play($data_system.decision_se)
  450.  
  451.        # if $game_system.save_disabled
  452.           # 演奏冻结 SE
  453.         #  $game_system.se_play($data_system.buzzer_se)
  454.          # return
  455.         #end
  456.  
  457.         @system_window = Window_SysCommand.new
  458.         @command_window.active = false
  459.         @sys_update = true
  460.  
  461.  
  462.       end
  463.       return
  464.     end
  465.   end
  466.   #--------------------------------------------------------------------------
  467. def renwu
  468.   @scene = 100
  469. @renwu_window = Window_renwu.new
  470. Graphics.transition
  471.   # 主循环
  472.   loop do
  473.     # 刷新游戏画面
  474.     Graphics.update
  475.     # 刷新输入信息
  476.     Input.update
  477.     # 刷新画面
  478.     @renwu_window.update
  479.     # 如果切换画面就中断循环
  480.     if $scene != self
  481.       break
  482.     end
  483.   end
  484.   # 准备过渡
  485.   Graphics.freeze
  486.  
  487.   @renwu_window.dispose
  488.  
  489. end
  490.  
  491. def wupin
  492.   # picture = "Graphics/Battlebacks/北惧.jpg"
  493.    #@sprite = Sprite.new
  494.    #@sprite.bitmap = Bitmap.new(picture)
  495.  
  496.     # タイトルウィンドウを作成
  497.     #@itemtitle_window = Harts_Window_ItemTitle.new
  498.     #コマンドウィンドウを作成
  499.     @scene = 100
  500.     @itemcommand_window = Harts_Window_ItemCommand.new
  501.     @command_index = @itemcommand_window.index
  502.     #アイテムウィンドウを作成
  503.     @itemlist_window = Harts_Window_ItemList.new
  504.     @itemlist_window.active = false
  505.     #ヘルプウィンドウを作成
  506.     @help_window = Window_Help_New.new
  507.      @equip_window = Window_Equip.new
  508.       @equip_window.y = 405
  509.     @help_window.x =147
  510.     @help_window.y = 386
  511.     # ヘルプウィンドウを関連付け
  512.     @itemcommand_window.help_window = @help_window
  513.     @itemlist_window.help_window = @help_window
  514.     @help_window.x =147
  515.     @help_window.y = 386#384
  516.     # ターゲットウィンドウを作成 (不可視?非アクティブに設定)
  517.    # @target_window = Window_Target.new
  518.    # @target_window.visible = false
  519.    # @target_window.active = false
  520.     # アイテムウィンドウ内容表示
  521.     @itemlist_window.set_item(@command_index)
  522.     # トランジション実行
  523.     Graphics.transition
  524.     # メインループ
  525.     loop do
  526.       # ゲーム画面を更新
  527.       Graphics.update
  528.       # 入力情報を更新
  529.       Input.update
  530.       # フレーム更新
  531.       update
  532.       # 画面が切り替わったらループを中断
  533.       if $scene != self
  534.         break
  535.       end
  536.     end
  537.     # トランジション準備
  538.     Graphics.freeze
  539.     # ウィンドウを解放
  540. #     @sprite.
  541.  
  542. #  @sprite.bitmap.dispose unless @sprite.bitmap.disposed?
  543. #   @itemtitle_window.dispose
  544. # @equip_icon.dispose
  545.      @equip_window.dispose
  546.     @itemcommand_window.dispose
  547.     @itemlist_window.dispose
  548.     @help_window.dispose
  549.    # @target_window.dispose
  550.   end
  551.   #--------------------------------------------------------------------------
  552.   # ● フレーム更新
  553.   #--------------------------------------------------------------------------
  554.   #def update
  555.     # ウィンドウを更新
  556.    # @itemtitle_window.update
  557. #    @itemcommand_window.update
  558. #   @itemlist_window.update
  559.     #@help_window.update
  560.     #@target_window.update
  561. #    if @command_index != @itemcommand_window.index
  562. #     @command_index = @itemcommand_window.index
  563.   #    @itemlist_window.set_item(@command_index)
  564.    # end
  565.     # コマンドウィンドウがアクティブの場合: update_itemcommand を呼ぶ
  566. #    if @itemcommand_window.active
  567. #    update_itemcommand
  568.   #    return
  569.    # end
  570.     # アイテムウィンドウがアクティブの場合: update_itemlist を呼ぶ
  571.     #if @itemlist_window.active
  572.      # update_itemlist
  573.      # return
  574.     #end
  575.     # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
  576.     #if @target_window.active
  577.      # update_target
  578.      # return
  579.     #end
  580.   #end
  581.  
  582.   #--------------------------------------------------------------------------
  583.   # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  584.   #--------------------------------------------------------------------------
  585.   def update_itemcommand
  586.   # B ボタンが押された場合
  587.   if Input.trigger?(Input::B)
  588.   # キャンセル SE を演奏
  589.   $game_system.se_play($data_system.cancel_se)
  590.   # メニュー画面に切り替え
  591.    @equip_window.refresh
  592.   $scene = Scene_Menu.new(1)
  593.   return
  594.   end
  595.   # C ボタンが押された場合
  596.   if Input.trigger?(Input::C)
  597.   # 選択中のコマンドのアイテムがない場合
  598.   if @itemlist_window.item_number == 0
  599.   # ブザー SE を演奏
  600.   $game_system.se_play($data_system.buzzer_se)
  601.   return
  602.   end
  603.   # 決定 SE を演奏
  604.   $game_system.se_play($data_system.decision_se)
  605.   # アイテムウィンドウをアクティブにする
  606.   @itemcommand_window.active = false
  607.   @itemlist_window.active = true
  608.   @itemlist_window.index = 0
  609.   return
  610.   end
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● フレーム更新 (アイテムウィンドウがアクティブの場合)
  614.   #--------------------------------------------------------------------------
  615.   def update_itemlist
  616.     # B ボタンが押された場合
  617.     if Input.trigger?(Input::B)
  618.       # キャンセル SE を演奏
  619.       $game_system.se_play($data_system.cancel_se)
  620.        @equip_window.refresh
  621.       # アイテムウィンドウをアクティブにする
  622.       @itemcommand_window.active = true
  623.       @itemlist_window.active = false
  624.       @itemlist_window.index = 0
  625.       @itemcommand_window.index = @command_index
  626.       return
  627.     end
  628.     # C ボタンが押された場合
  629.     if Input.trigger?(Input::C)
  630.       # アイテムウィンドウで現在選択されているデータを取得
  631.       @item = @itemlist_window.item
  632.       # 使用アイテムではない場合
  633.       unless @item.is_a?(RPG::Item)
  634.         # ブザー SE を演奏
  635.         $game_system.se_play($data_system.buzzer_se)
  636.         return
  637.       end
  638.       # 使用できない場合
  639.       unless $game_party.item_can_use?(@item.id)
  640.         # ブザー SE を演奏
  641.         $game_system.se_play($data_system.buzzer_se)
  642.         return
  643.       end
  644.       # 決定 SE を演奏
  645.       $game_system.se_play($data_system.decision_se)
  646.       # 効果範囲が味方の場合
  647.       if @item.scope >= 3
  648.         # ターゲットウィンドウをアクティブ化
  649.         @itemlist_window.active = false
  650.         #@target_window.x = 304
  651.  
  652.           @status_window.visible=true#@target_window.visible = true
  653.        @status_window.active=true #@target_window.active = true
  654.         # 効果範囲 (単体/全体) に応じてカーソル位置を設定
  655.         if @item.scope == 4 || @item.scope == 6
  656.          @status_window.index = -1 #@target_window.index = -1
  657.         else
  658.          @status_window.index = 0 # @target_window.index = 0
  659.         end
  660.         # 効果範囲が味方以外の場合
  661.       else
  662.         # コモンイベント ID が有効の場合
  663.         if @item.common_event_id > 0
  664.           # コモンイベント呼び出し予約
  665.           $game_temp.common_event_id = @item.common_event_id
  666.           # アイテムの使用時 SE を演奏
  667.           $game_system.se_play(@item.menu_se)
  668.           # 消耗品の場合
  669.             if @item.consumable
  670.               # 使用したアイテムを 1 減らす
  671.               $game_party.lose_item(@item.id, 1)
  672.               # アイテムウィンドウの項目を再描画
  673.               @itemlist_window.draw_item(@itemlist_window.index)
  674.             end
  675.           # マップ画面に切り替え
  676.           $scene = Scene_Map.new
  677.           return
  678.         end
  679.       end
  680.       return
  681.     end
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
  685.   #--------------------------------------------------------------------------
  686.   def update_target
  687.     # B ボタンが押された場合
  688.     if Input.trigger?(Input::B)
  689.       # キャンセル SE を演奏
  690.       $game_system.se_play($data_system.cancel_se)
  691.       # アイテム切れなどで使用できなくなった場合
  692.       unless $game_party.item_can_use?(@item.id)
  693.         # アイテムウィンドウの内容を再作成
  694.         @itemlist_window.refresh
  695.        #   @equip_window.dispose
  696.       end
  697.       # ターゲットウィンドウを消去
  698.       @itemlist_window.active = true
  699.      @status_window.visible = false # @target_window.visible = false
  700.       @status_window.active = false #@target_window.active = false
  701.       @itemlist_window.set_item(@command_index)
  702.       return
  703.     end
  704.     # C ボタンが押された場合
  705.     if Input.trigger?(Input::C)
  706.       # アイテムを使い切った場合
  707.       if $game_party.item_number(@item.id) == 0
  708.         # ブザー SE を演奏
  709.         $game_system.se_play($data_system.buzzer_se)
  710.         return
  711.       end
  712.       # ターゲットが全体の場合
  713.       if @status_window.index == -1 #@target_window.index == -1
  714.         # パーティ全体にアイテムの使用効果を適用
  715.         used = false
  716.         for i in $game_party.actors
  717.           used |= i.item_effect(@item)
  718.         end
  719.       end
  720.       # ターゲットが単体の場合
  721.       if  @status_window.index >= 0# @target_window.index >= 0
  722.         # ターゲットのアクターにアイテムの使用効果を適用
  723.         target = $game_party.actors[@status_window.index]#@target_window.index]
  724.         used = target.item_effect(@item)
  725.       end
  726.       # アイテムを使った場合
  727.       if used
  728.         # アイテムの使用時 SE を演奏
  729.         $game_system.se_play(@item.menu_se)
  730.         # 消耗品の場合
  731.         if @item.consumable
  732.           # 使用したアイテムを 1 減らす
  733.           $game_party.lose_item(@item.id, 1)
  734.           # アイテムウィンドウの項目を再描画
  735.           @itemlist_window.draw_item(@itemlist_window.index)
  736.           @itemlist_window.set_item(@command_index)
  737.         end
  738.         # ターゲットウィンドウの内容を再作成
  739.        # @target_window.refresh
  740.        @status_window.refresh
  741.          @equip_window.refresh
  742.        # 全滅の場合
  743.         if $game_party.all_dead?
  744.           # ゲームオーバー画面に切り替え
  745.           $scene = Scene_Gameover.new
  746.           return
  747.         end
  748.         # コモンイベント ID が有効の場合
  749.         if @item.common_event_id > 0
  750.           # コモンイベント呼び出し予約
  751.           $game_temp.common_event_id = @item.common_event_id
  752.           # マップ画面に切り替え
  753.           $scene = Scene_Map.new
  754.           return
  755.         end
  756.       end
  757.       # アイテムを使わなかった場合
  758.       unless used
  759.         # ブザー SE を演奏
  760.         $game_system.se_play($data_system.buzzer_se)
  761.       end
  762.     return
  763.     end
  764.   end
  765.  
  766.  
  767.  
  768.  
  769.  
  770.   def loadcraft(craft_index = 0)
  771.     @scene = 100
  772.     @craft_window = Window_Craft.new
  773.     @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  774.     @craft_window.index = craft_index
  775.     @craft_window.back_opacity = 180
  776.     @confirm_window = Window_Base.new(120, 188, 400, 64)
  777.     @confirm_window.contents = Bitmap.new(368, 32)
  778.     @confirm_window.contents.font.name = "黑体"
  779.     @confirm_window.contents.font.size = 20
  780.     @confirm_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  781.     @confirm_window.back_opacity = 180
  782.        @help_window = Window_Help_New_Craft.new
  783.     #........................................................................
  784.     @equip_icon = Window_Equip_Craft.new
  785.     @equip_icon.set_item_id
  786.     #........................................................................
  787.     @craft_window.help_window = @help_window
  788.     @result_window = Window_CraftResult.new
  789.     @result_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  790.     @result_window.back_opacity = 180
  791.     @ingredients_window = Window_CraftIngredients.new
  792.     @ingredients_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  793.     @ingredients_window.back_opacity = 180
  794.     @yes_no_window = Window_Command.new(100, ["确定", "放弃"])
  795.     @yes_no_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  796.     @yes_no_window.back_opacity = 180
  797.     @confirm_window.visible = false
  798.     @confirm_window.z = 1500
  799.     @yes_no_window.visible = false
  800.     @yes_no_window.active = false
  801.     @yes_no_window.index = 1
  802.     @yes_no_window.x = 270
  803.     @yes_no_window.y = 252
  804.     @yes_no_window.z = 1500
  805.     @label_window = Window_Base.new(450,200 - 32 + 5,190,52)
  806.     @label_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  807.     @label_window.back_opacity = 100
  808.     @label_window.contents=Bitmap.new(@label_window.width - 32,@label_window.height - 32)
  809.     @label_window.contents.font.size=20
  810.     @label_window.contents.font.color = @label_window.normal_color
  811.     @label_window.contents.font.name = "黑体"
  812.     @label_window.contents.draw_text(0, 0, @label_window.contents.width, 20, "  现有   需要")
  813.     loop do
  814.       Graphics.update
  815.       Input.update
  816.       update_loadcraft
  817.       if @scene == 99
  818.         break
  819.       end
  820.     end
  821.     @help_window.dispose
  822.     @equip_icon.dispose
  823.     @craft_window.dispose
  824.     @result_window.dispose
  825.     @ingredients_window.dispose
  826.     @confirm_window.dispose
  827.     @yes_no_window.dispose
  828.     @label_window.dispose
  829.   end
  830.  
  831.   #--------------------------------------------------------------------------
  832.   #--------------------------------------------------------------------------
  833.   def update_loadcraft
  834.     @craft_window.update
  835.     @equip_icon.set_item(@craft_window.recipe)
  836.     @equip_icon.refresh
  837.     @ingredients_window.update
  838.     if $game_party.recipes.size > 0
  839.       @result_window.set_result(@craft_window.recipe.result, @craft_window.recipe.result_type)
  840.       @ingredients_window.set_ingredients(@craft_window.recipe.ingredients,
  841.                                                            @craft_window.recipe.ingredient_types,
  842.                                                            @craft_window.recipe.quantities)
  843.     end
  844.     if @craft_window.active
  845.       update_craft
  846.       return
  847.     end
  848.     if @yes_no_window.active
  849.       confirm_update
  850.       return
  851.     end
  852.   end
  853.   #--------------------------------------------------------------------------
  854.   def update_craft
  855.     if Input.trigger?(Input::B)
  856.       $game_system.se_play($data_system.cancel_se)
  857.       @scene = 99
  858.       return
  859.     end
  860.     if Input.trigger?(Input::C) and $game_party.recipes.size != 0
  861.       @recipe = @craft_window.recipe
  862.       if @recipe.have
  863.         $game_system.se_play($data_system.decision_se)
  864.         @yes_no_window.active = true
  865.         @craft_window.active = false
  866.       else
  867.         $game_system.se_play($data_system.buzzer_se)
  868.         return
  869.       end
  870.     end
  871.   end
  872.  
  873.   #--------------------------------------------------------------------------
  874.   def confirm_update
  875.     @craft_index = @craft_window.index
  876.     @confirm_window.visible = true
  877.     @confirm_window.z = 1500
  878.     @yes_no_window.visible = true
  879.     @yes_no_window.active = true
  880.     @yes_no_window.z = 1500
  881.     @yes_no_window.update
  882.     string = "合成 " + @recipe.name + "?"
  883.     cw = @confirm_window.contents.text_size(string).width
  884.     center = @confirm_window.contents.width/2 - cw /2
  885.     unless @drawn
  886.       @confirm_window.contents.draw_text(center, 0, cw, 30, string)
  887.       @drawn = true
  888.     end
  889.     if Input.trigger?(Input::C)
  890.       if @yes_no_window.index == 0
  891.         $game_system.se_play($data_system.decision_se)
  892.         @recipe.make
  893.         $game_system.se_play($data_system.save_se)
  894.         @confirm_window.visible = false
  895.         @yes_no_window.active = false
  896.         @yes_no_window.visible = false
  897.         @craft_window.dispose
  898.         @craft_window = Window_Craft.new
  899.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  900.         @craft_window.index = @craft_index
  901.         @craft_window.back_opacity = 180
  902.         @craft_window.active = true
  903.       else
  904.         $game_system.se_play($data_system.cancel_se)
  905.         @confirm_window.visible = false
  906.         @yes_no_window.active = false
  907.         @yes_no_window.visible = false
  908.         @craft_window.dispose
  909.         @craft_window = Window_Craft.new
  910.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  911.         @craft_window.index = @craft_index
  912.         @craft_window.back_opacity = 180
  913.         @craft_window.active = true
  914.       end
  915.     end
  916.     if Input.trigger?(Input::B)
  917.       $game_system.se_play($data_system.cancel_se)
  918.         @confirm_window.visible = false
  919.         @yes_no_window.active = false
  920.         @yes_no_window.visible = false
  921.         @craft_window.dispose
  922.         @craft_window = Window_Craft.new
  923.         @craft_window.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  924.         @craft_window.index = @craft_index
  925.         @craft_window.back_opacity = 180
  926.         @craft_window.active = true
  927.     end
  928.   end
  929.  
  930.   #--------------------------------------------------------------------------
  931.  
  932.   def update_status
  933.     if @command_window.index == 0 and @stagg != @status_window.index
  934.         # 演奏确定 SE
  935.         # 切换到状态画面
  936.         # 获取角色
  937.         @actor = $game_party.actors[@status_window.index]
  938.         # 生成状态窗口
  939.         if @stagg != -1
  940.           @status_status_window.dispose
  941.         end
  942.         @stagg = @status_window.index
  943.         @status_status_window = Window_Status_New.new(@actor)
  944.         @status_update = true
  945.     end
  946.     # 按下 B 键的情况下
  947.     if Input.trigger?(Input::B)
  948.       # 演奏取消 SE
  949.       $game_system.se_play($data_system.cancel_se)
  950.       if @command_window.index == 0
  951.         @status_status_window.dispose
  952.         @stagg = -1
  953.       end
  954.       # 激活命令窗口
  955.       @command_window.active = true
  956.       @status_window.active = false
  957.       @status_window.index = -2
  958.       return
  959.     end
  960.     # 按下 C 键的情况下
  961.     if Input.trigger?(Input::C)
  962.       # 命令窗口的光标位置分支
  963.       case @command_window.index
  964.       when 3  # 特技
  965.         # 本角色的行动限制在 2 以上的情况下
  966.         if $game_party.actors[@status_window.index].restriction >= 2
  967.           # 演奏冻结 SE
  968.           $game_system.se_play($data_system.buzzer_se)
  969.           return
  970.         end
  971.         # 演奏确定 SE
  972.         $game_system.se_play($data_system.decision_se)
  973.         @window_index = @status_window.index
  974.         @actor = $game_party.actors[@status_window.index]
  975.         # 生成帮助窗口、状态窗口、特技窗口
  976.         @skill_help_window = Window_Help_New_Skill.new
  977.         @skill_window = Window_Skill_New.new(@actor)
  978.         #........................................................................
  979.         @skill_window_icon = Window_Skill_Icon.new
  980.         @skill_window_icon.y = 402
  981.         #........................................................................
  982.         # 关联帮助窗口
  983.         @skill_window.help_window = @skill_help_window
  984.         @status_window.active = false
  985.         @skill_update = true
  986.       end
  987.       return
  988.     end
  989.   end
  990.   #--------------------------------------------------------------------------
  991.   # ● 物品刷新
  992.   #--------------------------------------------------------------------------
  993. def update_item
  994.     # 按下 B 键的情况下
  995.     if Input.trigger?(Input::B)
  996.       # 演奏取消 SE
  997.       $game_system.se_play($data_system.cancel_se)
  998.       # 切换到菜单画面
  999.       @item_help_window.dispose
  1000.       @help_window.dispose
  1001.      # @item_window.dispose
  1002.        @itemlist_window.dispose
  1003.       #........................................................................
  1004.       @equip_window.dispose
  1005.       #........................................................................
  1006.      # @item_update = false
  1007.       @itemlist_update = false
  1008.      # @command_window.active = true
  1009.      @itemcommand_window.active = true
  1010.       return
  1011.     end
  1012.     # 按下 C 键的情况下
  1013.     if Input.trigger?(Input::C)
  1014.       # 获取物品窗口当前选中的物品数据
  1015.       @item = @itemlist_window.item#@item_window.item
  1016.  
  1017.       # 不使用物品的情况下
  1018.       unless @item.is_a?(RPG::Item)
  1019.         # 演奏冻结 SE
  1020.         $game_system.se_play($data_system.buzzer_se)
  1021.         return
  1022.       end
  1023.       # 不能使用的情况下
  1024.       unless $game_party.item_can_use?(@item.id)
  1025.         # 演奏冻结 SE
  1026.         $game_system.se_play($data_system.buzzer_se)
  1027.         return
  1028.       end
  1029.       # 演奏确定 SE
  1030.       $game_system.se_play($data_system.decision_se)
  1031.       # 效果范围是我方的情况下
  1032.       if @item.scope >= 3
  1033.         # 激活目标窗口
  1034.         @itemlist_window.active = false
  1035.         @status_window.active = true
  1036.         # 设置效果范围 (单体/全体) 的对应光标位置
  1037.         if @item.scope == 4 || @item.scope == 6
  1038.           @status_window.index = -1
  1039.         else
  1040.           @status_window.index = 0
  1041.         end
  1042.       # 效果在我方以外的情况下
  1043.       else
  1044.         # 公共事件 ID 有效的情况下
  1045.         if @item.common_event_id > 0
  1046.           # 预约调用公共事件
  1047.           $game_temp.common_event_id = @item.common_event_id
  1048.           # 演奏物品使用时的 SE
  1049.           $game_system.se_play(@item.menu_se)
  1050.           # 消耗品的情况下
  1051.           if @item.consumable
  1052.             # 使用的物品数减 1
  1053.             $game_party.lose_item(@item.id, 1)
  1054.             # 再描绘物品窗口的项目
  1055.             @itemlist_window.draw_item(@itemlist_window.index)
  1056.           end
  1057.           @item_help_window.dispose
  1058.           @itemlist_window.dispose
  1059.           @help_window.dispose
  1060.           #........................................................................
  1061.           @equip_window.dispose
  1062.           #........................................................................
  1063.           # 切换到地图画面
  1064.           $scene = Scene_Map.new
  1065.           return
  1066.         end
  1067.       end
  1068.       return
  1069.     end
  1070.   end
  1071.   def update_item_target
  1072.     # 按下 B 键的情况下
  1073.     if Input.trigger?(Input::B)
  1074.       # 演奏取消 SE
  1075.       $game_system.se_play($data_system.cancel_se)
  1076.       # 由于物品用完而不能使用的场合
  1077.       unless $game_party.item_can_use?(@item.id)
  1078.         # 再次生成物品窗口的内容
  1079.         #@item_window.refresh
  1080.         # @equip_window.dispose
  1081.         @itemlist_window.refresh
  1082.       end
  1083.       # 删除目标窗口
  1084.       @itemlist_window.active = true
  1085.       @status_window.index = -2
  1086.       @status_window.active = false
  1087.       return
  1088.     end
  1089.     # 按下 C 键的情况下
  1090.     if Input.trigger?(Input::C)
  1091.       # 如果物品用完的情况下
  1092.       if $game_party.item_number(@item.id) == 0
  1093.         # 演奏冻结 SE
  1094.         $game_system.se_play($data_system.buzzer_se)
  1095.         return
  1096.       end
  1097.       # 目标是全体的情况下
  1098.       if @status_window.index == -1
  1099.         # 对同伴全体应用物品使用效果
  1100.         used = false
  1101.         for i in $game_party.actors
  1102.           used |= i.item_effect(@item)
  1103.         end
  1104.       end
  1105.       # 目标是单体的情况下
  1106.       if @status_window.index >= 0
  1107.         # 对目标角色应用物品的使用效果
  1108.         target = $game_party.actors[@status_window.index]
  1109.         used = target.item_effect(@item)
  1110.       end
  1111.       # 使用物品的情况下
  1112.       if used
  1113.         # 演奏物品使用时的 SE
  1114.         $game_system.se_play(@item.menu_se)
  1115.         # 消耗品的情况下
  1116.         if @item.consumable
  1117.           # 使用的物品数减 1
  1118.           $game_party.lose_item(@item.id, 1)
  1119.           # 再描绘物品窗口的项目
  1120. @itemlist_window.draw_item(@itemlist_window.index)
  1121.           #          @item_window.draw_item(@itemlist_window.index)#item_window.index)
  1122.         end
  1123.         # 再生成目标窗口的内容
  1124.         @status_window.refresh
  1125.        # @equip_window.refresh
  1126.        # @itemlist_window.refresh
  1127.         # 全灭的情况下
  1128.         if $game_party.all_dead?
  1129.           # 切换到游戏结束画面
  1130.           $scene = Scene_Gameover.new
  1131.           return
  1132.         end
  1133.         # 公共事件 ID 有效的情况下
  1134.         if @item.common_event_id > 0
  1135.           # 预约调用公共事件
  1136.           $game_temp.common_event_id = @item.common_event_id
  1137.           @item_help_window.dispose
  1138.           #@item_window.dispose
  1139.           @help_window.dispose
  1140.            @equip_window.dispose
  1141.           @itemlist_window.dispose
  1142.           # 切换到地图画面
  1143.           $scene = Scene_Map.new
  1144.           return
  1145.         end
  1146.       end
  1147.       # 无法使用物品的情况下
  1148.       unless used
  1149.         # 演奏冻结 SE
  1150.         $game_system.se_play($data_system.buzzer_se)
  1151.       end
  1152.       return
  1153.     end
  1154.   end
  1155.   #--------------------------------------------------------------------------
  1156.   # ● 技能刷新
  1157.   #--------------------------------------------------------------------------
  1158.   def update_skill
  1159.     # 按下 B 键的情况下
  1160.     if Input.trigger?(Input::B)
  1161.       # 演奏取消 SE
  1162.       $game_system.se_play($data_system.cancel_se)
  1163.       # 切换到菜单画面
  1164.       @skill_help_window.dispose
  1165.       @skill_window.dispose
  1166.       @skill_window_icon.dispose
  1167.       @skill_update = false
  1168.       @status_window.active = true
  1169.       @status_window.index = @window_index
  1170.       return
  1171.     end
  1172.     # 按下 C 键的情况下
  1173.     if Input.trigger?(Input::C)
  1174.       # 获取特技窗口现在选择的特技的数据
  1175.       @skill = @skill_window.skill
  1176.       # 不能使用的情况下
  1177.       if @skill == nil or not @actor.skill_can_use?(@skill.id)
  1178.         # 演奏冻结 SE
  1179.         $game_system.se_play($data_system.buzzer_se)
  1180.         return
  1181.       end
  1182.       # 演奏确定 SE
  1183.       $game_system.se_play($data_system.decision_se)
  1184.       # 效果范围是我方的情况下
  1185.       if @skill.scope >= 3
  1186.         # 激活目标窗口
  1187.         @skill_window.active = false
  1188.         @status_window.active = true
  1189.         # 设置效果范围 (单体/全体) 的对应光标位置
  1190.         if @skill.scope == 4 || @skill.scope == 6
  1191.           @status_window.index = -1
  1192.         elsif @skill.scope == 7
  1193.           @status_window.index = @actor_index - 10
  1194.         else
  1195.           @status_window.index = 0
  1196.         end
  1197.       # 效果在我方以外的情况下
  1198.       else
  1199.         # 公共事件 ID 有效的情况下
  1200.         if @skill.common_event_id > 0
  1201.           # 预约调用公共事件
  1202.           $game_temp.common_event_id = @skill.common_event_id
  1203.           # 演奏特技使用时的 SE
  1204.           $game_system.se_play(@skill.menu_se)
  1205.           # 消耗 SP
  1206.           @actor.sp -= @skill.sp_cost
  1207.           # 再生成各窗口的内容
  1208.           @skill_window.refresh
  1209.           @status_window.refresh
  1210.           @skill_help_window.dispose
  1211.           @skill_window.dispose
  1212.           @skill_window_icon.dispose
  1213. #          @back_skill.dispose
  1214.           # 切换到地图画面
  1215.           $scene = Scene_Map.new
  1216.           return
  1217.         end
  1218.       end
  1219.       return
  1220.     end
  1221.   end
  1222.   def update_skill_target
  1223.     # 按下 B 键的情况下
  1224.     if Input.trigger?(Input::B)
  1225.       # 演奏取消 SE
  1226.       $game_system.se_play($data_system.cancel_se)
  1227.       # 删除目标窗口
  1228.       @skill_window.active = true
  1229.       @status_window.index = -2
  1230.       @status_window.active = false
  1231.       return
  1232.     end
  1233.     # 按下 C 键的情况下
  1234.     if Input.trigger?(Input::C)
  1235.       # 因为 SP 不足而无法使用的情况下
  1236.       unless @actor.skill_can_use?(@skill.id)
  1237.         # 演奏冻结 SE
  1238.         $game_system.se_play($data_system.buzzer_se)
  1239.         return
  1240.       end
  1241.       # 目标是全体的情况下
  1242.       if @status_window.index == -1
  1243.         # 对同伴全体应用特技使用效果
  1244.         used = false
  1245.         for i in $game_party.actors
  1246.           used |= i.skill_effect(@actor, @skill)
  1247.         end
  1248.       end
  1249.       # 目标是使用者的情况下
  1250.       if @status_window.index <= -2
  1251.         # 对目标角色应用特技的使用效果
  1252.         target = $game_party.actors[@status_window.index + 10]
  1253.         used = target.skill_effect(@actor, @skill)
  1254.       end
  1255.       # 目标是单体的情况下
  1256.       if @status_window.index >= 0
  1257.         # 对目标角色应用特技的使用效果
  1258.         target = $game_party.actors[@status_window.index]
  1259.         used = target.skill_effect(@actor, @skill)
  1260.       end
  1261.       # 使用特技的情况下
  1262.       if used
  1263.         # 演奏特技使用时的 SE
  1264.         $game_system.se_play(@skill.menu_se)
  1265. #-----修正------------------------------------------------------
  1266.         @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
  1267.         # SP 消費
  1268.         @actor.sp -= @actor.skill_sp_cost[@skill.id]
  1269. #---------------------------------------------------------------
  1270.         # 再生成各窗口内容
  1271.         @status_window.refresh
  1272.         @skill_window.refresh
  1273.         # 全灭的情况下
  1274.         if $game_party.all_dead?
  1275.           # 切换到游戏结束画面
  1276.           $scene = Scene_Gameover.new
  1277.           return
  1278.         end
  1279.         # 公共事件 ID 有效的情况下
  1280.         if @skill.common_event_id > 0
  1281.           # 预约调用公共事件
  1282.           $game_temp.common_event_id = @skill.common_event_id
  1283.           @skill_help_window.dispose
  1284.           @skill_window.dispose
  1285.           @back_skill.dispose
  1286.  
  1287.           # 释放窗口
  1288.           @item_window.dispose
  1289. #          @back_item.dispose
  1290.           @status_window.dispose
  1291.           # 切换到地图画面
  1292.           $scene = Scene_Map.new
  1293.           return
  1294.         end
  1295.       end
  1296.       # 无法使用特技的情况下
  1297.       unless used
  1298.         # 演奏冻结 SE
  1299.         $game_system.se_play($data_system.buzzer_se)
  1300.       end
  1301.       return
  1302.     end
  1303.   end
  1304.   #--------------------------------------------------------------------------
  1305.   # ● 装备刷新
  1306.   #--------------------------------------------------------------------------
  1307.   def update_right
  1308.     # 按下 B 键的情况下
  1309.     if Input.trigger?(Input::B)
  1310.       # 演奏取消 SE
  1311.       $game_system.se_play($data_system.cancel_se)
  1312.       # 切换到菜单画面
  1313.       @equip_help_window.dispose
  1314.       @equip_right_window.dispose
  1315.       @equip_item_window1.dispose
  1316.       @equip_item_window2.dispose
  1317.       @equip_item_window3.dispose
  1318.       @equip_item_window4.dispose
  1319.       @equip_item_window5.dispose
  1320.       @equip_item_window6.dispose
  1321.       @equip_item_window7.dispose
  1322.       @equip_item_window8.dispose
  1323.       #........................................................................
  1324.       @equip_window.dispose
  1325.       #........................................................................
  1326.       @equip_update = false
  1327.       @status_window1.active = true
  1328.     end
  1329.     # 按下 C 键的情况下
  1330.     if Input.trigger?(Input::C)
  1331.       # 固定装备的情况下
  1332.       if @actor.equip_fix?(@equip_right_window.index)
  1333.         # 演奏冻结 SE
  1334.         $game_system.se_play($data_system.buzzer_se)
  1335.         return
  1336.       end
  1337.       # 演奏确定 SE
  1338.       $game_system.se_play($data_system.decision_se)
  1339.       # 激活物品窗口
  1340.       @equip_right_window.active = false
  1341.       @equip_item_window.active = true
  1342.       @equip_window.set_item_id
  1343.       @equip_item_window.index = 0
  1344.       return
  1345.     end
  1346.   end
  1347.   def update_equip_item
  1348.     # 按下 B 键的情况下
  1349.     if Input.trigger?(Input::B)
  1350.       # 演奏取消 SE
  1351.       $game_system.se_play($data_system.cancel_se)
  1352.       # 激活右侧窗口
  1353.       @equip_right_window.active = true
  1354.       @equip_item_window.active = false
  1355.       @equip_item_window.index = -1
  1356.       @equip_window.set_item_id
  1357.       return
  1358.     end
  1359.     # 按下 C 键的情况下
  1360.     if Input.trigger?(Input::C)      
  1361.       # 演奏装备 SE
  1362.       $game_system.se_play($data_system.equip_se)
  1363.       # 获取物品窗口现在选择的装备数据
  1364.       item = @equip_item_window.item
  1365.       # 变更装备
  1366.       @actor.equip(@equip_right_window.index, item == nil ? 0 : item.id)
  1367.       # 激活右侧窗口
  1368.       @equip_right_window.active = true
  1369.       # @equip_right_window.visible = false#true
  1370.       @equip_item_window.active = false
  1371.  
  1372.       @equip_item_window.index = -1
  1373.       @equip_window.set_item_id
  1374.       # 再生成右侧窗口、物品窗口的内容
  1375.       @equip_right_window.refresh
  1376.       if @equip_right_window.index == 6 or @equip_right_window.index == 7
  1377.         @equip_item_window7.refresh
  1378.         @equip_item_window8.refresh
  1379.       else
  1380.         @equip_item_window.refresh
  1381.       end
  1382.       return
  1383.     end
  1384.   end
  1385.   def update_status1
  1386.     # 按下 B 键的情况下
  1387.     if Input.trigger?(Input::B)
  1388.       # 演奏取消 SE
  1389.       $game_system.se_play($data_system.cancel_se)
  1390.       # 激活命令窗口
  1391.       @command_window.active = true
  1392.       @status_window1.active = false
  1393.       @status_window1.index = -1
  1394.       return
  1395.     end
  1396.     # 按下 C 键的情况下
  1397.     if Input.trigger?(Input::C)
  1398.       # 命令窗口的光标位置分支
  1399.         # 演奏确定 SE
  1400.         $game_system.se_play($data_system.decision_se)
  1401.         @equip_index = 0
  1402.         @actor = $game_party.actors[@status_window1.index]
  1403.         @equip_help_window = Window_Help_New.new
  1404.         @equip_help_window.x = 147
  1405.         @equip_help_window.y = 386# 480 - 64 - 32 - 8
  1406.         @equip_right_window = Window_EquipRight_New.new(@actor)
  1407.         @equip_item_window1 = Window_EquipItem_New.new(@actor, 0)
  1408.         @equip_item_window2 = Window_EquipItem_New.new(@actor, 1)
  1409.         @equip_item_window3 = Window_EquipItem_New.new(@actor, 2)
  1410.         @equip_item_window4 = Window_EquipItem_New.new(@actor, 3)
  1411.         @equip_item_window5 = Window_EquipItem_New.new(@actor, 4)
  1412.         @equip_item_window6 = Window_EquipItem_New.new(@actor, 5)
  1413.         @equip_item_window7 = Window_EquipItem_New.new(@actor, 6)
  1414.         @equip_item_window8 = Window_EquipItem_New.new(@actor, 7)
  1415.         #........................................................................
  1416.         @equip_window = Window_Equip.new
  1417.         @equip_window.y = 405
  1418.         @equip_window.set_item_id
  1419.         #........................................................................
  1420.         # 关联帮助窗口
  1421.         @equip_right_window.help_window = @equip_help_window
  1422.         @equip_item_window1.help_window = @equip_help_window
  1423.         @equip_item_window2.help_window = @equip_help_window
  1424.         @equip_item_window3.help_window = @equip_help_window
  1425.         @equip_item_window4.help_window = @equip_help_window
  1426.         @equip_item_window5.help_window = @equip_help_window
  1427.         @equip_item_window6.help_window = @equip_help_window
  1428.         @equip_item_window7.help_window = @equip_help_window
  1429.         @equip_item_window8.help_window = @equip_help_window
  1430.         # 设置光标位置
  1431.         @equip_right_window.index = @equip_index
  1432.         @status_window1.active = false
  1433.         @equip_update = true
  1434.         # 设置物品窗口的可视状态
  1435.         @equip_item_window1.visible = (@equip_right_window.index == 0)
  1436.         @equip_item_window2.visible = (@equip_right_window.index == 1)
  1437.         @equip_item_window3.visible = (@equip_right_window.index == 2)
  1438.         @equip_item_window4.visible = (@equip_right_window.index == 3)
  1439.         @equip_item_window5.visible = (@equip_right_window.index == 4)
  1440.         @equip_item_window6.visible = (@equip_right_window.index == 5)
  1441.         @equip_item_window7.visible = (@equip_right_window.index == 6)
  1442.         @equip_item_window8.visible = (@equip_right_window.index == 7)
  1443.         # 获取当前装备中的物品
  1444.         item1 = @equip_right_window.item
  1445.         # 设置当前的物品窗口到 @item_window
  1446.         @equip_window.set_item_id
  1447.         case @equip_right_window.index
  1448.         when 0
  1449.           @equip_item_window = @equip_item_window1
  1450.         when 1
  1451.           @equip_item_window = @equip_item_window2
  1452.         when 2
  1453.           @equip_item_window = @equip_item_window3
  1454.         when 3
  1455.           @equip_item_window = @equip_item_window4
  1456.         when 4
  1457.           @equip_item_window = @equip_item_window5
  1458.         when 5
  1459.           @equip_item_window = @equip_item_window6
  1460.         when 6
  1461.           @equip_item_window = @equip_item_window7
  1462.         when 7
  1463.           @equip_item_window = @equip_item_window8
  1464.         end
  1465.         # 右窗口被激活的情况下
  1466.         if @equip_right_window.active
  1467.           # 删除变更装备后的能力
  1468.           @status_window1.set_new_parameters(nil, nil, nil)
  1469.         end
  1470.         # 物品窗口被激活的情况下
  1471.         if @equip_item_window.active
  1472.           # 获取现在选中的物品
  1473.           item2 = @equip_item_window.item
  1474.           # 变更装备
  1475.           last_hp = @actor.hp
  1476.           last_sp = @actor.sp
  1477.           @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
  1478.           # 获取变更装备后的能力值
  1479.           new_atk = @actor.atk
  1480.           new_pdef = @actor.pdef
  1481.           new_mdef = @actor.mdef
  1482.           # 返回到装备
  1483.           @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
  1484.           @actor.hp = last_hp
  1485.           @actor.sp = last_sp
  1486.           # 描画左窗口
  1487.           @status_window1.set_new_parameters(new_atk, new_pdef, new_mdef)
  1488.           #........................................................................
  1489.           @equip_window.set_item(item2)
  1490.           #........................................................................
  1491.         end
  1492.     end
  1493.   end
  1494.   #--------------------------------------------------------------------------
  1495.   # ● 状态刷新
  1496.   #--------------------------------------------------------------------------
  1497.   def update_status_status
  1498.     # 按下 B 键的情况下
  1499.     if Input.trigger?(Input::B)
  1500.       # 演奏取消 SE
  1501.       $game_system.se_play($data_system.cancel_se)
  1502.       # 切换到菜单画面
  1503.       @status_status_window.dispose
  1504. #      @bgstatus.dispose
  1505.       @status_update = false
  1506.       @status_window.active = true
  1507.       return
  1508.     end
  1509.   end
  1510.  
  1511.   def update_system
  1512.     @system_window.update
  1513.     # 按下 B 键的情况下
  1514.     if Input.trigger?(Input::B)
  1515.       # 演奏取消 SE
  1516.       $game_system.se_play($data_system.cancel_se)
  1517.       # 切换到菜单画面
  1518.       @system_window.dispose
  1519.       @sys_update = false
  1520.       @command_window.active = true
  1521.       return
  1522.     end
  1523.     # 按下 C 键的情况下
  1524.     if Input.trigger?(Input::C)
  1525.       # 演奏确定 SE
  1526.       $game_system.se_play($data_system.decision_se)
  1527.       case @system_window.index
  1528.       when 0
  1529.         @bgm_window = Window_BGM_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
  1530.         @currentbgm_window = Window_CurrentBGM_Volume.new
  1531.         @system_window.active = false
  1532.       when 1
  1533.         @sfx_window = Window_SFX_Volume.new(80, ["0%", "17%", "34%", "50%", "67%", "84%", "100%"])
  1534.         @currentsfx_window = Window_CurrentSFX_Volume.new
  1535.         @system_window.active = false
  1536.       when 2
  1537.         @system_window.dispose
  1538.         $scene = Scene_Save.new
  1539.       when 3
  1540.         @system_window.dispose
  1541.         $scene = Scene_Load.new(true)
  1542.       when 4
  1543.         @end_window = Window_EndCommand.new
  1544.         @system_window.active = false
  1545.       when 5
  1546.         @system_window.dispose
  1547.         $scene = Chaochao_Scene_Party.new
  1548.       when 6
  1549.          @system_window.dispose
  1550.          $scene = Scene_Lvup.new
  1551.  
  1552.       end
  1553.       return
  1554.     end
  1555.   end
  1556.  
  1557.   def update_bgm
  1558.     @bgm_window.update
  1559.     if Input.trigger?(Input::B)
  1560.       $game_system.se_play($data_system.cancel_se)
  1561.       @system_window.active = true
  1562.       @bgm_window.dispose
  1563.       @currentbgm_window.dispose
  1564.       return
  1565.     end
  1566.     if Input.trigger?(Input::C)
  1567.       case @bgm_window.index
  1568.       when 0
  1569.         $game_system.bgm_volume = 0
  1570.         $game_system.bgm_play($game_system.bgm_memorize)
  1571.         @currentbgm_window.refresh
  1572.       when 1
  1573.         $game_system.bgm_volume = 17
  1574.         $game_system.bgm_play($game_system.bgm_memorize)
  1575.         @currentbgm_window.refresh
  1576.       when 2
  1577.         $game_system.bgm_volume = 34
  1578.         $game_system.bgm_play($game_system.bgm_memorize)
  1579.         @currentbgm_window.refresh
  1580.       when 3
  1581.         $game_system.bgm_volume = 50
  1582.         $game_system.bgm_play($game_system.bgm_memorize)
  1583.         @currentbgm_window.refresh
  1584.       when 4
  1585.         $game_system.bgm_volume = 67
  1586.         $game_system.bgm_play($game_system.bgm_memorize)
  1587.         @currentbgm_window.refresh
  1588.       when 5
  1589.         $game_system.bgm_volume = 84
  1590.         $game_system.bgm_play($game_system.bgm_memorize)
  1591.         @currentbgm_window.refresh
  1592.       when 6
  1593.         $game_system.bgm_volume = 100
  1594.         $game_system.bgm_play($game_system.bgm_memorize)
  1595.         @currentbgm_window.refresh
  1596.       end
  1597.       return
  1598.     end
  1599.   end
  1600.  
  1601.   def update_sfx
  1602.     @sfx_window.update
  1603.     if Input.trigger?(Input::B)
  1604.       $game_system.se_play($data_system.cancel_se)
  1605.       @sfx_window.dispose
  1606.       @currentsfx_window.dispose
  1607.       @system_window.active = true
  1608.       return
  1609.     end
  1610.     if Input.trigger?(Input::C)
  1611.       case @sfx_window.index
  1612.       when 0
  1613.         $game_system.se_volume = 0
  1614.         $game_system.se_play($data_system.decision_se)
  1615.         @currentsfx_window.refresh
  1616.       when 1
  1617.         $game_system.se_volume = 17
  1618.         $game_system.se_play($data_system.decision_se)
  1619.         @currentsfx_window.refresh
  1620.       when 2
  1621.         $game_system.se_volume = 34
  1622.         $game_system.se_play($data_system.decision_se)
  1623.         @currentsfx_window.refresh
  1624.       when 3
  1625.         $game_system.se_volume = 50
  1626.         $game_system.se_play($data_system.decision_se)
  1627.         @currentsfx_window.refresh
  1628.       when 4
  1629.         $game_system.se_volume = 67
  1630.         $game_system.se_play($data_system.decision_se)
  1631.         @currentsfx_window.refresh
  1632.       when 5
  1633.         $game_system.se_volume = 84
  1634.         $game_system.se_play($data_system.decision_se)
  1635.         @currentsfx_window.refresh
  1636.       when 6
  1637.         $game_system.se_volume = 100
  1638.         $game_system.se_play($data_system.decision_se)
  1639.         @currentsfx_window.refresh
  1640.       end
  1641.       $game_map.autoplay
  1642.       return
  1643.     end
  1644.   end
  1645.  
  1646.   def update_end
  1647.     @end_window.update
  1648.     if Input.trigger?(Input::B)
  1649.       $game_system.se_play($data_system.cancel_se)
  1650.       @end_window.dispose
  1651.       @system_window.active = true
  1652.       return
  1653.     end
  1654.     if Input.trigger?(Input::C)
  1655.       case @end_window.index
  1656.       when 0
  1657.         @end_window.dispose
  1658.         @system_window.dispose
  1659.         command_to_title
  1660.       when 1
  1661.         command_shutdown
  1662.       end
  1663.       return
  1664.     end
  1665.   end
  1666.  
  1667.   def command_to_title
  1668.     $game_system.se_play($data_system.decision_se)
  1669.     Audio.bgm_fade(800)
  1670.     Audio.bgs_fade(800)
  1671.     Audio.me_fade(800)
  1672.     $scene = Scene_Title.new
  1673.   end
  1674.  
  1675.   def command_shutdown
  1676.     $game_system.se_play($data_system.decision_se)
  1677.     Audio.bgm_fade(800)
  1678.     Audio.bgs_fade(800)
  1679.     Audio.me_fade(800)
  1680.     $scene = nil
  1681.   end
  1682. end



好吧,新人发帖,若有不足之处,敬请原谅!


我的问题已经自行解决了,感谢各位帮助!

Lv3.寻梦者

梦石
0
星屑
1034
在线时间
749 小时
注册时间
2013-2-15
帖子
116

开拓者

2
发表于 2015-7-25 09:52:39 | 只看该作者
报错不是说了  NameError 吗
    @command_window = Window_MenuCommand.new(@menu_index)   #错误语句
就是Window_MenuCommand没有定义
你试试Window_MenuCommand替换为Window_Command
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
190
在线时间
54 小时
注册时间
2015-7-10
帖子
9
3
 楼主| 发表于 2015-7-25 17:38:14 | 只看该作者
九幽鬼少 发表于 2015-7-25 09:52
报错不是说了  NameError 吗
    @command_window = Window_MenuCommand.new(@menu_index)   #错误语句
就 ...

额……如果我没理解错的话,就是把Menu去掉,但,之后又出现了错误。
错误如下:脚本节‘仿轩辕菜单’,行号35:发生了ArgumentError。
wrong number of arguments(1 for 2){个人用百度翻译得到的结果是错误的参数数目(2为1)}


又附:是我理解错了意思,还是……?
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2015-7-25 19:05:11 | 只看该作者
报错的原因是脚本不全导致,请全局搜索'class Window_MenuCommand',如果搜不到,那证明脚本不全。
如果搜到了我再继续看看是不是别的原因。
最好能上范例工程。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
190
在线时间
54 小时
注册时间
2015-7-10
帖子
9
5
 楼主| 发表于 2015-7-26 13:22:23 | 只看该作者
本帖最后由 suwenhai 于 2015-7-26 13:34 编辑
RyanBern 发表于 2015-7-25 19:05
报错的原因是脚本不全导致,请全局搜索'class Window_MenuCommand',如果搜不到,那证明脚本不全。
如果搜 ...


的确搜不到。

注:我目前只能发小于2MB的文件,所以发不了范例。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
190
在线时间
54 小时
注册时间
2015-7-10
帖子
9
6
 楼主| 发表于 2015-7-27 12:24:11 | 只看该作者
本帖最后由 suwenhai 于 2015-7-28 22:54 编辑

http://pan.baidu.com/s/1o602di6



百度网盘

点评

用网盘  发表于 2015-7-28 13:29
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
7
发表于 2015-7-29 09:24:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 16:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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