Project1

标题: 问题回到原点:战斗中如何让宠物跟随主人一起变换位置 [打印本页]

作者: 幻耶    时间: 2008-6-17 23:59
标题: 问题回到原点:战斗中如何让宠物跟随主人一起变换位置
因为某些需要,我在游戏中设置了战斗中可以交换战死角色和活着角色的位置,比如在公共事件里有以下脚本:

a = $game_party.actors[1]
$game_party.actors[1] = $game_party.actors[
2]
$game_party.actors[2] = a


但是我又用了宠物系统1.2脚本,如果战斗场景中互换位置的角色装备有宠物,宠物不会随着角色队列的改变而改变,只会停留在原来的位置,而且宠物的图片会消失,直到进入下一场战斗才会刷新,如何在战斗中让宠物能随着主人位置的变化而一同变化呢?



宠物系统ver1.2
http://rpg.blue/web/htm/news169.htm




作者: 幻耶    时间: 2008-6-18 06:03
上面修改之后的工程只能做到:在战斗中,两个都装备了宠物的活着的角色可以正常互换位置,各自的宠物也会跟随主人变换位置,但如果其中有一个角色是死亡状态,或者其中只有一个角色是有宠物的,那么互换位置之后宠物的跟随就有问题
作者: 幻耶    时间: 2008-6-19 00:16
没办法,悬个赏吧{/fd}
作者: dbshy    时间: 2008-6-19 02:49
class Game_Pet < Game_Battler
  attr_accessor :maseter_id
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     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
    @maseter_id = fid
  end
  
  
  
  def movable?(actor_id)
    return  (not @hidden and restriction < 4) && !$game_party.actors[actor_id].dead?
  end





def make_action(id)
    @position_id = id
    # 清除当前行动
    self.current_action.clear
    # 无法行动的情况
    unless self.movable?(@position_id)
     
      # 过程结束
      return
    end

Scene_Battle中
for enemy in @pet_actor
      for actor in $game_party.actors
        if actor.pet_id = enemy.id then
           enemy.make_action(actor.maseter_id_position)
     # enemy.current_action.decide_random_target_for_pet
    end
    end
    end

作者: 幻耶    时间: 2008-6-19 04:27
Scene_Battle中是在哪里加的啊?是下面这一段彩色部分改么?

    $game_temp.battle_main_phase = true
    # 生成敌人行动
    for enemy in $game_troop.enemies
      enemy.make_action
    end
    ############################################################################
    for enemy in @pet_actor
      enemy.make_action
      enemy.current_action.decide_random_target_for_pet
    end

    ############################################################################
    # 生成行动顺序
    make_action_orders
    # 移动到步骤 1
    @phase4_step = 1
  end
  
  #--------------------------------------------------------------------------
  # ● 生成行动循序
  #--------------------------------------------------------------------------
作者: 幻耶    时间: 2008-6-19 04:31
def make_action(id)直接加在● 生成行动 下面??


  #--------------------------------------------------------------------------
  # ● 生成行动
  #--------------------------------------------------------------------------
  def make_action(id)
    @position_id = id
    # 清除当前行动
    self.current_action.clear
    # 无法行动的情况
    unless self.movable?(@position_id)
      # 过程结束
      return
    end
    # 抽取现在有效的行动
    available_actions = []
    rating_max = 0
    for action in self.actions
      # 确认回合条件
      n = $game_temp.battle_turn
      a = action.condition_turn_a
      b = action.condition_turn_b
作者: 幻耶    时间: 2008-6-19 05:15
第一个的图片显示问题好像解决了!!多谢{/se}

但是如果A角色有宠物,B角色没宠物,B死掉之后与A交换位置,A角色的宠物就不行动了
作者: 幻耶    时间: 2008-6-19 17:18
第二个问题还是老毛病啊!当与死掉的角色交换位置,那个死掉角色装备的宠物就又可以攻击了,反而与之互换的活的角色的宠物就停止行动了{/ll}



