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

Project1

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

伤害统计问题。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2008-6-17
帖子
200
跳转到指定楼层
1
发表于 2009-2-16 21:16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在某次战斗中我方有4名队员。敌BOSS使用一全体攻击技能,我方4人损血。
请教如何统计出BOSS该次对我方4名队员伤害的总值代入变量?

注:需考虑到以下几种情况:未命中;我方队员已有人战斗不能;我方某一队员的当前HP远低于BOSS可以造成的伤害。

版务信息:本贴由楼主自主结贴~

Lv5.捕梦者

梦石
0
星屑
39163
在线时间
5737 小时
注册时间
2006-11-10
帖子
6638
2
发表于 2009-2-16 22:18:06 | 只看该作者
替换原来的SCENE BATTLE4
变量1就是你所要的值,使用技能是7号,注意只能正确记录角色们受到的总伤害。

  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.     @aaaa = 0
  138.     #########菜刀王到此一游############
  139.     for a in $game_party.actors
  140.       @aaaa += a.hp
  141.     end
  142.     #########菜刀王到此一游############
  143.     # 移至步骤 2
  144.     @phase4_step = 2
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  148.   #--------------------------------------------------------------------------
  149.   def update_phase4_step2
  150.     # 如果不是强制行动
  151.     unless @active_battler.current_action.forcing
  152.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  153.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  154.         # 设置行动为攻击
  155.         @active_battler.current_action.kind = 0
  156.         @active_battler.current_action.basic = 0
  157.       end
  158.       # 限制为 [不能行动] 的情况下
  159.       if @active_battler.restriction == 4
  160.         # 清除行动强制对像的战斗者
  161.         $game_temp.forcing_battler = nil
  162.         # 移至步骤 1
  163.         @phase4_step = 1
  164.         return
  165.       end
  166.     end
  167.     # 清除对像战斗者
  168.     @target_battlers = []
  169.     # 行动种类分支
  170.     case @active_battler.current_action.kind
  171.     when 0  # 基本
  172.       make_basic_action_result
  173.     when 1  # 特技
  174.       make_skill_action_result
  175.     when 2  # 物品
  176.       make_item_action_result
  177.     end
  178.     # 移至步骤 3
  179.     if @phase4_step == 2
  180.       @phase4_step = 3
  181.     end
  182.     # 公共事件 ID 有效的情况下
  183.     if @common_event_id > 0
  184.       # 设置事件
  185.       common_event = $data_common_events[@common_event_id]
  186.       $game_system.battle_interpreter.setup(common_event.list, 0)
  187.       @abcdef = true
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 生成基本行动结果
  192.   #--------------------------------------------------------------------------
  193.   def make_basic_action_result
  194.     # 攻击的情况下
  195.     if @active_battler.current_action.basic == 0
  196.       # 设置攻击 ID
  197.       @animation1_id = @active_battler.animation1_id
  198.       @animation2_id = @active_battler.animation2_id
  199.       # 行动方的战斗者是敌人的情况下
  200.       if @active_battler.is_a?(Game_Enemy)
  201.         if @active_battler.restriction == 3
  202.           target = $game_troop.random_target_enemy
  203.         elsif @active_battler.restriction == 2
  204.           target = $game_party.random_target_actor
  205.         else
  206.           index = @active_battler.current_action.target_index
  207.           target = $game_party.smooth_target_actor(index)
  208.         end
  209.       end
  210.       # 行动方的战斗者是角色的情况下
  211.       if @active_battler.is_a?(Game_Actor)
  212.         if @active_battler.restriction == 3
  213.           target = $game_party.random_target_actor
  214.         elsif @active_battler.restriction == 2
  215.           target = $game_troop.random_target_enemy
  216.         else
  217.           index = @active_battler.current_action.target_index
  218.           target = $game_troop.smooth_target_enemy(index)
  219.         end
  220.       end
  221.       # 设置对像方的战斗者序列
  222.       @target_battlers = [target]
  223.       # 应用通常攻击效果
  224.       for target in @target_battlers
  225.         target.attack_effect(@active_battler)
  226.       end
  227.       return
  228.     end
  229.     # 防御的情况下
  230.     if @active_battler.current_action.basic == 1
  231.       # 帮助窗口显示"防御"
  232.       @help_window.set_text($data_system.words.guard, 1)
  233.       return
  234.     end
  235.     # 逃跑的情况下
  236.     if @active_battler.is_a?(Game_Enemy) and
  237.        @active_battler.current_action.basic == 2
  238.       #  帮助窗口显示"逃跑"
  239.       @help_window.set_text("逃跑", 1)
  240.       # 逃跑
  241.       @active_battler.escape
  242.       return
  243.     end
  244.     # 什么也不做的情况下
  245.     if @active_battler.current_action.basic == 3
  246.       # 清除强制行动对像的战斗者
  247.       $game_temp.forcing_battler = nil
  248.       # 移至步骤 1
  249.       @phase4_step = 1
  250.       return
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 设置物品或特技对像方的战斗者
  255.   #     scope : 特技或者是物品的范围
  256.   #--------------------------------------------------------------------------
  257.   def set_target_battlers(scope)
  258.     # 行动方的战斗者是敌人的情况下
  259.     if @active_battler.is_a?(Game_Enemy)
  260.       # 效果范围分支
  261.       case scope
  262.       when 1  # 敌单体
  263.         index = @active_battler.current_action.target_index
  264.         @target_battlers.push($game_party.smooth_target_actor(index))
  265.       when 2  # 敌全体
  266.         for actor in $game_party.actors
  267.           if actor.exist?
  268.             @target_battlers.push(actor)
  269.           end
  270.         end
  271.       when 3  # 我方单体
  272.         index = @active_battler.current_action.target_index
  273.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  274.       when 4  # 我方全体
  275.         for enemy in $game_troop.enemies
  276.           if enemy.exist?
  277.             @target_battlers.push(enemy)
  278.           end
  279.         end
  280.       when 5  # 我方单体 (HP 0)
  281.         index = @active_battler.current_action.target_index
  282.         enemy = $game_troop.enemies[index]
  283.         if enemy != nil and enemy.hp0?
  284.           @target_battlers.push(enemy)
  285.         end
  286.       when 6  # 我方全体 (HP 0)
  287.         for enemy in $game_troop.enemies
  288.           if enemy != nil and enemy.hp0?
  289.             @target_battlers.push(enemy)
  290.           end
  291.         end
  292.       when 7  # 使用者
  293.         @target_battlers.push(@active_battler)
  294.       end
  295.     end
  296.     # 行动方的战斗者是角色的情况下
  297.     if @active_battler.is_a?(Game_Actor)
  298.       # 效果范围分支
  299.       case scope
  300.       when 1  # 敌单体
  301.         index = @active_battler.current_action.target_index
  302.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  303.       when 2  # 敌全体
  304.         for enemy in $game_troop.enemies
  305.           if enemy.exist?
  306.             @target_battlers.push(enemy)
  307.           end
  308.         end
  309.       when 3  # 我方单体
  310.         index = @active_battler.current_action.target_index
  311.         @target_battlers.push($game_party.smooth_target_actor(index))
  312.       when 4  # 我方全体
  313.         for actor in $game_party.actors
  314.           if actor.exist?
  315.             @target_battlers.push(actor)
  316.           end
  317.         end
  318.       when 5  # 我方单体 (HP 0)
  319.         index = @active_battler.current_action.target_index
  320.         actor = $game_party.actors[index]
  321.         if actor != nil and actor.hp0?
  322.           @target_battlers.push(actor)
  323.         end
  324.       when 6  # 我方全体 (HP 0)
  325.         for actor in $game_party.actors
  326.           if actor != nil and actor.hp0?
  327.             @target_battlers.push(actor)
  328.           end
  329.         end
  330.       when 7  # 使用者
  331.         @target_battlers.push(@active_battler)
  332.       end
  333.     end
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 生成特技行动结果
  337.   #--------------------------------------------------------------------------
  338.   def make_skill_action_result
  339.     # 获取特技
  340.     @skill = $data_skills[@active_battler.current_action.skill_id]
  341.     # 如果不是强制行动
  342.     unless @active_battler.current_action.forcing
  343.       # 因为 SP 耗尽而无法使用的情况下
  344.       unless @active_battler.skill_can_use?(@skill.id)
  345.         # 清除强制行动对像的战斗者
  346.         $game_temp.forcing_battler = nil
  347.         # 移至步骤 1
  348.         @phase4_step = 1
  349.         return
  350.       end
  351.     end
  352.     # 消耗 SP
  353.     @active_battler.sp -= @skill.sp_cost
  354.     # 刷新状态窗口
  355.     @status_window.refresh
  356.     # 在帮助窗口显示特技名
  357.     @help_window.set_text(@skill.name, 1)
  358.     # 设置动画 ID
  359.     @animation1_id = @skill.animation1_id
  360.     @animation2_id = @skill.animation2_id
  361.     # 设置公共事件 ID
  362.     @common_event_id = @skill.common_event_id
  363.     # 设置对像侧战斗者
  364.     set_target_battlers(@skill.scope)
  365.     # 应用特技效果
  366.     #########菜刀王到此一游############
  367.     bbbb = 0
  368.     for target in @target_battlers
  369.       target.skill_effect(@active_battler, @skill)
  370.       bbbb += target.hp
  371.     end
  372.     if @skill.id == 7
  373.       $game_variables[1] = @aaaa - bbbb
  374.     end
  375.     #########菜刀王到此一游############
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 生成物品行动结果
  379.   #--------------------------------------------------------------------------
  380.   def make_item_action_result
  381.     # 获取物品
  382.     @item = $data_items[@active_battler.current_action.item_id]
  383.     # 因为物品耗尽而无法使用的情况下
  384.     unless $game_party.item_can_use?(@item.id)
  385.       # 移至步骤 1
  386.       @phase4_step = 1
  387.       return
  388.     end
  389.     # 消耗品的情况下
  390.     if @item.consumable
  391.       # 使用的物品减 1
  392.       $game_party.lose_item(@item.id, 1)
  393.     end
  394.     # 在帮助窗口显示物品名
  395.     @help_window.set_text(@item.name, 1)
  396.     # 设置动画 ID
  397.     @animation1_id = @item.animation1_id
  398.     @animation2_id = @item.animation2_id
  399.     # 设置公共事件 ID
  400.     @common_event_id = @item.common_event_id
  401.     # 确定对像
  402.     index = @active_battler.current_action.target_index
  403.     target = $game_party.smooth_target_actor(index)
  404.     # 设置对像侧战斗者
  405.     set_target_battlers(@item.scope)
  406.     # 应用物品效果
  407.     for target in @target_battlers
  408.       target.item_effect(@item)
  409.     end
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  413.   #--------------------------------------------------------------------------
  414.   def update_phase4_step3
  415.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  416.     if @animation1_id == 0
  417.       @active_battler.white_flash = true
  418.     else
  419.       @active_battler.animation_id = @animation1_id
  420.       @active_battler.animation_hit = true
  421.     end
  422.     # 移至步骤 4
  423.     @phase4_step = 4
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  427.   #--------------------------------------------------------------------------
  428.   def update_phase4_step4
  429.     # 对像方动画
  430.     for target in @target_battlers
  431.       target.animation_id = @animation2_id
  432.       target.animation_hit = (target.damage != "Miss")
  433.     end
  434.     # 限制动画长度、最低 8 帧
  435.     @wait_count = 8
  436.     # 移至步骤 5
  437.     @phase4_step = 5
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  441.   #--------------------------------------------------------------------------
  442.   def update_phase4_step5
  443.     # 隐藏帮助窗口
  444.     @help_window.visible = false
  445.     # 刷新状态窗口
  446.     @status_window.refresh
  447.     # 显示伤害
  448.     for target in @target_battlers
  449.       if target.damage != nil
  450.         target.damage_pop = true
  451.       end
  452.     end
  453.     # 移至步骤 6
  454.     @phase4_step = 6
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  458.   #--------------------------------------------------------------------------
  459.   def update_phase4_step6
  460.     # 清除强制行动对像的战斗者
  461.     $game_temp.forcing_battler = nil
  462.     @abcdef = false
  463.     # 移至步骤 1
  464.     @phase4_step = 1
  465.   end
  466. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2008-6-17
