设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 877|回复: 1
打印 上一主题 下一主题

对死亡队员使用物品或魔法问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-1-7
帖子
64
跳转到指定楼层
1
发表于 2009-4-24 20:59:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
默认的时候是对已经死亡的队员使用除了回复物品以外的道具后直接判定到其他队员身上
但是我想改成 任何道具都能对死亡单位使用 回复魔法也一样
只是除了复活道具以外的全部无效化(帮死人+血就是浪费血瓶)
而不是+到其他队员的身上
向大家求助了!谢谢!
版务信息:版主帮忙结贴~

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2009-4-29 15:46:47 | 只看该作者
默认是这样的:
无论是技能还是物品,它们的目标对象都会在 Scene_Battle 的 set_target_battlers 中被过滤~当范围是己方单体的时候会调用 Game_Party 的 smooth_target_actor 过滤目标
如果玩家选择的目标不存在、被隐藏、或者满足 (hp <= 0 而又不是无敌状态) 的话,那么这个目标就会被过滤掉,转而到从队伍开头搜索满足以上条件的其他队员~

所以需要修改的就在 set_target_battlers 行动方是玩家、目标是己方单体的分歧下,去掉目标的过滤而直接将目标设为玩家选择的目标队员(红色部分):
class Scene_Battle
  def set_target_battlers(scope)
    # 行动方的战斗者是敌人的情况下
    if @active_battler.is_a?(Game_Enemy)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 2  # 敌全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 4  # 我方全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        enemy = $game_troop.enemies[index]
        if enemy != nil and enemy.hp0?
          @target_battlers.push(enemy)
        end
      when 6  # 我方全体 (HP 0)
        for enemy in $game_troop.enemies
          if enemy != nil and enemy.hp0?
            @target_battlers.push(enemy)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
    # 行动方的战斗者是角色的情况下
    if @active_battler.is_a?(Game_Actor)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 2  # 敌全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        #@target_battlers.push($game_party.smooth_target_actor(index))
        actors = $game_party.actors
        actor = actors[index]
        # 如果玩家选择的 actor 不存在(中途离队)
        if actor == nil
          # 从队伍开头搜索第一个存在的队员作为目标
          for i in actors
            if i != nil
              actor = i
              break
            end
          end
        end
        @target_battlers.push(actor)

      when 4  # 我方全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        actor = $game_party.actors[index]
        if actor != nil and actor.hp0?
          @target_battlers.push(actor)
        end
      when 6  # 我方全体 (HP 0)
        for actor in $game_party.actors
          if actor != nil and actor.hp0?
            @target_battlers.push(actor)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
  end
end

系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-15 23:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表