查看: 2675|回复: 6

[已经解决] 有关随机连击问题

[复制链接]
梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
发表于 2013-11-18 09:02:42 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 3106345123 于 2013-11-23 07:55 编辑

  默认系统的连击是对一个人,我想实现随机连击。
例如:设定连击3次,有可能是打一人3次或打两人共3次等。
即:如设定连击3次,先随机打1人,再随机打1人(可重复),再.........直到打完次数为止。
注:最好默认系统的连击能保留。

点评

试试把技能对象设定为三个随机敌人试试吧。  发表于 2013-11-18 17:22
废弃
梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2013-11-18 12:30:31 | 显示全部楼层
可以设定技能对象为:随机一个敌人。

点评

我的意思是:如设定连击3次,先随机打1人,再随机打1人(可重复),再.........直到打完次数为止。  发表于 2013-11-18 13:21

评分

参与人数 1星屑 +1 收起 理由
3106345123 + 1 还是要感谢你

查看全部评分

回复

使用道具 举报

梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
 楼主| 发表于 2013-11-19 12:49:15 | 显示全部楼层
tan12345 发表于 2013-11-18 12:30
可以设定技能对象为:随机一个敌人。

谢谢,看来我对数据库还不够了解,
不过,能超过4次吗?
废弃
回复

使用道具 举报

巫女会长

梦石
0
星屑
60
在线时间
1028 小时
注册时间
2009-10-24
回帖
3425

贵宾

发表于 2013-11-19 14:58:11 | 显示全部楼层
技能的攻击目标数定义在 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个目标,以此类推。
回复

使用道具 举报

梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
 楼主| 发表于 2013-11-20 13:06:37 | 显示全部楼层
本帖最后由 3106345123 于 2013-11-20 13:16 编辑
dukesward 发表于 2013-11-19 14:58
技能的攻击目标数定义在 RPG::UsableItem 中的 number_of_targets, 实际使用的时候在 Game_Action 145行 m ...


可能是我智商太低
加了就报错
(脚本智商只停留在常量+变量上 )
废弃
回复

使用道具 举报

巫女会长

梦石
0
星屑
60
在线时间
1028 小时
注册时间
2009-10-24
回帖
3425

贵宾

发表于 2013-11-21 01:17:54 | 显示全部楼层
看来number_of_targets只能调用不能赋值,你把这段脚本插入到main前试试

[pre lang="ruby" line="1"]=begin
===============================================================================
使用:在SET_SKILL数组中添加需要设置目标数的技能id,在SET中添加对应的目标数。

例如:
SET_SKILL = [5, 6, 7]
SET_TARGET = [1, 2, 3]

设置5号技能目标数1, 6号技能目标数2, 7号技能目标数3。
===============================================================================
=end

SET_SKILL = [5, 6, 7]
SET_TARGET = [2, 2, 3]

class Game_Action
  #--------------------------------------------------------------------------
  # ● 目标为敌人
  #--------------------------------------------------------------------------
  def targets_for_opponents
    if item.for_random?
      SET_SKILL.size.times do |i|
        if item.id == SET_SKILL
          @n_target = SET_TARGET
        end
      end
      Array.new(@n_target ? @n_target : item.number_of_targets) { opponents_unit.random_target }
    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]

评分

参与人数 2星屑 +5 梦石 +1 收起 理由
Sion + 1 认可答案
3106345123 + 5 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
 楼主| 发表于 2013-11-21 13:18:15 | 显示全部楼层
dukesward 发表于 2013-11-21 01:17
看来number_of_targets只能调用不能赋值,你把这段脚本插入到main前试试

=begin

谢谢,可行
废弃
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部