From ef31ad38399d5c9a3f6a52f42aa4bdba8adb31ad Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:57 +0800
Subject: [PATCH] 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化

---
 System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs |  204 +++++++++++++++++++++++++++++----------------------
 1 files changed, 116 insertions(+), 88 deletions(-)

diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 01b27ee..cd0ae2a 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -30,6 +30,8 @@
         public event Action UpdateMatchPlayersEvent;
         public bool loginQueryMatch = false;
 
+        public Dictionary<int, GA_PlayerClient.PlayerInfo> robots = new Dictionary<int, GA_PlayerClient.PlayerInfo>();
+
         public override void Init()
         {
             ParseFuncConfig();
@@ -47,7 +49,6 @@
             CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent -= UpdateSeason;
             TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
             GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
-            dungeonModel.updateMissionEvent -= UpdateFBHelp;
             rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
             TimeMgr.Instance.OnDayEvent -= OnDay;
@@ -75,7 +76,6 @@
             GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
             rewardModel.CrossRealmPKAwardStateUpdate += UpdateDayAwardState;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdateDayAwardState;
-            dungeonModel.updateMissionEvent += UpdateFBHelp;
             TimeMgr.Instance.OnDayEvent += OnDay;
             UpdateServerOpenDay();
             UpdateDayAwardState();
@@ -127,6 +127,18 @@
                 }
             }
             recordDataMapId = dataMapId;
+            if (dataMapId == CrossServerDataMapId || dataMapId == 1000)
+            {
+                PersonalEnemy.OnMirrorPlayerAppear += OnPlayerAppear;
+            }
+        }
+
+        private void OnPlayerAppear(GA_Player player)
+        {
+            CrossServerLogin.Instance.UpdatePKPlayerInfo(player);
+            PersonalEnemy.OnMirrorPlayerAppear -= OnPlayerAppear;
+            dungeonModel.dungeonFightStage = DungeonFightStage.Normal;
+
         }
 
         private void UpdateMinute()
@@ -182,47 +194,6 @@
             UpdateCrossMatchRedpoint();
         }
 
-        private void UpdateFBHelp()
-        {
-            if (!CrossServerUtility.IsCrossServerOneVsOne())
-            {
-                return;
-            }
-
-            var hero = PlayerDatas.Instance.hero;
-            var mission = dungeonModel.mission;
-            if (mission.prepareTime > 0)
-            {
-                roundEndTime = DateTime.Now + new TimeSpan(mission.prepareTime * TimeSpan.TicksPerMillisecond);
-                if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
-                {
-                    WindowCenter.Instance.Open<CrossServerOneVsOneRoundWin>();
-                }
-                if (hero != null)
-                {
-                    hero.Behaviour.StopHandupAI(true);
-                    hero.StopPathFind();
-                }
-
-            }
-            DebugEx.LogFormat("鍓湰甯姪淇℃伅鍥炲悎鏄惁寮�濮嬶細锛歿0}", mission.isStart);
-            if (mission.isStart == 1)
-            {
-                if (WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
-                {
-                    WindowCenter.Instance.Close<CrossServerOneVsOneRoundWin>();
-                }
-
-                if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneStartFightWin>())
-                {
-                    WindowCenter.Instance.Open<CrossServerOneVsOneStartFightWin>();
-                }
-                if (hero != null)
-                {
-                    hero.Behaviour.StartHandupAI();
-                }
-            }
-        }
 
         public List<AwardType> GetDayAwardsList()
         {
@@ -454,13 +425,70 @@
             matchPlayers.Clear();
             for (int i = 0; i < package.MatchPlayerCount; i++)
             {
-                matchPlayers.Add(package.MatchPlayer[i]);
-                //鏈嶅姟绔病鏈変富鍔ㄦ帹閫佺殑璇濓紝杩欓噷闇�瑕佽姹備竴娆$帺瀹剁紦瀛樻暟鎹�
+                int playerID = (int)package.MatchPlayer[i].PlayerID;
+                if (playerID > 10000)
+                {
+                    matchPlayers.Add(package.MatchPlayer[i]);
+                    //鏈嶅姟绔病鏈変富鍔ㄦ帹閫佺殑璇濓紝杩欓噷闇�瑕佽姹備竴娆$帺瀹剁紦瀛樻暟鎹�
+                    ModelCenter.Instance.GetModel<RoleParticularModel>().ViewPlayerCacheData(playerID);
+                }
+                else
+                {
+                    int job = (byte)UnityEngine.Random.Range(1, 3);
+                    string name = ClientCrossServerOneVsOne.GetRandomOpponentName(job);
+                    int level = 1;
+                    int fightPower = 0;
+                    int fightPowerEx = 0; //鎴樺姏锛屾暣闄や嚎閮ㄥ垎
+                    ulong tmpFightPower = 0;
+                    if (playerID == 1)
+                    {
+                        level = Math.Min((int)(PlayerDatas.Instance.baseData.LV * 1.2), 999);
+                        tmpFightPower = PlayerDatas.Instance.baseData.FightPoint*2;
+                    }
+                    else if (playerID == 2)
+                    {
+                        level = Math.Max((int)(PlayerDatas.Instance.baseData.LV * 0.8), 160);
+                        tmpFightPower = (ulong)(PlayerDatas.Instance.baseData.FightPoint * 0.8);
+                    }
+                    else if (playerID == 3)
+                    {
+                        level = Math.Max((int)(PlayerDatas.Instance.baseData.LV * 0.6), 160);
+                        tmpFightPower = (ulong)(PlayerDatas.Instance.baseData.FightPoint * 0.5);
+                    }
+                    fightPower = (int)(tmpFightPower % 100000000);
+                    fightPowerEx = (int)(tmpFightPower / 100000000);
+
+                    //鏈哄櫒浜�
+                    matchPlayers.Add(new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer()
+                    {
+                        PlayerID = (uint)playerID,
+                        PlayerName = name,
+                        Job = (byte)job,
+                        LV = (ushort)level,
+                        RealmLV = PlayerDatas.Instance.baseData.realmLevel,
+                        Face = (uint)AvatarHelper.GetAvatarDefaultID(job),
+                        FacePic = (uint)AvatarHelper.GetAvatarFrameDefaultID(job),
+                        FightPower = (uint)fightPower,
+                        FightPowerEx = (uint)fightPowerEx
+                    });
+
+                    CreateRobot(matchPlayers[i]);
+                }
+                
+
             }
 
             UpdateMatchPlayersEvent?.Invoke();
         }
 
