From 415f067849cc3c3b3a7111cf7b55fbfbdb548c19 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 27 二月 2025 23:02:45 +0800
Subject: [PATCH] 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化  - 跨服排位赛

---
 System/GeneralConfig/GeneralDefine.cs                                           |    3 
 LogicProject/System/CrossServerQualifying/CrossServerQualifyingSettlementWin.cs |   44 ---
 LogicProject/System/CrossServerQualifying/CrossServerQualifying8Win.cs          |  133 ++++++++++-
 LogicProject/System/CrossServerQualifying/CrossServerQualifyingRaceCell.cs      |    4 
 System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs                          |    4 
 LogicProject/Protocol/ILPackageRegedit.cs                                       |    2 
 System/Dungeon/DungeonModel.cs                                                  |    3 
 LogicProject/System/CrossServerQualifying/CrossServerQualifying64Win.cs         |  130 ++++++++++-
 LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs         |  238 +++++++++++++-------
 LogicProject/System/CrossServerQualifying/ILCrossServerModel.cs                 |   10 
 System/Login/CrossServerLogin.cs                                                |    3 
 LogicProject/System/CrossServerQualifying/CrossServerQualifyingTimeCell.cs      |    3 
 Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs         |   11 
 LogicProject/System/PlayerCommon/HeroControler.cs                               |   12 
 /dev/null                                                                       |   11 -
 System/CrossServerOneVsOne/FightingPKWin.cs                                     |    2 
 System/DailyQuest/ActivityPlaceWin.cs                                           |    2 
 17 files changed, 419 insertions(+), 196 deletions(-)

diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
index ce94bb9..4fac1d0 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
@@ -28,11 +28,7 @@
                     break;
                 case CrossServerOneVsOneModel.CrossServerDataMapId:
                 case ClientCrossServerOneVsOne.mapId:
-                    if (!WindowCenter.Instance.IsOpen<BattlePrepareCoolDownWin>())
-                    {
-                        WindowCenter.Instance.Open<BattlePrepareCoolDownWin>();
-                    }
-                    break;
+                case CrossServerQualifyingModel.DATA_MAPID:
                 case ArenaManager.MapID:
                     if (!WindowCenter.Instance.IsOpen<BattlePrepareCoolDownWin>())
                     {
@@ -44,9 +40,8 @@
         switch (mapId)
         {
             case CrossServerOneVsOneModel.CrossServerDataMapId:
-                WindowCenter.Instance.Close<DungeonEndCoolDownWin>();
-                WindowCenter.Instance.Close<DungeonBeginCoolDownWin>();
-                break;
+            case ClientCrossServerOneVsOne.mapId:
+            case CrossServerQualifyingModel.DATA_MAPID:
             case ArenaManager.MapID:
                 WindowCenter.Instance.Close<DungeonEndCoolDownWin>();
                 WindowCenter.Instance.Close<DungeonBeginCoolDownWin>();
diff --git a/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs b/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs
deleted file mode 100644
index 64698fb..0000000
--- a/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-// C0 16 璺ㄦ湇鎺掍綅鎴樻枟缁撴灉 #tagGCCrossChampionshipPKOver
-
-public class IL_DTCC016_tagGCCrossChampionshipPKOver : DtcBasic {
-    public override void Done(GameNetPackBasic vNetPack) {
-        base.Done(vNetPack);
-        IL_HC016_tagGCCrossChampionshipPKOver vNetData = vNetPack as IL_HC016_tagGCCrossChampionshipPKOver;
-        CrossServerQualifyingModel.Instance.UpdatePKResult(vNetData);
-    }
-}
diff --git a/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs.meta b/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs.meta
deleted file mode 100644
index fa317ea..0000000
--- a/LogicProject/Protocol/DTCFile/ServerPack/HC0_CrossRealm/IL_DTCC016_tagGCCrossChampionshipPKOver.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 4a0a59affbab8094dadd8096648a3884
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/LogicProject/Protocol/ILPackageRegedit.cs b/LogicProject/Protocol/ILPackageRegedit.cs
index 9e86ffd..b85db15 100644
--- a/LogicProject/Protocol/ILPackageRegedit.cs
+++ b/LogicProject/Protocol/ILPackageRegedit.cs
@@ -80,7 +80,7 @@
 
         //璺ㄦ湇鎺掍綅璧�
         Register(typeof(HC015_tagGCCrossChampionshipPKZoneGroupInfo), typeof(DTCC015_tagGCCrossChampionshipPKZoneGroupInfo));
-        Register(typeof(IL_HC016_tagGCCrossChampionshipPKOver), typeof(IL_DTCC016_tagGCCrossChampionshipPKOver));
+        //Register(typeof(IL_HC016_tagGCCrossChampionshipPKOver), typeof(IL_DTCC016_tagGCCrossChampionshipPKOver));
         Register(typeof(IL_HC022_tagGCChampionshipGuessPubInfo), typeof(IL_DTCC022_tagGCChampionshipGuessPubInfo));
         Register(typeof(IL_HC023_tagGCChampionshipGuessPriInfo), typeof(IL_DTCC023_tagGCChampionshipGuessPriInfo));
         Register(typeof(HC018_tagGCChampionshipOfficialInfo), typeof(DTCC018_tagGCChampionshipOfficialInfo));
diff --git a/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs b/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs
deleted file mode 100644
index 40e9e21..0000000
--- a/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-// C0 16 璺ㄦ湇鎺掍綅鎴樻枟缁撴灉 #tagGCCrossChampionshipPKOver
-
-public class IL_HC016_tagGCCrossChampionshipPKOver : GameNetPackBasic {
-    public uint GroupMark;    // 鍒嗙粍鏍囪瘑锛�64銆�32銆�16銆�8 - 64銆�32銆�16銆�8寮鸿禌锛�4 - 鍗婂喅璧涳紱 2 - 鍐宠禌
-    public string TimeStr;    // 缁撶畻鏃堕棿锛屾牸寮� yyyy-MM-dd HH:mm:ss
-    public byte OverType;    // 0-姝e父锛�1-鏈変汉绂荤嚎
-    public uint WinnerID;    // 鑳滄柟ID
-    public uint LoserID;    // 璐ユ柟ID
-    public byte RoundCount;    // PK鍥炲悎鏁�
-    public  uint[] RoundWinnerID;    // 鍥炲悎鑾疯儨ID鍒楄〃
-    public byte TagNameLen;
-    public string TagName;
-    public byte Rank;    // 鏈�缁堝悕娆★紝鍐宠禌鎵嶆湁
-
-    public IL_HC016_tagGCCrossChampionshipPKOver () {
-        _cmd = (ushort)0xC016;
-    }
-
-    public override void ReadFromBytes (byte[] vBytes) {
-        TransBytes (out GroupMark, vBytes, NetDataType.DWORD);
-        TransBytes (out TimeStr, vBytes, NetDataType.Chars, 19);
-        TransBytes (out OverType, vBytes, NetDataType.BYTE);
-        TransBytes (out WinnerID, vBytes, NetDataType.DWORD);
-        TransBytes (out LoserID, vBytes, NetDataType.DWORD);
-        TransBytes (out RoundCount, vBytes, NetDataType.BYTE);
-        TransBytes (out RoundWinnerID, vBytes, NetDataType.DWORD, RoundCount);
-        TransBytes (out TagNameLen, vBytes, NetDataType.BYTE);
-        TransBytes (out TagName, vBytes, NetDataType.Chars, TagNameLen);
-        TransBytes (out Rank, vBytes, NetDataType.BYTE);
-    }
-
-}
diff --git a/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs.meta b/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs.meta
deleted file mode 100644
index fedf424..0000000
--- a/LogicProject/Protocol/ServerPack/HC0_CrossRealm/IL_HC016_tagGCCrossChampionshipPKOver.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 8e76d7208d39eed4e92af6bd03d3efef
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifying64Win.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifying64Win.cs
index a99a2d1..2d45325 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifying64Win.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifying64Win.cs
@@ -17,16 +17,25 @@
     Button btn16;
     List<Image> selectImgs = new List<Image>();
     Button timeBtn;
-    ButtonEx enterGame;
     ScrollerController scroller;
-    Text timeTip;   //鏄剧ず鑷繁褰撳墠杩涘満淇℃伅鍜屽皬绐楁帹閫侀厤鍚�
     Button guessBtn;
     Image lineImg;
     Text waitTxt;
-    Image arrow;
-
-
-    
+    Image arrow;
+
+    ButtonEx enterGame;
+    Text pkResultText;
+    RectTransform pkTagetObjs; //鏈夋瘮璧涘満娆$殑鏃跺�欐樉绀�
+    Text timeTip;   //鏄剧ず鑷繁褰撳墠杩涘満淇℃伅鍜屽皬绐楁帹閫侀厤鍚�
+    Text pkTimesText;
+    Text pkScoreText;
+    RectTransform tagPlayerObj;
+    RectTransform todayRaceObj;
+    Text todayRaceText;
+    Button littleCloseBtn;
+
+
+
     #region Built-in
     protected override void BindController()
     {
@@ -47,6 +56,16 @@
         lineImg = proxy.GetWidgtEx<Image>("line");
         guessBtn = proxy.GetWidgtEx<Button>("guessBtn");
         arrow = proxy.GetWidgtEx<Image>("arrow");
+
+        pkResultText = proxy.GetWidgtEx<Text>("pkResult");
+        pkTagetObjs = proxy.GetWidgtEx<RectTransform>("chanllenge");
+        pkTimesText = proxy.GetWidgtEx<Text>("challengeTimes");
+        pkScoreText = proxy.GetWidgtEx<Text>("score");
+        tagPlayerObj = proxy.GetWidgtEx<RectTransform>("tagetPlayer");
+        todayRaceObj = proxy.GetWidgtEx<RectTransform>("raceTip");
+        todayRaceText = proxy.GetWidgtEx<Text>("todayrace");
+        littleCloseBtn = proxy.GetWidgtEx<Button>("littleClose");
+
     }
 
     protected override void AddListeners()
@@ -78,6 +97,11 @@
             arrow.SetActiveIL(false);
             WindowCenter.Instance.OpenIL<CrossServerQualifyingGuess8Win>();
         });
