Project1

标题: 【VA】【教程】被动技能,自主决定启用/停用。 [打印本页]

作者: 放开那个触手!    时间: 2012-7-8 19:27
标题: 【VA】【教程】被动技能,自主决定启用/停用。
本帖最后由 Sion 于 2013-12-17 15:41 编辑

啊啊……这个帖子要实现的就是一个“可以自己决定启用或者关闭的被动技能”。
例如主角学了这么一个【魔力护壁】被动技能,内容是当HP小于HP最大值的50%时,角色的防御和魔防增加到200%,MP每回合下降5%。这个被动技能可以在自己需要的时候随时启用/关闭。关闭的时候被动技能是不生效的。

下面来说说这个想法的实现方法吧。
首先这么设定一个状态:魔力值再生-5%,防御和魔防各200%。


然后我们这么改脚本……
在脚本Game_BattlerBase里面有这么一段

  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     state_resist_set.each {|state_id| erase_state(state_id) }
  6.     @hp = [[@hp, mhp].min, 0].max
  7.     @mp = [[@mp, mmp].min, 0].max
  8.     @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  9.   end
复制代码
@hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
这句的意思就是 当HP等于0 就附加死亡状态 当HP不等于0了 就消除死亡状态
于是你就仿照这个在前面加一句
@hp <= @mhp * 0.5 ? add_state(26) : remove_state(26)
意思是HP小于最大HP的50%附加26号状态,否则消去26号状态的效果,再加以开关条件控制。
修改后是这样的

  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     state_resist_set.each {|state_id| erase_state(state_id) }
  6.     @hp = [[@hp, mhp].min, 0].max
  7.     @mp = [[@mp, mmp].min, 0].max
  8.     if $game_switches[90] == true
  9.       @hp <= @mhp * 0.5 ? add_state(26) : remove_state(26)
  10.     end
  11.     @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  12.   end
复制代码
嗯,然后设定开关90号开关的公共事件。

(漏了一句……关闭被动技能时消去26号状态诶……)
最后把公共事件关联到技能上。

这样,可以自主启用/关闭的被动技能就做好了,是不是很简单呢。
作者: z2z4    时间: 2012-7-9 15:33
这个被动技能 必须要在战斗中开启         我说的被动技能 在平时自动会开启  如果附在某些装备上 可以自由 附上 取消 这个技能
作者: 放开那个触手!    时间: 2012-7-9 18:11
啊啊…… 不是这样的。
只要把技能设置成【随时可用】,那这个技能就可以随时启用/停用。战斗中只是单纯地生效而已,并不需要再反复开启了。
装备的设置里,本来就可以设置附加某技能,不过貌似要在遗忘技能那里加个分歧,如果遗忘的是被动技能则先关闭再遗忘。
作者: z950828    时间: 2012-7-9 18:47
有没有能纯事件解决的办法,某脚本盲路过。
作者: z2z4    时间: 2012-7-10 07:32
我今天做了个 纯事件  也可以做这样的 被动状态 也是 随时开启 就是没法 做 到多少HP 触发此技能


‘‘──z2z4于2012-7-10 07:33补充以下内容:

话说 你这脚本 貌似  只能做一个被动技能?  我昨天研究了 10多个 被动技能 用HP触发 看你这个脚本  应该做不起 几个技能
’’
作者: 放开那个触手!    时间: 2012-7-10 08:42
本帖最后由 放开那个触手! 于 2012-7-10 08:48 编辑
z2z4 发表于 2012-7-10 07:32
话说 你这脚本 貌似  只能做一个被动技能?  我昨天研究了 10多个 被动技能 用HP触发 看你这个脚本  应该做不起 几个技能


不不、不是这样的。当然不止做一个被动技能。

  1. if $game_switches[90] == true #这里是被动技能所关联的开关
  2.       @hp <= @mhp * 0.5 ? add_state(26) : remove_state(26) #这里是被动技能的条件和关联的状态
  3. end
复制代码
你可以多多添加的,每添加一个技能就增加一小段像上面的。你乐意的话,想添加上百个被动技能都可以。
或者我举些例子吧,你可以以此为参照多多开动脑筋喔。

  1. @hp <= @mhp * 0.5 #这是HP在50%以下触发。
  2. @mp == 0 #这是MP为0触发。
  3. @hp <= @mp #这是HP数值低于MP就触发。
  4. @hp < 500 #这是HP值低于500就触发。
  5. @tp == 100 #这是TP值攒满就触发。
复制代码
这个脚本很简单,但是有滋味的啦。


作者: 浮云桑    时间: 2012-7-10 09:31
还想着可能是三国杀那种魏国卖血流的技能
不过看来不像啊- -触发时机不对诶
作者: 迷糊的安安    时间: 2012-7-10 16:37
漏了角色判定吧……
这样判定的结果就是只要开关一打开,触发条件就对全体队友生效……
作者: z2z4    时间: 2012-7-11 07:05
@hp <= @mhp * 0.5 #这是HP在50%以下触发。
@mp == 0 #这是MP为0触发。
@hp <= @mp #这是HP数值低于MP就触发。
@hp < 500 #这是HP值低于500就触发。
@tp == 100 #这是TP值攒满就触发。

