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 编辑

RUBY 代码复制
  1. class Game_Action
  2.   #--------------------------------------------------------------------------
  3.   # ● 目标为敌人
  4.   #--------------------------------------------------------------------------
  5.   def targets_for_opponents
  6.     if item.for_random?
  7.       #--剔除重复目标--
  8.       targets = Array.new(item.number_of_targets) { opponents_unit.random_target }
  9.       targets.uniq
  10.       #--------------
  11.     elsif item.for_one?
  12.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  13.       if @target_index < 0
  14.         [opponents_unit.random_target] * num
  15.       else
  16.         [opponents_unit.smooth_target(@target_index)] * num
  17.       end
  18.     else
  19.       opponents_unit.alive_members
  20.     end
  21.   end
  22. end

测了下没啥问题,如果你用了别的脚本导致冲突,就直接找到
  1. Array.new(item.number_of_targets) { opponents_unit.random_target }
复制代码
这句,把他改成我框起来的那两句。正常使用就直接丢外挂里吧。
作者: taroxd    时间: 2014-6-10 13:18
moy 发表于 2014-6-10 13:10
#--------------------------------------------------------------------------
  # ● 目标为敌人
  #- ...

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

RUBY 代码复制
  1. class Game_Action
  2.   #--------------------------------------------------------------------------
  3.   # ● 目标为敌人
  4.   #--------------------------------------------------------------------------
  5.   def targets_for_opponents
  6.     if item.for_random?
  7.       opponents_unit.members.sample(item.number_of_targets)
  8.     elsif item.for_one?
  9.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  10.       if @target_index < 0
  11.         [opponents_unit.random_target] * num
  12.       else
  13.         [opponents_unit.smooth_target(@target_index)] * num
  14.       end
  15.     else
  16.       opponents_unit.alive_members
  17.     end
  18.   end
  19. end





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