+
+        littleCloseBtn.SetListener(()=>{
+            CrossServerQualifyingModel.Instance.isShowRaceInfoYet = true;
+            todayRaceObj.SetActive(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
+        });
     }
 
     protected override void OnPreOpen()
@@ -96,7 +120,12 @@
         else
         {
             arrow.SetActiveIL(ILChampionshipTimeConfig.Get(battleID).StateValue == 80);
-        }
+        }
+
+        //椤堕儴鏅嬬骇淇℃伅鏄剧ず
+        var nextBattle = CrossServerQualifyingModel.Instance.GetMyNextBattle();
+        pkResultText.SetActive(nextBattle != 0);
+        pkResultText.text = Language.Get("CrossServerQualifying71", nextBattle);
     }
 
 
@@ -211,25 +240,92 @@
     void OnMinuteEvent()
     {
         var groupMark = CrossServerQualifyingModel.Instance.nowGroupMark;
-        enterGame.SetActiveIL(false);
+        pkTagetObjs.SetActiveIL(false);
+        todayRaceObj.SetActiveIL(false);
         timeTip.text = string.Empty;
         var findIndex = CrossServerQualifyingModel.Instance.groupBtnMarks.IndexOf(groupMark);
         if (findIndex != -1 && groupMark <= 64 && groupMark >= 16)
         {
             var isInBattle = CrossServerQualifyingModel.Instance.HaveMyBattle(groupMark);
-            enterGame.SetActiveIL(isInBattle);
-            if (isInBattle)
+            int battleID = CrossServerQualifyingModel.Instance.GetBattleID();
+            if (isInBattle && ILChampionshipTimeConfig.Get(battleID).StateValue % 10 == 2)
             {
-                var battleID = ILChampionshipTimeConfig.GetBattleID((int)groupMark * 10 + 2);
-                if (battleID != 0)
-                {
-                    timeTip.text = Language.Get("CrossServerQualifying20", CrossServerQualifyingModel.Instance.GetStartBattleTime(battleID));
-                    return;
+                pkTagetObjs.SetActiveIL(true);
+                //ItemOverdue104 {0}鍒�
+                //ItemTipTime1	鍓╀綑鏃堕棿锛�
+                //OSCActivityNotOpen	娲诲姩鏈紑濮�
+                //FamilyMatchAlreadyEnd < color =#109d06>宸茬粨鏉�</color>
+                double minute = CrossServerQualifyingModel.Instance.GetRaceEndRemindMinute(battleID);
+                if (minute >= 0)
+                {
+                    timeTip.text = StringUtility.Contact(Language.Get("ItemTipTime1"), " ", Language.Get("ItemOverdue104", (int)minute));
                 }
+                else
+                {
+                    timeTip.text = Language.Get("FamilyMatchAlreadyEnd");
+                }
+                ShowBattleInfo(groupMark);
             }
-        }
-        
 
+            if (isInBattle)
+            {
+                ShowTodayRaceInfo();
+            }
+        }
+    }
+
+    void ShowBattleInfo(uint groupMark)
+    {
+        uint tagPlayerID;
+        var battleResult = CrossServerQualifyingModel.Instance.GetMyBattleInfo(groupMark, out tagPlayerID);
+        int challengeCnt = battleResult.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID) ? battleResult[(int)PlayerDatas.Instance.baseData.PlayerID].Length : 0;
+        //FindPrecious_14	鎸戞垬娆℃暟:
+        pkTimesText.text = StringUtility.Contact(Language.Get("FindPrecious_14"), " ",
+            CrossServerQualifyingModel.Instance.challengeMaxCnt - challengeCnt,
+            "/", CrossServerQualifyingModel.Instance.challengeMaxCnt);
+
+        // 鎴樻枟缁撴灉鏄庣粏 {"playerID":[[绗�1灞�鑳滆礋,绗�1灞�鎬荤Н鍒�,鑳滆礋鍩虹鍒�,hp鍒�,鏃堕棿鍒哴, ...], ...}
+        int myScore = 0;
+        int tagScore = 0;
+        var keys = battleResult.Keys.ToList();
+        for (int i = 0; i < keys.Count; i++)
+        {
+            var key = keys[i];
+            if (key == (int)PlayerDatas.Instance.baseData.PlayerID)
+            {
+                for (int j = 0; j < battleResult[key].Length; j++)
+                {
+                    myScore += battleResult[key][j][1];
+                }
+            }
+            else
+            {
+                for (int j = 0; j < battleResult[key].Length; j++)
+                {
+                    tagScore += battleResult[key][j][1];
+                }
+            }
+        }
+        //L2033	姣斿垎锛�
+        pkScoreText.text = StringUtility.Contact( Language.Get("L2033"), " ", myScore, " - ", tagScore);
+
+        var _cell = tagPlayerObj.GetILBehaviour<CSQShootOutPlayerCell>();
+        _cell.Display(tagPlayerID, 0);
+    }
+    void ShowTodayRaceInfo()
+    {
+        todayRaceObj.SetActiveIL(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
+
+        string raceInfo = StringUtility.Contact(Language.Get("CrossServerQualifying70"), "</r>");
+        foreach (int mark in CrossServerQualifyingModel.Instance.groupBtnMarks)
+        { 
+            int tmpBattleID = ILChampionshipTimeConfig.GetBattleID(mark * 10 + 2);
+            var tmpConfig = ILChampionshipTimeConfig.Get(tmpBattleID);
+            raceInfo = StringUtility.Contact(raceInfo, "</r>", tmpConfig.Title, "    ", 
+                tmpConfig.StartHour.ToString("D2"), ":", tmpConfig.StartMinute.ToString("D2"), " - ",
+                tmpConfig.EndHour.ToString("D2"), ":", tmpConfig.EndMinute.ToString("D2"));
+        }
+        todayRaceText.text = raceInfo;
     }
 
     void UpdateRace()
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifying8Win.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifying8Win.cs
index a38efe7..6123290 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifying8Win.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifying8Win.cs
@@ -14,9 +14,7 @@
 {
     Transform raceTable;
     Text waitTxt;
-    Text timeTip;   //鏄剧ず鑷繁褰撳墠杩涘満淇℃伅鍜屽皬绐楁帹閫侀厤鍚�
     Button raceBtn;
-    ButtonEx enterGame;
     Button giftBtn;
     Button guessBtn;
     Text time1;
@@ -33,8 +31,17 @@
     Text fightPowerA;
     Text fightPowerB;
     Image arrow;
-    Text nextTime;
-
+    Text nextTime;
+
+    ButtonEx enterGame;
+    RectTransform pkTagetObjs; //鏈夋瘮璧涘満娆$殑鏃跺�欐樉绀�
+    Text timeTip;   //鏄剧ず鑷繁褰撳墠杩涘満淇℃伅鍜屽皬绐楁帹閫侀厤鍚�
+    Text pkTimesText;
+    Text pkScoreText;
+    RectTransform tagPlayerObj;
+    RectTransform todayRaceObj;
+    Text todayRaceText;
+    Button littleCloseBtn;
 
     #region Built-in
     protected override void BindController()
@@ -69,7 +76,15 @@
         fightPowerA = proxy.GetWidgtEx<Text>("fightPowerA");
         fightPowerB = proxy.GetWidgtEx<Text>("fightPowerB");
         arrow = proxy.GetWidgtEx<Image>("arrow");
-        nextTime = proxy.GetWidgtEx<Text>("nextTime");
+        nextTime = proxy.GetWidgtEx<Text>("nextTime");
+
+        pkTagetObjs = proxy.GetWidgtEx<RectTransform>("chanllenge");
+        pkTimesText = proxy.GetWidgtEx<Text>("challengeTimes");
+        pkScoreText = proxy.GetWidgtEx<Text>("score");
+        tagPlayerObj = proxy.GetWidgtEx<RectTransform>("tagetPlayer");
+        todayRaceObj = proxy.GetWidgtEx<RectTransform>("raceTip");
+        todayRaceText = proxy.GetWidgtEx<Text>("todayrace");
+        littleCloseBtn = proxy.GetWidgtEx<Button>("littleClose");
     }
 
     protected override void AddListeners()
@@ -88,6 +103,11 @@
 
         giftBtn.SetListener(() => {
             WindowCenter.Instance.OpenIL<CrossServerQualifyingRankWin>();
+        });
+
+        littleCloseBtn.SetListener(() => {
+            CrossServerQualifyingModel.Instance.isShowRaceInfoYet = true;
+            todayRaceObj.SetActive(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
         });
     }
 
@@ -129,9 +149,9 @@
 
         }
         else
