From d8fac1acbf1659c5d2ff67d95f98520d557fd9cf Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 十二月 2024 11:34:54 +0800
Subject: [PATCH] 5416 【工具】兑换码优化(兑换码邮件内容文件json支持不同的appID独立文件配置;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerPackData.py |   29 +++++++++--------------------
 1 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerPackData.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerPackData.py
index ce8f7c9..8ec303d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerPackData.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerPackData.py
@@ -136,16 +136,7 @@
     playerID = curPlayer.GetPlayerID()
     packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
     if playerID in packDataMgr.playerPackDataDict:
-        isCross, isNeed = 0, 1
-        QueryPlayerResult_PlayerMirror(curPlayer, "PackDataSyncState", [isCross, isNeed])
-    return
-
-def OnPlayerLogin_CrossLogic(serverGroupID, serverID, playerID):
-    ## 跨服登录逻辑
-    packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
-    if playerID in packDataMgr.playerPackDataDict:
-        dataMsg = {"playerID":playerID}
-        CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_PlayerPackDataState, dataMsg, [serverGroupID])
+        QueryPlayerResult_PlayerMirror(curPlayer, "PackDataSyncState", {"PackData":1})
     return
 
 def SetNeedPackData(playerIDList):
@@ -318,6 +309,7 @@
         packObj = packDataMgr.GetPlayerPackObj(playerID)
         # 已经有的数据先推送回去
         if packObj:
+            GameWorld.DebugLog("跨服有缓存玩家打包数据,直接推给子服! playerID=%s" % playerID)
             packDataDict[playerID] = packObj.PackData
             dataMsg = {"playerID":playerID, "packData":packObj.PackData, "msgInfo":msgInfo}
             CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_PushPlayerPackData, dataMsg, [serverGroupID])
@@ -339,8 +331,7 @@
     curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
     if not curPlayer:
         return
-    isCross, isNeed = 1, 1
-    QueryPlayerResult_PlayerMirror(curPlayer, "PackDataSyncState", [isCross, isNeed])
+    QueryPlayerResult_PlayerMirror(curPlayer, "PackDataSyncState", msgData)
     return
 
 def CrossServerMsg_PullPlayerPackData(msgData):
@@ -349,18 +340,16 @@
     msgInfo = msgData["msgInfo"]
     pullPlayerIDList = msgData["pullPlayerIDList"]
     
-    needPullPlayerIDList = []
     packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
     for playerID in pullPlayerIDList:
         packObj = packDataMgr.GetPlayerPackObj(playerID)
         if packObj:
-            # 本服有数据,直接推给跨服
+            GameWorld.DebugLog("本服有缓存玩家打包数据,直接推给跨服! playerID=%s" % playerID)
             dataMsg = {"playerID":playerID, "packData":packObj.PackData, "msgInfo":msgInfo}
             CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PlayerPackData, dataMsg)
         else:
-            needPullPlayerIDList.append(playerID)
+            DoPullPlayerPackData(playerID, msgInfo)
             
-    DoPullPlayerPackData(needPullPlayerIDList, msgInfo)
     return
 
 def CrossServerMsg_PushPlayerPackData(msgData):
@@ -376,7 +365,7 @@
     curPlayer.MapServer_QueryPlayerResult(0, 0, "PlayerMirror", sysMsg, len(sysMsg))
     return
 
-def OnMGUpdatePlayerPackData(curPlayer, curPackData):
+def OnMGUpdatePlayerPackData(curPlayer, curPackData, msgInfo):
     ## 地图同步更新的玩家打包数据
     if GameWorld.IsCrossServer():
         return
@@ -385,14 +374,13 @@
     packData = curPackData.PackData
     if not packDataSyncState or not packData:
         return
-    msgInfo = eval(curPackData.PackMsg) if curPackData.PackMsg else {} # 打包数据附带的信息
     
     # 本服需要,先更新数据
-    if packDataSyncState % 10:
+    if packDataSyncState&pow(2, 0):
         PyDataManager.GetDBPlayerPackDataManager().UpdPlayerPackData(playerID, packData)
         
     # 跨服需要,同步给跨服,由跨服服务器再进一步处理
-    if packDataSyncState / 10:
+    if packDataSyncState&pow(2, 1):
         cacheBase = PlayerViewCache.GetSyncCrossCacheBase(curPlayer) if curPlayer else {}
         dataMsg = {"playerID":playerID, "packData":packData, "cacheBase":cacheBase, "msgInfo":msgInfo}
         CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PlayerPackData, dataMsg)
@@ -415,6 +403,7 @@
         CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PlayerPackData, dataMsg)
         return
     
+    PyDataManager.GetDBPlayerPackDataManager().UpdPlayerPackData(playerID, packData)
     # 本服需要,汇总结果
     ReuestPlayerPackDataRet(msgInfo, playerID, packData)
     return

--
Gitblit v1.8.0