Project1

标题: 我的公共事件为什么特别卡? [打印本页]

作者: wozx922an    时间: 2009-3-25 20:35
标题: 我的公共事件为什么特别卡?
主站上有一个“解决公共事件卡的问题”,我按照他那个改了,不过还是特别卡。

我的Scene_Battle 1中加了“逃跑”;Scene_Battle 4中用到了“齐时战斗”。 [LINE]1,#dddddd[/LINE]此贴于 2009-4-3 12:39:18 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2009-4-4 17:32:38 被版主redant提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2009-4-5 20:24:03 被版主redant提醒,请楼主看到后对本贴做出回应。
作者: zjx2005    时间: 2009-3-26 00:22
您同时使用的公共事件是否太多,或者做重复处理的事件过多(好几个事件中都有一样的处理)

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


  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始主回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase4
  11.     # 转移到回合 4
  12.     @phase = 4
  13.     # 回合数计数
  14.     $game_temp.battle_turn += 1
  15.     # 搜索全页的战斗事件
  16.     for index in 0...$data_troops[@troop_id].pages.size
  17.       # 获取事件页
  18.       page = $data_troops[@troop_id].pages[index]
  19.       # 本页的范围是 [回合] 的情况下
  20.       if page.span == 1
  21.         # 设置已经执行标志
  22.         $game_temp.battle_event_flags[index] = false
  23.       end
  24.     end
  25.     # 设置角色为非选择状态
  26.     @actor_index = -1
  27.     @active_battler = nil
  28.     # 有效化同伴指令窗口
  29.     @party_command_window.active = false
  30.     @party_command_window.visible = false
  31.     # 无效化角色指令窗口
  32.     @actor_command_window.active = false
  33.     @actor_command_window.visible = false
  34.     # 设置主回合标志
  35.     $game_temp.battle_main_phase = true
  36.     # 生成敌人行动
  37.     for enemy in $game_troop.enemies
  38.       enemy.make_action
  39.     end
  40.     # 生成行动顺序
  41.     make_action_orders
  42.     # 移动到步骤 1
  43.     @phase4_step = 1
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 生成行动循序
  47.   #--------------------------------------------------------------------------
  48.   def make_action_orders
  49.     # 初始化序列 @action_battlers
  50.     @action_battlers = []
  51.     # 添加敌人到 @action_battlers 序列
  52.     for enemy in $game_troop.enemies
  53.       @action_battlers.push(enemy)
  54.     end
  55.     # 添加角色到 @action_battlers 序列
  56.     for actor in $game_party.actors
  57.       @action_battlers.push(actor)
  58.     end
  59.     # 确定全体的行动速度
  60.     for battler in @action_battlers
  61.       battler.make_action_speed
  62.     end
  63.     # 按照行动速度从大到小排列
  64.     @action_battlers.sort! {|a,b|
  65.       b.current_action.speed - a.current_action.speed }
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 刷新画面 (主回合)
  69.   #--------------------------------------------------------------------------
  70.   def update_phase4
  71.     case @phase4_step
  72.     when 1
  73.       update_phase4_step1
  74.     when 2
  75.       update_phase4_step2
  76.     when 3
  77.       update_phase4_step3
  78.     when 4
  79.       update_phase4_step4
  80.     when 5
  81.       update_phase4_step5
  82.     when 6
  83.       update_phase4_step6
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  88.   #--------------------------------------------------------------------------
  89.   def update_phase4_step1
  90.     # 隐藏帮助窗口
  91.     @help_window.visible = false
  92.     # 判定胜败
  93.     if judge
  94.       # 胜利或者失败的情况下 : 过程结束
  95.       return
  96.     end
  97.     # 强制行动的战斗者不存在的情况下
  98.     if $game_temp.forcing_battler == nil
  99.       # 设置战斗事件
  100.       setup_battle_event
  101.       # 执行战斗事件中的情况下
  102.       if $game_system.battle_interpreter.running?
  103.         return
  104.       end
  105.     end
  106.     # 强制行动的战斗者存在的情况下
  107.     if $game_temp.forcing_battler != nil
  108.       # 在头部添加后移动
  109.       @action_battlers.delete($game_temp.forcing_battler)
  110.       @action_battlers.unshift($game_temp.forcing_battler)
  111.     end
  112.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  113.     if @action_battlers.size == 0
  114.       # 开始同伴命令回合
  115.       start_phase2
  116.       return
  117.     end
  118.     # 初始化动画 ID 和公共事件 ID
  119.     @animation1_id = 0
  120.     @animation2_id = 0
  121.     @common_event_id = 0
  122.     # 未行动的战斗者移动到序列的头部
  123.     @active_battler = @action_battlers.shift
  124.     # 如果已经在战斗之外的情况下
  125.     if @active_battler.index == nil
  126.       return
  127.     end
  128.     # 连续伤害
  129.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  130.       @active_battler.slip_damage_effect
  131.       @active_battler.damage_pop = true
  132.     end
  133.     # 自然解除状态
  134.     @active_battler.remove_states_auto
  135.     # 刷新状态窗口
  136.     @status_window.refresh
  137.     # 移至步骤 2
  138.     @phase4_step = 2
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  142.   #--------------------------------------------------------------------------
  143.   def update_phase4_step2
  144.     # 如果不是强制行动
  145.     unless @active_battler.current_action.forcing
  146.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  147.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  148.         # 设置行动为攻击
  149.         @active_battler.current_action.kind = 0
  150.         @active_battler.current_action.basic = 0
  151.       end
  152.       # 限制为 [不能行动] 的情况下
  153.       if @active_battler.restriction == 4
  154.         # 清除行动强制对像的战斗者
  155.         $game_temp.forcing_battler = nil
  156.         # 移至步骤 1
  157.         @phase4_step = 1
  158.         return
  159.       end
  160.     end
  161.     # 清除对像战斗者
  162.     @target_battlers = []
  163.     # 行动种类分支
  164.     case @active_battler.current_action.kind
  165.     when 0  # 基本
  166.       make_basic_action_result
  167.     when 1  # 特技
  168.       make_skill_action_result
  169.     when 2  # 物品
  170.       make_item_action_result
  171.     end
  172.     # 移至步骤 3
  173.     if @phase4_step == 2
  174.       @phase4_step = 3
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 生成基本行动结果
  179.   #--------------------------------------------------------------------------
  180.   def make_basic_action_result
  181.     # 攻击的情况下
  182.     if @active_battler.current_action.basic == 0
  183.       # 设置攻击 ID
  184.       @animation1_id = @active_battler.animation1_id
  185.       @animation2_id = @active_battler.animation2_id
  186.       # 行动方的战斗者是敌人的情况下
  187.       if @active_battler.is_a?(Game_Enemy)
  188.         if @active_battler.restriction == 3
  189.           target = $game_troop.random_target_enemy
  190.         elsif @active_battler.restriction == 2
  191.           target = $game_party.random_target_actor
  192.         else
  193.           index = @active_battler.current_action.target_index
  194.           target = $game_party.smooth_target_actor(index)
  195.         end
  196.       end
  197.       # 行动方的战斗者是角色的情况下
  198.       if @active_battler.is_a?(Game_Actor)
  199.         if @active_battler.restriction == 3
  200.           target = $game_party.random_target_actor
  201.         elsif @active_battler.restriction == 2
  202.           target = $game_troop.random_target_enemy
  203.         else
  204.           index = @active_battler.current_action.target_index
  205.           target = $game_troop.smooth_target_enemy(index)
  206.         end
  207.       end
  208.       # 设置对像方的战斗者序列
  209.       @target_battlers = [target]
  210.       # 应用通常攻击效果
  211.       for target in @target_battlers
  212.         target.attack_effect(@active_battler)
  213.       end
  214.       return
  215.     end
  216.     # 防御的情况下
  217.     if @active_battler.current_action.basic == 1
  218.       # 帮助窗口显示"防御"
  219.       @help_window.set_text($data_system.words.guard, 1)
  220.       return
  221.     end
  222.     # 逃跑的情况下
  223.     if @active_battler.is_a?(Game_Enemy) and
  224.        @active_battler.current_action.basic == 2
  225.       #  帮助窗口显示"逃跑"
  226.       @help_window.set_text("逃跑", 1)
  227.       # 逃跑
  228.       @active_battler.escape
  229.       return
  230.     end
  231.     # 什么也不做的情况下
  232.     if @active_battler.current_action.basic == 3
  233.       # 清除强制行动对像的战斗者
  234.       $game_temp.forcing_battler = nil
  235.       # 移至步骤 1
  236.       @phase4_step = 1
  237.       return
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 设置物品或特技对像方的战斗者
  242.   #     scope : 特技或者是物品的范围
  243.   #--------------------------------------------------------------------------
  244.   def set_target_battlers(scope)
  245.     # 行动方的战斗者是敌人的情况下
  246.     if @active_battler.is_a?(Game_Enemy)
  247.       # 效果范围分支
  248.       case scope
  249.       when 1  # 敌单体
  250.         index = @active_battler.current_action.target_index
  251.         @target_battlers.push($game_party.smooth_target_actor(index))
  252.       when 2  # 敌全体
  253.         for actor in $game_party.actors
  254.           if actor.exist?
  255.             @target_battlers.push(actor)
  256.           end
  257.         end
  258.       when 3  # 我方单体
  259.         index = @active_battler.current_action.target_index
  260.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  261.       when 4  # 我方全体
  262.         for enemy in $game_troop.enemies
  263.           if enemy.exist?
  264.             @target_battlers.push(enemy)
  265.           end
  266.         end
  267.       when 5  # 我方单体 (HP 0)
  268.         index = @active_battler.current_action.target_index
  269.         enemy = $game_troop.enemies[index]
  270.         if enemy != nil and enemy.hp0?
  271.           @target_battlers.push(enemy)
  272.         end
  273.       when 6  # 我方全体 (HP 0)
  274.         for enemy in $game_troop.enemies
  275.           if enemy != nil and enemy.hp0?
  276.             @target_battlers.push(enemy)
  277.           end
  278.         end
  279.       when 7  # 使用者
  280.         @target_battlers.push(@active_battler)
  281.       end
  282.     end
  283.     # 行动方的战斗者是角色的情况下
  284.     if @active_battler.is_a?(Game_Actor)
  285.       # 效果范围分支
  286.       case scope
  287.       when 1  # 敌单体
  288.         index = @active_battler.current_action.target_index
  289.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  290.       when 2  # 敌全体
  291.         for enemy in $game_troop.enemies
  292.           if enemy.exist?
  293.             @target_battlers.push(enemy)
  294.           end
  295.         end
  296.       when 3  # 我方单体
  297.         index = @active_battler.current_action.target_index
  298.         @target_battlers.push($game_party.smooth_target_actor(index))
  299.       when 4  # 我方全体
  300.         for actor in $game_party.actors
  301.           if actor.exist?
  302.             @target_battlers.push(actor)
  303.           end
  304.         end
  305.       when 5  # 我方单体 (HP 0)
  306.         index = @active_battler.current_action.target_index
  307.         actor = $game_party.actors[index]
  308.         if actor != nil and actor.hp0?
  309.           @target_battlers.push(actor)
  310.         end
  311.       when 6  # 我方全体 (HP 0)
  312.         for actor in $game_party.actors
  313.           if actor != nil and actor.hp0?
  314.             @target_battlers.push(actor)
  315.           end
  316.         end
  317.       when 7  # 使用者
  318.         @target_battlers.push(@active_battler)
  319.       end
  320.     end
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 生成特技行动结果
  324.   #--------------------------------------------------------------------------
  325.   def make_skill_action_result
  326.     # 获取特技
  327.     @skill = $data_skills[@active_battler.current_action.skill_id]
  328.     # 如果不是强制行动
  329.     unless @active_battler.current_action.forcing
  330.       # 因为 SP 耗尽而无法使用的情况下
  331.       unless @active_battler.skill_can_use?(@skill.id)
  332.         # 清除强制行动对像的战斗者
  333.         $game_temp.forcing_battler = nil
  334.         # 移至步骤 1
  335.         @phase4_step = 1
  336.         return
  337.       end
  338.     end
  339.     # 消耗 SP
  340.     @active_battler.sp -= @skill.sp_cost
  341.     # 刷新状态窗口
  342.     @status_window.refresh
  343.     # 在帮助窗口显示特技名
  344.     @help_window.set_text(@skill.name, 1)
  345.     # 设置动画 ID
  346.     @animation1_id = @skill.animation1_id
  347.     @animation2_id = @skill.animation2_id
  348.     # 设置公共事件 ID
  349.     @common_event_id = @skill.common_event_id
  350.     # 设置对像侧战斗者
  351.     set_target_battlers(@skill.scope)
  352.     # 应用特技效果
  353.     for target in @target_battlers
  354.       target.skill_effect(@active_battler, @skill)
  355.     end
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 生成物品行动结果
  359.   #--------------------------------------------------------------------------
  360.   def make_item_action_result
  361.     # 获取物品
  362.     @item = $data_items[@active_battler.current_action.item_id]
  363.     # 因为物品耗尽而无法使用的情况下
  364.     unless $game_party.item_can_use?(@item.id)
  365.       # 移至步骤 1
  366.       @phase4_step = 1
  367.       return
  368.     end
  369.     # 消耗品的情况下
  370.     if @item.consumable
  371.       # 使用的物品减 1
  372.       $game_party.lose_item(@item.id, 1)
  373.     end
  374.     # 在帮助窗口显示物品名
  375.     @help_window.set_text(@item.name, 1)
  376.     # 设置动画 ID
  377.     @animation1_id = @item.animation1_id
  378.     @animation2_id = @item.animation2_id
  379.     # 设置公共事件 ID
  380.     @common_event_id = @item.common_event_id
  381.     # 确定对像
  382.     index = @active_battler.current_action.target_index
  383.     target = $game_party.smooth_target_actor(index)
  384.     # 设置对像侧战斗者
  385.     set_target_battlers(@item.scope)
  386.     # 应用物品效果
  387.     for target in @target_battlers
  388.       target.item_effect(@item)
  389.     end
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  393.   #--------------------------------------------------------------------------
  394.   def update_phase4_step3
  395.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  396.     if @animation1_id == 0
  397.       @active_battler.white_flash = true
  398.     else
  399.       @active_battler.animation_id = @animation1_id
  400.       @active_battler.animation_hit = true
  401.     end
  402.     # 对像方动画
  403.     for target in @target_battlers
  404.       target.animation_id = @animation2_id
  405.       target.animation_hit = (target.damage != "Miss")
  406.     end
  407.     # 移至步骤 4
  408.     @phase4_step = 4
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  412.   #--------------------------------------------------------------------------
  413.   def update_phase4_step4
  414.     # 限制动画长度、最低 8 帧
  415.     @wait_count = 8
  416.     # 移至步骤 5
  417.     @phase4_step = 5
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  421.   #--------------------------------------------------------------------------
  422.   def update_phase4_step5
  423.     # 隐藏帮助窗口
  424.     @help_window.visible = false
  425.     # 刷新状态窗口
  426.     @status_window.refresh
  427.     # 显示伤害
  428.     for target in @target_battlers
  429.       if target.damage != nil
  430.         target.damage_pop = true
  431.       end
  432.     end
  433.     # 移至步骤 6
  434.     @phase4_step = 6
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  438.   #--------------------------------------------------------------------------
  439.   def update_phase4_step6
  440.     # 清除强制行动对像的战斗者
  441.     $game_temp.forcing_battler = nil
  442.     # 公共事件 ID 有效的情况下
  443.     if @common_event_id > 0
  444.       # 设置事件
  445.       common_event = $data_common_events[@common_event_id]
  446.       $game_system.battle_interpreter.setup(common_event.list, 0)
  447.     end
  448.     # 如果不是结束战斗回合的情况下
  449.     if @phase != 5
  450.       # 刷新状态窗口
  451.       @status_window.refresh
  452.     end
  453.     # 移至步骤 1
  454.     @phase4_step = 1
  455.   end
  456. end
复制代码



这是我的Scene_Battle 1和Scene_Battle 4,好信任帮忙看看啊,为什么卡?
作者: 200878242    时间: 2009-4-2 02:24
你的Scene_Battle 1和Scene_Battle 4没有问题啊,可能有其他的问题,建议传工程上来
作者: wozx922an    时间: 2009-4-2 22:39
http://rpg.blue/upload_program/d/wozx922an_1_119111882.rar

帮忙看看吧,要能解决这个问题我再追加1VIP+200积分+好人卡2张

作者: 迅雷進    时间: 2009-4-3 00:01
很多素材都没有,
很难测试咧。




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