-        {
-            enterGame.SetActiveIL(false);
-            timeTip.text = string.Empty;
+        {
+            pkTagetObjs.SetActiveIL(false);
+            todayRaceObj.SetActiveIL(false);
             DisplayTime();
             raceTable.SetActiveIL(false);
             waitTxt.SetActiveIL(true);
@@ -305,24 +325,95 @@
 
     void OnMinuteEvent()
     {
-        enterGame.SetActiveIL(false);
-        timeTip.text = string.Empty;
+        pkTagetObjs.SetActiveIL(false);
+        todayRaceObj.SetActiveIL(false);
 
         var groupMark = CrossServerQualifyingModel.Instance.nowGroupMark;
         if (groupMark <= 8 && groupMark != 0)
-        {
-            //濡傛灉鐜╁鐣岄潰涓�鐩村紑鐫�灏遍渶瑕佸埛鏂�
-            if (CrossServerQualifyingModel.Instance.HaveMyBattle(groupMark))
-            {
-                enterGame.SetActiveIL(true);
-                var battleID = ILChampionshipTimeConfig.GetBattleID((int)groupMark * 10 + 2);
-                if (battleID != 0)
-                {
-                    timeTip.text = Language.Get("CrossServerQualifying20", CrossServerQualifyingModel.Instance.GetStartBattleTime(battleID));
-                }
+        {
+            var isInBattle = CrossServerQualifyingModel.Instance.HaveMyBattle(groupMark);
+            //濡傛灉鐜╁鐣岄潰涓�鐩村紑鐫�灏遍渶瑕佸埛鏂�
+            int battleID = CrossServerQualifyingModel.Instance.GetBattleID();
+            if (isInBattle && ILChampionshipTimeConfig.Get(battleID).StateValue % 10 == 2)
+            {
+                pkTagetObjs.SetActiveIL(true);
+                //ItemOverdue104 {0}鍒�
+                //ItemTipTime1	鍓╀綑鏃堕棿锛�
+                //OSCActivityNotOpen	娲诲姩鏈紑濮�
+                //FamilyMatchAlreadyEnd < color =#109d06>宸茬粨鏉�</color>
+                double minute = CrossServerQualifyingModel.Instance.GetRaceEndRemindMinute(battleID);
+                if (minute >= 0)
+                {
+                    timeTip.text = StringUtility.Contact(Language.Get("ItemTipTime1"), " ", Language.Get("ItemOverdue104", (int)minute));
+                }
+                else
+                {
+                    timeTip.text = Language.Get("FamilyMatchAlreadyEnd");
+                }
+                ShowBattleInfo(groupMark);
+            }
+
+            if (isInBattle)
+            {
+                ShowTodayRaceInfo();
             }
-        }
+        }
+
+    }
 
+
+    void ShowBattleInfo(uint groupMark)
+    {
+        uint tagPlayerID;
+        var battleResult = CrossServerQualifyingModel.Instance.GetMyBattleInfo(groupMark, out tagPlayerID);
+        int challengeCnt = battleResult.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID) ? battleResult[(int)PlayerDatas.Instance.baseData.PlayerID].Length : 0;
+        //FindPrecious_14	鎸戞垬娆℃暟:
+        pkTimesText.text = StringUtility.Contact(Language.Get("FindPrecious_14"), " ",
+            CrossServerQualifyingModel.Instance.challengeMaxCnt - challengeCnt,
+            "/", CrossServerQualifyingModel.Instance.challengeMaxCnt);
+
+        // 鎴樻枟缁撴灉鏄庣粏 {"playerID":[[绗�1灞�鑳滆礋,绗�1灞�鎬荤Н鍒�,鑳滆礋鍩虹鍒�,hp鍒�,鏃堕棿鍒哴, ...], ...}
+        int myScore = 0;
+        int tagScore = 0;
+        var keys = battleResult.Keys.ToList();
+        for (int i = 0; i < keys.Count; i++)
+        {
+            var key = keys[i];
+            if (key == (int)PlayerDatas.Instance.baseData.PlayerID)
+            {
+                for (int j = 0; j < battleResult[key].Length; j++)
+                {
+                    myScore += battleResult[key][j][1];
+                }
+            }
+            else
+            {
+                for (int j = 0; j < battleResult[key].Length; j++)
+                {
+                    tagScore += battleResult[key][j][1];
+                }
+            }
+        }
+        //L2033	姣斿垎锛�
+        pkScoreText.text = StringUtility.Contact(Language.Get("L2033"), " ", myScore, " - ", tagScore);
+
+        var _cell = tagPlayerObj.GetILBehaviour<CSQShootOutPlayerCell>();
+        _cell.Display(tagPlayerID, 0);
+    }
+    void ShowTodayRaceInfo()
+    {
+        todayRaceObj.SetActiveIL(!CrossServerQualifyingModel.Instance.isShowRaceInfoYet);
+
+        string raceInfo = StringUtility.Contact(Language.Get("CrossServerQualifying70"), "</r>");
+        foreach (int mark in CrossServerQualifyingModel.Instance.group8BtnMarks)
+        {
+            int tmpBattleID = ILChampionshipTimeConfig.GetBattleID(mark * 10 + 2);
+            var tmpConfig = ILChampionshipTimeConfig.Get(tmpBattleID);
+            raceInfo = StringUtility.Contact(raceInfo, "</r>", tmpConfig.Title, "    ",
+                tmpConfig.StartHour.ToString("D2"), ":", tmpConfig.StartMinute.ToString("D2"), " - ",
+                tmpConfig.EndHour.ToString("D2"), ":", tmpConfig.EndMinute.ToString("D2"));
+        }
+        todayRaceText.text = raceInfo;
     }
 
     void UpdateRace()
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs
index c42ec8d..77785be 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs
@@ -12,10 +12,10 @@
 public class CrossServerQualifyingModel : ILModel<CrossServerQualifyingModel>
 {
     public const int DATA_MAPID = 32070;
-    List<int> mapList = new List<int>();    //1涓垎鍖轰竴涓湴鍥�
     public int selectIndex; // 璺ㄦ湇鎺掍綅涓绘爣绛鹃�夋嫨
     public int select64Index = 0;  // 閫変腑鐨�64寮烘瘮璧涙爣绛撅紝闈炲綋鍓嶈禌绋�
     public List<uint> groupBtnMarks = new List<uint>() { 64, 32, 16 };//64寮烘爣绛炬寜閽搴旂殑璧涚▼
+    public List<uint> group8BtnMarks = new List<uint>() { 8, 4, 2 };//8寮� 
     public uint select64Mark
     {
         get { return groupBtnMarks[select64Index]; }
@@ -89,8 +89,10 @@
     public event Action UpdateWorshipEvent;
     public int worshipMaxCnt;
     public int[][] doubleTimeArr;
+    public int challengeMaxCnt; //鎸戞垬娆℃暟
 
-
+    DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+    ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
 
     protected override void Init()
     {
@@ -115,8 +117,6 @@
         {
             openTimes.Add(Convert.ToDateTime(openTimeArr[i]));
         }
-
-        mapList = JsonMapper.ToObject<int[]>(config.Numerical3).ToList();
 
         config = FuncConfigConfig.Get("CrossChamGuess");
         var moneyInfo = config.Numerical1.Split('|');
@@ -160,6 +160,9 @@
         config = FuncConfigConfig.Get("CrossChamWorship");
         worshipMaxCnt = int.Parse(config.Numerical1);
         doubleTimeArr = JsonMapper.ToObject<int[][]>(config.Numerical3);
+
+        config = FuncConfigConfig.Get("CrossChamMirrorPK");
+        challengeMaxCnt = int.Parse(config.Numerical1);
     }
 
 
@@ -252,7 +255,8 @@
                     BattleNum = battleList.BattleNum,
                     WinPlayerID = battleList.WinPlayerID,
                     PlayerIDA = battleList.PlayerIDA,
-                    PlayerIDB = battleList.PlayerIDB
+                    PlayerIDB = battleList.PlayerIDB,
+                    battleResult = ConfigParse.ParseIntArray2Dict(battleList.BattleRet),
                 };
             }
         }
@@ -279,6 +283,8 @@
         myOfficialID = 0;
         myApplyCnt = 0;
         worshipCntToday = 0;
+        pushGroupMark = 0;
+        isShowRaceInfoYet = false;
     }
 
     //鑾峰彇褰撳墠鐨勬瘮璧涜禌绋嬭妭鐐癸紝-1浠h〃褰撳墠鏃堕棿涓嶅湪鎺掍綅璧涙祦绋嬩腑
