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