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

Project1

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

[已经解决] 呜呜,轩辕剑美化加强求助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
195
在线时间
2 小时
注册时间
2010-11-12
帖子
2
跳转到指定楼层
1
发表于 2010-11-12 21:26:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #==============================================================================
  5. # ■ 仿轩辕剑式的菜单(美化&加强)--By whbm
  6. #==============================================================================
  7. # ■ 仿轩辕剑式的菜单--By 亿万星辰
  8. #==============================================================================
  9. # ■ Scene_Menu
  10. #------------------------------------------------------------------------------
  11. #  处理菜单画面的类。
  12. #==============================================================================

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

  378.         # 切换到物品画面
  379.         @item_update = true
  380.         @command_window.active = false
  381.       when 1  # 特技
  382.         # 演奏确定 SE
  383.         $game_system.se_play($data_system.decision_se)
  384.         # 激活状态窗口
  385.         @command_window.active = false
  386.         @status_window.active = true
  387.         @status_window.index = 0
  388.       when 2  # 装备
  389.         # 演奏确定 SE
  390.         $game_system.se_play($data_system.decision_se)
  391.         # 激活状态窗口
  392.         @command_window.active = false
  393.         @status_window1.active = true
  394.         @status_window1.index = 0
  395.       when 3  # 状态
  396.         @stagg = -1
  397.         # 演奏确定 SE
  398.         $game_system.se_play($data_system.decision_se)
  399.         # 激活状态窗口
  400.         @command_window.active = false
  401.         @status_window.active = true
  402.         @status_window.index = 0
  403.       when 4  # 降妖谱
  404.         #@stagg = -1
  405.         # 演奏确定 SE
  406.         $game_system.se_play($data_system.decision_se)
  407.         # 激活合成窗口
  408.         @command_window.active = false
  409.         loadcraft
  410.         @command_window.active = true
  411.       when 5  # 存档
  412.         @status_update = false
  413.         # 演奏确定 SE
  414.         $game_system.se_play($data_system.decision_se)
  415.         @system_window = Window_SysCommand.new
  416.         @command_window.active = false
  417.         @sys_update = true
  418.       end
  419.       return
  420.     end
  421.   end

  422.   def loadcraft
  423.     $scene = Scene_MonsterBook.new
  424.   end
  425.   #--------------------------------------------------------------------------

  426.   def update_status
  427.     if @command_window.index == 3 and @stagg != @status_window.index
  428.         # 演奏确定 SE
  429.         # 切换到状态画面
  430.         # 获取角色
  431.         @actor = $game_party.actors[@status_window.index]
  432.         # 生成状态窗口
  433.         if @stagg != -1
  434.           @status_status_window.dispose
  435.         end
  436.         @stagg = @status_window.index
  437.         @status_status_window = Window_Status.new(@actor)
  438.         @status_update = true
  439.     end
  440.     # 按下 B 键的情况下
  441.     if Input.trigger?(Input::B)
  442.       # 演奏取消 SE
  443.       $game_system.se_play($data_system.cancel_se)
  444.       if @command_window.index == 3
  445.         @status_status_window.dispose
  446.         @stagg = -1
  447.       end
  448.       # 激活命令窗口
  449.       @command_window.active = true
  450.       @status_window.active = false
  451.       @status_window.index = -2
  452.       return
  453.     end
  454.     # 按下 C 键的情况下
  455.     if Input.trigger?(Input::C)
  456.       # 命令窗口的光标位置分支
  457.       case @command_window.index
  458.       when 1  # 特技
  459.         # 本角色的行动限制在 2 以上的情况下
  460.         if $game_party.actors[@status_window.index].restriction >= 2
  461.           # 演奏冻结 SE
  462.           $game_system.se_play($data_system.buzzer_se)
  463.           return
  464.         end
  465.         # 演奏确定 SE
  466.         $game_system.se_play($data_system.decision_se)
  467.         @window_index = @status_window.index
  468.         @actor = $game_party.actors[@status_window.index]
  469.         # 生成帮助窗口、状态窗口、特技窗口
  470.         @skill_help_window = Window_Help_New_Skill.new
  471.         @skill_window = Window_Skill_New.new(@actor)
  472.         #........................................................................
  473.         @skill_window_icon = Window_Skill_Icon.new
  474.         @skill_window_icon.y = 402
  475.         #........................................................................
  476.         # 关联帮助窗口
  477.         @skill_window.help_window = @skill_help_window
  478.         @status_window.active = false
  479.         @skill_update = true
  480.       end
  481.       return
  482.     end
  483.   end
  484.   #--------------------------------------------------------------------------
  485.   # ● 物品刷新
  486.   #--------------------------------------------------------------------------
  487.   def update_item
  488.     # 按下 B 键的情况下
  489.     if Input.trigger?(Input::B)
  490.       # 演奏取消 SE
  491.       $game_system.se_play($data_system.cancel_se)
  492.       # 切换到菜单画面
  493.       @item_help_window.dispose
  494.       @item_window.dispose
  495.       #........................................................................
  496.       @equip_window.dispose
  497.       #........................................................................
  498.       @item_update = false
  499.       @command_window.active = true
  500.       return
  501.     end
  502.     # 按下 C 键的情况下
  503.     if Input.trigger?(Input::C)
  504.       # 获取物品窗口当前选中的物品数据
  505.       @item = @item_window.item

  506.       # 不使用物品的情况下
  507.       unless @item.is_a?(RPG::Item)
  508.         # 演奏冻结 SE
  509.         $game_system.se_play($data_system.buzzer_se)
  510.         return
  511.       end
  512.       # 不能使用的情况下
  513.       unless $game_party.item_can_use?(@item.id)
  514.         # 演奏冻结 SE
  515.         $game_system.se_play($data_system.buzzer_se)
  516.         return
  517.       end
  518.       # 演奏确定 SE
  519.       $game_system.se_play($data_system.decision_se)
  520.       # 效果范围是我方的情况下
  521.       if @item.scope >= 3
  522.         # 激活目标窗口
  523.         @item_window.active = false
  524.         @status_window.active = true
  525.         # 设置效果范围 (单体/全体) 的对应光标位置
  526.         if @item.scope == 4 || @item.scope == 6
  527.           @status_window.index = -1
  528.         else
  529.           @status_window.index = 0
  530.         end
  531.       # 效果在我方以外的情况下
  532.       else
  533.         # 公共事件 ID 有效的情况下
  534.         if @item.common_event_id > 0
  535.           # 预约调用公共事件
  536.           $game_temp.common_event_id = @item.common_event_id
  537.           # 演奏物品使用时的 SE
  538.           $game_system.se_play(@item.menu_se)
  539.           # 消耗品的情况下
  540.           if @item.consumable
  541.             # 使用的物品数减 1
  542.             $game_party.lose_item(@item.id, 1)
  543.             # 再描绘物品窗口的项目
  544.             @item_window.draw_item(@item_window.index)
  545.           end
  546.           @item_help_window.dispose
  547.           @item_window.dispose
  548.           #........................................................................
  549.           @equip_window.dispose
  550.           #........................................................................
  551.           # 切换到地图画面
  552.           $scene = Scene_Map.new
  553.           return
  554.         end
  555.       end
  556.       return
  557.     end
  558.   end
  559.   def update_item_target
  560.     # 按下 B 键的情况下
  561.     if Input.trigger?(Input::B)
  562.       # 演奏取消 SE
  563.       $game_system.se_play($data_system.cancel_se)
  564.       # 由于物品用完而不能使用的场合
  565.       unless $game_party.item_can_use?(@item.id)
  566.         # 再次生成物品窗口的内容
  567.         @item_window.refresh
  568.       end
  569.       # 删除目标窗口
  570.       @item_window.active = true
  571.       @status_window.index = -2
  572.       @status_window.active = false
  573.       return
  574.     end
  575.     # 按下 C 键的情况下
  576.     if Input.trigger?(Input::C)
  577.       # 如果物品用完的情况下
  578.       if $game_party.item_number(@item.id) == 0
  579.         # 演奏冻结 SE
  580.         $game_system.se_play($data_system.buzzer_se)
  581.         return
  582.       end
  583.       # 目标是全体的情况下
  584.       if @status_window.index == -1
  585.         # 对同伴全体应用物品使用效果
  586.         used = false
  587.         for i in $game_party.actors
  588.           used |= i.item_effect(@item)
  589.         end
  590.       end
  591.       # 目标是单体的情况下
  592.       if @status_window.index >= 0
  593.         # 对目标角色应用物品的使用效果
  594.         target = $game_party.actors[@status_window.index]
  595.         used = target.item_effect(@item)
  596.       end
  597.       # 使用物品的情况下
  598.       if used
  599.         # 演奏物品使用时的 SE
  600.         $game_system.se_play(@item.menu_se)
  601.         # 消耗品的情况下
  602.         if @item.consumable
  603.           # 使用的物品数减 1
  604.           $game_party.lose_item(@item.id, 1)
  605.           # 再描绘物品窗口的项目
  606.           @item_window.draw_item(@item_window.index)
  607.         end
  608.         # 再生成目标窗口的内容
  609.         @status_window.refresh
  610.         # 全灭的情况下
  611.         if $game_party.all_dead?
  612.           # 切换到游戏结束画面
  613.           $scene = Scene_Gameover.new
  614.           return
  615.         end
  616. #==============
  617.         # 公共事件 ID 有效的情况下
  618. #       if @item.common_event_id > 0
  619.           # 预约调用公共事件
  620. #          $game_temp.common_event_id = @item.common_event_id
  621. #          @item_help_window.dispose
  622. #          @item_window.dispose      
  623.           # 切换到地图画面
  624. #          $scene = Scene_Map.new
  625. #          return
  626. #        end
  627. #==============
  628.         # 公共事件 ID 有效的情况下
  629.         if @item.common_event_id > 0
  630.           # 预约调用公共事件
  631.           $game_temp.common_event_id = @item.common_event_id
  632.           # 演奏物品使用时的 SE
  633.           $game_system.se_play(@item.menu_se)
  634.           # 消耗品的情况下
  635.           if @item.consumable
  636.             # 使用的物品数减 1
  637.             $game_party.lose_item(@item.id, 1)
  638.             # 再描绘物品窗口的项目
  639.             @item_window.draw_item(@item_window.index)
  640.           end
  641.           @item_help_window.dispose
  642.           @item_window.dispose
  643.           #........................................................................
  644.           @equip_window.dispose
  645.           #........................................................................
  646.           # 切换到地图画面
  647.           $scene = Scene_Map.new
  648.           return
  649.         end
  650.       end
  651.       # 无法使用物品的情况下
  652.       unless used
  653.         # 演奏冻结 SE
  654.         $game_system.se_play($data_system.buzzer_se)
  655.       end
  656.       return
  657.     end
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ● 技能刷新
  661.   #--------------------------------------------------------------------------
  662.   def update_skill
  663.     # 按下 B 键的情况下
  664.     if Input.trigger?(Input::B)
  665.       # 演奏取消 SE
  666.       $game_system.se_play($data_system.cancel_se)
  667.       # 切换到菜单画面
  668.       @skill_help_window.dispose
  669.       @skill_window.dispose
  670.       @skill_window_icon.dispose
  671.       @skill_update = false
  672.       @status_window.active = true
  673.       @status_window.index = @window_index
  674.       return
  675.     end
  676.     # 按下 C 键的情况下
  677.     if Input.trigger?(Input::C)
  678.       # 获取特技窗口现在选择的特技的数据
  679.       @skill = @skill_window.skill
  680.       # 不能使用的情况下
  681.       if @skill == nil or not @actor.skill_can_use?(@skill.id)
  682.         # 演奏冻结 SE
  683.         $game_system.se_play($data_system.buzzer_se)
  684.         return
  685.       end
  686.       # 演奏确定 SE
  687.       $game_system.se_play($data_system.decision_se)
  688.       # 效果范围是我方的情况下
  689.       if @skill.scope >= 3
  690.         # 激活目标窗口
  691.         @skill_window.active = false
  692.         @status_window.active = true
  693.         # 设置效果范围 (单体/全体) 的对应光标位置
  694.         if @skill.scope == 4 || @skill.scope == 6
  695.           @status_window.index = -1
  696.         elsif @skill.scope == 7
  697.           @status_window.index = @actor_index - 10
  698.         else
  699.           @status_window.index = 0
  700.         end
  701.       # 效果在我方以外的情况下
  702.       else
  703.         # 公共事件 ID 有效的情况下
  704.         if @skill.common_event_id > 0
  705.           # 预约调用公共事件
  706.           $game_temp.common_event_id = @skill.common_event_id
  707.           # 演奏特技使用时的 SE
  708.           $game_system.se_play(@skill.menu_se)
  709.           # 消耗 SP
  710.           #@actor.sp -= @actor.skill_sp_cost
  711.           @actor.sp -= @skill.sp_cost
  712.           # 再生成各窗口的内容
  713.           @skill_window.refresh
  714.           @status_window.refresh
  715.           @skill_help_window.dispose
  716.           @skill_window.dispose
  717.           @skill_window_icon.dispose
  718.           @back_skill.dispose
  719.           # 切换到地图画面
  720.           $scene = Scene_Map.new
  721.           return
  722.         end
  723.       end
  724.       return
  725.     end
  726.   end
  727.   def update_skill_target
  728.     # 按下 B 键的情况下
  729.     if Input.trigger?(Input::B)
  730.       # 演奏取消 SE
  731.       $game_system.se_play($data_system.cancel_se)
  732.       # 删除目标窗口
  733.       @skill_window.active = true
  734.       @status_window.index = -2
  735.       @status_window.active = false
  736.       return
  737.     end
  738.     # 按下 C 键的情况下
  739.     if Input.trigger?(Input::C)
  740.       # 因为 SP 不足而无法使用的情况下
  741.       unless @actor.skill_can_use?(@skill.id)
  742.         # 演奏冻结 SE
  743.         $game_system.se_play($data_system.buzzer_se)
  744.         return
  745.       end
  746.       # 目标是全体的情况下
  747.       if @status_window.index == -1
  748.         # 对同伴全体应用特技使用效果
  749.         used = false
  750.         for i in $game_party.actors
  751.           used |= i.skill_effect(@actor, @skill)
  752.           end
  753.       end
  754.       # 目标是使用者的情况下
  755.       if @status_window.index <= -2
  756.         # 对目标角色应用特技的使用效果
  757.         target = $game_party.actors[@status_window.index + 10]
  758.         used = target.skill_effect(@actor, @skill)
  759.         end
  760.       # 目标是单体的情况下
  761.       if @status_window.index >= 0
  762.         # 对目标角色应用特技的使用效果
  763.         target = $game_party.actors[@status_window.index]
  764.         used = target.skill_effect(@actor, @skill)
  765.         end
  766.       # 使用特技的情况下
  767.       if used
  768.         # 演奏特技使用时的 SE
  769.         $game_system.se_play(@skill.menu_se)
  770. #-----修正------------------------------------------------------
  771. @actor.sp -= @skill.sp_cost
  772. #---------------------------------------------------------------
  773.         # 再生成各窗口内容
  774.         @status_window.refresh
  775.         @skill_window.refresh
  776.         # 全灭的情况下
  777.         if $game_party.all_dead?
  778.           # 切换到游戏结束画面
  779.           $scene = Scene_Gameover.new
  780.           return
  781.         end

  782.       # 公共事件 ID 有效的情况下
  783.         if @skill.common_event_id > 0
  784.           # 预约调用公共事件
  785.           $game_temp.common_event_id = @skill.common_event_id
  786.           # 演奏特技使用时的 SE
  787.           $game_system.se_play(@skill.menu_se)
  788.           # 消耗 SP
  789.           @actor.sp -= @skill.sp_cost
  790.           # 再生成各窗口的内容
  791.           @skill_window.refresh
  792.           @status_window.refresh
  793.           @skill_help_window.dispose
  794.           @skill_window.dispose
  795.           @skill_window_icon.dispose
  796.           @back_skill.dispose
  797.           # 切换到地图画面
  798.           $scene = Scene_Map.new
  799.           return
  800.         end
  801.         
  802. #==========================
  803.         # 公共事件 ID 有效的情况下
  804. #        if @skill.common_event_id > 0
  805.           # 预约调用公共事件
  806. #          $game_temp.common_event_id = @skill.common_event_id
  807. #          @skill_help_window.dispose
  808. #          @skill_window.dispose
  809. #          @back_skill.dispose
  810.           # 释放窗口
  811. #          @item_window.dispose
  812. #         @back_item.dispose
  813. #         @status_window.dispose
  814.           # 切换到地图画面
  815. #          $scene = Scene_Map.new
  816. #          return
  817. #        end
  818. #=============================
  819.     end
  820.       # 无法使用特技的情况下
  821.       unless used
  822.         # 演奏冻结 SE
  823.         $game_system.se_play($data_system.buzzer_se)
  824.       end
  825.       return
  826.     end
  827.   end
  828.   #--------------------------------------------------------------------------
  829.   # ● 装备刷新
  830.   #--------------------------------------------------------------------------
  831.   def update_right
  832.     # 按下 B 键的情况下
  833.     if Input.trigger?(Input::B)
  834.       # 演奏取消 SE
  835.       $game_system.se_play($data_system.cancel_se)
  836.       # 切换到菜单画面
  837.       @equip_help_window.dispose
  838.       @equip_right_window.dispose
  839.       @equip_item_window1.dispose
  840.       @equip_item_window2.dispose
  841.       @equip_item_window3.dispose
  842.       @equip_item_window4.dispose
  843.       @equip_item_window5.dispose
  844.       @equip_item_window6.dispose
  845.       @equip_item_window7.dispose
  846.       @equip_item_window8.dispose
  847.       #........................................................................
  848.       @equip_window.dispose
  849.       #........................................................................
  850.       @equip_update = false
  851.       @status_window1.active = true
  852.     end
  853.     # 按下 C 键的情况下
  854.     if Input.trigger?(Input::C)
  855.       # 固定装备的情况下
  856.       if @actor.equip_fix?(@equip_right_window.index)
  857.         # 演奏冻结 SE
  858.         $game_system.se_play($data_system.buzzer_se)
  859.         return
  860.       end
  861.       # 演奏确定 SE
  862.       $game_system.se_play($data_system.decision_se)
  863.       # 激活物品窗口
  864.       @equip_right_window.active = false
  865.       @equip_item_window.active = true
  866.       @equip_window.set_item_id
  867.       @equip_item_window.index = 0
  868.       return
  869.     end
  870.   end
  871.   def update_equip_item
  872.     # 按下 B 键的情况下
  873.     if Input.trigger?(Input::B)
  874.       # 演奏取消 SE
  875.       $game_system.se_play($data_system.cancel_se)
  876.       # 激活右侧窗口
  877.       @equip_right_window.active = true
  878.       @equip_item_window.active = false
  879.       @equip_item_window.index = -1
  880.       @equip_window.set_item_id
  881.       return
  882.     end
  883.     # 按下 C 键的情况下
  884.     if Input.trigger?(Input::C)      
  885.       # 演奏装备 SE
  886.       $game_system.se_play($data_system.equip_se)
  887.       # 获取物品窗口现在选择的装备数据
  888.       item = @equip_item_window.item
  889.       # 变更装备
  890.       @actor.equip(@equip_right_window.index, item == nil ? 0 : item.id)
  891.       # 激活右侧窗口
  892.       @equip_right_window.active = true
  893.       @equip_item_window.active = false
  894.       @equip_item_window.index = -1
  895.       @equip_window.set_item_id
  896.       # 再生成右侧窗口、物品窗口的内容
  897.       @equip_right_window.refresh
  898.       if @equip_right_window.index == 6 or @equip_right_window.index == 7
  899.         @equip_item_window7.refresh
  900.         @equip_item_window8.refresh
  901.       else
  902.         @equip_item_window.refresh
  903.       end
  904.       return
  905.     end
  906.   end
  907.   def update_status1
  908.     # 按下 B 键的情况下
  909.     if Input.trigger?(Input::B)
  910.       # 演奏取消 SE
  911.       $game_system.se_play($data_system.cancel_se)
  912.       # 激活命令窗口
  913.       @command_window.active = true
  914.       @status_window1.active = false
  915.       @status_window1.index = -1
  916.       return
  917.     end
  918.     # 按下 C 键的情况下
  919.     if Input.trigger?(Input::C)
  920.       # 命令窗口的光标位置分支
  921.         # 演奏确定 SE
  922.         $game_system.se_play($data_system.decision_se)
  923.         @equip_index = 0
  924.         @actor = $game_party.actors[@status_window1.index]
  925.         @equip_help_window = Window_Help_New.new
  926.         @equip_help_window.x = 137
  927.         @equip_help_window.y = 480 - 64 - 32 - 8
  928.         @equip_right_window = Window_EquipRight_New.new(@actor)
  929.         @equip_item_window1 = Window_EquipItem_New.new(@actor, 0)
  930.         @equip_item_window2 = Window_EquipItem_New.new(@actor, 1)
  931.         @equip_item_window3 = Window_EquipItem_New.new(@actor, 2)
  932.         @equip_item_window4 = Window_EquipItem_New.new(@actor, 3)
  933.         @equip_item_window5 = Window_EquipItem_New.new(@actor, 4)
  934.         @equip_item_window6 = Window_EquipItem_New.new(@actor, 5)
  935.         @equip_item_window7 = Window_EquipItem_New.new(@actor, 6)
  936.         @equip_item_window8 = Window_EquipItem_New.new(@actor, 6)
  937.         #........................................................................
  938.         @equip_window = Window_Equip.new
  939.         @equip_window.y = 394
  940.         @equip_window.set_item_id
  941.         #........................................................................
  942.         # 关联帮助窗口
  943.         @equip_right_window.help_window = @equip_help_window
  944.         @equip_item_window1.help_window = @equip_help_window
  945.         @equip_item_window2.help_window = @equip_help_window
  946.         @equip_item_window3.help_window = @equip_help_window
  947.         @equip_item_window4.help_window = @equip_help_window
  948.         @equip_item_window5.help_window = @equip_help_window
  949.         @equip_item_window6.help_window = @equip_help_window
  950.         @equip_item_window7.help_window = @equip_help_window
  951.         @equip_item_window8.help_window = @equip_help_window
  952.         # 设置光标位置
  953.         @equip_right_window.index = @equip_index
  954.         @status_window1.active = false
  955.         @equip_update = true
  956.         # 设置物品窗口的可视状态
  957.         @equip_item_window1.visible = (@equip_right_window.index == 0)
  958.         @equip_item_window2.visible = (@equip_right_window.index == 1)
  959.         @equip_item_window3.visible = (@equip_right_window.index == 2)
  960.         @equip_item_window4.visible = (@equip_right_window.index == 3)
  961.         @equip_item_window5.visible = (@equip_right_window.index == 4)
  962.         @equip_item_window6.visible = (@equip_right_window.index == 5)
  963.         @equip_item_window7.visible = (@equip_right_window.index == 6)
  964.         @equip_item_window8.visible = (@equip_right_window.index == 7)
  965.         # 获取当前装备中的物品
  966.         item1 = @equip_right_window.item
  967.         # 设置当前的物品窗口到 @item_window
  968.         @equip_window.set_item_id
  969.         case @equip_right_window.index
  970.         when 0
  971.           @equip_item_window = @equip_item_window1
  972.         when 1
  973.           @equip_item_window = @equip_item_window2
  974.         when 2
  975.           @equip_item_window = @equip_item_window3
  976.         when 3
  977.           @equip_item_window = @equip_item_window4
  978.         when 4
  979.           @equip_item_window = @equip_item_window5
  980.         when 5
  981.           @equip_item_window = @equip_item_window6
  982.         when 6
  983.           @equip_item_window = @equip_item_window7
  984.         when 7
  985.           @equip_item_window = @equip_item_window8
  986.         end
  987.         # 右窗口被激活的情况下
  988.         if @equip_right_window.active
  989.           # 删除变更装备后的能力
  990.           @status_window1.set_new_parameters(nil, nil, nil, nil, nil)
  991.         end
  992.         # 物品窗口被激活的情况下
  993.         if @equip_item_window.active
  994.           # 获取现在选中的物品
  995.           item2 = @equip_item_window.item
  996.           # 变更装备
  997.           last_hp = @actor.hp
  998.           last_sp = @actor.sp
  999.           @actor.equip(@equip_right_window.index, item2 == nil ? 0 : item2.id)
  1000.           # 获取变更装备后的能力值
  1001.           new_str = @actor.str
  1002.           new_agi = @actor.agi
  1003.           new_mdef = @actor.mdef
  1004.           new_dex = @actor.dex
  1005.           new_int = @actor.int
  1006.           # 返回到装备
  1007.           @actor.equip(@equip_right_window.index, item1 == nil ? 0 : item1.id)
  1008.           @actor.hp = last_hp
  1009.           @actor.sp = last_sp
  1010.           # 描画左窗口
  1011.           @status_window1.set_new_parameters(new_str, new_agi, new_int, new_dex, new_mdef)
  1012.           #........................................................................
  1013.           @equip_window.set_item(item2)
  1014.           #........................................................................
  1015.         end
  1016.     end
  1017.   end
  1018.   #--------------------------------------------------------------------------
  1019.   # ● 状态刷新
  1020.   #--------------------------------------------------------------------------
  1021.   def update_status_status
  1022.     # 按下 B 键的情况下
  1023.     if Input.trigger?(Input::B)
  1024.       # 演奏取消 SE
  1025.       $game_system.se_play($data_system.cancel_se)
  1026.       # 切换到菜单画面
  1027.       @status_status_window.dispose
  1028.       @bgstatus.dispose
  1029.       @status_update = false
  1030.       @status_window.active = true
  1031.       return
  1032.     end
  1033.   end
  1034.   
  1035.   def update_system
  1036.     @system_window.update
  1037.     # 按下 B 键的情况下
  1038.     if Input.trigger?(Input::B)
  1039.       # 演奏取消 SE
  1040.       $game_system.se_play($data_system.cancel_se)
  1041.       # 切换到菜单画面
  1042.       @system_window.dispose
  1043.       @sys_update = false
  1044.       @command_window.active = true
  1045.       return
  1046.     end
  1047.     # 按下 C 键的情况下
  1048.     if Input.trigger?(Input::C)
  1049.       # 演奏确定 SE
  1050.       $game_system.se_play($data_system.decision_se)
  1051.       case @system_window.index
  1052.       when 0
  1053.         @system_window.dispose
  1054.         $scene = Scene_Save.new
  1055.       when 1
  1056.         @system_window.dispose
  1057.         $scene = Scene_Loa.new
  1058.       when 2
  1059.         @end_window = Window_EndCommand.new
  1060.         @system_window.active = false
  1061.       end
  1062.       return
  1063.     end
  1064.   end
  1065.   
  1066.   
  1067.   def update_end
  1068.     @end_window.update
  1069.     if Input.trigger?(Input::B)
  1070.       $game_system.se_play($data_system.cancel_se)
  1071.       @end_window.dispose
  1072.       @system_window.active = true
  1073.       return
  1074.     end
  1075.     if Input.trigger?(Input::C)
  1076.       case @end_window.index
  1077.       when 0
  1078.         @end_window.dispose
  1079.         @system_window.dispose
  1080.         command_to_title
  1081.       when 1
  1082.         command_shutdown
  1083.       end
  1084.       return
  1085.     end
  1086.   end

  1087.   def command_to_title
  1088.     $game_system.se_play($data_system.decision_se)
  1089.     Audio.bgm_fade(800)
  1090.     Audio.bgs_fade(800)
  1091.     Audio.me_fade(800)
  1092.     $scene = Scene_Title.new
  1093.   end

  1094.   def command_shutdown
  1095.     $game_system.se_play($data_system.decision_se)
  1096.     Audio.bgm_fade(800)
  1097.     Audio.bgs_fade(800)
  1098.     Audio.me_fade(800)
  1099.     $scene = nil
  1100.   end
  1101. end

  1102. #==============================================================================
  1103. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  1104. #==============================================================================
复制代码
本人427行发生了nameerror,受不了哎,求助谢谢

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2010-11-12 22:23:12 | 只看该作者
明显的,LZ的系统里是不是没有“Scene_MonsterBook”这个脚本。。。。。。
全局搜索“class Scene_MonsterBook”试试看,
没有结果的话就在论坛里找找轩辕菜单的完整范例吧。。。

PS:话说木子之前的菜单美化征程是在轩辕菜单里开始的呢。。。

评分

参与人数 1星屑 +444 收起 理由
fux2 + 444 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
195
在线时间
2 小时
注册时间
2010-11-12
帖子
2
3
 楼主| 发表于 2010-11-13 10:21:14 | 只看该作者
我滴个神耶,多谢ls,你回答的是我的第一个问题!对了,这个脚本让新人也做借鉴吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 00:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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