附上又改了的工程,麻烦看看错在哪了?
http://rpg.blue/upload_program/files/Pets_gensui_gai_94296130.rar
作者: 木许许    时间: 2008-6-19 21:47
似乎...BUG更多了
作者: 幻耶    时间: 2008-6-20 00:05
发现最严重的问题,当互换了有宠物的角色位置以后退出战斗或者进入下一次战斗,发现所有角色(包括原来没宠物的)都自动改成了一样的宠物!?



作者: 精灵使者    时间: 2008-6-20 00:11
以前美兽殿曾经指导给我这个问题(一次性召唤宠物的改进)
Sprite_battler里面第43行左右的判断改为
#############################################################
    # 文件名和色相与当前情况有差异的情况下
    if @battler.battler_name != @battler_name or
       @battler.battler_hue != @battler_hue or
       (@battler != nil and self.bitmap == nil)
##############################################################
作者: dbshy    时间: 2008-6-20 06:19
LZ请把想实现的功能说一遍,我都糊涂了= =
作者: 幻耶    时间: 2008-6-20 20:20
以下引用dbshy于2008-6-19 22:19:29的发言:

LZ请把想实现的功能说一遍,我都糊涂了= =





我只需要交换死亡角色与活着角色的位置。。现在的问题是互换的时候当死亡角色和待命角色都装备有宠物或者一方配有宠物就会出现跟随上的错误,所以我想实现的功能是:当死亡角色和活着的角色互换位置时,他们如果配有宠物,那么宠物会跟随主人一起移动到相应的位置并行动。如果主人死了,他的宠物跟随他移动位置之后还是不行动。

--------------------------------------分隔线----------------------------------------

按照 4楼 改脚本的话还是有两个问题:
问题一:当互换两个配有不同宠物角色的位置,虽然战斗画面中宠物也跟着换了,但是只要逃跑退出战斗或者进入下一次战斗,就会发现所有角色(包括原来没带宠的)的宠物都自动变成了一样的!

问题二:当与死掉的角色交换位置,那个死掉角色装备的宠物就又可以攻击了,反而与之互换的活的角色的宠物就停止行动了。关于这两个问题麻烦测试下工程吧{/gg}{/gg}{/gg}


工程:
http://rpg.blue/upload_program/files/Pets_gensui_gai_94296130.rar

三个角色都装备好不同的宠物进入战斗,然后一个角色使用互换,交换1号2号角色位置再逃跑,最后看看三人的状态,发现都变成装备同一种宠物了,怎么回事哦?

作者: 幻耶    时间: 2008-6-21 00:14
以下引用精灵使者于2008-6-19 16:11:32的发言:

以前美兽殿曾经指导给我这个问题(一次性召唤宠物的改进)
Sprite_battler里面第43行左右的判断改为
#############################################################
   # 文件名和色相与当前情况有差异的情况下
   if @battler.battler_name != @battler_name or
      @battler.battler_hue != @battler_hue or
      (@battler != nil and self.bitmap == nil)
##############################################################




不仅仅是显示的问题了。。。我记得当初那个帖子还是我发的吧,关于战场上的一次性召唤角色离队后再加入就不显示图片了
作者: 精灵使者    时间: 2008-6-21 10:36
以下引用幻耶于2008-6-20 16:14:49的发言:


以下引用精灵使者于2008-6-19 16:11:32的发言:

以前美兽殿曾经指导给我这个问题(一次性召唤宠物的改进)
Sprite_battler里面第43行左右的判断改为
#############################################################
  # 文件名和色相与当前情况有差异的情况下
  if @battler.battler_name != @battler_name or
     @battler.battler_hue != @battler_hue or
     (@battler != nil and self.bitmap == nil)
##############################################################





