From 29ea88641286b5ef92f6010f020fd13bea1361cc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 八月 2022 15:17:50 +0800
Subject: [PATCH] 9265 【后端】53、新增幸运云购(修复幸运云购活动同步顺序问题导致的bug)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
index 0129fbc..e972b26 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
@@ -483,7 +483,7 @@
     curDateTime = GameWorld.GetServerTime()
     curDateTime = datetime.datetime.strptime("%d-%d-%d %d:%d:00" % (curDateTime.year, curDateTime.month, curDateTime.day,
                                                                     curDateTime.hour, curDateTime.minute), ChConfig.TYPE_Time_Format)
-    
+    actChangeList = []
     sysnCrossActInfoDict = {}
     for actName in ShareDefine.CrossActNameList:
         if actName not in actTimeInfoDict or actName not in crossActInfoDict or actName not in actCfgIDInfoDict:
@@ -562,9 +562,8 @@
                 if actName == ShareDefine.CrossActName_CTGBillboard:
                     CrossActCTGBillboard.OnActIDChange(cfgID, dbTemplateID, state)
                     
-                elif actName == ShareDefine.CrossActName_LuckyCloudBuy:
-                    import CrossLuckyCloudBuy
-                    CrossLuckyCloudBuy.OnLuckyCloudBuyReset(ipyData, state)
+                else:
+                    actChangeList.append([actName, ipyData, state, cfgID, groupName, zoneID, dbActID, actID, forceReset, dbTemplateID])
                     
             # 非活动中的处理完关闭后,最后删除
             if not state:
@@ -576,6 +575,16 @@
     # 同步子服务器
     serverGroupIDList = []
     CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossActInfo, sysnCrossActInfoDict, serverGroupIDList)
+    
+    # 需要等活动等同步到子服后才处理以下逻辑,不然可能导致子服没有活动时间明细引起活动异常
+    for changeInfo in actChangeList:
+        actName, ipyData, state, cfgID, groupName, zoneID, dbActID, actID, forceReset, dbTemplateID = changeInfo
+        GameWorld.Log("    活动ID变更: actName=%s,cfgID=%s,groupName=%s,zoneID=%s,dbActID=%s -> actID=%s,forceReset=%s,dbTemplateID=%s" 
+                      % (actName, cfgID, groupName, zoneID, dbActID, actID, forceReset, dbTemplateID))
+        
+        if actName == ShareDefine.CrossActName_LuckyCloudBuy:
+            import CrossLuckyCloudBuy
+            CrossLuckyCloudBuy.OnLuckyCloudBuyReset(ipyData, state)
     return
 
 def Sync_CrossActInfoToClientServer(serverGroupID=0):

--
Gitblit v1.8.0