设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1760|回复: 2
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-1-18
帖子
16
跳转到指定楼层
1
发表于 2014-5-11 22:43:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RTAB打起来节奏实在很快,最近想加些长动画的被动技能来提供一点中断的机会,同时令角色的特点更强。
首先被动技能先在RTAB初始化的地方设置好——
RUBY 代码复制
  1. #-----------------被动技能设定---------------------#
  2.     #初始化被动技能
  3.     @passive_skill_used = []
  4.     @passive_skill = []
  5.     for i in 1...$data_actors.size
  6.       a=[]
  7.       @passive_skill.push(a)
  8.     end
  9.     @passive_skill[0]=[4]
  10.     @passive_skill[1]=[]
  11.     @passive_skill[2]=[6]
  12.     @passive_skill[3]=[5]
  13.     @passive_skill[4]=[]
  14.     @passive_skill[5]=[]
  15.     #--------------------------------------------------#

然后在update_phase0后面增加一个update_phase6,再将RTAB里面battler.current_action.kind = 1后的内容弄一部分相似的给battler.current_action.kind = 3用,以区分主动技能和被动技能的计算公式
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定義 6)
  3. #------------------------------------------------------------------------------
  4. #  平时被动触发技能
  5. #==============================================================================
  6. class Scene_Battle
  7.  
  8.   #--------------------------------------------------------------------------
  9.   # ● 被动技能判断開始
  10.   #--------------------------------------------------------------------------
  11.   def update_phase6
  12.      for battler in $game_party.actors
  13.         unless @action_battlers.include?(battler) and @command.include?(battler)
  14.           if  battler.hp>0
  15.             #获取角色可以发动的被动技能id
  16.             for i in @passive_skill[battler.id-1]
  17.               skill = $data_skills[i]
  18.               if rand(10000)<skill.hit and not @passive_skill_used.include?(i)
  19.               battler.current_action.kind = 3
  20.               battler.current_action.skill_id = i
  21.               action_start(battler)
  22.               #一旦发动一次就不发动
  23.               @passive_skill_used.push(i)
  24.               end
  25.             end
  26.           end  
  27.         end  
  28.      end     
  29.  
  30.  
  31.  
  32.   end     
  33.  
  34. end

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

求大神指导下有无其他更好的写法,改进一下效率之类的。

Lv1.梦旅人

梦石
0
星屑
240
在线时间
1 小时
注册时间
2014-5-9
帖子
2
2
发表于 2014-5-12 11:38:20 | 只看该作者
说的不错!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
83 小时
注册时间
2008-4-19
帖子
420
3
发表于 2014-5-16 22:29:14 | 只看该作者
给LZ的想法点个赞。顺便如果你想要被动技能每隔固定时间发动一次的话直接在AT计算里做一个变量倒计时,倒计时满直接发动@phase=6啥的。嗯嗯
好吧这是II让我贴的- -
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 10:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表