查看: 2311|回复: 5

[已经解决] 关于技能开关和被动技能状态

[复制链接]
梦石
0
星屑
50
在线时间
275 小时
注册时间
2010-8-19
回帖
50
发表于 2015-9-16 18:25:26 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 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

大大下

梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
回帖
143
发表于 2015-9-16 21:02:32 | 显示全部楼层
本帖最后由 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
复制代码





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

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

[pre lang="ruby"]class Game_Actor < Game_Battler
  attr_accessor :sealed_skills
  #--------------------------------------------------------------------------
  def_before(:initialize) { |actor_id| @sealed_skills = [] }
  #--------------------------------------------------------------------------
  def skill_sealed?(skill_id)
    @sealed_skills.include?(skill_id); end
  #--------------------------------------------------------------------------
  def skill_activate(skill)
    return unless skill_sealed?(skill.id)
    @sealed_skills.delete(skill.id); end
  #--------------------------------------------------------------------------
  def skill_deactivate(skill)
    return if skill_sealed?(skill.id)
    @sealed_skills.push(skill.id); end
end[/pre]

点评

大大,,应该是我改错了地方,,求教改哪T.T  发表于 2015-9-18 18:01
忘了 sealed 也用到特性了 orz  发表于 2015-9-17 07:00
Script " 技能开关"line935  发表于 2015-9-16 22:56
Script " 技能开关"SyntaxError occurred.unexpected key_expecting $end  发表于 2015-9-16 22:54

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 辛苦了

查看全部评分

「私が来た!  私が見た!  ならば次わ買つだけのこと!」
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-9-16 21:03:25 | 显示全部楼层
把我的脚本中 passive_objects 的定义改成下面的(未测试):
[pre lang="ruby"]
@skills.reject { |id| skill_sealed?(id) }.map { |id| $data_skills[id] } + states
[/pre]

点评

不行,大大,, SystemStackErro occurred. stack too deep. 就是大大改的地方出问题了  发表于 2015-9-16 22:36
回复

使用道具 举报

梦石
0
星屑
50
在线时间
275 小时
注册时间
2010-8-19
回帖
50
 楼主| 发表于 2015-9-17 11:36:43 | 显示全部楼层
Silentever 发表于 2015-9-16 21:02

还是不行啊大大{:2_270:},,就算不用taroxd 的被动技能状态也发生问题>< Scrip"技能开关"line932:NoMethodError occurred.undefined method'active_cost'for#<RPG::skill:0x26cf62c>
还有大大,,我把"启用COST限制"和"启用层积数值化开关"都设为false
辛苦了大大................

点评

大大,,能放脚本上来吗??可能是我改错....不会跟其他脚本冲突,,因为只有你和taroxd 的被动技能状态脚本  发表于 2015-9-18 16:27
我测试的时候没有任何问题啊……会不会跟其他脚本冲突了?  发表于 2015-9-17 21:33
回复

使用道具 举报

梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
回帖
143
发表于 2015-9-18 23:38:22 | 显示全部楼层
Baidu IME_2015-9-18_17-33-22.jpg 其他都是没修改的原脚本。顺便也到我的主题重新复制一下代码吧,昨天抓了几个bug。

点评

辛苦了大大,我已按照你说的做,能运行但没效果。例:+30攻(被动)关后效果还在。 大大如果没空跟我说,我结束这贴,,早知这么麻烦大大的话,开悬赏....  发表于 2015-9-19 11:13

评分

参与人数 1星屑 +20 收起 理由
dorx2010 + 20

查看全部评分

「私が来た!  私が見た!  ならば次わ買つだけのこと!」
回复

使用道具 举报

梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
回帖
143
发表于 2015-9-19 20:40:37 | 显示全部楼层
本帖最后由 Silentever 于 2015-9-19 20:20 编辑

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

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




……你忘了把原作者修改的内容加进去啦,重新覆盖下补丁应该就没问题了
[pre lang="ruby"]class Game_Actor < Game_Battler
  attr_accessor :sealed_skills
  #--------------------------------------------------------------------------
  def_before(:initialize) { |actor_id| @sealed_skills = [] }
  #--------------------------------------------------------------------------
  def skill_sealed?(skill_id)
    @sealed_skills.include?(skill_id); end
  #--------------------------------------------------------------------------
  def skill_activate(skill)
    return unless skill_sealed?(skill.id)
    @sealed_skills.delete(skill.id); end
  #--------------------------------------------------------------------------
  def skill_deactivate(skill)
    return if skill_sealed?(skill.id)
    @sealed_skills.push(skill.id); end
  #--------------------------------------------------------------------------
  def passive_objects # 就是这部分
    @skills.reject { |id| skill_sealed?(id) }.map { |id| $data_skills[id] } + states
  end
end[/pre]

点评

去大学上课,迟了上线。原来忘记了一个补丁0.0万分感谢大大的帮忙><  发表于 2015-9-20 18:50
这跟运气实在是没什么关系……  发表于 2015-9-20 03:21
看见大大的回复,,很感动T^T 可惜还是不行,我近日运气很差..大大,我更新了附件,请大大下载,帮我看看  发表于 2015-9-19 22:30

评分

参与人数 1星屑 +40 收起 理由
dorx2010 + 40 万分感谢

查看全部评分

「私が来た!  私が見た!  ならば次わ買つだけのこと!」
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部