+        void CreateRobot(HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer player)
+        {
+            var job = player.Job;
+            var playerName = player.PlayerName;
+            var level = player.LV;
+            var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
+            robots[(int)player.PlayerID] = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, 1);
+        }
 
         BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
         /// <summary>
@@ -489,56 +517,56 @@
             GameNetSystem.Instance.SendInfo(pKBuy);
         }
 
-        public bool TryGetMatchTip()
-        {
-            int mapId = PlayerDatas.Instance.baseData.MapID;
-            bool isCrossDungeon = CrossServerUtility.IsCrossServer();
-            if (isCrossDungeon)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching3");
-                return true;
-            }
+        //public bool TryGetMatchTip()
+        //{
+        //    int mapId = PlayerDatas.Instance.baseData.MapID;
+        //    bool isCrossDungeon = CrossServerUtility.IsCrossServer();
+        //    if (isCrossDungeon)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching3");
+        //        return true;
+        //    }
 
-            var mapConfig = MapConfig.Get(mapId);
-            bool isDungeon = mapConfig != null && mapConfig.MapFBType != 0 ? true : false;
-            if (isDungeon)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching4");
-                return true;
-            }
+        //    var mapConfig = MapConfig.Get(mapId);
+        //    bool isDungeon = mapConfig != null && mapConfig.MapFBType != 0 ? true : false;
+        //    if (isDungeon)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching4");
+        //        return true;
+        //    }
 
-            var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
-            if (deadModel.playerIsDie)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching5");
-                return true;
-            }
+        //    var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
+        //    if (deadModel.playerIsDie)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching5");
+        //        return true;
+        //    }
 
-            var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
-            bool isTeamMatch = teamModel.isMatching;
-            if (isTeamMatch)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching6");
-                return true;
-            }
+        //    var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+        //    bool isTeamMatch = teamModel.isMatching;
+        //    if (isTeamMatch)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching6");
+        //        return true;
+        //    }
 
-            bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
-            if (isDungeonPrepare)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching7");
-                return true;
-            }
+        //    bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
+        //    if (isDungeonPrepare)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching7");
+        //        return true;
+        //    }
 
-            int remainMatchNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
-            if (remainMatchNum <= 0)
-            {
-                SysNotifyMgr.Instance.ShowTip("CrossMatching16");
-                return true;
-            }
+        //    int remainMatchNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
+        //    if (remainMatchNum <= 0)
+        //    {
+        //        SysNotifyMgr.Instance.ShowTip("CrossMatching16");
+        //        return true;
+        //    }
 
-            return false;
+        //    return false;
 
-        }
+        //}
 
         public bool TryGetBuyMatchTimes(string key)
         {

--
Gitblit v1.8.0