查看: 2281|回复: 2

[讨论] RTAB实现被动技能触发的方法

[复制链接]
梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-1-18
回帖
11
发表于 2014-5-11 22:43:19 | 显示全部楼层 |阅读模式

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

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

×
RTAB打起来节奏实在很快,最近想加些长动画的被动技能来提供一点中断的机会,同时令角色的特点更强。
首先被动技能先在RTAB初始化的地方设置好——
[pre lang="ruby" line="1"]    #-----------------被动技能设定---------------------#
    #初始化被动技能
    @passive_skill_used = []
    @passive_skill = []
    for i in 1...$data_actors.size
      a=[]
      @passive_skill.push(a)
    end
    @passive_skill[0]=[4]
    @passive_skill[1]=[]
    @passive_skill[2]=[6]
    @passive_skill[3]=[5]
    @passive_skill[4]=[]
    @passive_skill[5]=[]
    #--------------------------------------------------#
[/pre]
然后在update_phase0后面增加一个update_phase6,再将RTAB里面battler.current_action.kind = 1后的内容弄一部分相似的给battler.current_action.kind = 3用,以区分主动技能和被动技能的计算公式
[pre lang="ruby" line="1"]#==============================================================================
# ■ Scene_Battle (分割定義 6)
#------------------------------------------------------------------------------
#  平时被动触发技能
#==============================================================================
class Scene_Battle

  #--------------------------------------------------------------------------
  # ● 被动技能判断開始
  #--------------------------------------------------------------------------
  def update_phase6
     for battler in $game_party.actors
        unless @action_battlers.include?(battler) and @command.include?(battler)
          if  battler.hp>0
            #获取角色可以发动的被动技能id
            for i in @passive_skill[battler.id-1]
              skill = $data_skills
              if rand(10000)<skill.hit and not @passive_skill_used.include?(i)
              battler.current_action.kind = 3
              battler.current_action.skill_id = i
              action_start(battler)
              #一旦发动一次就不发动
              @passive_skill_used.push(i)
              end
            end
          end  
        end  
     end     
         


  end     
     
end     [/pre]
这时,可以保证在多钟设定下的RTAB也不会导致同时导入技能,被动技能也完全和AT槽独立开来。
另外在update_phase3下面的各个按下决定键的部分套上
unless @action_battlers.include?(@active_actor)
来阻止被动技能待发时加入其他行动出错。(RTAB写了一大长串这么多,还是几乎没有自我排错的能力啊)

求大神指导下有无其他更好的写法,改进一下效率之类的。
梦石
0
星屑
240
在线时间
1 小时
注册时间
2014-5-9
回帖
2
发表于 2014-5-12 11:38:20 | 显示全部楼层
说的不错!
回复

使用道具 举报

梦石
0
星屑
59
在线时间
84 小时
注册时间
2008-4-19
回帖
403
发表于 2014-5-16 22:29:14 | 显示全部楼层
给LZ的想法点个赞。顺便如果你想要被动技能每隔固定时间发动一次的话直接在AT计算里做一个变量倒计时,倒计时满直接发动@phase=6啥的。嗯嗯
好吧这是II让我贴的- -
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部