@@ -325,6 +331,19 @@
         var startTime = startDay.AddDays(config.StartDay - 1).AddSeconds(config.StartHour * 60 * 60 + config.StartMinute * 60);
 
         return startTime.ToString("yyyy-MM-dd HH:mm");
+    }
+
+    //鑾峰彇娴佺▼鐨勭粨鏉熸椂闂� 鍒嗛挓锛岃礋鏁颁唬琛ㄦ湭寮�濮�
+    public double GetRaceEndRemindMinute(int battleID)
+    {
+        var index = GetOpenTimeIndex();
+        if (index == -1) return -1;
+        var startDay = openTimes[index];
+
+        var config = ILChampionshipTimeConfig.Get(battleID);
+        var endTime = startDay.AddDays(config.StartDay - 1).AddSeconds(config.EndHour * 60 * 60 + config.EndMinute * 60);
+
+        return (endTime - ILTimeUtility.ServerCrossNow).TotalMinutes;
     }
 
     public struct CrossChampionshipPKPlayer
@@ -345,6 +364,7 @@
         public uint WinPlayerID;        // 鑾疯儨鐜╁ID
         public uint PlayerIDA;        // 鐜╁IDA
         public uint PlayerIDB;        // 鐜╁IDB
+        public Dictionary<int, int[][]>  battleResult;  // 鎴樻枟缁撴灉鏄庣粏 {"playerID":[[绗�1灞�鑳滆礋,绗�1灞�鎬荤Н鍒�,鑳滆礋鍩虹鍒�,hp鍒�,鏃堕棿鍒哴, ...], ...}
     }
 
     public struct ChampionshipOfficial
