| | |
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | curPlayer.MapServer_QueryPlayerResult(0, 0, "PlayerMirror", sysMsg, len(sysMsg))
|
| | | return
|
| | |
|
| | | def OnMGUpdatePlayerPackData(curPlayer, curPackData):
|
| | | def OnMGUpdatePlayerPackData(curPlayer, curPackData, msgInfo):
|
| | | ## 地图同步更新的玩家打包数据
|
| | | if GameWorld.IsCrossServer():
|
| | | return
|
| | |
| | | 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)
|