Project1

标题: 逃跑了的宠物为什么还会攻击敌人?? [打印本页]

作者: 幻耶    时间: 2008-6-12 23:01
标题: 逃跑了的宠物为什么还会攻击敌人??
那个宠物系统ver1.2 ,按照脚本的设置:主人被打死,宠物会逃跑。但是只要我方没有全部阵亡,战斗没结束,那么本来已经逃跑的宠物仍然会攻击敌人,也就是说:当主人死掉,宠物的图片虽然消失了,但是宠物的行为依然存在,直到进入下一场战斗,逃跑的宠物才真正消失。这个问题如何修正??





宠物脚本:
http://rpg.blue/web/htm/news169.htm
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 幻耶    时间: 2008-6-13 18:17
第二天了{/fd}
作者: IamI    时间: 2008-6-13 18:23
    unless self.movable?
      # 过程结束
      return
    end
改成
    unless self.movable? or self.hp == 0
      # 过程结束
      return
    end
不知道可以不可以= =
作者: 幻耶    时间: 2008-6-13 18:29
以下引用IamI于2008-6-13 10:23:52的发言:


   unless self.movable?
     # 过程结束
     return
   end

改成
   unless self.movable? or self.hp == 0
     # 过程结束
     return
   end
不知道可以不可以= =









好像没用哎...我让范例中的三个角色都装备宠物,故意让其他两个角色都给打死,让战场上只剩下帕吉尔,发现阵亡角色的宠物虽然图片消失了,但是还能继续攻击敌人,直到进入下一次战斗阵亡角色的宠物才真正消失



范例
http://rpg.blue/upload_program/files/chongwuxitong_92912283.rar
作者: 幻耶    时间: 2008-6-13 23:50
...永远没人回答么
作者: 这LINK不劫狱    时间: 2008-6-14 01:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2008-6-14 03:13
以下引用这LINK不劫狱于2008-6-13 17:00:17的发言:

逃跑只是 visible = false...
关键还是 unless self.movable?
在GamePet重载这个函数, 里面的返回值和GameActor的状态挂钩就好





苦啊...就是不知道具体怎么挂钩啊...重载啊{/dk}
作者: 3535    时间: 2008-6-14 03:32
以下引用幻耶于2008-6-13 19:13:37的发言:


以下引用这LINK不劫狱于2008-6-13 17:00:17的发言:

逃跑只是 visible = false...
关键还是 unless self.movable?
在GamePet重载这个函数, 里面的返回值和GameActor的状态挂钩就好






苦啊...就是不知道具体怎么挂钩啊...重载啊
class Game_Pet < Game_Battler
  def movable?
    return (not @hidden and restriction < 4 and @hp > 0)
  end
end

作者: 幻耶    时间: 2008-6-14 04:01
先谢了,是加在下面的位置??但是加了以后逃跑的宠物还是会攻击敌人啊{/zk}





class Game_Pet < Game_Battler
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     troop_id     : 循环 ID
  #     member_index : 循环成员的索引
  #--------------------------------------------------------------------------
  def initialize(enemy_id)
    super()
    @enemy_id = enemy_id
    enemy = $data_enemies[@enemy_id]
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    @hp = maxhp
    @sp = maxsp
  end
  
  
   def movable?
   return (not @hidden and restriction < 4 and @hp > 0)
end

  
  
  #--------------------------------------------------------------------------
  # ● 获取敌人 ID
  #--------------------------------------------------------------------------
  def id
    return @enemy_id
  end
作者: Infrared    时间: 2008-6-14 04:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2008-6-14 04:03
我直接加在了我上传的工程里,但是加了以后主人死掉后逃跑的宠物还是会攻击敌人啊
作者: 幻耶    时间: 2008-6-14 05:54
return (not @hidden and restriction < 4 and @hp > 0)  这句是什么意思啊
作者: 这LINK不劫狱    时间: 2008-6-14 06:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2008-6-14 06:44
添加成下面这样??

def movable?
return (not @hidden and restriction < 4 and @hp > 0 and
        $game_party.actors[@father_id].hp = 0)
end

作者: 幻耶    时间: 2008-6-14 06:48
还是不对.......给Game_Pet初始化函数多添一个参数和变量father_id 怎么写啊...比较笨了{/gg}
作者: 这LINK不劫狱    时间: 2008-6-14 06:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2008-6-14 07:05
添加成这样?奇怪啊!!还是不行{/dk}{/dk}{/dk}

#==============================================================================
# ■ Game_Pet
#------------------------------------------------------------------------------
#  处理宠物的类,专用。
#==============================================================================


class Game_Pet < Game_Battler
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     troop_id     : 循环 ID
  #     member_index : 循环成员的索引
  #--------------------------------------------------------------------------
  def initialize(enemy_id, fid)
    super()
    @enemy_id = enemy_id
    enemy = $data_enemies[@enemy_id]
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    @hp = maxhp
    @sp = maxsp
   
    @father_id = fid
   
  end
  
  
def movable?
return (not @hidden and restriction < 4 and @hp > 0 and
      0==$game_party.actors[@father_id].hp)
end

......
......
......
......
......
......
......
......
......

#==============================================================================
# ■ Sprite_Pet
#——————————————————————————————————————
# 全新定义
#==============================================================================
class Sprite_Pet < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # 战斗者
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport : 显示端口;battler  : 战斗者 (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, father_id = 0)
    super(viewport)
    @father_id = father_id
    if $game_party.actors[father_id] != nil
      if $game_party.actors[father_id].pet_id != 0
        @battler = Game_Pet.new($game_party.actors[father_id].pet_id, father_id)
      else
        @battler = nil
      end
    end
  end
........
作者: 这LINK不劫狱    时间: 2008-6-14 07:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2008-6-14 07:17
辛苦了!!非常感激




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