少年修仙传客户端代码仓库
client_Hale
2018-09-10 5127a80ac9cd4900e2951fc8f0380984a5e34d99
3357 脱机挂优化
2个文件已删除
4个文件已修改
395 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0405_tagPlayerDisappear.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0434_tagAreaPlayerAppearEx.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GAMgr.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Player.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_PlayerOffLine.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_PlayerOffLine.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0405_tagPlayerDisappear.cs
@@ -30,6 +30,9 @@
            {
                GAMgr.Instance.ServerDie(vNetData.Players[i]);
                GAMgr.Instance.Release(_actor);
                // 离线玩家
                GAMgr.Instance.RemoveOffLinePlayer(vNetData.Players[i]);
            }
            else
            {
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0434_tagAreaPlayerAppearEx.cs
@@ -1,8 +1,10 @@
using UnityEngine;
using System.Collections;
//04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
//04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
public class DTC0434_tagAreaPlayerAppearEx : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
@@ -21,6 +23,12 @@
        if (_player != null)
        {
            // 异常
        }
        // 离线玩家
        if (vNetData.State == 1)
        {
            GAMgr.Instance.AddOffLinePlayer(vNetData.PlayerID);
        }
        _player = GAMgr.Instance.RequestPlayer<GA_Player>(vNetData.PlayerID, E_ActorGroup.Player, vNetData);
@@ -70,5 +78,7 @@
            StatusMgr.Instance.Request(_h0605);
        }
    }
}
}
Fight/GameActor/GAMgr.cs
@@ -63,6 +63,8 @@
    // 客户端id对应相应角色
    private Dictionary<uint, GActor> m_Cid2GA;
    private List<uint> m_OffLineList;
    // 服务端通知的死亡目标对应的客户端id,
    // 这里为了处理可能出现的无法死亡现象,对每一只目标进行计时,强制其死亡
    private List<uint> serverDeadList = new List<uint>();
@@ -85,10 +87,91 @@
            m_AllList = new List<GActor>();
            m_Sid2Cid = new Dictionary<uint, uint>();
            m_Cid2GA = new Dictionary<uint, GActor>();
            m_OffLineList = new List<uint>();
            m_Inited = true;
            SystemSetting.Instance.playerSyncCountChangeEvent += OnPlayerSyncCountChange;
            SystemSetting.Instance.OnSettingChanged += OnSettingChanged;
        }
    }
    public void AddOffLinePlayer(uint sid)
    {
        if (m_OffLineList.Contains(sid))
        {
            return;
        }
        m_OffLineList.Add(sid);
    }
    public void RemoveOffLinePlayer(uint sid)
    {
        if (m_OffLineList.Contains(sid))
        {
            m_OffLineList.Remove(sid);
        }
    }
    public void ClearOffLinePlayer()
    {
        m_OffLineList.Clear();
    }
    private float m_UpdateOffLineInterval;
    private List<uint> m_CacheList = new List<uint>();
    private List<uint> m_ContaintList = new List<uint>();
    private void UpdateOffLinePlayer()
    {
        if (m_OffLineList == null || m_OffLineList.Count == 0)
        {
            return;
        }
        if (Time.realtimeSinceStartup - m_UpdateOffLineInterval > 2)
        {
            m_CacheList.Clear();
            m_ContaintList.Clear();
            int _count = Mathf.Min(m_OffLineList.Count, 4);
            //Debug.LogFormat("此次将会有: {0} 个挂机者释放技能", _count);
            for (int i = 0; i < m_OffLineList.Count; ++i)
            {
                m_CacheList.Add(m_OffLineList[i]);
            }
            int _time = 0;
            while (m_ContaintList.Count < _count)
            {
                int _index = UnityEngine.Random.Range(0, m_CacheList.Count);
                m_ContaintList.Add(m_CacheList[_index]);
                //Debug.LogFormat("添加对象: {0}, 已添加: {1} 个", m_CacheList[_index], m_ContaintList.Count);
                m_CacheList.RemoveAt(_index);
                if (_time > _count)
                {
                    //Debug.LogFormat("共添加了: {0} 个玩家", m_ContaintList.Count);
                    break;
                }
                _time++;
            }
            GA_Player _player = null;
            for (int i = 0; i < m_ContaintList.Count; ++i)
            {
                _player = GAMgr.Instance.GetBySID(m_ContaintList[i]) as GA_Player;
                if (_player == null)
                {
                    continue;
                }
                _player.UpdateOffLineAction();
            }
            m_UpdateOffLineInterval = Time.realtimeSinceStartup;
        }
    }
@@ -838,6 +921,8 @@
        {
            m_AllList[i].Update();
        }
        UpdateOffLinePlayer();
    }
    public void DoLateUpdate()
Fight/GameActor/GA_Player.cs
@@ -16,6 +16,8 @@
    private CmdManager m_CmdManager;
    private int m_ComAtkIndex;// 普攻索引
    protected override void OnInit(GameNetPackBasic package)
    {
        m_H0434 = package as H0434_tagAreaPlayerAppearEx;
@@ -542,4 +544,112 @@
    {
        m_CmdManager.Clear();
    }
    public void UpdateOffLineAction()
    {
        if (!IsIdle())
        {
            return;
        }
        if (SelectTarget == null)
        {
            SelectTarget = GAMgr.Instance.GetCloserFightNpc(Pos);
        }
        if (SelectTarget != null)
        {
            destForward = Forward = MathUtility.ForwardXZ(SelectTarget.Pos, Pos);
        }
        Skill _castSkill = null;
        int _skillIndex = UnityEngine.Random.Range(0, JobSetup.HangupSkillList.Length);
        if (SkillMgr.Get(JobSetup.HangupSkillList[_skillIndex]).IsValid())
        {
            _castSkill = SkillMgr.Get(JobSetup.HangupSkillList[_skillIndex]);
        }
        if (_castSkill == null)
        {
            if (m_ComAtkIndex > JobSetup.ComAtkIdList.Length - 1)
            {
                m_ComAtkIndex = 0;
            }
            int _comSkillId = JobSetup.ComAtkIdList[m_ComAtkIndex];
            _castSkill = SkillMgr.Get(_comSkillId);
            m_ComAtkIndex += 1;
        }
        if (_castSkill != null)
        {
            SkillMgr.CastSkill(ServerInstID, _castSkill.id, true);
            Vector3 _targetPosition = Pos + Forward * (_castSkill.skillInfo.config.AtkDist * .5f);
            _targetPosition.y = 0;
            UnityEngine.AI.NavMeshHit _navMeshHit;
            if (UnityEngine.AI.NavMesh.Raycast(Pos, _targetPosition, out _navMeshHit, -1))
            {
                _targetPosition = _navMeshHit.position;
            }
            _targetPosition.y = Pos.y;
            _castSkill.targetPosition = _targetPosition;
            if (_castSkill.skillInfo.config.Skillactmark > 0
             && _castSkill.skillInfo.config.Skillactmark < 20)
            {
                switch (_castSkill.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 (_castSkill.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;
                }
            }
        }
    }
}
Fight/GameActor/GA_PlayerOffLine.cs
File was deleted
Fight/GameActor/GA_PlayerOffLine.cs.meta
File was deleted