Project1

标题: 怎么暂时遗忘掉角色自带的技能 [打印本页]

作者: hijl1990    时间: 2016-10-22 17:19
标题: 怎么暂时遗忘掉角色自带的技能
想要在战斗中某状态时,临时忘掉角色自带的技能。
在战斗结束后再恢复,请问需要怎么做?
作者: RaidenInfinity    时间: 2016-10-22 17:50
RUBY 代码复制
  1. class Window_BattleSkill < Window_SkillList
  2.  
  3. alias :bs_include? :include?
  4.   def include?(item)
  5.     return false if @actor.state?(状态ID) && [技能ID].include?(item.id)
  6.     #更改状态ID,如果技能ID有复数个,比如技能15和17,那就放[15,17]
  7.     bs_include?(item)
  8.   end  
  9.  
  10. end


我不知道你有没有使用其他影响界面的脚本,所以我基于默认脚本和字面上的要求来写。
这段脚本的原理是,如果角色中了某状态,特定技能将不会出现在战斗技能栏里。(隐蔽了,可以视为忘却)
但是如果状态恢复了,隐蔽将会解除。所以如果要持续整场战斗,请把状态设置成永不过期,并于战斗结束后自动解除。
作者: RaidenInfinity    时间: 2016-10-22 18:34
本帖最后由 RaidenInfinity 于 2016-10-22 20:06 编辑

RUBY 代码复制
  1. class Window_BattleSkill < Window_SkillList
  2.  
  3.      alias :bs_include? :include?
  4.       def include?(item)
  5.         return false if hide_skill_by_state?(item)
  6.         ,如果技能ID有复数个,比如技能1517,那就放[15,17]
  7.         bs_include?(item)
  8.       end  
  9.  
  10.           def hide_skill_by_state?(item)
  11.                 return false if !@actor.state?(状态ID) #更改状态ID
  12.                 arr = []
  13.                 case @actor.id
  14.                         when 1; arr = [1,2,3,4] #改动这个部分的方法请参考下面的指示
  15.                         when 2; arr = [5,6,7,8]
  16.                         when 3; arr = [9,10,11,12]
  17.                         when 4; arr = [13,14,15,16]
  18.                 end
  19.                 return arr.include?(item.id)
  20.     end
  21.  
  22. end
  23.  
  24.         #when 1 的 1 是指 角色ID, []里面的是技能ID,以逗号相隔
  25.         #所以如果你有10个角色,要有10行,when 1 到 when 10
  26.         #假设角色 8 要隐蔽的技能有 10号,13号,17号
  27.         #那么就是 when 8; arr = [10,13,17]
  28.         #以此类推


加了对应不同角色的判定。另外建议一次过列明要求和细节,问题才能更快解决。




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