@@ -356,78 +376,54 @@
         public List<CrossChampionshipPKPlayer> ApplyPlayerList;        // 鐢宠璇ヤ粰瀹樼帺瀹跺垪琛�
     }
 
-    //鍦烘櫙杩涘叆閫昏緫鍊熺敤浜嗚法鏈嶇珵鎶�1V1
-    public bool IsCrossServerQualifying()
-    {
-        var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
-        var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
-        return mapList.IndexOf(dataMapId) != -1;
-    }
 
     //杩涘叆璺ㄦ湇鎺掍綅璧涳紝鍊熺敤璺ㄦ湇绔炴妧1v1妯℃嫙
     public void EnterCrossServerQualifying()
-    {
-        int error;
-        if (!ILCrossServerModel.Instance.CanEnter(out error))
-        {
-            ILCrossServerModel.Instance.ProcessEnterError(error);
-        }
+    {
+        uint tagPlayerID;
+        var battleResult = GetMyBattleInfo(nowGroupMark, out tagPlayerID);
+        int challengeCnt = battleResult.ContainsKey((int)PlayerDatas.Instance.baseData.PlayerID) ? battleResult[(int)PlayerDatas.Instance.baseData.PlayerID].Length : 0;
+        if (challengeCnt >= challengeMaxCnt)
+        {
+            SysNotifyMgr.Instance.ShowTip("CrossServerQualifying11");
+            return;
+        }
+
+        int error;
+        if (!dungeonModel.CanEnter(out error))
+        {
+            dungeonModel.ProcessEnterError(error);
+            return;
+        }
+
+
+        var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+        if (teamModel.isMatching)
+        {
+            teamModel.RequestCancelAutoMatchTeam();
+        }
+
 
-        uint otherPlayerID = 0;
-        int pos = 1; //鎴戠殑浣嶇疆锛�1-宸︼紱2-鍙�
-        var battle = battleInfo[nowGroupMark];
-        var battleNums = battle.Keys.ToList();
-        var playerID = PlayerDatas.Instance.baseData.PlayerID;
-        for (int i = 0; i < battleNums.Count; i++)
-        {
-            var battleNum = battleNums[i];
-            //鎼滅储鐜╁鏄惁鍙傝禌鑰�
-            if (battle[battleNum].PlayerIDA == playerID)
-            {
-                otherPlayerID = battle[battleNum].PlayerIDB;
-                pos = 1;
-                break;
-            }
-            else if (battle[battleNum].PlayerIDB == playerID)
-            {
-                otherPlayerID = battle[battleNum].PlayerIDA;
-                pos = 2;
-                break;
-            }
-        }
-        if (otherPlayerID == 0)
-        {
-            //杞┖
-            SysNotifyMgr.Instance.ShowTip("CrossServerQualifying4");
-            return;
-        }
-        var otherPlayerInfo = fightersInfo[otherPlayerID];
-
-        var package = new HC001_tagGCCrossRealmPKMatchOK();
-        //package.RoomID = 1001;
-        //package.PlayerName = PlayerDatas.Instance.baseData.PlayerName;
-        //package.Number = (byte)pos;
+        var otherPlayerInfo = fightersInfo[tagPlayerID];
 
         var opponent = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer();
         opponent.Job = otherPlayerInfo.Job;
         opponent.PlayerName = otherPlayerInfo.PlayerName;
         opponent.PlayerID = otherPlayerInfo.PlayerID;
 
-        opponent.LV = otherPlayerInfo.LV;
-        //寰呰繘鍏ユ父鎴忓埛鏂板鏂硅閲�
-        //opponent.MaxProDef = 100;
-        //opponent.MaxHP = 100;
-        //opponent.MaxHPEx = 0;
-        package.MatchPlayer = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer[] { opponent };
-
-        //var sendInfo = new CC105_tagCMEnterCrossServer();
-        //sendInfo.DataMapID = DATA_MAPID;
-        //GameNetSystem.Instance.SendInfo(sendInfo);
-
+        opponent.LV = otherPlayerInfo.LV;
+        opponent.RealmLV = otherPlayerInfo.RealmLV;
+        opponent.Face = otherPlayerInfo.Face;
+        opponent.FacePic = otherPlayerInfo.FacePic;
+        opponent.FightPower = (uint)((ulong)otherPlayerInfo.FightPower % Constants.ExpPointValue);
+        opponent.FightPowerEx = (uint)((ulong)otherPlayerInfo.FightPower / Constants.ExpPointValue);
+
+        CrossServerLogin.Instance.InitOneVsOnePlayerInfo(opponent);
+        mirrorFightModel.SendMirrorFight(DATA_MAPID, (ushort)(zoneID * 100 + nowGroupMark), tagPlayerID, 0);
         return;
     }
 
-    //鏌ユ壘鑷繁鏄惁鏈夋瘮璧�
+    //鏌ユ壘鑷繁鏄惁鏈夋瘮璧�,鍖呭惈绔炵寽 鍒嗙粍鍜屾垬鏂楃粨鏉熺殑缂撳瓨鏃堕棿
     public bool HaveMyBattle(uint groupMark)
     {
         if (battleInfo.ContainsKey(groupMark))
@@ -447,31 +443,92 @@
         }
 
         return false;
-    }
-
-    public byte OverType;    // 0-姝e父锛�1-鏈変汉绂荤嚎
-    public uint WinnerID;    // 鑳滄柟ID
-    public List<uint> RoundWinnerID = new List<uint>();    // 鍥炲悎鑾疯儨ID鍒楄〃
-
-    public void UpdatePKResult(IL_HC016_tagGCCrossChampionshipPKOver netPack)
+    }
+
+    // 8寮轰箣鍓嶏紝鏌ユ壘鐜╁鐨勪笅涓�鍦烘瘮璧涳紝鑳滃嚭鏈垎缁勫墠涔熺畻
+    public int GetMyNextBattle()
     {
-        if (IsCrossServerQualifying())//鍓湰缁撶畻鐣岄潰
-        {
-            OverType = netPack.OverType;
-            WinnerID = netPack.WinnerID;
-            RoundWinnerID = netPack.RoundWinnerID.ToList();
-            
-            if (WindowCenter.Instance.IsOpen<FightingPKWin>())
+        int nextGroupMark = 0;
+        bool haveBattle = false;
+        for (int k = 0; k < groupBtnMarks.Count; k++)
+        { 
+            var groupMark = groupBtnMarks[k];
+            nextGroupMark = (int)groupMark;
+            if (battleInfo.ContainsKey(groupMark))
             {
-                WindowCenter.Instance.Close<FightingPKWin>();
+                var playerID = PlayerDatas.Instance.baseData.PlayerID;
+                var battle = battleInfo[groupMark];
+                var battleNums = battle.Keys.ToList();
+                for (int i = 0; i < battleNums.Count; i++)
+                {
+                    var battleNum = battleNums[i];
+                    //鎼滅储鐜╁鏄惁鍙傝禌鑰�
+                    if (battle[battleNum].WinPlayerID == playerID)
+                    {
+                        haveBattle = true;
+                        continue;
+                    }
+                    if (battle[battleNum].PlayerIDA == playerID || battle[battleNum].PlayerIDB == playerID)
+                    {
+                        haveBattle = true;
+                        return nextGroupMark;
+                    }
+                }
             }
-            WindowCenter.Instance.OpenIL<CrossServerQualifyingSettlementWin>();
         }
+
+        return haveBattle ? nextGroupMark : 0;
     }
 
-    
 
-    //绔炵寽鍏叡淇℃伅锛氭敮鎸佷汉鏁�
+    //褰撳墠鐨勬瘮璧涙瘮鍒嗘儏鍐�
+    public Dictionary<int, int[][]> GetMyBattleInfo(uint groupMark, out uint tagPlayerID)
+    {
+        tagPlayerID = 0;
+        if (battleInfo.ContainsKey(groupMark))
+        {
+            var playerID = PlayerDatas.Instance.baseData.PlayerID;
+            var battle = battleInfo[groupMark];
+            var battleNums = battle.Keys.ToList();
+            for (int i = 0; i < battleNums.Count; i++)
+            {
+                var battleNum = battleNums[i];
+
+                if (battle[battleNum].PlayerIDA == playerID || battle[battleNum].PlayerIDB == playerID)
+                {
+                    tagPlayerID = battle[battleNum].PlayerIDA == playerID ? battle[battleNum].PlayerIDB : battle[battleNum].PlayerIDA;
+                    return battle[battleNum].battleResult;
+                }
+            }
+        }
+
+        return null;
+    }
+
+
+
+    public uint WinnerID;    // 鑳滄柟ID
+    public int score;    
+
+    public void UpdatePKResult()
+    {
+        if (dungeonModel.dungeonResult.isWin == 1)
+        {
+            WinnerID = PlayerDatas.Instance.baseData.PlayerID;
+        }
+
+        score = dungeonModel.dungeonResult.addScore;
+
+        if (WindowCenter.Instance.IsOpen<FightingPKWin>())
+        {
+            WindowCenter.Instance.Close<FightingPKWin>();
+        }
+        WindowCenter.Instance.OpenIL<CrossServerQualifyingSettlementWin>();
+    }
+
+
+
+    //绔炵寽鍏叡淇℃伅锛氭敮鎸佷汉鏁�
     public void UpdateGuessCommon(IL_HC022_tagGCChampionshipGuessPubInfo netPack)
     {
         for (int i = 0; i < netPack.GuessList.Length; i++)
@@ -605,14 +662,23 @@
         return idA.CompareTo(idB);
     }
 
+    public bool isShowRaceInfoYet = false; //鏄惁宸茬粡鏄剧ず杩囪禌绋嬩俊鎭皬鎻愮ず
+    uint pushGroupMark = 0; //姣忓満姣旇禌鍙帹閫佷竴娆�
     void OnMinuteEvent()
     {
-        if (!WindowCenter.Instance.IsOpen("CrossServerQualifyingWin") && mapList.IndexOf(PlayerDatas.Instance.baseData.MapID) == -1)
+        if (!WindowCenter.Instance.IsOpen("CrossServerQualifyingWin") && 
+            dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID) != DATA_MAPID)
         {
+            uint nowMark = nowGroupMark;
             //鍑嗗鍏ュ満鐨勬椂鍊欐帹閫�
-            if (GetBattleID() % 10 == 2 && HaveMyBattle(nowGroupMark))
-            { 
-                HeroControler.Instance.FuncPush(210);
+            if (pushGroupMark != nowMark && HaveMyBattle(nowMark))
+            {
+                int battleID = GetBattleID();
+                if (ILChampionshipTimeConfig.Get(battleID).StateValue % 10 == 2)
+                { 
+                    HeroControler.Instance.FuncPush(210);
+                    pushGroupMark = nowMark;
+                }
             }
         }
     }
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingRaceCell.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingRaceCell.cs
index 424c8bf..881219c 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingRaceCell.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingRaceCell.cs
@@ -47,7 +47,9 @@
         var index = CrossServerQualifyingModel.Instance.GetOpenTimeIndex();
         var showTime = CrossServerQualifyingModel.Instance.openTimes[index].AddDays(config.StartDay - 1);
         showTime = showTime.AddSeconds(config.StartHour * 60 * 60 + config.StartMinute * 60);
-        timeStr.text = showTime.ToString("yyyy-MM-dd HH:mm");
+        timeStr.text = StringUtility.Contact(showTime.ToString("yyyy-MM-dd HH:mm"), " -> ",
+                        config.EndHour.ToString("D2"), ":", config.EndMinute.ToString("D2"));
+
         name.text = Language.Get(raceNameList[listIndex]);
         bg.SetActiveIL(listIndex % 2 == 0);
 
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingSettlementWin.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingSettlementWin.cs
index abc2fb1..47f4068 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingSettlementWin.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingSettlementWin.cs
@@ -15,25 +15,23 @@
     Text outTimeText;
     Transform backFail;
     Transform backWin;
-    List<Transform> rounds = new List<Transform>();
-    List<Text> results = new List<Text>();
+    Text resultScore;
     Transform caidaiEffect;
 
     float timer = 0f;
     int outTime = 5;
     #region Built-in
+
+    DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+
     protected override void BindController()
     {
         outBtn = proxy.GetWidgtEx<Button>("DropOutBtn");
         outTimeText = proxy.GetWidgtEx<Text>("DropOutBtn_text");
         backFail = proxy.GetWidgtEx<Transform>("Back_Failure");
         backWin = proxy.GetWidgtEx<Transform>("Back_Win");
-        for (int i = 0; i < 3; i++)
-        { 
-            rounds.Add(proxy.GetWidgtEx<Transform>("RoundWin" + i));
-            results.Add(proxy.GetWidgtEx<Text>("Text_" + i));
-        }
         caidaiEffect = proxy.GetWidgtEx<Transform>("CaidaiEffect");
+        resultScore = proxy.GetWidgtEx<Text>("Text_2");
     }
 
     protected override void AddListeners()
@@ -59,40 +57,14 @@
             backWin.SetActiveIL(false);
             caidaiEffect.SetActiveIL(false);
         }
