少年修仙传客户端代码仓库
client_Hale
2019-01-21 c694eddfa8fc34edb59257552416ad6e1996444b
【1.5.100】与跨服boss 战斗中选中boss区域外玩家出现异常
6个文件已修改
93 ■■■■■ 已修改文件
Fight/Actor/AI/HeroAI_Auto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_D5_Hlyy.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/HeroBehaviour.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Skill/AttackHandler.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/Bhv_FindEnemy.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_Auto.cs
@@ -327,7 +327,7 @@
            return;
        }
        _hero.LockTarget = _hero.SelectTarget = _atkTarget;
        _hero.SelectTarget = _atkTarget;
        // 判断技能范围, 不在可释放范围需要移动至目标
        float _compareDist = _skill.skillInfo.config.AtkDist * .5f;
Fight/Actor/AI/HeroAI_D5_Hlyy.cs
@@ -125,7 +125,6 @@
            else
            {
                _hero.SelectTarget = _actor;
                _hero.LockTarget = _actor;
            }
        }
Fight/Actor/HeroBehaviour.cs
@@ -131,14 +131,10 @@
        {
            _fightTarget = m_Hero.SelectTarget as GActorFight;
            if (_fightTarget != null && _fightTarget.CanAtked())
            {
                m_Hero.LockTarget = m_Hero.SelectTarget;
            }
            else
            if (_fightTarget == null || !_fightTarget.CanAtked())
            {
                float _range = m_Hero.JobSetup.SearchEnemyDist * Constants.F_DELTA;
                m_Hero.LockTarget = m_Hero.SelectTarget = GAMgr.Instance.FindAtkTarget(m_Hero.Pos, _range, 360);
                m_Hero.SelectTarget = GAMgr.Instance.FindAtkTarget(m_Hero.Pos, _range, 360);
                _fightTarget = m_Hero.SelectTarget as GActorFight;
            }
        }
Fight/Actor/Skill/AttackHandler.cs
@@ -191,11 +191,10 @@
                if (target.ServerInstID == PlayerDatas.Instance.PlayerId)
                {
                    GA_Hero _hero = target as GA_Hero;
                    if (_hero.LockTarget == null)
                    if (_hero.SelectTarget == null)
                    {
                        _hero.LockTarget = attacker;
                        _hero.SelectTarget = attacker;
                    }
                }
            }
        }
Fight/GameActor/Bhv_FindEnemy.cs
@@ -113,7 +113,7 @@
                _chkDis += 1;
            }
            if (_distSqrt > Mathf.Pow(reFindSelectTargetDist, _chkDis))
            if (_distSqrt > Mathf.Pow(_chkDis, 2))
            {
                var _actor = GAMgr.Instance.FindAtkTarget(_hero.Pos, reSetLockTargetDist);
                if (!(_actor is GActorFight))
@@ -125,6 +125,10 @@
                    if (_actor.CanAtked())
                    {
                        _hero.SelectTarget = _actor;
                        if (_actor is GA_NpcFightBoss && _hero.LockTarget == null)
                        {
                            _hero.LockTarget = _actor;
                        }
                    }
                }
            }
Fight/GameActor/GA_Hero.cs
@@ -372,35 +372,56 @@
            }
        }
        if (PlayerDatas.Instance.extersion.bossState == 1)
        HandleBossAttack();
    }
    private void HandleBossAttack()
    {
        if (PlayerDatas.Instance.extersion.bossState != 1)
        {
            GA_Player _player = SelectTarget as GA_Player;
            if (_player != null)
            return;
        }
        if (LockTarget != null)
        {
            return;
        }
        GA_Player _player = SelectTarget as GA_Player;
        if (_player == null)
        {
            return;
        }
        foreach (var _key in DungeonStage.s_MapAreaDict.Keys)
        {
            if ((int)_key < 3000)
            {
                foreach (var _key in DungeonStage.s_MapAreaDict.Keys)
                continue;
            }
            var _areaList = DungeonStage.s_MapAreaDict[_key];
            if (_areaList == null)
            {
                continue;
            }
            MapArea _area = null;
            for (int i = 0; i < _areaList.Count; ++i)
            {
                _area = _areaList[i];
                if (_area != currentBossArea)
                {
                    if ((int)_key >= 3000)
                    continue;
                }
                if (_area.IsPosOut(_player.Pos))
                {
                    SelectTarget = null;
                    if (atkBossID != 0)
                    {
                        var _areaList = DungeonStage.s_MapAreaDict[_key];
                        if (_areaList != null)
                        {
                            MapArea _area = null;
                            for (int i = 0; i < _areaList.Count; ++i)
                            {
                                _area = _areaList[i];
                                if (_area == currentBossArea)
                                {
                                    if (_area.IsPosOut(_player.Pos))
                                    {
                                        LockTarget = SelectTarget = null;
                                        if (atkBossID != 0)
                                        {
                                            MapTransferUtility.Instance.MoveToNPC((int)atkBossID);
                                        }
                                    }
                                }
                            }
                        }
                        MapTransferUtility.Instance.MoveToNPC((int)atkBossID);
                    }
                }
            }