少年修仙传客户端代码仓库
client_Wu Xijin
2018-09-28 a1f75e41be6e9f58e235f1832a926864c5fc6fc5
3811 【前端】前期BOSS分线修改,修改60秒原则.
6个文件已修改
158 ■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0407_tagNPCDisappear.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/BossFakeLineUtility.cs 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/MapTransferUtility.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -28,9 +28,6 @@
        MapTransferUtility.Instance.lastMoveToWorldBossTime = float.MinValue;
        MapTransferUtility.Instance.lastMoveToWorldBossNpcID = 0;
        BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime = float.MaxValue;
        BossFakeLineUtility.Instance.makeFakeLineTimes = 0;
        BossFakeLineUtility.Instance.showFakeLine = false;
        if (beforePlayerDataInitializeEvent != null)
        {
@@ -45,7 +42,6 @@
        {
            Debug.LogError(ex);
        }
        if (vNetData.LV == 1)
        {
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs
@@ -29,7 +29,7 @@
        if (BossInfoConfig.IsStone((int)vNetData.NPCID))
        {
            BossFakeLineUtility.Instance.HasSawLineStoneRecently((int)vNetData.NPCID, PlayerDatas.Instance.baseData.FBID);
            BossFakeLineUtility.Instance.RecordSawStone((int)vNetData.NPCID, PlayerDatas.Instance.baseData.FBID);
        }
        if (GA_PlayerXMZZ.xmzzDict.ContainsKey(vNetData.NPCID))
@@ -42,13 +42,7 @@
            if (Config.Instance.ContainKey<WorldBossConfig>((int)vNetData.NPCID))
            {
                WorldBossConfig _worldBoss = Config.Instance.Get<WorldBossConfig>((int)vNetData.NPCID);
                if (vNetData.NPCID == MapTransferUtility.Instance.lastMoveToWorldBossNpcID)
                {
                    MapTransferUtility.Instance.lastMoveToWorldBossTime = Time.realtimeSinceStartup;
                }
                BossFakeLineUtility.Instance.HasSawLineBossRecently((int)vNetData.NPCID, PlayerDatas.Instance.baseData.FBID);
                BossFakeLineUtility.Instance.RecordSawBoss((int)vNetData.NPCID, PlayerDatas.Instance.baseData.FBID);
            }
            if (_npcConfig == null)
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0407_tagNPCDisappear.cs
@@ -38,8 +38,7 @@
                if (Config.Instance.ContainKey<WorldBossConfig>(_npcConfig.NPCID))
                {
                    BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime = Time.realtimeSinceStartup + 60;
                    BossFakeLineUtility.Instance.lastBossNpcID = (uint)_npcConfig.NPCID;
                    BossFakeLineUtility.Instance.RecordSawBoss(_npcConfig.NPCID,PlayerDatas.Instance.baseData.FBID);
                }
            }
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
@@ -35,10 +35,9 @@
                MapTransferUtility.Instance.lastMoveToWorldBossTime = Time.realtimeSinceStartup + 61;
            }
            if (BossFakeLineUtility.Instance.lastBossNpcID == _targetFight.NpcConfig.NPCID)
            if (BossFakeLineUtility.Instance.recordBossId == _targetFight.NpcConfig.NPCID)
            {
                BossFakeLineUtility.Instance.lastBossNpcID = 0;
                BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime = Time.realtimeSinceStartup - 61;
                BossFakeLineUtility.Instance.ClearBossRecord();
            }
            if (_targetFight.NpcConfig.IsBoss > 1 && vNetData.KillerID == PlayerDatas.Instance.baseData.PlayerID)