-        for (int i = 0; i < rounds.Count; i++)
-        {
-            if (i < CrossServerQualifyingModel.Instance.RoundWinnerID.Count)
-            {
-                rounds[i].SetActiveIL(true);
-                if (CrossServerQualifyingModel.Instance.RoundWinnerID[i] == playerID)
-                {
-                    results[i].text = Language.Get("CrossServer113");
-                    results[i].color = new Color32(255, 239, 71, 255);
-                }
-                else
-                {
-                    results[i].text = Language.Get("CrossServer114");
-                    results[i].color = new Color32(255, 244, 205, 255);
-                }
-            }
-            else
-            {
-                rounds[i].SetActiveIL(false);
-            }
-        }
-        //濡傛灉瀵规柟绂荤嚎锛屽苟涓斾竴鍦烘湭鎵擄紝鏄剧ず绗竴鍥炶儨鍒�
-        if (CrossServerQualifyingModel.Instance.RoundWinnerID.Count == 0 && CrossServerQualifyingModel.Instance.OverType == 1)
-        {
-            rounds[0].SetActiveIL(true);
-            results[0].text = Language.Get("CrossServer113");
-            results[0].color = new Color32(255, 239, 71, 255);
-        }
+        resultScore.text = Language.Get("XMZZ106", CrossServerQualifyingModel.Instance.score);
     }
 
 
     protected override void OnPreClose()
     {
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+        PopupWindowsProcessor.Instance.Add("CrossServerQualifyingWin");
     }
     #endregion
 
