Project1

标题: 如何在Scene外部引用active_battler? [打印本页]

作者: saturnfjh    时间: 2010-10-23 08:46
标题: 如何在Scene外部引用active_battler?
本帖最后由 saturnfjh 于 2010-10-25 16:31 编辑

在战斗中执行一个脚本,需要在game_unit中获取当前的行动者,应该怎么引用才不至于总是提示nil?
作者: moy    时间: 2010-10-23 09:09
把active_battler变成全局变量.
作者: saturnfjh    时间: 2010-10-24 14:48
自顶……求解……
作者: 小幽的马甲    时间: 2010-10-24 15:02
= =你确定使用时是在战斗中吗?这个变量只有在战斗中才有意义
  1. class Scene_Battle < Scene_Base
  2.   attr_accessor :active_battler
  3. end
  4. class Game_Unit
  5.   def active_battler
  6.     return false unless $scene.is_a?(Scene_Battle)
  7.     return $scene.active_battler
  8.   end
  9. end

复制代码

作者: saturnfjh    时间: 2010-10-24 15:55
本帖最后由 saturnfjh 于 2010-10-24 15:56 编辑

回复 小幽的马甲 的帖子


    系统又抽了……

话说是给enemy和auto_battle_actor用呀,在确定目标的时候查找自身的仇恨列表的说。。
作者: saturnfjh    时间: 2010-10-24 16:48
回复 小幽的马甲 的帖子

不行啊……在random_target里面用self返回的是Game_Troop..怎么获取单个的active enemy
作者: 小幽的马甲    时间: 2010-10-24 18:48
回复 saturnfjh 的帖子

回复 saturnfjh 的帖子

Game_Unit确实是Troop的父类,抱歉我想当然了{:nm_1:}
  突然明白是怎么回事了 ……我和LZ都忽略了一点,当Battler为敌人或者自动战斗的队友时,@active_battler是指【正在实施行动】的Battler。也就是说,@active_battler为某个Battler时,要么那个Battler是自己能够控制的队员在决定行动,要么是敌人或者自动战斗队友在放动画蹦字,而在他们决定行动时active_battler为nil。
以敌人为例,敌人决定行动是在$game_troop.make_actions,所以考虑在make_actions里调用用make_action的时候增加一个参数就好
   
作者: saturnfjh    时间: 2010-10-24 19:43
回复 小幽的马甲 的帖子

噢噢~明白了,只要在make_action哪里传递一个index就行了~
还有decide_random_target中有这么一段:
        if target == nil
      clear
    else
      @target_index = target.index
    end

看不太懂什么意思。。 @target_index = target.index 为什么会报“wrong number argument”错误?是什么地方参数不一致才会引起这样的错误?




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