Project1

标题: 关于技能开关和被动技能状态 [打印本页]

作者: dorx2010    时间: 2015-9-16 18:25
标题: 关于技能开关和被动技能状态
本帖最后由 dorx2010 于 2015-9-19 22:26 编辑

大大们,,我用了@Silentever 的"技能开关[选择性限制/COST/层积等级]"和 @taroxd 的"被动技能状态",,
关闭了技能,但动技能的效果还在T^T 有空能帮我看看吗??
Silentever的技能开关: https://rpg.blue/forum.php?mo ... D368%26typeid%3D368
taroxd 的被动技能状态: http://taroxd.github.io/rgss/%E8 ... 8%83%BD%E7%8A%B6%E6 %80%81.html



上传了付件供大大下载

Project3.rar

1.43 MB, 下载次数: 87

大大下


作者: Silentever    时间: 2015-9-16 21:02
本帖最后由 Silentever 于 2015-9-16 22:12 编辑

  1. class Game_Actor < Game_Battler
  2.   def passive_objects
  3.     skills.reject {|skill| skill_sealed?(skill.id)} + states
  4.   end
  5. end
复制代码


[line]s[/line]

2个脚本都会用到特性,问题应该是这里引起了内部循环。
想得到的办法只有脱离特性处理,或想办法把特性无效化。

姑且准备了个改写内容,应该能解决问题。
但下面这个代码会让数据库其他技能禁用的特性无效,觉得无妨的话。

RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   attr_accessor :sealed_skills
  3.   #--------------------------------------------------------------------------
  4.   def_before(:initialize) { |actor_id| @sealed_skills = [] }
  5.   #--------------------------------------------------------------------------
  6.   def skill_sealed?(skill_id)
  7.     @sealed_skills.include?(skill_id); end
  8.   #--------------------------------------------------------------------------
  9.   def skill_activate(skill)
  10.     return unless skill_sealed?(skill.id)
  11.     @sealed_skills.delete(skill.id); end
  12.   #--------------------------------------------------------------------------
  13.   def skill_deactivate(skill)
  14.     return if skill_sealed?(skill.id)
  15.     @sealed_skills.push(skill.id); end
  16. end

作者: taroxd    时间: 2015-9-16 21:03
把我的脚本中 passive_objects 的定义改成下面的(未测试):
RUBY 代码复制
  1. @skills.reject { |id| skill_sealed?(id) }.map { |id| $data_skills[id] } + states

作者: dorx2010    时间: 2015-9-17 11:36
Silentever 发表于 2015-9-16 21:02

还是不行啊大大{:2_270:},,就算不用taroxd 的被动技能状态也发生问题>< Scrip"技能开关"line932:NoMethodError occurred.undefined method'active_cost'for#<RPG::skill:0x26cf62c>
还有大大,,我把"启用COST限制"和"启用层积数值化开关"都设为false
辛苦了大大................
作者: Silentever    时间: 2015-9-18 23:38
其他都是没修改的原脚本。顺便也到我的主题重新复制一下代码吧,昨天抓了几个bug。
作者: Silentever    时间: 2015-9-19 20:40
本帖最后由 Silentever 于 2015-9-19 20:20 编辑

作为一个异界的大闲者表示,这没什么……还有出现会用我的脚本的人也挺高兴的(嗯

不过根据我的测试,被关闭的技能确实失效了(包括属性值提升),用的就是上面那样(原脚本+补丁)。
是不是我的技能开关有旧BUG留下没更新?
把现在有的删了再复制插进去试试,另外建议把我的脚本放在补丁以上,其他脚本的最下面。还是不行再传个工程吧。

[line]啊[/line]

……你忘了把原作者修改的内容加进去啦,重新覆盖下补丁应该就没问题了
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   attr_accessor :sealed_skills
  3.   #--------------------------------------------------------------------------
  4.   def_before(:initialize) { |actor_id| @sealed_skills = [] }
  5.   #--------------------------------------------------------------------------
  6.   def skill_sealed?(skill_id)
  7.     @sealed_skills.include?(skill_id); end
  8.   #--------------------------------------------------------------------------
  9.   def skill_activate(skill)
  10.     return unless skill_sealed?(skill.id)
  11.     @sealed_skills.delete(skill.id); end
  12.   #--------------------------------------------------------------------------
  13.   def skill_deactivate(skill)
  14.     return if skill_sealed?(skill.id)
  15.     @sealed_skills.push(skill.id); end
  16.   #--------------------------------------------------------------------------
  17.   def passive_objects # 就是这部分
  18.     @skills.reject { |id| skill_sealed?(id) }.map { |id| $data_skills[id] } + states
  19.   end
  20. end





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