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