@@ -114,7 +86,7 @@
     private void ExitDungeon()
     {
         WindowCenter.Instance.CloseIL<CrossServerQualifyingSettlementWin>();
-        CrossServerOneVsOneRewardModel.ExitCrossRealm();
+        model.ExitCurrentDungeon();
     }
 
 }
diff --git a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingTimeCell.cs b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingTimeCell.cs
index aec3b42..5065d29 100644
--- a/LogicProject/System/CrossServerQualifying/CrossServerQualifyingTimeCell.cs
+++ b/LogicProject/System/CrossServerQualifying/CrossServerQualifyingTimeCell.cs
@@ -31,7 +31,8 @@
         var index = CrossServerQualifyingModel.Instance.GetOpenTimeIndex();
         var showTime = CrossServerQualifyingModel.Instance.openTimes[index].AddDays(config.StartDay - 1);
         showTime = showTime.AddSeconds(config.StartHour * 60 * 60 + config.StartMinute * 60);
-        timeStr.text = showTime.ToString("yyyy-MM-dd HH:mm");
+        timeStr.text = StringUtility.Contact(showTime.ToString("yyyy-MM-dd HH:mm"), " -> ", 
+                        config.EndHour.ToString("D2"), ":", config.EndMinute.ToString("D2"));
 
         name.text = config.Title;
         desc.text = config.Desc;
diff --git a/LogicProject/System/CrossServerQualifying/ILCrossServerModel.cs b/LogicProject/System/CrossServerQualifying/ILCrossServerModel.cs
index a00ed1c..921aef5 100644
--- a/LogicProject/System/CrossServerQualifying/ILCrossServerModel.cs
+++ b/LogicProject/System/CrossServerQualifying/ILCrossServerModel.cs
@@ -41,9 +41,6 @@
 
     void ParseConfig()
     {
-        var CrossRealmCfg = FuncConfigConfig.Get("CrossRealmCfg");
-        afterOpenDayOpenCrossBattle = int.Parse(CrossRealmCfg.Numerical1);
-
         var config = FuncConfigConfig.Get("CrossBattlefieldOpen");
         var sysTimes = JsonMapper.ToObject<int[][]>(config.Numerical1);
         for (int i = 0; i < sysTimes.Length; i++)
@@ -278,7 +275,6 @@
 
     public event Action UpdateBuyInfoEvent;
 
-    public int afterOpenDayOpenCrossBattle;
     //娲诲姩寮�鍚椂闂磇nt3 = 鏃� 鍒� 绫诲瀷锛�0绯荤粺1鐜╁锛�
     public List<Int3> crossBattleFieldOpenTimes = new List<Int3>();
     public int processTime; //娓告垙杩愯鏃堕棿(鍒�)锛屾鏃堕棿涔熷綋浣滄父鎴忚繘琛屼腑鍜屽彲杩涘叆鏃堕棿锛屾瘮瀹為檯灏戜簡鍑嗗鏃堕棿
@@ -341,12 +337,12 @@
     public const int openUIMark = 2080000;
     public int zoneID = 0;
 
-    //鍚孭K涓�鏍疯禌鍖哄拰璧涘鎬绘椂闂达紝搴曞眰c#鐢ㄥ埌
+    //鍙ょ鎴樺満鏄惁寮�鍚�
     public bool IsOpen()
     {
         return FuncOpen.Instance.IsFuncOpen(208)
-            && TimeUtility.OpenDay >= afterOpenDayOpenCrossBattle
-            //&& CrossServerOneVsOnePKSeason.Instance.InPkSeason(TimeUtility.ServerNow)
+            && TimeUtility.OpenDay >= GeneralDefine.crossServerBattleFieldOpenDay
+            //&& CrossServerOneVsOnePKSeason.Instance.InPkSeason(TimeUtility.ServerNow)
             && InOpenTime();
     }
 
diff --git a/LogicProject/System/PlayerCommon/HeroControler.cs b/LogicProject/System/PlayerCommon/HeroControler.cs
index b5e6956..6b530b9 100644
--- a/LogicProject/System/PlayerCommon/HeroControler.cs
+++ b/LogicProject/System/PlayerCommon/HeroControler.cs
@@ -80,7 +80,7 @@
     }
 
     //鍙傝�� RoleModel . OnFuncStateChangeEvent  0 鏈帹閫� 1宸叉帹閫�
