| Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0407_tagNPCDisappear.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/BossFakeLineUtility.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/MapTransferUtility.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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)) {