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

Project1

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

[已经解决] 脚本错误,求教

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8869
在线时间
1488 小时
注册时间
2012-6-6
帖子
349
跳转到指定楼层
1
发表于 2012-12-27 02:39:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 hcm 于 2013-1-14 12:36 编辑

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

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

  512.     # 应用特技效果
  513.     #for target in @target_battlers
  514.     #  target.skill_effect(@active_battler, @skill)
  515.     #end
  516.   end
  517.   #--------------------------------------------------------------------------
  518.   # ● 生成物品行动结果
  519.   #--------------------------------------------------------------------------
  520.   def make_item_action_result
  521.     @item_success = true
  522.     @divide = 1
  523.     # 获取物品
  524.     @item = $data_items[@active_battler.current_action.item_id]
  525.     # 因为物品耗尽而无法使用的情况下
  526.     unless $game_party.item_can_use?(@item.id)
  527.       # 移至步骤 1
  528.       @phase4_step = 1
  529.       return
  530.     end
  531.     # 消耗品的情况下
  532.     #if @item.consumable
  533.     #  # 使用的物品减 1
  534.     #  $game_party.lose_item(@item.id, 1)
  535.     #end
  536.     # 在帮助窗口显示物品名
  537.     #@help_window.set_text(@item.name, 1)
  538.     # 设置动画 ID
  539.     @animation1_id = @item.animation1_id
  540.     @animation2_id = @item.animation2_id
  541.     # 设置公共事件 ID
  542.     @common_event_id = @item.common_event_id
  543.     # 确定对像
  544.     index = @active_battler.current_action.target_index
  545.     target = $game_party.smooth_target_actor(index)
  546.     # 设置对像侧战斗者
  547.     set_target_battlers(@item.scope)
  548.     # 应用物品效果
  549.     #for target in @target_battlers
  550.     #  target.item_effect(@item)
  551.     #end
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)指令完后马上进来执行
  555.   #--------------------------------------------------------------------------
  556.   def update_phase4_step3
  557.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  558.     if @animation1_id == 0
  559.       @active_battler.white_flash = true
  560.     else
  561.       @active_battler.animation_id = @animation1_id
  562.       @active_battler.animation_hit = true
  563.     end
  564.    
  565.     # 显示我方战斗信息
  566.     c = @active_battler.is_a?(Game_Actor) ?  "\001[3]" : "\001[2]"
  567.     case @active_battler.current_action.kind
  568.     when 0  # 基本
  569.       if @active_battler.current_action.basic == 0 #攻击
  570.         $am = "#{c}#{@active_battler.name}\001[0]攻击!"
  571.       elsif @active_battler.current_action.basic == 1 #防御
  572.         $am = "#{c}#{@active_battler.name}\001[0]选择了防御."
  573.       elsif @active_battler.current_action.basic == 2 #逃跑
  574.         $am = "#{c}#{@active_battler.name}\001[0]选择了逃跑."
  575.       end
  576.       bluefool_sort
  577.     when 1  # 特技
  578.       $am = "#{c}#{@active_battler.name}\001[0]使用了\001[6]#{@skill.name}\001[0]!"
  579.       bluefool_sort
  580.       if @skill_success == false
  581.         if @skill.type == "策略"
  582.           $am = "\001[7]#{@skill.name}\001[0]失败!"
  583.         elsif @skill.type == "阵型"
  584.           $am = "\001[7]#{@skill.name}\001[0]阵设置失败!"
  585.         end
  586.       end
  587.       bluefool_sort
  588.     when 2  # 物品
  589.       $am = "#{c}#{@active_battler.name}\001[0]使用了\001[6]#{@item.name}\001[0]!"
  590.       bluefool_sort
  591.     end
  592.    
  593.     @inf_window.refresh
  594.    
  595.     # 设置头像
  596.     if @active_battler.is_a?(Game_Actor)
  597.       @head_window_left.set_actor_head(@active_battler)
  598.     elsif @active_battler.is_a?(Game_Enemy)
  599.       @head_window_right.set_enemy_head(@active_battler)
  600.     end
  601.    
  602.     # 移至步骤 4
  603.     @phase4_step = 4
  604.     # 全体攻击时的攻击序号
  605.     @body_index = -1
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  609.   #--------------------------------------------------------------------------
  610.   def update_phase4_step4
  611.     # 攻击无效
  612.     if @attack !=nil and @attack_success == false
  613.       @phase4_step = 6
  614.       @wait_count = 20
  615.       return
  616.     end
  617.     # 策略无效
  618.     if @skill != nil and @skill_success == false
  619.       @phase4_step = 6
  620.       @wait_count = 20
  621.       return
  622.     end
  623.    
  624.     @body_index += 1
  625.     if @body_index == @target_battlers.size
  626.       @phase4_step = 6
  627.       return
  628.     end
  629.     # 获取目标者
  630.     target = @target_battlers[@body_index]
  631.     # 获取反射者
  632.     refrexer = @refrex_battlers[@body_index]
  633.     # 伤害值计算
  634.     case @active_battler.current_action.kind
  635.     when 0  # 基本
  636.       if @active_battler.current_action.basic == 0 #攻击
  637.         if refrexer.nil?
  638.           target.attack_effect(@active_battler)
  639.         else
  640.           refrexer.attack_effect(@active_battler)
  641.         end
  642.       end
  643.     when 1  # 特技
  644.       if refrexer.nil?
  645.         target.skill_effect(@active_battler, @skill, @divide)
  646.       else
  647.         refrexer.skill_effect(@active_battler, @skill, @divide)
  648.       end
  649.     when 2  # 物品
  650.       target.item_effect(@item, @divide)
  651.     end
  652.    
  653.     # 对像方动画
  654.     target.animation_id = @animation2_id
  655.     target.animation_hit = (target.damage != "Miss")
  656.    
  657.     # 反射方动画
  658.     unless refrexer.nil?
  659.       refrexer.animation_id = @active_battler.animation2_id
  660.       refrexer.animation_hit = (refrexer.damage != "Miss")
  661.     end
  662.    
  663.     # 设置头像
  664.     if target.is_a?(Game_Actor)
  665.       @head_window_left.set_actor_head(target)
  666.     elsif target.is_a?(Game_Enemy)
  667.       @head_window_right.set_enemy_head(target)
  668.     end
  669.    
  670.     # 限制动画长度、最低 8 帧
  671.     @wait_count = @wait_count1    #动画执行完之后显示伤害的等待时间
  672.     # 移至步骤 5
  673.     @phase4_step = 5
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  677.   #--------------------------------------------------------------------------
  678.   def update_phase4_step5
  679.     # 隐藏帮助窗口
  680.     @help_window.visible = false
  681.     # 刷新状态窗口
  682.     @status_window.refresh
  683.     # 获取目标者
  684.     target = @target_battlers[@body_index]
  685.     # 获取反射者
  686.     refrexer = @refrex_battlers[@body_index]
  687.    
  688.     # 显示伤害
  689.     if target.damage != nil
  690.       target.damage_pop = true
  691.     end
  692.    
  693.     unless refrexer.nil?
  694.       if refrexer.damage != nil
  695.         refrexer.damage_pop = true
  696.       end
  697.     end
  698.       
  699.     # 显示敌方战斗信息
  700.     c = @active_battler.is_a?(Game_Actor) ?  "\001[3]" : "\001[2]"
  701.     d = target.is_a?(Game_Actor) ?  "\001[3]" : "\001[2]"
  702.     if target.damage != nil
  703.       if target.damage.is_a?(Numeric) # 成功
  704.         if @active_battler.current_action.kind == 1
  705.           $am = "\001[3]策略成功!"
  706.         end
  707.         bluefool_sort
  708.         if target.damage > 0
  709.           $am = "#{d}#{target.name}\001[0]损失了\001[4]#{target.damage}\001[0]人."
  710.         else
  711.           $am = "#{d}#{target.name}\001[0]补充了\001[4]#{target.damage.abs}\001[0]人."
  712.         end
  713.         bluefool_sort
  714.       else                             #失败
  715.         if @active_battler.current_action.kind == 0
  716.           if @active_battler.current_action.basic == 0
  717.             $am = "\001[7]攻击失败."
  718.           end
  719.         elsif @active_battler.current_action.kind == 1
  720.           $am = "\001[7]策略失败."
  721.         elsif @active_battler.current_action.kind == 2
  722.           $am = "\001[7]#{@item.name}\001[0]使用失败."
  723.         end
  724.         bluefool_sort
  725.       end
  726.     end
  727.    
  728.     if target.dead?
  729.       if @item != nil and @item_success
  730.         if @item.consumable
  731.           # 使用的物品减 1
  732.           $game_party.gain_item(@item.id, 1)
  733.         end
  734.       elsif @skill != nil and @skill_success
  735.         $game_party.sp += @skill.sp_cost
  736.       end
  737.       $am = "#{c}#{@active_battler.name}\001[0]击败了#{d}#{target.name}\001[0]."
  738.       bluefool_sort
  739.     end
  740.    
  741.     unless refrexer.nil?
  742.       if refrexer.dead?
  743.         if @item != nil and @item_success
  744.           if @item.consumable
  745.             # 使用的物品减 1
  746.             $game_party.gain_item(@item.id, 1)
  747.           end
  748.         elsif @skill != nil and @skill_success
  749.           $game_party.sp += @skill.sp_cost
  750.         end
  751.         $am = "#{c}#{refrexer.name}\001[0]死了\001[0]."
  752.         bluefool_sort
  753.       end
  754.     end
  755.    
  756.     @inf_window.refresh
  757.    
  758.     # 移至步骤 6
  759.     @phase4_step = 4
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  763.   #--------------------------------------------------------------------------
  764.   def update_phase4_step6
  765.     # 清除强制行动对像的战斗者
  766.     $game_temp.forcing_battler = nil
  767.     # 公共事件 ID 有效的情况下
  768.     if @common_event_id > 0
  769.       # 设置事件
  770.       common_event = $data_common_events[@common_event_id]
  771.       $game_system.battle_interpreter.setup(common_event.list, 0)
  772.     end
  773.     # 移至步骤 1
  774.     @phase4_step = 1
  775.   end
  776. end
