Project1

标题: 有关随机连击问题 [打印本页]

作者: 3106345123    时间: 2013-11-18 09:02
标题: 有关随机连击问题
本帖最后由 3106345123 于 2013-11-23 07:55 编辑

  默认系统的连击是对一个人,我想实现随机连击
例如:设定连击3次,有可能是打一人3次或打两人共3次等。
即:如设定连击3次,先随机打1人,再随机打1人(可重复),再.........直到打完次数为止。
注:最好默认系统的连击能保留。
作者: tan12345    时间: 2013-11-18 12:30
可以设定技能对象为:随机一个敌人。
作者: 3106345123    时间: 2013-11-19 12:49
tan12345 发表于 2013-11-18 12:30
可以设定技能对象为:随机一个敌人。

谢谢,看来我对数据库还不够了解
不过,能超过4次吗?
作者: dukesward    时间: 2013-11-19 14:58
技能的攻击目标数定义在 RPG::UsableItem 中的 number_of_targets, 实际使用的时候在 Game_Action 145行 make_targets 中根据目标属性生成目标数组,当目标是敌人时在 176行 targets_for_opponents 方法中生成敌人目标。在177行判定是否随机目标,如果是随机目标则 Array.new(item.number_of_targets) { opponents_unit.random_target } 该行生成随机目标数组,在该数组中 item.number_of_targets 呼出技能对应的目标数。如果希望id为n的技能目标数大于4(例如5),可以在这里添加判断语句 item.number_of_targets = 5 if item.id == n,那么id为n的技能就可以随机攻击5个目标,以此类推。
作者: 3106345123    时间: 2013-11-20 13:06
本帖最后由 3106345123 于 2013-11-20 13:16 编辑
dukesward 发表于 2013-11-19 14:58
技能的攻击目标数定义在 RPG::UsableItem 中的 number_of_targets, 实际使用的时候在 Game_Action 145行 m ...


可能是我智商太低
加了就报错
(脚本智商只停留在常量+变量上
作者: dukesward    时间: 2013-11-21 01:17
看来number_of_targets只能调用不能赋值,你把这段脚本插入到main前试试

RUBY 代码复制
  1. =begin
  2. ===============================================================================
  3. 使用:在SET_SKILL数组中添加需要设置目标数的技能id,在SET中添加对应的目标数。
  4.  
  5. 例如:
  6. SET_SKILL = [5, 6, 7]
  7. SET_TARGET = [1, 2, 3]
  8.  
  9. 设置5号技能目标数1, 6号技能目标数2, 7号技能目标数3。
  10. ===============================================================================
  11. =end
  12.  
  13. SET_SKILL = [5, 6, 7]
  14. SET_TARGET = [2, 2, 3]
  15.  
  16. class Game_Action
  17.   #--------------------------------------------------------------------------
  18.   # ● 目标为敌人
  19.   #--------------------------------------------------------------------------
  20.   def targets_for_opponents
  21.     if item.for_random?
  22.       SET_SKILL.size.times do |i|
  23.         if item.id == SET_SKILL[i]
  24.           @n_target = SET_TARGET[i]
  25.         end
  26.       end
  27.       Array.new(@n_target ? @n_target : item.number_of_targets) { opponents_unit.random_target }
  28.     elsif item.for_one?
  29.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  30.       if @target_index < 0
  31.         [opponents_unit.random_target] * num
  32.       else
  33.         [opponents_unit.smooth_target(@target_index)] * num
  34.       end
  35.     else
  36.       opponents_unit.alive_members
  37.     end
  38.   end
  39. end

作者: 3106345123    时间: 2013-11-21 13:18
dukesward 发表于 2013-11-21 01:17
看来number_of_targets只能调用不能赋值,你把这段脚本插入到main前试试

=begin

谢谢,可行




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