少年修仙传客户端代码仓库
0312 完善机器人AI,自动飘渺仙域本地记录添加玩家ID避免同机器新号会开启自动化飘渺问题
7个文件已修改
193 ■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB216_tagMCStartCustomSceneResult.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/FakePlayer/FakePlayerController.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/FakePlayer/FakePlayerManager.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/FakePlayer/GA_FakePlayer.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/FakePlayer/PartialMapnpcConfig.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionAutoSettingWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB216_tagMCStartCustomSceneResult.cs
@@ -16,8 +16,6 @@
        var package = vNetPack as HB216_tagMCStartCustomSceneResult;
        ClientDungeonStageUtility.ReceiveStartCustomDungeonResult(package);
        GA_Hero.startAutoHazyRegion = true;
        if (package.MapID != 0)
            GA_Hero.startAutoHazyRegion = true;
    }
}
Fight/FakePlayer/FakePlayerController.cs
@@ -24,7 +24,6 @@
    public bool IsDone;
    private GA_FakePlayer m_Player;
    private int currentMoveToNpc = 0;
    public E_BehaviourType BehaviourType { get; private set; }
    public float m_WaitingTime = 0;
    public float m_RandomIdelTime = 0;
@@ -69,19 +68,15 @@
        m_Duration = FakePlayerManager.EachPlayerLastTime;
        BehaviourType = data.behaviourType;
        currentMoveToNpc = 0;
        // 从已经刷出的NPC中随机出生位置
        Vector3 _bornPos = GetRandomNpcPosition();
        if (_bornPos == Vector3.zero)
        var _randomDir = new Vector3(Random.Range(-1f, -.3f), 0, Random.Range(-.9f, .9f));
        if (Random.Range(1, 3) == 1)
        {
            // 如果没有已经刷出的,从该地图的所有npc中取最近的
            _bornPos = GetCloserNpcPosition();
            _randomDir = new Vector3(Random.Range(.3f, 1f), 0, Random.Range(-.9f, .9f));
        }
        if (_bornPos == Vector3.zero)
        {
            _bornPos = FakePlayerManager.LastStandPos;
        }
        var _randomDir = new Vector3(Random.Range(-.5f, .5f), 0, Random.Range(-.5f, .5f));
        _bornPos = _bornPos + _randomDir;
        GActor.TryGetValidPos(_bornPos, ref _bornPos);
@@ -122,11 +117,22 @@
                    case 1:// 等待站立的随机时间结束
                        if (Time.time > m_WaitingTime)
                        {
                            var _nextPosition = GetRandomNpcPosition();
                            Vector3 _nextPosition = Vector3.zero;
                            bool fight = false;
                            if (Random.Range(0, 3) == 1)
                            {
                                fight = true;
                                _nextPosition = GetFightNpcPosition();
                            }
                            else
                                _nextPosition = GetCloserNpcPosition();
                            if (_nextPosition == Vector3.zero)
                            {
                                fight = false;
                                _nextPosition = GetCloserNpcPosition();
                            }
                            if (_nextPosition == Vector3.zero)
                            {
                                m_Step = 0;
@@ -134,6 +140,7 @@
                            else
                            {
                                m_Player.MoveToPosition(_nextPosition, 1);
                                if (fight) BehaviourType = E_BehaviourType.Fight;
                                m_Step = 2;
                            }
                        }
@@ -147,6 +154,17 @@
                }
            }
        }
        else if (BehaviourType == E_BehaviourType.Fight)
        {
            if (m_Player != null)
            {
                if (m_Player.IsIdle())
                {
                    if (!m_Player.PlaySkill())
                        BehaviourType = E_BehaviourType.MoveBeTweenNpc;
                }
            }
        }
        m_DurationEscapeTime += Time.deltaTime;
        if(m_DurationEscapeTime > m_Duration || m_Player.Pos.x == 10000)
@@ -155,38 +173,28 @@
        }
    }
    private Vector3 GetNextNpcPosition()
    {
        var _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFunc);
        if (_list == null || _list.Count == 0)
        {
            return Vector3.zero;
        }
        GActorNpcNoFight _npc;
        for (int i = 0; i < _list.Count; ++i)
        {
            _npc = _list[i] as GActorNpcNoFight;
            if (_npc == null
             || _npc.NpcConfig.NPCID == currentMoveToNpc)
            {
                continue;
            }
            currentMoveToNpc = _npc.NpcConfig.NPCID;
            return _npc.Pos;
        }
        return Vector3.zero;
    }
    private Vector3 GetRandomNpcPosition()
    {
        var _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFunc);
        if (_list == null || _list.Count == 0)
        {
            return Vector3.zero;
            _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightNorm);
            if (_list == null || _list.Count == 0)
                return Vector3.zero;
        }
        var _random = Random.Range(0, _list.Count - 1);
        var _random = Random.Range(0, _list.Count);
        return _list[_random].Pos;
    }
    private Vector3 GetFightNpcPosition()
    {
        var _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightNorm);
        if (_list == null || _list.Count == 0)
            return Vector3.zero;
        var _random = Random.Range(0, _list.Count);
        return _list[_random].Pos;
    }