Fight/BossFakeLineUtility.cs
@@ -8,15 +8,13 @@
public class BossFakeLineUtility : Singleton<BossFakeLineUtility>
{
    int m_MakeFakeLineTimes = 0;
    public int makeFakeLineTimes
    {
    public int makeFakeLineTimes {
        get { return m_MakeFakeLineTimes; }
        set { m_MakeFakeLineTimes = Mathf.Clamp(value, 0, int.MaxValue); }
    }
    bool m_ShowFakeLine = false;
    public bool showFakeLine
    {
    public bool showFakeLine {
        get { return m_ShowFakeLine; }
        set { m_ShowFakeLine = value; }
    }
@@ -28,7 +26,13 @@
    //这个值在初见boss和最后看见boss的时候记录,其值为time.time+1分钟,这段时间内告诉玩家其所在分线的boss的死亡情况,否则告诉玩家公共boss的死亡情况。
    public uint lastBossNpcID;
    public float inMistakeForBossAliveOverTime = float.MaxValue;
    public int recordBossId { get { return bossSawRecorder.npcId; } }
    NpcSawRecorder bossSawRecorder = new NpcSawRecorder();
    NpcSawRecorder stoneSawRecorder = new NpcSawRecorder();
    public bool IsShuntBoss(int _bossId)
    {
@@ -70,31 +74,40 @@
        }
    }
    public void RecordSawStone(int npcId, int lineId)
    {
        stoneSawRecorder.Record(npcId, lineId, Time.realtimeSinceStartup);
    }
    public bool HasSawLineStoneRecently(int bossId, int lineId)
    {
        var config = Config.Instance.Get<BossInfoConfig>(bossId);
        if (config == null)
        {
            return false;
        }
        return stoneSawRecorder.HasSawRecently(bossId, lineId, 60);
    }
        var stoneId = config.StoneNPCID;
    public void ClearBossRecord()
    {
        bossSawRecorder.Clear();
    }
        //补充具体逻辑
    public void ClearStoneRecord()
    {
        stoneSawRecorder.Clear();
    }
        return false;
    public void RecordSawBoss(int bossId, int lineId)
    {
        bossSawRecorder.Record(bossId, lineId, Time.realtimeSinceStartup);
    }
    public bool HasSawBossRecently(int bossId)
    {
        return stoneSawRecorder.HasSawRecently(bossId, 60);
    }
    public bool HasSawLineBossRecently(int bossId, int lineId)
    {
        var isMistakeBoss = lastBossNpcID == bossId && Time.realtimeSinceStartup < inMistakeForBossAliveOverTime;
        //补充具体逻辑
        inMistakeForBossAliveOverTime = Time.realtimeSinceStartup + 61;
        lastBossNpcID = (uint)bossId;
        return false;
        return bossSawRecorder.HasSawRecently(bossId, lineId, 60);
    }
    FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
@@ -150,7 +163,77 @@
    private void OnAccountSwitch()
    {
        m_MakeFakeLineTimes = 0;
        bossKillTimes.Clear();
        ClearBossRecord();
        ClearStoneRecord();
    }
    class NpcSawRecorder
    {
        public int npcId { get; private set; }
        int m_LineId = -1;
        public int lineId {
            get { return m_LineId; }
            private set { m_LineId = value; }
        }
        float m_Time = -99999;
        public float time {
            get { return m_Time; }
            private set { m_Time = value; }
        }
        public void Record(int npcId, int lineId, float time)
        {
            this.npcId = npcId;
            this.lineId = lineId;
            this.time = time;
        }
        public void Clear()
        {
            this.npcId = 0;
            this.lineId = -1;
            this.time = -99999;
        }
        public bool HasSawRecently(int npcId, float second)
        {
            if (this.npcId != npcId)
            {
                return false;
            }
            if (Time.realtimeSinceStartup - this.time > 60)
            {
                return false;
            }
            return true;
        }
        public bool HasSawRecently(int npcId, int lineId, float second)
        {
            if (this.npcId != npcId)
            {
                return false;
            }
            if (this.lineId != lineId)
            {
                return false;
            }
            if (Time.realtimeSinceStartup - this.time > 60)
            {
                return false;
            }
            return true;
        }
    }
}
Fight/MapTransferUtility.cs
@@ -18,14 +18,11 @@
        Fight,
    }
    private E_MapTransferDoType m_MapTransferType;
    public E_MapTransferDoType MapTransferDoType
    {
        get
        {
    public E_MapTransferDoType MapTransferDoType {
        get {
            return m_MapTransferType;
        }
        set
        {
        set {
            m_MapTransferType = value;
#if UNITY_EDITOR
            // Debug.LogFormat("设置方式: {0}", m_MapTransferType);
@@ -124,8 +121,7 @@
    #endregion
    #region npc
    public int NpcID
    {
    public int NpcID {
        get; set;
    }
    #endregion
@@ -374,8 +370,7 @@
                    else
                    {
                        // 处于相同地图
                        if (BossFakeLineUtility.Instance.lastBossNpcID != npcID
                            || Time.realtimeSinceStartup - BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime > 60)
                        if (!BossFakeLineUtility.Instance.HasSawBossRecently(npcID))
                        {
                            if (BossFakeLineUtility.Instance.IsShuntBoss(npcID))
                            {