这个写在那个位置的
作者: z2z4    时间: 2012-7-11 07:11
你这个公共设置 只能设置一个技能  我是1个角色  学4个技能 同时只能开启一个  所以你这个公共设置 还是不行
作者: 精灵使者    时间: 2012-7-11 19:50
其实可以用状态法来指定使用对象……
作者: 放开那个触手!    时间: 2012-7-11 21:51
z2z4 发表于 2012-7-11 07:11
你这个公共设置 只能设置一个技能  我是1个角色  学4个技能 同时只能开启一个  所以你这个公共设置 还是不 ...

  1. if $game_switches[90] == true #第90号开关
  2.       @hp <= @mhp * 0.5 ? add_state(26) : remove_state(26) #关联26号状态,发动条件为HP低于一半
  3. end
  4. if $game_switches[91] == true #第91号开关
  5.       @mp <= @mmp * 0.5 ? add_state(27) : remove_state(27) #关联27号状态,发动条件为MP低于一半
  6. end
  7. if $game_switches[92] == true #第92号开关
  8.       @tp == 100 ? add_state(28) : remove_state(28) #关联28号状态,发动条件为TP满100
  9. end
  10. if $game_switches[93] == true #第93号开关
  11.       @hp <= @mp ? add_state(29) : remove_state(29) #关联29号状态,发动条件为当前HP低于当前MP
  12. end
复制代码
然后你在公共事件里设置一下
打开开关90就自动关闭91 92 93
打开开关91就自动关闭90 92 93
打开开关92就自动关闭90 91 93
打开开关93就自动关闭90 91 92
就可以了喔……

随随便便说不行的话……很打击人的……
作者: taoboy    时间: 2012-7-12 11:07
感谢发布
作者: z2z4    时间: 2012-7-12 11:15
    if $game_switches[61] == true   #这里是被动技能所关联的开关
      @hp <= @mhp * 0.9 ? add_state(40) : remove_state(40) #这里是被动技能的条件和关联的状态

为什么  我这样设置 会有错误    61号开关  40是状态
作者: z2z4    时间: 2012-7-13 06:57
晕死 有 end    就是 技能开启没问题   在点下技能 脚本就出错了
作者: z2z4    时间: 2012-7-13 09:25

作者: z2z4    时间: 2012-7-13 09:38

作者: 紫苍焰    时间: 2014-1-7 09:08
放开那个触手! 发表于 2012-7-10 08:42
不不、不是这样的。当然不止做一个被动技能。你可以多多添加的,每添加一个技能就增加一小段像上面的。你 ...

这样说来……
复苏之风的效果也可以轻易实现……
不过限定职业的话是不是要用脚本判断职业ID ?
那个的话,要怎么写……
作者: a1016489334    时间: 2014-1-7 22:21
      好厉害,学习了.      
作者: zshuser    时间: 2014-1-26 00:26
被动技能这个东西……可以设置成一个并行的事件吧……然后可以当成光环来用,也可以让某某人一个人用……再设置使用这个技能(从技能栏里面点选)的时候再次触发这个事件,然后可以再更改所拥有的被动……这样就大功告成了吧?
作者: cryhades    时间: 2014-2-2 14:37
我喜欢这个,哈哈,感谢分享
作者: tondro    时间: 2014-10-19 23:26

  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    state_resist_set.each {|state_id| erase_state(state_id) }
    @hp = [[@hp, mhp].min, 0].max
    @mp = [[@mp, mmp].min, 0].max
    if $game_switches[90] == true
      @hp <= mhp * 0.5 ? add_state(26) : remove_state(26)
    end
    @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  end



mmp和mhp 不需要 @
作者: 火烧兔子    时间: 2014-10-21 22:38
又是一个很好的教程
作者: vince3725    时间: 2014-11-13 21:35
有一个问题,我要让角色攻击后被动技能自动触发该怎么设置,不需要点选~
作者: brackwind    时间: 2015-2-24 12:38
請問這方法能否應用在角色頭像隨HP改變
例如HP降到30%以下就換成表情痛苦的頭像
如果可以,要在哪個腳本裡改?
作者: 66lcf1986    时间: 2015-3-2 14:44
很好的教程,就是不知道,被动技能如果是几回合都要在角色身上显示这个状态图片,怎么设置,不必说,加物理和魔法防御三回合,技能图片为角色脚下光环图片,怎么在出发后持续三回合,再消失。
这个具体怎么设置,望大大们说一下,谢谢。
作者: 66lcf1986    时间: 2015-3-2 14:47
对被动技能设置和触发,脚本的编写等,很有帮助的,分享!~
作者: chengzhuo5    时间: 2015-4-4 00:04
请问当角色1的hp小于10%,然后全体角色开启某状态改怎么做?
作者: duanyiyuying    时间: 2016-3-25 06:48
哎,不知道为什么老师不成功,不是报错就是压根没效果
作者: 惊梦狸    时间: 2017-5-2 13:08
完全搞不懂……试试去
作者: 7112    时间: 2019-6-3 20:02
一开启就对所有人生效,能否...




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