@@ -195,6 +203,7 @@
        var _mapID = PlayerDatas.Instance.baseData.MapID;
        var _mapNpcs = mapnpcConfig.GetNpcList(_mapID);
        var _list = new List<int>(_mapNpcs.Keys);
        /*
        _list.Sort((n1, n2) =>
        {
            var _d1 = MathUtility.DistanceSqrtXZ(PlayerDatas.Instance.hero.Pos,
@@ -212,7 +221,14 @@
                return _mapNpcs[_list[i]];
            }
        }
        return Vector3.zero;
        */
        if (_list == null || _list.Count == 0)
        {
            return Vector3.zero;
        }
        var _random = Random.Range(0, _list.Count);
        return _mapNpcs[_list[_random]];
    }
}
Fight/FakePlayer/FakePlayerManager.cs
@@ -5,9 +5,6 @@
{
    public static bool Start = false;
    public static Vector3 LastStandPos;
    public static int LastFindNPC;
    public static FuncConfigConfig gemTypeConfig = FuncConfigConfig.Get("FakePlayer");
    // 等级限制
    private static int m_LevelLimit = int.Parse(gemTypeConfig.Numerical1);
Fight/FakePlayer/GA_FakePlayer.cs
@@ -147,4 +147,94 @@
    {
        return false;
    }
    private int m_ComAtkIndex;
    private int m_AtkCount;
    public bool PlaySkill()
    {
        m_AtkCount++;
         Skill _skill = null;
        if (m_AtkCount == 1)
        {
            int skillID = ActorInfo.Job == 1 ? 50000 : 55000;
            _skill = SkillMgr.Get(skillID);
        }
        else if (m_AtkCount == 4)
        {
            m_AtkCount = 0;
            return false;
        }
        if (_skill == null)
        {
            if (m_ComAtkIndex > JobSetup.ComAtkIdList.Length - 1)
            {
                m_ComAtkIndex = 0;
            }
            int _comSkillId = JobSetup.ComAtkIdList[m_ComAtkIndex];
            _skill = SkillMgr.Get(_comSkillId);
            m_ComAtkIndex += 1;
        }
        SkillMgr.CastSkill(ServerInstID, _skill.id);
        if (_skill.skillInfo.config.Skillactmark > 0
                     && _skill.skillInfo.config.Skillactmark < 20)
        {
            switch (_skill.skillInfo.config.Skillactmark)
            {
                case 10:
                    Play(GAStaticDefine.State_Attack1Hash, 0);
                    break;
                case 11:
                    Play(GAStaticDefine.State_Attack2Hash, 0);
                    break;
                case 12:
                    Play(GAStaticDefine.State_Attack3Hash, 0);
                    break;
                case 13:
                    Play(GAStaticDefine.State_Attack4Hash, 0);
                    break;
            }
        }
        else
        {
            switch (_skill.skillInfo.config.Skillactmark)
            {
                case 21:
                    Play(GAStaticDefine.State_Skill21, 0);
                    break;
                case 22:
                    Play(GAStaticDefine.State_Skill22, 0);
                    break;
                case 23:
                    Play(GAStaticDefine.State_Skill23, 0);
                    break;
                case 24:
                    Play(GAStaticDefine.State_Skill24, 0);
                    break;
                case 25:
                    Play(GAStaticDefine.State_Skill25, 0);
                    break;
                case 26:
                    Play(GAStaticDefine.State_Skill26, 0);
                    break;
                case 27:
                    Play(GAStaticDefine.State_Skill27, 0);
                    break;
                case 28:
                    Play(GAStaticDefine.State_Skill28, 0);
                    break;
                case 29:
                    Play(GAStaticDefine.State_Skill29, 0);
                    break;
                case 99:
                    Play(GAStaticDefine.State_RollHash, 0);
                    break;
            }
        }
        return true;
    }
}
Fight/FakePlayer/PartialMapnpcConfig.cs
@@ -13,10 +13,10 @@
        }
        Vector3 _npcPos = GAStaticDefine.GetClientPostionFromHex(HexPosNPCRefreshAreaChaseArea);
        var position = new Vector3(_npcPos.x, 0, _npcPos.y);
        if (!mapNpcIDict[MapID].ContainsKey(NPCID) && NPCType == (int)E_NpcType.Func)
        {
            mapNpcIDict[MapID].Add(NPCID, _npcPos);
            mapNpcIDict[MapID].Add(NPCID, position);
        }
    }
System/HazyRegion/HazyRegionAutoSettingWin.cs
@@ -47,7 +47,7 @@
            if (PlayerDatas.Instance.baseData.VIPLv >= 3)
            {
                model.auto = !model.auto;
                LocalSave.SetBool("HazyRegionAutoSetting",model.auto);
                LocalSave.SetBool("HazyRegionAutoSetting" + PlayerDatas.Instance.PlayerId, model.auto);
            }
            else
            {
System/HazyRegion/HazyRegionModel.cs
@@ -249,7 +249,7 @@
            autoOpenLimitLevel = int.Parse(funcConfig.Numerical1);
            int.TryParse(funcConfig.Numerical2, out autoOpenLimitTimes);
            auto = LocalSave.GetBool("HazyRegionAutoSetting", false);
            auto = LocalSave.GetBool("HazyRegionAutoSetting" + PlayerDatas.Instance.PlayerId, false);
        }
        public bool TryGetIncident(int id, out Incident incident)