-    //鍔熻兘锛氭槸鍚︽彁閱掕繃  1璞崕棣栧厖 2鏃犻檺璐у竵 3 鍦ㄧ嚎鐗规儬 4 1鍏�30鍊� 5 鐜╂硶鍓嶇灮 6 鎴樺満鍙泦 7璺ㄦ湇64鎺掍綅
+    //鍔熻兘锛氭槸鍚︽彁閱掕繃  1璞崕棣栧厖 2鏃犻檺璐у竵 3 鍦ㄧ嚎鐗规儬 4 1鍏�30鍊� 5 鐜╂硶鍓嶇灮 6 鎴樺満鍙泦 7璺ㄦ湇64鎺掍綅 8 璺ㄦ湇澶╂
     public void FuncPush(int id)
     {
         if (id == 203)
@@ -101,10 +101,18 @@
             {
                 roleModel.funcInfo[7] = 0;
             }
+        }
+        else if (id == 157)
+        {
+            if (CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch && 
+                CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum() > 0)
+            {
+                roleModel.funcInfo[8] = 0;
+            }
         }
     }
 
-    List<int> funcPushIDS = new List<int>() { 203, 208, 210 };
+    List<int> funcPushIDS = new List<int>() { 157, 208, 210 };
 
     void OnPlayerLoginOk()
     {
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 0f11531..a5551ba 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -131,7 +131,7 @@
                 }
             }
             recordDataMapId = dataMapId;
-            if (dataMapId == CrossServerDataMapId)
+            if (dataMapId == CrossServerDataMapId || dataMapId == CrossServerQualifyingModel.DATA_MAPID)
             {
                 PersonalEnemy.OnMirrorPlayerAppear += OnPlayerAppear;
             }
@@ -347,6 +347,7 @@
 
             var CrossRealmCfg = FuncConfigConfig.Get("CrossRealmCfg");
             afterOpenDayOpenCross = int.Parse(CrossRealmCfg.Numerical1);
+            GeneralDefine.crossServerOneVsOneOpenDay = afterOpenDayOpenCross;
         }
 
         public class AwardType
@@ -720,6 +721,7 @@
             }
         }
 
+
         #region 鑽h獕鍟嗗簵绾㈢偣
 
         public const int CrossHonorStoreRedKey = 2130104;
diff --git a/System/CrossServerOneVsOne/FightingPKWin.cs b/System/CrossServerOneVsOne/FightingPKWin.cs
index 83c6548..8ea64c0 100644
--- a/System/CrossServerOneVsOne/FightingPKWin.cs
+++ b/System/CrossServerOneVsOne/FightingPKWin.cs
@@ -623,7 +623,7 @@
         {
             List<int> buffIds = new List<int>();
             _OpponentBuffSortList.Clear();
-            StatusMgr.Instance.GetBuffIds((uint)CrossServerLogin.Instance.oneVsOnePlayerData.opponentPlayerId, ref buffIds);
+            StatusMgr.Instance.GetBuffIds((uint)CrossServerLogin.Instance.oneVsOnePlayerData.mirrorPlayerID, ref buffIds);
             if (buffIds.Count > 0)
             {
                 for (int i = 0; i < buffIds.Count; i++)
diff --git a/System/DailyQuest/ActivityPlaceWin.cs b/System/DailyQuest/ActivityPlaceWin.cs
index 85479ee..6ef9abf 100644
--- a/System/DailyQuest/ActivityPlaceWin.cs
+++ b/System/DailyQuest/ActivityPlaceWin.cs
@@ -349,7 +349,7 @@
             }
 
             var seconds = (int)(OneTimes - (float)(TimeUtility.ServerNow -
-                    System.TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(dailyModel.ActivityPlaceInfo.StartTime)).TotalSeconds);
+                    TimeUtility.OriginalTime.AddSeconds(dailyModel.ActivityPlaceInfo.StartTime)).TotalSeconds);
 
             m_DownTime.text = TimeUtility.SecondsToHMS(seconds);
         }
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index e615b55..e88d319 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -1449,6 +1449,9 @@
                         case ArenaManager.MapID:
                             ArenaManagerModel.Instance.UpdateFBEnd();
                             break;
+                        case CrossServerQualifyingModel.DATA_MAPID:
+                            CrossServerQualifyingModel.Instance.UpdatePKResult();
+                            break;
                         default:
                             WindowCenter.Instance.Open<DungeonVictoryWin>();
                             break;
diff --git a/System/GeneralConfig/GeneralDefine.cs b/System/GeneralConfig/GeneralDefine.cs
index 8231ecc..88f26ad 100644
--- a/System/GeneralConfig/GeneralDefine.cs
+++ b/System/GeneralConfig/GeneralDefine.cs
@@ -180,7 +180,7 @@
     public static Dictionary<int, Dictionary<int, GA_NpcFightSgzcZZ.EquipRandomInfo>> SgzzRobotEquipDict { get; private set; }
     public static Dictionary<int, int> SgzcRealm { get; private set; }
 
-    public static int crossServerOneVsOneOpenDay { get; private set; }
+    public static int crossServerOneVsOneOpenDay { get; set; }
     public static int crossServerBattleFieldOpenDay { get; private set; }
     public static int UISpringDecorate { get; private set; }
     public static Dictionary<int, List<int>> skillAttrIDDict { get; private set; }
@@ -856,7 +856,6 @@
                 }
             }
 
-            crossServerOneVsOneOpenDay = GetInt("CrossRealmCfg");
             crossServerBattleFieldOpenDay = GetInt("CrossRealmCfg", 2);
             UISpringDecorate = GetInt("UISpringDecorate");
 
diff --git a/System/Login/CrossServerLogin.cs b/System/Login/CrossServerLogin.cs
index 3d065ef..b102dac 100644
--- a/System/Login/CrossServerLogin.cs
+++ b/System/Login/CrossServerLogin.cs
@@ -57,6 +57,7 @@
                 opponentLevel = player.LV,
                 opponentPlayerId = (int)player.PlayerID,
             };
+            LoadingWin.isCrossServerOneVsOne = true;
         }
 
         public void UpdatePKPlayerInfo(GA_Player player)
@@ -77,6 +78,7 @@
                 opponentLevel = oneVsOnePlayerData.opponentLevel,
                 opponentPlayerId = oneVsOnePlayerData.opponentPlayerId,
                 MaxProDef = (int)player.ActorInfo.maxProDef,
+                mirrorPlayerID = (int)player.ServerInstID,
             };
         }
 
@@ -332,6 +334,7 @@
         public int opponentLevel;
         public ulong opponentMaxHp;
         public int MaxProDef;// 鏈�澶ф姢鐩�
+        public int mirrorPlayerID; //闀滃儚鐜╁ID
 
 
         public bool IsCrossServerOneVsOneEntering()

--
Gitblit v1.8.0