不仅仅是显示的问题了。。。我记得当初那个帖子还是我发的吧,关于战场上的一次性召唤角色离队后再加入就不显示图片了

这个就应该是解决离队以后组队不显示图片的问题的。
经测试通过。
作者: 幻耶    时间: 2008-6-21 20:16
以下引用精灵使者于2008-6-21 2:36:32的发言:


以下引用幻耶于2008-6-20 16:14:49的发言:


以下引用精灵使者于2008-6-19 16:11:32的发言:

以前美兽殿曾经指导给我这个问题(一次性召唤宠物的改进)
Sprite_battler里面第43行左右的判断改为
#############################################################
# 文件名和色相与当前情况有差异的情况下
if @battler.battler_name != @battler_name or
    @battler.battler_hue != @battler_hue or
    (@battler != nil and self.bitmap == nil)
##############################################################





不仅仅是显示的问题了。。。我记得当初那个帖子还是我发的吧,关于战场上的一次性召唤角色离队后再加入就不显示图片了


这个就应该是解决离队以后组队不显示图片的问题的。
经测试通过。




宠物系统1.2里的宠物是敌人啊,应该和离队以后组队什么的无关吧{/gg}
作者: 幻耶    时间: 2008-6-23 19:24
主帖内容改了下,希望能看明白我在说什么{/gg}
作者: yangff    时间: 2008-6-24 18:15
Scene_Battle加
  def again_pet
    # 生成活动块
    @spriteset.dispose
    @spriteset = Spriteset_Battle.new
    ############################################################################
    @pet_actor = []
    for i in 0..3
      if $pet_sprites.battler != nil
        @pet_actor.push($pet_sprites.battler)
      end
    end
  end

不管你怎么yy完执行again_pet自动整理
如:
a = $game_party.actors[0]
$game_party.actors[0] = $game_party.actors[
1]
$game_party.actors[1] = a
$scene.again_pet
作者: id人格分裂症    时间: 2008-6-24 18:26
行为的跟随大概还是不行...
作者: 幻耶    时间: 2008-6-24 18:33
以下引用yangff于2008-6-24 10:15:42的发言:

Scene_Battle加
def again_pet
   # 生成活动块
   @spriteset = Spriteset_Battle.new
   ############################################################################
   @pet_actor = []
   for i in 0..3
     if $pet_sprites.battler != nil
       @pet_actor.push($pet_sprites.battler)
     end
   end
end

不管你怎么yy完执行again_pet自动整理




添加了def again_pet一进入战斗就这样了

作者: yangff    时间: 2008-6-24 18:35
以下引用幻耶于2008-6-24 10:33:18的发言:


以下引用yangff于2008-6-24 10:15:42的发言:

Scene_Battle加
def again_pet
  # 生成活动块
  @spriteset = Spriteset_Battle.new
  ############################################################################
  @pet_actor = []
  for i in 0..3
    if $pet_sprites.battler != nil
      @pet_actor.push($pet_sprites.battler)
    end
  end
end

不管你怎么yy完执行again_pet自动整理





添加了def again_pet一进入战斗就这样了

http://rpg.blue/upload_program/files/新建文本文档_94732474.txt
替换宠物脚本1已添互换2

被你气死了 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 幻耶    时间: 2008-6-24 18:40
替换了以后还是老问题啊,战斗中有宠物的角色和无宠物的角色互换位置以后,宠物就消失啦~!
作者: yangff    时间: 2008-6-24 18:47
以下引用幻耶于2008-6-24 10:40:43的发言:

替换了以后还是老问题啊,战斗中有宠物的角色和无宠物的角色互换位置以后,宠物就消失啦~!


[本贴由作者于 2008-6-24 10:41:29 最后编辑]

我都不会
作者: yangff    时间: 2008-6-24 18:49
http://rpg.blue/upload_program/files/Pets_gensui_94733333.rar
作者: 幻耶    时间: 2008-6-24 18:53
太感谢了!!




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