Project1

标题: 如果让随机攻击最多对每个敌人造成一次伤害。 [打印本页]

作者: rilongshen    时间: 2014-6-10 11:31
标题: 如果让随机攻击最多对每个敌人造成一次伤害。
比如说,技能设定为随机攻击三个敌人,在敌人只有一个或两个时,如何让它只攻击每个敌人一次?
作者: taroxd    时间: 2014-6-10 12:37
本帖最后由 taroxd 于 2014-6-10 12:54 编辑

大概是在Game_Action中选择目标时加个uniq就可以了

我现在没环境,无法给出脚本。@moy 来帮帮忙吧? 应该是没什么难度的
作者: moy    时间: 2014-6-10 13:10
本帖最后由 moy 于 2014-6-10 13:18 编辑

[pre lang="ruby" line="1"]
class Game_Action
  #--------------------------------------------------------------------------
  # ● 目标为敌人
  #--------------------------------------------------------------------------
  def targets_for_opponents
    if item.for_random?
      #--剔除重复目标--
      targets = Array.new(item.number_of_targets) { opponents_unit.random_target }
      targets.uniq
      #--------------
    elsif item.for_one?
      num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
      if @target_index < 0
        [opponents_unit.random_target] * num
      else
        [opponents_unit.smooth_target(@target_index)] * num
      end
    else
      opponents_unit.alive_members
    end
  end
end
[/pre]
测了下没啥问题,如果你用了别的脚本导致冲突,就直接找到
  1. Array.new(item.number_of_targets) { opponents_unit.random_target }
复制代码
这句,把他改成我框起来的那两句。正常使用就直接丢外挂里吧。
作者: taroxd    时间: 2014-6-10 13:18
moy 发表于 2014-6-10 13:10
#--------------------------------------------------------------------------
  # ● 目标为敌人
  #- ...

谢环境!不过我觉得,也许这样会更加科学一点?(不浪费)

[pre lang="ruby" line="1"]
class Game_Action
  #--------------------------------------------------------------------------
  # ● 目标为敌人
  #--------------------------------------------------------------------------
  def targets_for_opponents
    if item.for_random?
      opponents_unit.members.sample(item.number_of_targets)
    elsif item.for_one?
      num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
      if @target_index < 0
        [opponents_unit.random_target] * num
      else
        [opponents_unit.smooth_target(@target_index)] * num
      end
    else
      opponents_unit.alive_members
    end
  end
end
[/pre]




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