帖子
200
3
 楼主| 发表于 2009-2-16 22:57:24 | 只看该作者
以下引用灯笼菜刀王于2009-2-16 14:18:06的发言:

替换原来的SCENE BATTLE4
变量1就是你所要的值,使用技能是7号,注意只能正确记录角色们受到的总伤害。

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

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 开始主回合
  #--------------------------------------------------------------------------
  def start_phase4
    # 转移到回合 4
    @phase = 4
    # 回合数计数
    $game_temp.battle_turn += 1
    # 搜索全页的战斗事件
    for index in 0...$data_troops[@troop_id].pages.size
      # 获取事件页
      page = $data_troops[@troop_id].pages[index]
      # 本页的范围是 [回合] 的情况下
      if page.span == 1
        # 设置已经执行标志
        $game_temp.battle_event_flags[index] = false
      end
    end
    # 设置角色为非选择状态
    @actor_index = -1
    @active_battler = nil
    # 有效化同伴指令窗口
    @party_command_window.active = false
    @party_command_window.visible = false
    # 无效化角色指令窗口
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # 设置主回合标志
    $game_temp.battle_main_phase = true
    # 生成敌人行动
    for enemy in $game_troop.enemies
      enemy.make_action
    end
    # 生成行动顺序
    make_action_orders
    # 移动到步骤 1
    @phase4_step = 1
  end
  #--------------------------------------------------------------------------
  # ● 生成行动循序
  #--------------------------------------------------------------------------
  def make_action_orders
    # 初始化序列 @action_battlers
    @action_battlers = []
    # 添加敌人到 @action_battlers 序列
    for enemy in $game_troop.enemies
      @action_battlers.push(enemy)
    end
    # 添加角色到 @action_battlers 序列
    for actor in $game_party.actors
      @action_battlers.push(actor)
    end
    # 确定全体的行动速度
    for battler in @action_battlers
      battler.make_action_speed
    end
    # 按照行动速度从大到小排列
    @action_battlers.sort! {|a,b|
      b.current_action.speed - a.current_action.speed }
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合)
  #--------------------------------------------------------------------------
  def update_phase4
    case @phase4_step
    when 1
      update_phase4_step1
    when 2
      update_phase4_step2
    when 3
      update_phase4_step3
    when 4
      update_phase4_step4
    when 5
      update_phase4_step5
    when 6
      update_phase4_step6
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 1 : 准备行动)
  #--------------------------------------------------------------------------
  def update_phase4_step1
    # 隐藏帮助窗口
    @help_window.visible = false
    # 判定胜败
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
    # 强制行动的战斗者不存在的情况下
    if $game_temp.forcing_battler == nil
      # 设置战斗事件
      setup_battle_event
      # 执行战斗事件中的情况下
      if $game_system.battle_interpreter.running?
        return
      end
    end
    # 强制行动的战斗者存在的情况下
    if $game_temp.forcing_battler != nil
      # 在头部添加后移动
      @action_battlers.delete($game_temp.forcing_battler)
      @action_battlers.unshift($game_temp.forcing_battler)
    end
    # 未行动的战斗者不存在的情况下 (全员已经行动)
    if @action_battlers.size == 0
      # 开始同伴命令回合
      start_phase2
      return
    end
    # 初始化动画 ID 和公共事件 ID
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    # 未行动的战斗者移动到序列的头部
    @active_battler = @action_battlers.shift
    # 如果已经在战斗之外的情况下
    if @active_battler.index == nil
      return
    end
    # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    # 自然解除状态
    @active_battler.remove_states_auto
    # 刷新状态窗口
    @status_window.refresh
    @aaaa = 0
    #########菜刀王到此一游############
    for a in $game_party.actors
      @aaaa += a.hp
    end
    #########菜刀王到此一游############
    # 移至步骤 2
    @phase4_step = 2
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 2 : 开始行动)
  #--------------------------------------------------------------------------
  def update_phase4_step2
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 设置行动为攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 限制为 [不能行动] 的情况下
      if @active_battler.restriction == 4
        # 清除行动强制对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 清除对像战斗者
    @target_battlers = []
    # 行动种类分支
    case @active_battler.current_action.kind
    when 0  # 基本
      make_basic_action_result
    when 1  # 特技
      make_skill_action_result
    when 2  # 物品
      make_item_action_result
    end
    # 移至步骤 3
    if @phase4_step == 2
      @phase4_step = 3
    end
    # 公共事件 ID 有效的情况下
    if @common_event_id > 0
      # 设置事件
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
      @abcdef = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成基本行动结果
  #--------------------------------------------------------------------------
  def make_basic_action_result
    # 攻击的情况下
    if @active_battler.current_action.basic == 0
      # 设置攻击 ID
      @animation1_id = @active_battler.animation1_id
      @animation2_id = @active_battler.animation2_id
      # 行动方的战斗者是敌人的情况下
      if @active_battler.is_a?(Game_Enemy)
        if @active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      # 行动方的战斗者是角色的情况下
      if @active_battler.is_a?(Game_Actor)
        if @active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      # 设置对像方的战斗者序列
      @target_battlers = [target]
      # 应用通常攻击效果
      for target in @target_battlers
        target.attack_effect(@active_battler)
      end
      return
    end
    # 防御的情况下
    if @active_battler.current_action.basic == 1
      # 帮助窗口显示"防御"
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    # 逃跑的情况下
    if @active_battler.is_a?(Game_Enemy) and
       @active_battler.current_action.basic == 2
      #  帮助窗口显示"逃跑"
      @help_window.set_text("逃跑", 1)
      # 逃跑
      @active_battler.escape
      return
    end
    # 什么也不做的情况下
    if @active_battler.current_action.basic == 3
      # 清除强制行动对像的战斗者
      $game_temp.forcing_battler = nil
      # 移至步骤 1
      @phase4_step = 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置物品或特技对像方的战斗者
  #     scope : 特技或者是物品的范围
  #--------------------------------------------------------------------------
  def set_target_battlers(scope)
    # 行动方的战斗者是敌人的情况下
    if @active_battler.is_a?(Game_Enemy)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 2  # 敌全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 4  # 我方全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        enemy = $game_troop.enemies[index]
        if enemy != nil and enemy.hp0?
          @target_battlers.push(enemy)
        end
      when 6  # 我方全体 (HP 0)
        for enemy in $game_troop.enemies
          if enemy != nil and enemy.hp0?
            @target_battlers.push(enemy)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
    # 行动方的战斗者是角色的情况下
    if @active_battler.is_a?(Game_Actor)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 2  # 敌全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 4  # 我方全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        actor = $game_party.actors[index]
        if actor != nil and actor.hp0?
          @target_battlers.push(actor)
        end
      when 6  # 我方全体 (HP 0)
        for actor in $game_party.actors
          if actor != nil and actor.hp0?
            @target_battlers.push(actor)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成特技行动结果
  #--------------------------------------------------------------------------
  def make_skill_action_result
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 因为 SP 耗尽而无法使用的情况下
      unless @active_battler.skill_can_use?(@skill.id)
        # 清除强制行动对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
    # 刷新状态窗口
    @status_window.refresh
    # 在帮助窗口显示特技名
    @help_window.set_text(@skill.name, 1)
    # 设置动画 ID
    @animation1_id = @skill.animation1_id
    @animation2_id = @skill.animation2_id
    # 设置公共事件 ID
    @common_event_id = @skill.common_event_id
    # 设置对像侧战斗者
    set_target_battlers(@skill.scope)
    # 应用特技效果
    #########菜刀王到此一游############
    bbbb = 0
    for target in @target_battlers
      target.skill_effect(@active_battler, @skill)
      bbbb += target.hp
    end
    if @skill.id == 7
      $game_variables[1] = @aaaa - bbbb
    end
    #########菜刀王到此一游############
  end
  #--------------------------------------------------------------------------
  # ● 生成物品行动结果
  #--------------------------------------------------------------------------
  def make_item_action_result
    # 获取物品
    @item = $data_items[@active_battler.current_action.item_id]
    # 因为物品耗尽而无法使用的情况下
    unless $game_party.item_can_use?(@item.id)
      # 移至步骤 1
      @phase4_step = 1
      return
    end
    # 消耗品的情况下
    if @item.consumable
      # 使用的物品减 1
      $game_party.lose_item(@item.id, 1)
    end
    # 在帮助窗口显示物品名
    @help_window.set_text(@item.name, 1)
    # 设置动画 ID
    @animation1_id = @item.animation1_id
    @animation2_id = @item.animation2_id
    # 设置公共事件 ID
    @common_event_id = @item.common_event_id
    # 确定对像
    index = @active_battler.current_action.target_index
    target = $game_party.smooth_target_actor(index)
    # 设置对像侧战斗者
    set_target_battlers(@item.scope)
    # 应用物品效果
    for target in @target_battlers
      target.item_effect(@item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    # 对像方动画
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
    # 限制动画长度、最低 8 帧
    @wait_count = 8
    # 移至步骤 5
    @phase4_step = 5
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  #--------------------------------------------------------------------------
  def update_phase4_step5
    # 隐藏帮助窗口
    @help_window.visible = false
    # 刷新状态窗口
    @status_window.refresh
    # 显示伤害
    for target in @target_battlers
      if target.damage != nil
        target.damage_pop = true
      end
    end
    # 移至步骤 6
    @phase4_step = 6
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 6 : 刷新)
  #--------------------------------------------------------------------------
  def update_phase4_step6
    # 清除强制行动对像的战斗者
    $game_temp.forcing_battler = nil
    @abcdef = false
    # 移至步骤 1
    @phase4_step = 1
  end
end



我的scene_battle4经过了大量修改,LS的大大能不能具体写一下改了哪里?感激不尽.
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39163
在线时间
5737 小时
注册时间
2006-11-10
帖子
6638
4
发表于 2009-2-16 23:14:17 | 只看该作者
“菜刀王到此一游”那里-。-,话说你都引用出来了
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-17 15:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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