Project1

标题: 求教战斗公共事件读取敌人编号的问题 [打印本页]

作者: 存档不能    时间: 2013-10-10 07:25
标题: 求教战斗公共事件读取敌人编号的问题
本帖最后由 存档不能 于 2013-10-10 20:00 编辑

我的问题是这样的:如何在技能调用的公共事件中获取当前使用这个技能的敌人队伍编号(就是设置队伍时第一位、第二位的那个编号,不是敌人的id)
我的目的是让使用这个技能的敌人显示一个动画,同时防止队伍中相同的敌人行动时已经行动的重复该动画


我所说的队伍编号是指

敌人A-1       敌人B-2    敌人C-3

如上的,玩家在队伍设置中,设置的敌人序号(即是我第一个放上的敌人,第二个放上的敌人……这个顺序,是事件中强制行动指定目标使用的序号)
作者: RyanBern    时间: 2013-10-10 07:25
LZ在Main组前面加上这一小块脚本:
  1. class Game_Battler
  2.   alias old_skill_effect skill_effect
  3.   def skill_effect(user,skill)
  4.     if user.is_a?(Game_Enemy)
  5.       $t = user.index + 1
  6.     end
  7.     old_skill_effect(user,skill)
  8.   end
  9. end
复制代码

然后把技能关联公共事件就可以了,全局变量$t里面存储的就是使用这个特技的敌人编号,可以直接使用。
作者: 774741359    时间: 2013-10-10 10:32
队伍=$game_troop
队伍成员=$game_troop.enemies[]
成员行动=$game_troop.enemies[].current_action

如果你只是想让这个队伍执行一次动画而不是重复执行,完全可以用一个“开关”
在你执行动画的时候添加上个布尔变量,不就解决了。
作者: 774741359    时间: 2013-10-10 11:04
举个栗子吧
作者: yagami    时间: 2013-10-10 12:19
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    $user = @active_battler#####这里
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end


然后你公共事件就用$user做事情就行了
作者: 芯☆淡茹水    时间: 2013-10-10 18:30
在战斗场景有一句:
  1. # 准备队伍
  2.     @troop_id = $game_temp.battle_troop_id
复制代码
用: $game_temp.battle_troop_id    试试
作者: 芯☆淡茹水    时间: 2013-10-10 18:50
哦,抱歉,没看清楚问题哈。
这样试试,在应用特技效果时,获取使用的敌人的队伍ID
  1. #===============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   alias add_skill_effect_xdrs skill_effect
  5.   def skill_effect(user, skill)
  6.     get_user_troop_id(user) if user.is_a?(Game_Enemy)
  7.     add_skill_effect_xdrs(user, skill)
  8.   end
  9.   #---------------------------------------------------------------------------
  10.   def get_user_troop_id(user)
  11.     $user_troop_id = 0
  12.     unless $game_temp.in_battle
  13.       return
  14.     end
  15.     for i in 1..$data_troops.size
  16.       troop = $data_troops[i]
  17.       if troop.members.include?(user.id) and
  18.        $game_temp.battle_troop_id == troop.id
  19.         $user_troop_id = troop.id
  20.         break
  21.       end
  22.     end
  23.   end
  24. end
  25. #===============================================================================
复制代码
里面的那个全局变量:$user_troop_id   就是当前队伍ID ,在公共事件里试试。
作者: 存档不能    时间: 2013-10-10 19:06
芯☆淡茹水 发表于 2013-10-10 18:50
哦,抱歉,没看清楚问题哈。
这样试试,在应用特技效果时,获取使用的敌人的队伍ID里面的那个全局变量:$us ...

出错了
作者: 芯☆淡茹水    时间: 2013-10-10 19:31
改后:
  1. #===============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   alias add_skill_effect_xdrs skill_effect
  5.   def skill_effect(user, skill)
  6.     get_user_troop_id(user) if user.is_a?(Game_Enemy)
  7.     add_skill_effect_xdrs(user, skill)
  8.   end
  9.   #---------------------------------------------------------------------------
  10.   def get_user_troop_id(user)
  11.     $user_troop_id = $game_temp.in_battle ? $game_temp.battle_troop_id : 0
  12.    end
  13. end
  14. #===============================================================================
复制代码
话说直接用  $game_temp.battle_troop_id  能行啊

下面是我刚试过的,战斗事件 和 公共事件

Project2.rar (214.71 KB, 下载次数: 75)
作者: 芯☆淡茹水    时间: 2013-10-10 19:37
要不就是这个,下面范例里“水”这个技能关联了公共事件,公共事件显示队伍 ID,
不过要在技能发动后才显示。

Project2.rar (214.86 KB, 下载次数: 68)




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