Project1

标题: 不在队伍的角色也能获的经验 [打印本页]

作者: llzc22    时间: 2014-5-19 21:29
标题: 不在队伍的角色也能获的经验
本帖最后由 llzc22 于 2014-5-23 10:59 编辑

{:2_280:}大绅士们有这种脚本吗?即使不在队伍(死亡除外),每次打怪胜利也可以获得经验。
斑竹绅士不要扣分,搜索了很多次,就是木有……人物仓库不适用啊。
--------------------------------------------------------------------
十分感谢楼下几位大绅hen士tai,已经解决了,原来只有加入过队伍,再离开的角色就可以实现了。
只是升级提示窗口就无效了,我来整合一下,帮助那些同样需要这个的。
↓插入main前↓
--------------------------------------------------
RUBY 代码复制
  1. class Game_Actors
  2.   def each
  3.     @data.compact.each {|actor| yield actor }
  4.   end
  5. end

--------------------------------------------------
替换“Scene_Battle 2”167行之后的脚本。
--------------------------------------------------
RUBY 代码复制
  1. $game_actors.each do |actor|
  2.       unless actor.cant_get_exp?
  3.         last_level = actor.level
  4.         actor.exp += exp
  5.         if actor.level > last_level         
  6.         end
  7.       end
  8.     end

作者: 英顺的马甲    时间: 2014-5-20 21:06
你是指所有没死亡的角色都能得到经验还是说要兼容人物仓库?==
作者: 英顺的马甲    时间: 2014-5-21 15:03
  1. class Game_Actor
  2.   def each
  3.     @data.compact.each(&block)
  4.   end
  5. end
复制代码
这个插入main之前,然后把Scene_Battle获得exp的那段脚本换成
  1.     $game_actors.each do |actor|
  2.       unless actor.cant_get_exp?
  3.         last_level = actor.level
  4.         actor.exp += exp
  5.         if actor.level > last_level
  6.           @status_window.level_up(i)
  7.         end
  8.       end
  9.     end
复制代码

作者: llzc22    时间: 2014-5-21 18:38
英顺的马甲 发表于 2014-5-21 15:03
这个插入main之前,然后把Scene_Battle获得exp的那段脚本换成

是从“Scene_Battle 2”168行覆盖没错吧,打死怪物之后出现了这个……

QQ图片20140521183525.jpg (15.5 KB, 下载次数: 8)

错误

错误

作者: taroxd    时间: 2014-5-21 18:52
llzc22 发表于 2014-5-21 18:38
是从“Scene_Battle 2”168行覆盖没错吧,打死怪物之后出现了这个……

不懂XP,不过根据我对Ruby的理解,应该把上半段改为
  1. class Game_Actors
  2.   def each
  3.     @data.compact.each {|actor| yield actor }
  4.   end
  5. end
复制代码

作者: llzc22    时间: 2014-5-21 19:15
taroxd 发表于 2014-5-21 18:52
不懂XP,不过根据我对Ruby的理解,应该把上半段改为


虽然打怪之后不弹出刚才那个对话框,但是没有加入队伍的角色不能获得经验,但是只要有个角色升级就弹出这个。

QQ图片20140521191347.jpg (17.15 KB, 下载次数: 12)

QQ图片20140521191347.jpg

作者: fux2    时间: 2014-5-21 19:33
llzc22 发表于 2014-5-21 18:38
是从“Scene_Battle 2”168行覆盖没错吧,打死怪物之后出现了这个……

把2楼的class Game_Actor改成class Game_Actors
作者: llzc22    时间: 2014-5-21 19:48
fux2 发表于 2014-5-21 19:33
把2楼的class Game_Actor改成class Game_Actors

这次出这个了……

QQ图片20140521194807.jpg (17.2 KB, 下载次数: 13)

QQ图片20140521194807.jpg

作者: fux2    时间: 2014-5-21 20:25
llzc22 发表于 2014-5-21 19:48
这次出这个了……

把后半段换成5楼的。
作者: 英顺的马甲    时间: 2014-5-21 22:19
本帖最后由 英顺的马甲 于 2014-5-22 09:05 编辑

先前竟然回复错人了,呼叫@taroxd {:6_334:}

干脆在这里总结好了==
@fux2 我没测试过,如果有错帮忙纠正==
  1. class Test
  2.   def initialize
  3.     @data = []
  4.   end
  5.   def a
  6.     @data.each{|a|yield a} if block_given?
  7.   end
  8.   def b
  9.     @data.each{|a|yield a}
  10.   end
  11.   def c(&block)
  12.     @data.each(&block)
  13.   end
  14.   def d(&block)
  15.     @data.each{|a|block.call(a)}
  16.   end
  17. end
  18. test = Test.new

  19. test.a # 运行成功
  20. test.b # 报错
  21. test.c # 报错
  22. test.d # 报错

  23. test.a{} # 运行成功
  24. test.b{} # 运行成功
  25. test.c{} # 运行成功
  26. test.d{} # 报错

  27. test.a{|a|} # 运行成功
  28. test.b{|a|} # 运行成功
  29. test.c{|a|} # 运行成功
  30. test.d{|a|} # 运行成功
复制代码

作者: llzc22    时间: 2014-5-21 23:48
英顺的马甲 发表于 2014-5-21 22:19
干脆在这里总结好了==
@fux2 我没测试过,如果有错帮忙纠正==

用这个插在MAIN前面并替换上次的脚本吗?但是会出现"Scene_Battle 2"168行的错误……
作者: taroxd    时间: 2014-5-22 11:36
英顺的马甲 发表于 2014-5-21 22:19
先前竟然回复错人了,呼叫@taroxd  

干脆在这里总结好了==

建议这样写(xp可能版本太低)
RUBY 代码复制
  1. def some_iterator(some_arg)
  2.   return to_enum(__method__, some_arg) unless block_given?
  3.   # start iteration
  4. end

作者: llzc22    时间: 2014-5-22 23:44
本帖最后由 llzc22 于 2014-5-22 23:59 编辑

@英顺的马甲 @fux2 用了他的办法还是没办法解决, 没升级的话是不弹出什么,而且打完怪,没加入队伍的同伴不能获取经验,角色一旦升级,就会提示Scene_Battle 2  173行出错。
  

QQ图片20140521191347.jpg (17.15 KB, 下载次数: 12)

QQ图片20140521191347.jpg





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