Project1

标题: 逃跑如何加入战斗菜单里! [打印本页]

作者: lisi930    时间: 2008-4-21 01:19
标题: 逃跑如何加入战斗菜单里!
能直接给我个做好的脚本吗?站上那个只能去掉不能加入!谢了! [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 越前止まる殇    时间: 2008-4-21 01:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: lisi930    时间: 2008-4-21 01:28
以下引用越前止まる殇于2008-4-20 17:21:16的发言:

http://rpg.blue/web/htm/news844.htm
这个你可以试一下哟。


如果我的问题您满意的话,

请点击认可答案哟。


[本贴由作者于 2008-4-20 17:23:50 最后编辑]

我要的是去掉逃跑和战斗,把它们加如战斗菜单里,不要升级!
作者: havealook    时间: 2008-4-21 01:41
把脚本插入到Main之前(脚本太长,我分2次发....)
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 初始化战斗用的各种暂时数据
  12.     $game_temp.in_battle = true
  13.     $game_temp.battle_turn = 0
  14.     $game_temp.battle_event_flags.clear
  15.     $game_temp.battle_abort = false
  16.     $game_temp.battle_main_phase = false
  17.     $game_temp.battleback_name = $game_map.battleback_name
  18.     $game_temp.forcing_battler = nil
  19.     # 初始化战斗用事件解释器
  20.     $game_system.battle_interpreter.setup(nil, 0)
  21.     # 准备队伍
  22.     @troop_id = $game_temp.battle_troop_id
  23.     $game_troop.setup(@troop_id)
  24.     # 生成角色命令窗口
  25.     s1 = $data_system.words.attack
  26.     s2 = $data_system.words.skill
  27.     s3 = $data_system.words.guard
  28.     s4 = $data_system.words.item
  29.     s5 = "逃跑"
  30.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
  31.     @actor_command_window.y = 160 - 30
  32.     @actor_command_window.back_opacity = 160
  33.     @actor_command_window.active = false
  34.     @actor_command_window.visible = false
  35.     # 生成其它窗口
  36.     @party_command_window = Window_PartyCommand.new
  37.     @help_window = Window_Help.new
  38.     @help_window.back_opacity = 160
  39.     @help_window.visible = false
  40.     @status_window = Window_BattleStatus.new
  41.     @message_window = Window_Message.new
  42.     # 生成活动块
  43.     @spriteset = Spriteset_Battle.new
  44.     # 初始化等待计数
  45.     @wait_count = 0
  46.     # 执行过渡
  47.     if $data_system.battle_transition == ""
  48.       Graphics.transition(20)
  49.     else
  50.       Graphics.transition(40, "Graphics/Transitions/" +
  51.         $data_system.battle_transition)
  52.     end
  53.     # 开始自由战斗回合
  54.     start_phase1
  55.     # 主循环
  56.     loop do
  57.       # 刷新游戏画面
  58.       Graphics.update
  59.       # 刷新输入信息
  60.       Input.update
  61.       # 刷新画面
  62.       update
  63.       # 如果画面切换的话就中断循环
  64.       if $scene != self
  65.         break
  66.       end
  67.     end
  68.     # 刷新地图
  69.     $game_map.refresh
  70.     # 准备过渡
  71.     Graphics.freeze
  72.     # 释放窗口
  73.     @actor_command_window.dispose
  74.     @party_command_window.dispose
  75.     @help_window.dispose
  76.     @status_window.dispose
  77.     @message_window.dispose
  78.     if @skill_window != nil
  79.       @skill_window.dispose
  80.     end
  81.     if @item_window != nil
  82.       @item_window.dispose
  83.     end
  84.     if @result_window != nil
  85.       @result_window.dispose
  86.     end
  87.     # 释放活动块
  88.     @spriteset.dispose
  89.     # 标题画面切换中的情况
  90.     if $scene.is_a?(Scene_Title)
  91.       # 淡入淡出画面
  92.       Graphics.transition
  93.       Graphics.freeze
  94.     end
  95.     # 战斗测试或者游戏结束以外的画面切换中的情况
  96.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  97.       $scene = nil
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 胜负判定
  102.   #--------------------------------------------------------------------------
  103.   def judge
  104.     # 全灭判定是真、并且同伴人数为 0 的情况下
  105.     if $game_party.all_dead? or $game_party.actors.size == 0
  106.       # 允许失败的情况下
  107.       if $game_temp.battle_can_lose
  108.         # 还原为战斗开始前的 BGM
  109.         $game_system.bgm_play($game_temp.map_bgm)
  110.         # 战斗结束
  111.         battle_end(2)
  112.         # 返回 true
  113.         return true
  114.       end
  115.       # 设置游戏结束标志
  116.       $game_temp.gameover = true
  117.       # 返回 true
  118.       return true
  119.     end
  120.     # 如果存在任意 1 个敌人就返回 false
  121.     for enemy in $game_troop.enemies
  122.       if enemy.exist?
  123.         return false
  124.       end
  125.     end
  126.     # 开始结束战斗回合 (胜利)
  127.     start_phase5
  128.     # 返回 true
  129.     return true
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 战斗结束
  133.   #     result : 結果 (0:胜利 1:失败 2:逃跑)
  134.   #--------------------------------------------------------------------------
  135.   def battle_end(result)
  136.     # 清除战斗中标志
  137.     $game_temp.in_battle = false
  138.     # 清除全体同伴的行动
  139.     $game_party.clear_actions
  140.     # 解除战斗用状态
  141.     for actor in $game_party.actors
  142.       actor.remove_states_battle
  143.     end
  144.     # 清除敌人
  145.     $game_troop.enemies.clear
  146.     # 调用战斗返回
  147.     if $game_temp.battle_proc != nil
  148.       $game_temp.battle_proc.call(result)
  149.       $game_temp.battle_proc = nil
  150.     end
  151.     # 切换到地图画面
  152.     $scene = Scene_Map.new
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 设置战斗事件
  156.   #--------------------------------------------------------------------------
  157.   def setup_battle_event
  158.     # 正在执行战斗事件的情况下
  159.     if $game_system.battle_interpreter.running?
  160.       return
  161.     end
  162.     # 搜索全部页的战斗事件
  163.     for index in 0...$data_troops[@troop_id].pages.size
  164.       # 获取事件页
  165.       page = $data_troops[@troop_id].pages[index]
  166.       # 事件条件可以参考 c
  167.       c = page.condition
  168.       # 没有指定任何条件的情况下转到下一页
  169.       unless c.turn_valid or c.enemy_valid or
  170.              c.actor_valid or c.switch_valid
  171.         next
  172.       end
  173.       # 执行完毕的情况下转到下一页
  174.       if $game_temp.battle_event_flags[index]
  175.         next
  176.       end
  177.       # 确认回合条件
  178.       if c.turn_valid
  179.         n = $game_temp.battle_turn
  180.         a = c.turn_a
  181.         b = c.turn_b
  182.         if (b == 0 and n != a) or
  183.            (b > 0 and (n < 1 or n < a or n % b != a % b))
  184.           next
  185.         end
  186.       end
  187.       # 确认敌人条件
  188.       if c.enemy_valid
  189.         enemy = $game_troop.enemies[c.enemy_index]
  190.         if enemy == nil or enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
  191.           next
  192.         end
  193.       end
  194.       # 确认角色条件
  195.       if c.actor_valid
  196.         actor = $game_actors[c.actor_id]
  197.         if actor == nil or actor.hp * 100.0 / actor.maxhp > c.actor_hp
  198.           next
  199.         end
  200.       end
  201.       # 确认开关条件
  202.       if c.switch_valid
  203.         if $game_switches[c.switch_id] == false
  204.           next
  205.         end
  206.       end
  207.       # 设置事件
  208.       $game_system.battle_interpreter.setup(page.list, 0)
  209.       # 本页的范围是 [战斗] 或 [回合] 的情况下
  210.       if page.span <= 1
  211.         # 设置执行结束标志
  212.         $game_temp.battle_event_flags[index] = true
  213.       end
  214.       return
  215.     end
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● 刷新画面
  219.   #--------------------------------------------------------------------------
  220.   def update
  221.     # 执行战斗事件中的情况下
  222.     if $game_system.battle_interpreter.running?
  223.       # 刷新解释器
  224.       $game_system.battle_interpreter.update
  225.       # 强制行动的战斗者不存在的情况下
  226.       if $game_temp.forcing_battler == nil
  227.         # 执行战斗事件结束的情况下
  228.         unless $game_system.battle_interpreter.running?
  229.           # 继续战斗的情况下、再执行战斗事件的设置
  230.           unless judge
  231.             setup_battle_event
  232.           end
  233.         end
  234.         # 如果不是结束战斗回合的情况下
  235.         if @phase != 5
  236.           # 刷新状态窗口
  237.           @status_window.refresh
  238.         end
  239.       end
  240.     end
  241.     # 系统 (计时器)、刷新画面
  242.     $game_system.update
  243.     $game_screen.update
  244.     # 计时器为 0 的情况下
  245.     if $game_system.timer_working and $game_system.timer == 0
  246.       # 中断战斗
  247.       $game_temp.battle_abort = true
  248.     end
  249.     # 刷新窗口
  250.     @help_window.update
  251.     @party_command_window.update
  252.     @actor_command_window.update
  253.     @status_window.update
  254.     @message_window.update
  255.     # 刷新活动块
  256.     @spriteset.update
  257.     # 处理过渡中的情况下
  258.     if $game_temp.transition_processing
  259.       # 清除处理过渡中标志
  260.       $game_temp.transition_processing = false
  261.       # 执行过渡
  262.       if $game_temp.transition_name == ""
  263.         Graphics.transition(20)
  264.       else
  265.         Graphics.transition(40, "Graphics/Transitions/" +
  266.           $game_temp.transition_name)
  267.       end
  268.     end
  269.     # 显示信息窗口中的情况下
  270.     if $game_temp.message_window_showing
  271.       return
  272.     end
  273.     # 显示效果中的情况下
  274.     if @spriteset.effect?
  275.       return
  276.     end
  277.     # 游戏结束的情况下
  278.     if $game_temp.gameover
  279.       # 切换到游戏结束画面
  280.       $scene = Scene_Gameover.new
  281.       return
  282.     end
  283.     # 返回标题画面的情况下
  284.     if $game_temp.to_title
  285.       # 切换到标题画面
  286.       $scene = Scene_Title.new
  287.       return
  288.     end
  289.     # 中断战斗的情况下
  290.     if $game_temp.battle_abort
  291.       # 还原为战斗前的 BGM
  292.       $game_system.bgm_play($game_temp.map_bgm)
  293.       # 战斗结束
  294.       battle_end(1)
  295.       return
  296.     end
  297.     # 等待中的情况下
  298.     if @wait_count > 0
  299.       # 减少等待计数
  300.       @wait_count -= 1
  301.       return
  302.     end
  303.     # 强制行动的角色存在、
  304.     # 并且战斗事件正在执行的情况下
  305.     if $game_temp.forcing_battler == nil and
  306.        $game_system.battle_interpreter.running?
  307.       return
  308.     end
  309.     # 回合分支
  310.     case @phase
  311.     when 1  # 自由战斗回合
  312.       update_phase1
  313.     when 2  # 同伴命令回合
  314.       update_phase2
  315.     when 3  # 角色命令回合
  316.       update_phase3
  317.     when 4  # 主回合
  318.       update_phase4
  319.     when 5  # 战斗结束回合
  320.       update_phase5
  321.     end
  322.   end
  323. end



  324. #==============================================================================
  325. # ■ Scene_Battle (分割定义 2)
  326. #------------------------------------------------------------------------------
  327. #  处理战斗画面的类。
  328. #==============================================================================

  329. class Scene_Battle
  330.   #--------------------------------------------------------------------------
  331.   # ● 开始自由战斗回合
  332.   #--------------------------------------------------------------------------
  333.   def start_phase1
  334.     # 转移到回合 1
  335.     @phase = 1
  336.     # 清除全体同伴的行动
  337.     $game_party.clear_actions
  338.     # 设置战斗事件
  339.     setup_battle_event
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 刷新画面 (自由战斗回合)
  343.   #--------------------------------------------------------------------------
  344.   def update_phase1
  345.     # 胜败判定
  346.     if judge
  347.       # 胜利或者失败的情况下 : 过程结束
  348.       return
  349.     end
  350.     # 开始同伴命令回合
  351.     start_phase3
  352.   end
  353.   #--------------------------------------------------------------------------
  354.   # ● 开始同伴命令回合
  355.   #--------------------------------------------------------------------------
  356.   def start_phase2
  357.     # 转移到回合 2
  358.     @phase = 2
  359.     # 设置角色为非选择状态
  360.     @actor_index = -1
  361.     @active_battler = nil
  362.     # 有效化同伴指令窗口
  363.     @party_command_window.active = true
  364.     @party_command_window.visible = true
  365.     # 无效化角色指令窗口
  366.     @actor_command_window.active = false
  367.     @actor_command_window.visible = false
  368.     # 清除主回合标志
  369.     $game_temp.battle_main_phase = false
  370.     # 清除全体同伴的行动
  371.     $game_party.clear_actions
  372.     # 不能输入命令的情况下
  373.     unless $game_party.inputable?
  374.       # 开始主回合
  375.       start_phase4
  376.     end
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ● 刷新画面 (同伴命令回合)
  380.   #--------------------------------------------------------------------------
  381.   def update_phase2
  382.     # 按下 C 键的情况下
  383.     if Input.trigger?(Input::C)
  384.       # 同伴指令窗口光标位置分支
  385.       case @party_command_window.index
  386.       when 0  # 战斗
  387.         # 演奏确定 SE
  388.         $game_system.se_play($data_system.decision_se)
  389.         # 开始角色的命令回合
  390.         start_phase3
  391.       when 1  # 逃跑
  392.         # 不能逃跑的情况下
  393.         if $game_temp.battle_can_escape == false
  394.           # 演奏冻结 SE
  395.           $game_system.se_play($data_system.buzzer_se)
  396.           return
  397.         end
  398.         # 演奏确定 SE
  399.         $game_system.se_play($data_system.decision_se)
  400.         # 逃走处理
  401.         update_phase2_escape
  402.       end
  403.       return
  404.     end
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 画面更新 (同伴指令回合 : 逃跑)
  408.   #--------------------------------------------------------------------------
  409.   def update_phase2_escape
  410.     # 计算敌人速度的平均值
  411.     enemies_agi = 0
  412.     enemies_number = 0
  413.     for enemy in $game_troop.enemies
  414.       if enemy.exist?
  415.         enemies_agi += enemy.agi
  416.         enemies_number += 1
  417.       end
  418.     end
  419.     if enemies_number > 0
  420.       enemies_agi /= enemies_number
  421.     end
  422.     # 计算角色速度的平均值
  423.     actors_agi = 0
  424.     actors_number = 0
  425.     for actor in $game_party.actors
  426.       if actor.exist?
  427.         actors_agi += actor.agi
  428.         actors_number += 1
  429.       end
  430.     end
  431.     if actors_number > 0
  432.       actors_agi /= actors_number
  433.     end
  434.     # 逃跑成功判定
  435.     success = rand(100) < 50 * actors_agi / enemies_agi
  436.     # 成功逃跑的情况下
  437.     if success
  438.       # 演奏逃跑 SE
  439.       $game_system.se_play($data_system.escape_se)
  440.       # 还原为战斗开始前的 BGM
  441.       $game_system.bgm_play($game_temp.map_bgm)
  442.       # 战斗结束
  443.       battle_end(1)
  444.     # 逃跑失败的情况下
  445.     else
  446.       # 清除全体同伴的行动
  447.       $game_party.clear_actions
  448.       # 开始主回合
  449.       start_phase4
  450.     end
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● 开始结束战斗回合
  454.   #--------------------------------------------------------------------------
  455.   def start_phase5
  456.     # 转移到回合 5
  457.     @phase = 5
  458.     # 演奏战斗结束 ME
  459.     $game_system.me_play($game_system.battle_end_me)
  460.     # 还原为战斗开始前的 BGM
  461.     $game_system.bgm_play($game_temp.map_bgm)
  462.     # 初始化 EXP、金钱、宝物
  463.     exp = 0
  464.     gold = 0
  465.     treasures = []
  466.     # 循环
  467.     for enemy in $game_troop.enemies
  468.       # 敌人不是隐藏状态的情况下
  469.       unless enemy.hidden
  470.         # 获得 EXP、增加金钱
  471.         exp += enemy.exp
  472.         gold += enemy.gold
  473.         # 出现宝物判定
  474.         if rand(100) < enemy.treasure_prob
  475.           if enemy.item_id > 0
  476.             treasures.push($data_items[enemy.item_id])
  477.           end
  478.           if enemy.weapon_id > 0
  479.             treasures.push($data_weapons[enemy.weapon_id])
  480.           end
  481.           if enemy.armor_id > 0
  482.             treasures.push($data_armors[enemy.armor_id])
  483.           end
  484.         end
  485.       end
  486.     end
  487.     # 限制宝物数为 6 个
  488.     treasures = treasures[0..5]
  489.     # 获得 EXP
  490.     for i in 0...$game_party.actors.size
  491.       actor = $game_party.actors[i]
  492.       if actor.cant_get_exp? == false
  493.         last_level = actor.level
  494.         actor.exp += exp
  495.         if actor.level > last_level
  496.           @status_window.level_up(i)
  497.         end
  498.       end
  499.     end
  500.     # 获得金钱
  501.     $game_party.gain_gold(gold)
  502.     # 获得宝物
  503.     for item in treasures
  504.       case item
  505.       when RPG::Item
  506.         $game_party.gain_item(item.id, 1)
  507.       when RPG::Weapon
  508.         $game_party.gain_weapon(item.id, 1)
  509.       when RPG::Armor
  510.         $game_party.gain_armor(item.id, 1)
  511.       end
  512.     end
  513.     # 生成战斗结果窗口
  514.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  515.     # 设置等待计数
  516.     @phase5_wait_count = 100
  517.   end
  518.   #--------------------------------------------------------------------------
  519.   # ● 画面更新 (结束战斗回合)
  520.   #--------------------------------------------------------------------------
  521.   def update_phase5
  522.     # 等待计数大于 0 的情况下
  523.     if @phase5_wait_count > 0
  524.       # 减少等待计数
  525.       @phase5_wait_count -= 1
  526.       # 等待计数为 0 的情况下
  527.       if @phase5_wait_count == 0
  528.         # 显示结果窗口
  529.         @result_window.visible = true
  530.         # 清除主回合标志
  531.         $game_temp.battle_main_phase = false
  532.         # 刷新状态窗口
  533.         @status_window.refresh
  534.       end
  535.       return
  536.     end
  537.     # 按下 C 键的情况下
  538.     if Input.trigger?(Input::C)
  539.       # 战斗结束
  540.       battle_end(0)
  541.     end
  542.   end
  543. end

复制代码

作者: havealook    时间: 2008-4-21 01:43
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始角色命令回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase3
  11.     # 转移到回合 3
  12.     @phase = 3
  13.     # 设置角色为非选择状态
  14.     @actor_index = -1
  15.     @active_battler = nil
  16.     # 输入下一个角色的命令
  17.     phase3_next_actor
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 转到输入下一个角色的命令
  21.   #--------------------------------------------------------------------------
  22.   def phase3_next_actor
  23.     # 循环
  24.     begin
  25.       # 角色的明灭效果 OFF
  26.       if @active_battler != nil
  27.         @active_battler.blink = false
  28.       end
  29.       # 最后的角色的情况
  30.       if @actor_index == $game_party.actors.size-1
  31.         # 开始主回合
  32.         start_phase4
  33.         return
  34.       end
  35.       # 推进角色索引
  36.       @actor_index += 1
  37.       @active_battler = $game_party.actors[@actor_index]
  38.       @active_battler.blink = true
  39.     # 如果角色是在无法接受指令的状态就再试
  40.     end until @active_battler.inputable?
  41.     # 设置角色的命令窗口
  42.     phase3_setup_command_window
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 转向前一个角色的命令输入
  46.   #--------------------------------------------------------------------------
  47.   def phase3_prior_actor
  48.     # 循环
  49.     begin
  50.       # 角色的明灭效果 OFF
  51.       if @active_battler != nil
  52.         @active_battler.blink = false
  53.       end
  54.       # 最初的角色的情况下
  55.       if @actor_index == 0
  56.         # 开始同伴指令回合
  57.         start_phase3
  58.         return
  59.       end
  60.       # 返回角色索引
  61.       @actor_index -= 1
  62.       @active_battler = $game_party.actors[@actor_index]
  63.       @active_battler.blink = true
  64.     # 如果角色是在无法接受指令的状态就再试
  65.     end until @active_battler.inputable?
  66.     # 设置角色的命令窗口
  67.     phase3_setup_command_window
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 设置角色指令窗口
  71.   #--------------------------------------------------------------------------
  72.   def phase3_setup_command_window
  73.     # 同伴指令窗口无效化
  74.     @party_command_window.active = false
  75.     @party_command_window.visible = false
  76.     # 角色指令窗口无效化
  77.     @actor_command_window.active = true
  78.     @actor_command_window.visible = true
  79.     # 设置角色指令窗口的位置
  80.     @actor_command_window.x = @actor_index * 160
  81.     # 设置索引为 0
  82.     @actor_command_window.index = 0
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 刷新画面 (角色命令回合)
  86.   #--------------------------------------------------------------------------
  87.   def update_phase3
  88.     # 敌人光标有效的情况下
  89.     if @enemy_arrow != nil
  90.       update_phase3_enemy_select
  91.     # 角色光标有效的情况下
  92.     elsif @actor_arrow != nil
  93.       update_phase3_actor_select
  94.     # 特技窗口有效的情况下
  95.     elsif @skill_window != nil
  96.       update_phase3_skill_select
  97.     # 物品窗口有效的情况下
  98.     elsif @item_window != nil
  99.       update_phase3_item_select
  100.     # 角色指令窗口有效的情况下
  101.     elsif @actor_command_window.active
  102.       update_phase3_basic_command
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 刷新画面 (角色命令回合 : 基本命令)
  107.   #--------------------------------------------------------------------------
  108.   def update_phase3_basic_command
  109.     # 按下 B 键的情况下
  110.     if Input.trigger?(Input::B)
  111.       # 演奏取消 SE
  112.       $game_system.se_play($data_system.cancel_se)
  113.       # 转向前一个角色的指令输入
  114.       phase3_prior_actor
  115.       return
  116.     end
  117.     # 按下 C 键的情况下
  118.     if Input.trigger?(Input::C)
  119.       # 角色指令窗口光标位置分之
  120.       case @actor_command_window.index
  121.       when 0  # 攻击
  122.         # 演奏确定 SE
  123.         $game_system.se_play($data_system.decision_se)
  124.         # 设置行动
  125.         @active_battler.current_action.kind = 0
  126.         @active_battler.current_action.basic = 0
  127.         # 开始选择敌人
  128.         start_enemy_select
  129.       when 1  # 特技
  130.         # 演奏确定 SE
  131.         $game_system.se_play($data_system.decision_se)
  132.         # 设置行动
  133.         @active_battler.current_action.kind = 1
  134.         # 开始选择特技
  135.         start_skill_select
  136.       when 2  # 防御
  137.         # 演奏确定 SE
  138.         $game_system.se_play($data_system.decision_se)
  139.         # 设置行动
  140.         @active_battler.current_action.kind = 0
  141.         @active_battler.current_action.basic = 1
  142.         # 转向下一位角色的指令输入
  143.         phase3_next_actor
  144.       when 3  # 物品
  145.         # 演奏确定 SE
  146.         $game_system.se_play($data_system.decision_se)
  147.         # 设置行动
  148.         @active_battler.current_action.kind = 2
  149.         # 开始选择物品
  150.         start_item_select
  151.       when 4
  152.         return update_phase2_escape
  153.       end
  154.       return
  155.     end
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 刷新画面 (角色命令回合 : 选择特技)
  159.   #--------------------------------------------------------------------------
  160.   def update_phase3_skill_select
  161.     # 设置特技窗口为可视状态
  162.     @skill_window.visible = true
  163.     # 刷新特技窗口
  164.     @skill_window.update
  165.     # 按下 B 键的情况下
  166.     if Input.trigger?(Input::B)
  167.       # 演奏取消 SE
  168.       $game_system.se_play($data_system.cancel_se)
  169.       # 结束特技选择
  170.       end_skill_select
  171.       return
  172.     end
  173.     # 按下 C 键的情况下
  174.     if Input.trigger?(Input::C)
  175.       # 获取特技选择窗口现在选择的特技的数据
  176.       @skill = @skill_window.skill
  177.       # 无法使用的情况下
  178.       if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  179.         # 演奏冻结 SE
  180.         $game_system.se_play($data_system.buzzer_se)
  181.         return
  182.       end
  183.       # 演奏确定 SE
  184.       $game_system.se_play($data_system.decision_se)
  185.       # 设置行动
  186.       @active_battler.current_action.skill_id = @skill.id
  187.       # 设置特技窗口为不可见状态
  188.       @skill_window.visible = false
  189.       # 效果范围是敌单体的情况下
  190.       if @skill.scope == 1
  191.         # 开始选择敌人
  192.         start_enemy_select
  193.       # 效果范围是我方单体的情况下
  194.       elsif @skill.scope == 3 or @skill.scope == 5
  195.         # 开始选择角色
  196.         start_actor_select
  197.       # 效果范围不是单体的情况下
  198.       else
  199.         # 选择特技结束
  200.         end_skill_select
  201.         # 转到下一位角色的指令输入
  202.         phase3_next_actor
  203.       end
  204.       return
  205.     end
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● 刷新画面 (角色命令回合 : 选择物品)
  209.   #--------------------------------------------------------------------------
  210.   def update_phase3_item_select
  211.     # 设置物品窗口为可视状态
  212.     @item_window.visible = true
  213.     # 刷新物品窗口
  214.     @item_window.update
  215.     # 按下 B 键的情况下
  216.     if Input.trigger?(Input::B)
  217.       # 演奏取消 SE
  218.       $game_system.se_play($data_system.cancel_se)
  219.       # 选择物品结束
  220.       end_item_select
  221.       return
  222.     end
  223.     # 按下 C 键的情况下
  224.     if Input.trigger?(Input::C)
  225.       # 获取物品窗口现在选择的物品资料
  226.       @item = @item_window.item
  227.       # 无法使用的情况下
  228.       unless $game_party.item_can_use?(@item.id)
  229.         # 演奏冻结 SE
  230.         $game_system.se_play($data_system.buzzer_se)
  231.         return
  232.       end
  233.       # 演奏确定 SE
  234.       $game_system.se_play($data_system.decision_se)
  235.       # 设置行动
  236.       @active_battler.current_action.item_id = @item.id
  237.       # 设置物品窗口为不可见状态
  238.       @item_window.visible = false
  239.       # 效果范围是敌单体的情况下
  240.       if @item.scope == 1
  241.         # 开始选择敌人
  242.         start_enemy_select
  243.       # 效果范围是我方单体的情况下
  244.       elsif @item.scope == 3 or @item.scope == 5
  245.         # 开始选择角色
  246.         start_actor_select
  247.       # 效果范围不是单体的情况下
  248.       else
  249.         # 物品选择结束
  250.         end_item_select
  251.         # 转到下一位角色的指令输入
  252.         phase3_next_actor
  253.       end
  254.       return
  255.     end
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  259.   #--------------------------------------------------------------------------
  260.   def update_phase3_enemy_select
  261.     # 刷新敌人箭头
  262.     @enemy_arrow.update
  263.     # 按下 B 键的情况下
  264.     if Input.trigger?(Input::B)
  265.       # 演奏取消 SE
  266.       $game_system.se_play($data_system.cancel_se)
  267.       # 选择敌人结束
  268.       end_enemy_select
  269.       return
  270.     end
  271.     # 按下 C 键的情况下
  272.     if Input.trigger?(Input::C)
  273.       # 演奏确定 SE
  274.       $game_system.se_play($data_system.decision_se)
  275.       # 设置行动
  276.       @active_battler.current_action.target_index = @enemy_arrow.index
  277.       # 选择敌人结束
  278.       end_enemy_select
  279.       # 显示特技窗口中的情况下
  280.       if @skill_window != nil
  281.         # 结束特技选择
  282.         end_skill_select
  283.       end
  284.       # 显示物品窗口的情况下
  285.       if @item_window != nil
  286.         # 结束物品选择
  287.         end_item_select
  288.       end
  289.       # 转到下一位角色的指令输入
  290.       phase3_next_actor
  291.     end
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 画面更新 (角色指令回合 : 选择角色)
  295.   #--------------------------------------------------------------------------
  296.   def update_phase3_actor_select
  297.     # 刷新角色箭头
  298.     @actor_arrow.update
  299.     # 按下 B 键的情况下
  300.     if Input.trigger?(Input::B)
  301.       # 演奏取消 SE
  302.       $game_system.se_play($data_system.cancel_se)
  303.       # 选择角色结束
  304.       end_actor_select
  305.       return
  306.     end
  307.     # 按下 C 键的情况下
  308.     if Input.trigger?(Input::C)
  309.       # 演奏确定 SE
  310.       $game_system.se_play($data_system.decision_se)
  311.       # 设置行动
  312.       @active_battler.current_action.target_index = @actor_arrow.index
  313.       # 选择角色结束
  314.       end_actor_select
  315.       # 显示特技窗口中的情况下
  316.       if @skill_window != nil
  317.         # 结束特技选择
  318.         end_skill_select
  319.       end
  320.       # 显示物品窗口的情况下
  321.       if @item_window != nil
  322.         # 结束物品选择
  323.         end_item_select
  324.       end
  325.       # 转到下一位角色的指令输入
  326.       phase3_next_actor
  327.     end
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # ● 开始选择敌人
  331.   #--------------------------------------------------------------------------
  332.   def start_enemy_select
  333.     # 生成敌人箭头
  334.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
  335.     # 关联帮助窗口
  336.     @enemy_arrow.help_window = @help_window
  337.     # 无效化角色指令窗口
  338.     @actor_command_window.active = false
  339.     @actor_command_window.visible = false
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 结束选择敌人
  343.   #--------------------------------------------------------------------------
  344.   def end_enemy_select
  345.     # 释放敌人箭头
  346.     @enemy_arrow.dispose
  347.     @enemy_arrow = nil
  348.     # 指令为 [战斗] 的情况下
  349.     if @actor_command_window.index == 0
  350.       # 有效化角色指令窗口
  351.       @actor_command_window.active = true
  352.       @actor_command_window.visible = true
  353.       # 隐藏帮助窗口
  354.       @help_window.visible = false
  355.     end
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 开始选择角色
  359.   #--------------------------------------------------------------------------
  360.   def start_actor_select
  361.     # 生成角色箭头
  362.     @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
  363.     @actor_arrow.index = @actor_index
  364.     # 关联帮助窗口
  365.     @actor_arrow.help_window = @help_window
  366.     # 无效化角色指令窗口
  367.     @actor_command_window.active = false
  368.     @actor_command_window.visible = false
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 结束选择角色
  372.   #--------------------------------------------------------------------------
  373.   def end_actor_select
  374.     # 释放角色箭头
  375.     @actor_arrow.dispose
  376.     @actor_arrow = nil
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ● 开始选择特技
  380.   #--------------------------------------------------------------------------
  381.   def start_skill_select
  382.     # 生成特技窗口
  383.     @skill_window = Window_Skill.new(@active_battler)
  384.     # 关联帮助窗口
  385.     @skill_window.help_window = @help_window
  386.     # 无效化角色指令窗口
  387.     @actor_command_window.active = false
  388.     @actor_command_window.visible = false
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 选择特技结束
  392.   #--------------------------------------------------------------------------
  393.   def end_skill_select
  394.     # 释放特技窗口
  395.     @skill_window.dispose
  396.     @skill_window = nil
  397.     # 隐藏帮助窗口
  398.     @help_window.visible = false
  399.     # 有效化角色指令窗口
  400.     @actor_command_window.active = true
  401.     @actor_command_window.visible = true
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ● 开始选择物品
  405.   #--------------------------------------------------------------------------
  406.   def start_item_select
  407.     # 生成物品窗口
  408.     @item_window = Window_Item.new
  409.     # 关联帮助窗口
  410.     @item_window.help_window = @help_window
  411.     # 无效化角色指令窗口
  412.     @actor_command_window.active = false
  413.     @actor_command_window.visible = false
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 结束选择物品
  417.   #--------------------------------------------------------------------------
  418.   def end_item_select
  419.     # 释放物品窗口
  420.     @item_window.dispose
  421.     @item_window = nil
  422.     # 隐藏帮助窗口
  423.     @help_window.visible = false
  424.     # 有效化角色指令窗口
  425.     @actor_command_window.active = true
  426.     @actor_command_window.visible = true
  427.   end
  428. end



  429. #==============================================================================
  430. # ■ Scene_Battle (分割定义 4)
  431. #------------------------------------------------------------------------------
  432. #  处理战斗画面的类。
  433. #==============================================================================

  434. class Scene_Battle
  435.   #--------------------------------------------------------------------------
  436.   # ● 开始主回合
  437.   #--------------------------------------------------------------------------
  438.   def start_phase4
  439.     # 转移到回合 4
  440.     @phase = 4
  441.     # 回合数计数
  442.     $game_temp.battle_turn += 1
  443.     # 搜索全页的战斗事件
  444.     for index in 0...$data_troops[@troop_id].pages.size
  445.       # 获取事件页
  446.       page = $data_troops[@troop_id].pages[index]
  447.       # 本页的范围是 [回合] 的情况下
  448.       if page.span == 1
  449.         # 设置已经执行标志
  450.         $game_temp.battle_event_flags[index] = false
  451.       end
  452.     end
  453.     # 设置角色为非选择状态
  454.     @actor_index = -1
  455.     @active_battler = nil
  456.     # 有效化同伴指令窗口
  457.     @party_command_window.active = false
  458.     @party_command_window.visible = false
  459.     # 无效化角色指令窗口
  460.     @actor_command_window.active = false
  461.     @actor_command_window.visible = false
  462.     # 设置主回合标志
  463.     $game_temp.battle_main_phase = true
  464.     # 生成敌人行动
  465.     for enemy in $game_troop.enemies
  466.       enemy.make_action
  467.     end
  468.     # 生成行动顺序
  469.     make_action_orders
  470.     # 移动到步骤 1
  471.     @phase4_step = 1
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 生成行动循序
  475.   #--------------------------------------------------------------------------
  476.   def make_action_orders
  477.     # 初始化序列 @action_battlers
  478.     @action_battlers = []
  479.     # 添加敌人到 @action_battlers 序列
  480.     for enemy in $game_troop.enemies
  481.       @action_battlers.push(enemy)
  482.     end
  483.     # 添加角色到 @action_battlers 序列
  484.     for actor in $game_party.actors
  485.       @action_battlers.push(actor)
  486.     end
  487.     # 确定全体的行动速度
  488.     for battler in @action_battlers
  489.       battler.make_action_speed
  490.     end
  491.     # 按照行动速度从大到小排列
  492.     @action_battlers.sort! {|a,b|
  493.       b.current_action.speed - a.current_action.speed }
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● 刷新画面 (主回合)
  497.   #--------------------------------------------------------------------------
  498.   def update_phase4
  499.     case @phase4_step
  500.     when 1
  501.       update_phase4_step1
  502.     when 2
  503.       update_phase4_step2
  504.     when 3
  505.       update_phase4_step3
  506.     when 4
  507.       update_phase4_step4
  508.     when 5
  509.       update_phase4_step5
  510.     when 6
  511.       update_phase4_step6
  512.     end
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  516.   #--------------------------------------------------------------------------
  517.   def update_phase4_step1
  518.     # 隐藏帮助窗口
  519.     @help_window.visible = false
  520.     # 判定胜败
  521.     if judge
  522.       # 胜利或者失败的情况下 : 过程结束
  523.       return
  524.     end
  525.     # 强制行动的战斗者不存在的情况下
  526.     if $game_temp.forcing_battler == nil
  527.       # 设置战斗事件
  528.       setup_battle_event
  529.       # 执行战斗事件中的情况下
  530.       if $game_system.battle_interpreter.running?
  531.         return
  532.       end
  533.     end
  534.     # 强制行动的战斗者存在的情况下
  535.     if $game_temp.forcing_battler != nil
  536.       # 在头部添加后移动
  537.       @action_battlers.delete($game_temp.forcing_battler)
  538.       @action_battlers.unshift($game_temp.forcing_battler)
  539.     end
  540.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  541.     if @action_battlers.size == 0
  542.       # 开始同伴命令回合
  543.       start_phase3
  544.       return
  545.     end
  546.     # 初始化动画 ID 和公共事件 ID
  547.     @animation1_id = 0
  548.     @animation2_id = 0
  549.     @common_event_id = 0
  550.     # 未行动的战斗者移动到序列的头部
  551.     @active_battler = @action_battlers.shift
  552.     # 如果已经在战斗之外的情况下
  553.     if @active_battler.index == nil
  554.       return
  555.     end
  556.     # 连续伤害
  557.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  558.       @active_battler.slip_damage_effect
  559.       @active_battler.damage_pop = true
  560.     end
  561.     # 自然解除状态
  562.     @active_battler.remove_states_auto
  563.     # 刷新状态窗口
  564.     @status_window.refresh
  565.     # 移至步骤 2
  566.     @phase4_step = 2
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  570.   #--------------------------------------------------------------------------
  571.   def update_phase4_step2
  572.     # 如果不是强制行动
  573.     unless @active_battler.current_action.forcing
  574.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  575.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  576.         # 设置行动为攻击
  577.         @active_battler.current_action.kind = 0
  578.         @active_battler.current_action.basic = 0
  579.       end
  580.       # 限制为 [不能行动] 的情况下
  581.       if @active_battler.restriction == 4
  582.         # 清除行动强制对像的战斗者
  583.         $game_temp.forcing_battler = nil
  584.         # 移至步骤 1
  585.         @phase4_step = 1
  586.         return
  587.       end
  588.     end
  589.     # 清除对像战斗者
  590.     @target_battlers = []
  591.     # 行动种类分支
  592.     case @active_battler.current_action.kind
  593.     when 0  # 基本
  594.       make_basic_action_result
  595.     when 1  # 特技
  596.       make_skill_action_result
  597.     when 2  # 物品
  598.       make_item_action_result
  599.     end
  600.     # 移至步骤 3
  601.     if @phase4_step == 2
  602.       @phase4_step = 3
  603.     end
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ● 生成基本行动结果
  607.   #--------------------------------------------------------------------------
  608.   def make_basic_action_result
  609.     # 攻击的情况下
  610.     if @active_battler.current_action.basic == 0
  611.       # 设置攻击 ID
  612.       @animation1_id = @active_battler.animation1_id
  613.       @animation2_id = @active_battler.animation2_id
  614.       # 行动方的战斗者是敌人的情况下
  615.       if @active_battler.is_a?(Game_Enemy)
  616.         if @active_battler.restriction == 3
  617.           target = $game_troop.random_target_enemy
  618.         elsif @active_battler.restriction == 2
  619.           target = $game_party.random_target_actor
  620.         else
  621.           index = @active_battler.current_action.target_index
  622.           target = $game_party.smooth_target_actor(index)
  623.         end
  624.       end
  625.       # 行动方的战斗者是角色的情况下
  626.       if @active_battler.is_a?(Game_Actor)
  627.         if @active_battler.restriction == 3
  628.           target = $game_party.random_target_actor
  629.         elsif @active_battler.restriction == 2
  630.           target = $game_troop.random_target_enemy
  631.         else
  632.           index = @active_battler.current_action.target_index
  633.           target = $game_troop.smooth_target_enemy(index)
  634.         end
  635.       end
  636.       # 设置对像方的战斗者序列
  637.       @target_battlers = [target]
  638.       # 应用通常攻击效果
  639.       for target in @target_battlers
  640.         target.attack_effect(@active_battler)
  641.       end
  642.       return
  643.     end
  644.     # 防御的情况下
  645.     if @active_battler.current_action.basic == 1
  646.       # 帮助窗口显示"防御"
  647.       @help_window.set_text($data_system.words.guard, 1)
  648.       return
  649.     end
  650.     # 逃跑的情况下
  651.     if @active_battler.is_a?(Game_Enemy) and
  652.        @active_battler.current_action.basic == 2
  653.       #  帮助窗口显示"逃跑"
  654.       @help_window.set_text("逃跑", 1)
  655.       # 逃跑
  656.       @active_battler.escape
  657.       return
  658.     end
  659.     # 什么也不做的情况下
  660.     if @active_battler.current_action.basic == 3
  661.       # 清除强制行动对像的战斗者
  662.       $game_temp.forcing_battler = nil
  663.       # 移至步骤 1
  664.       @phase4_step = 1
  665.       return
  666.     end
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ● 设置物品或特技对像方的战斗者
  670.   #     scope : 特技或者是物品的范围
  671.   #--------------------------------------------------------------------------
  672.   def set_target_battlers(scope)
  673.     # 行动方的战斗者是敌人的情况下
  674.     if @active_battler.is_a?(Game_Enemy)
  675.       # 效果范围分支
  676.       case scope
  677.       when 1  # 敌单体
  678.         index = @active_battler.current_action.target_index
  679.         @target_battlers.push($game_party.smooth_target_actor(index))
  680.       when 2  # 敌全体
  681.         for actor in $game_party.actors
  682.           if actor.exist?
  683.             @target_battlers.push(actor)
  684.           end
  685.         end
  686.       when 3  # 我方单体
  687.         index = @active_battler.current_action.target_index
  688.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  689.       when 4  # 我方全体
  690.         for enemy in $game_troop.enemies
  691.           if enemy.exist?
  692.             @target_battlers.push(enemy)
  693.           end
  694.         end
  695.       when 5  # 我方单体 (HP 0)
  696.         index = @active_battler.current_action.target_index
  697.         enemy = $game_troop.enemies[index]
  698.         if enemy != nil and enemy.hp0?
  699.           @target_battlers.push(enemy)
  700.         end
  701.       when 6  # 我方全体 (HP 0)
  702.         for enemy in $game_troop.enemies
  703.           if enemy != nil and enemy.hp0?
  704.             @target_battlers.push(enemy)
  705.           end
  706.         end
  707.       when 7  # 使用者
  708.         @target_battlers.push(@active_battler)
  709.       end
  710.     end
  711.     # 行动方的战斗者是角色的情况下
  712.     if @active_battler.is_a?(Game_Actor)
  713.       # 效果范围分支
  714.       case scope
  715.       when 1  # 敌单体
  716.         index = @active_battler.current_action.target_index
  717.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  718.       when 2  # 敌全体
  719.         for enemy in $game_troop.enemies
  720.           if enemy.exist?
  721.             @target_battlers.push(enemy)
  722.           end
  723.         end
  724.       when 3  # 我方单体
  725.         index = @active_battler.current_action.target_index
  726.         @target_battlers.push($game_party.smooth_target_actor(index))
  727.       when 4  # 我方全体
  728.         for actor in $game_party.actors
  729.           if actor.exist?
  730.             @target_battlers.push(actor)
  731.           end
  732.         end
  733.       when 5  # 我方单体 (HP 0)
  734.         index = @active_battler.current_action.target_index
  735.         actor = $game_party.actors[index]
  736.         if actor != nil and actor.hp0?
  737.           @target_battlers.push(actor)
  738.         end
  739.       when 6  # 我方全体 (HP 0)
  740.         for actor in $game_party.actors
  741.           if actor != nil and actor.hp0?
  742.             @target_battlers.push(actor)
  743.           end
  744.         end
  745.       when 7  # 使用者
  746.         @target_battlers.push(@active_battler)
  747.       end
  748.     end
  749.   end
  750.   #--------------------------------------------------------------------------
  751.   # ● 生成特技行动结果
  752.   #--------------------------------------------------------------------------
  753.   def make_skill_action_result
  754.     # 获取特技
  755.     @skill = $data_skills[@active_battler.current_action.skill_id]
  756.     # 如果不是强制行动
  757.     unless @active_battler.current_action.forcing
  758.       # 因为 SP 耗尽而无法使用的情况下
  759.       unless @active_battler.skill_can_use?(@skill.id)
  760.         # 清除强制行动对像的战斗者
  761.         $game_temp.forcing_battler = nil
  762.         # 移至步骤 1
  763.         @phase4_step = 1
  764.         return
  765.       end
  766.     end
  767.     # 消耗 SP
  768.     @active_battler.sp -= @skill.sp_cost
  769.     # 刷新状态窗口
  770.     @status_window.refresh
  771.     # 在帮助窗口显示特技名
  772.     @help_window.set_text(@skill.name, 1)
  773.     # 设置动画 ID
  774.     @animation1_id = @skill.animation1_id
  775.     @animation2_id = @skill.animation2_id
  776.     # 设置公共事件 ID
  777.     @common_event_id = @skill.common_event_id
  778.     # 设置对像侧战斗者
  779.     set_target_battlers(@skill.scope)
  780.     # 应用特技效果
  781.     for target in @target_battlers
  782.       target.skill_effect(@active_battler, @skill)
  783.     end
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # ● 生成物品行动结果
  787.   #--------------------------------------------------------------------------
  788.   def make_item_action_result
  789.     # 获取物品
  790.     @item = $data_items[@active_battler.current_action.item_id]
  791.     # 因为物品耗尽而无法使用的情况下
  792.     unless $game_party.item_can_use?(@item.id)
  793.       # 移至步骤 1
  794.       @phase4_step = 1
  795.       return
  796.     end
  797.     # 消耗品的情况下
  798.     if @item.consumable
  799.       # 使用的物品减 1
  800.       $game_party.lose_item(@item.id, 1)
  801.     end
  802.     # 在帮助窗口显示物品名
  803.     @help_window.set_text(@item.name, 1)
  804.     # 设置动画 ID
  805.     @animation1_id = @item.animation1_id
  806.     @animation2_id = @item.animation2_id
  807.     # 设置公共事件 ID
  808.     @common_event_id = @item.common_event_id
  809.     # 确定对像
  810.     index = @active_battler.current_action.target_index
  811.     target = $game_party.smooth_target_actor(index)
  812.     # 设置对像侧战斗者
  813.     set_target_battlers(@item.scope)
  814.     # 应用物品效果
  815.     for target in @target_battlers
  816.       target.item_effect(@item)
  817.     end
  818.   end
  819.   #--------------------------------------------------------------------------
  820.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  821.   #--------------------------------------------------------------------------
  822.   def update_phase4_step3
  823.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  824.     if @animation1_id == 0
  825.       @active_battler.white_flash = true
  826.     else
  827.       @active_battler.animation_id = @animation1_id
  828.       @active_battler.animation_hit = true
  829.     end
  830.     # 移至步骤 4
  831.     @phase4_step = 4
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  835.   #--------------------------------------------------------------------------
  836.   def update_phase4_step4
  837.     # 对像方动画
  838.     for target in @target_battlers
  839.       target.animation_id = @animation2_id
  840.       target.animation_hit = (target.damage != "Miss")
  841.     end
  842.     # 限制动画长度、最低 8 帧
  843.     @wait_count = 8
  844.     # 移至步骤 5
  845.     @phase4_step = 5
  846.   end
  847.   #--------------------------------------------------------------------------
  848.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  849.   #--------------------------------------------------------------------------
  850.   def update_phase4_step5
  851.     # 隐藏帮助窗口
  852.     @help_window.visible = false
  853.     # 刷新状态窗口
  854.     @status_window.refresh
  855.     # 显示伤害
  856.     for target in @target_battlers
  857.       if target.damage != nil
  858.         target.damage_pop = true
  859.       end
  860.     end
  861.     # 移至步骤 6
  862.     @phase4_step = 6
  863.   end
  864.   #--------------------------------------------------------------------------
  865.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  866.   #--------------------------------------------------------------------------
  867.   def update_phase4_step6
  868.     # 清除强制行动对像的战斗者
  869.     $game_temp.forcing_battler = nil
  870.     # 公共事件 ID 有效的情况下
  871.     if @common_event_id > 0
  872.       # 设置事件
  873.       common_event = $data_common_events[@common_event_id]
  874.       $game_system.battle_interpreter.setup(common_event.list, 0)
  875.     end
  876.     # 移至步骤 1
  877.     @phase4_step = 1
  878.   end
  879. end
复制代码



其实就修改了一点点{/gg}

把2个脚本都插入到Main之前,就OK了
作者: lisi930    时间: 2008-4-21 21:03
加进去了,但还是不行,战斗和逃跑那个筐还是有,虽然在战斗菜单里有了逃跑这项,但点了却没用!!!能给个范例吗????谢谢!!!
作者: redant    时间: 2008-4-21 22:41
貌似天干宝典上有讲过 删除逃跑是在BATTLE 2里
加入的话是在一个选择语句里 (有攻击防御……的选择语句里)再后面加一个同样的选择 并且在后面还有一个好象C1,C2,C3,C4,的东西再加上C5就好了
具体方法宝典上有思路的(貌似66给的思路)
是在注释战斗BATTLE 里 2,3
作者: havealook    时间: 2008-4-22 03:54
我记得我删除了逃跑的筐啊 - -
你把2个脚本插入到Main之前后再测试一遍
作者: Thomas    时间: 2008-4-22 04:21
提示: 作者被禁止或删除 内容自动屏蔽




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