复制代码

点评

又忘了把脚本放入代码中贴出?  发表于 2012-12-27 10:55

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
2
发表于 2012-12-27 11:01:56 | 只看该作者
如错误讯息所说,原默认脚本 Scene_Battle 4 中没有 state? 的 def 自定义模块,
您贴的这脚本既没有继承有这定义的父类,本身也没有给出定义,错误就一定有了,
state? 的 def 项在 Scene_Battle 2 中有,您可以把那一段 Copy 到您的脚本中试试。

评分

参与人数 1星屑 +66 收起 理由
hcm + 66 感谢回答

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
3
发表于 2012-12-27 11:09:36 | 只看该作者
@target_battlers = [target]下面加一行
@target_battlers = target if target.is_a?(Array)

评分

参与人数 1星屑 +20 收起 理由
hcm + 20 感谢回答

查看全部评分

好歹当年也当过大魔王过,orz
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8869
在线时间
1488 小时
注册时间
2012-6-6
帖子
349
4
 楼主| 发表于 2012-12-27 15:40:38 | 只看该作者
zhangbanxian 发表于 2012-12-27 11:09
@target_battlers = [target]下面加一行
@target_battlers = target if target.is_a?(Array)

不行,我方人都死光了但敌人还在攻击。。。。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8869
在线时间
1488 小时
注册时间
2012-6-6
帖子
349
5
 楼主| 发表于 2012-12-27 16:09:00 | 只看该作者
j433463 发表于 2012-12-27 11:01
如错误讯息所说,原默认脚本 Scene_Battle 4 中没有 state? 的 def 自定义模块,
您贴的这脚本既没有继承有 ...

Scene_Battle 2查找找不到state?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
6
发表于 2012-12-27 18:56:40 | 只看该作者
是我的错,把 Game_Battler 2 误写成 Scene_Battle 2 了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8869
在线时间
1488 小时
注册时间
2012-6-6
帖子
349
7
 楼主| 发表于 2012-12-28 18:22:54 手机端发表。 | 只看该作者
j433463 发表于 2012-12-27 18:56 是我的错,把 Game_Battler 2 误写成 Scene_Battle 2 了。

唉,我用的是别人的吞2模板.......BUG太多了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-8 23:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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