| | |
| | | ##玩家下线同步
|
| | | UpdateGameServerPlayerCache(curPlayer, tick, True)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipViewCacheState, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncState, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncFightPower, 0)
|
| | | return
|
| | |
|
| | | def ProcessCache(curPlayer, tick):
|
| | |
| | | UpdateGameServerPlayerCache(curPlayer, tick, False)
|
| | | return
|
| | |
|
| | | def GetSyncPlayerPackData(curPlayer, force=False):
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | fightPower = curPlayer.GetFightPower()
|
| | | |
| | | if not force:
|
| | | syncState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncState)
|
| | | if not syncState:
|
| | | GameWorld.DebugLog("不需要同步打包数据", playerID)
|
| | | return ""
|
| | | # 值判断求余部分即可
|
| | | syncFightPower = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncFightPower)
|
| | | if syncFightPower == fightPower:
|
| | | GameWorld.DebugLog("战力不变,不需要同步打包数据! syncFightPower=%s" % syncFightPower, playerID)
|
| | | return ""
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncFightPower, fightPower)
|
| | | packData = curPlayer.GetPackData()
|
| | | #GameWorld.DebugLog("packData=%s %s %s" % (type(packData), len(packData), packData), playerID)
|
| | | return packData
|
| | |
|
| | |
|
| | | ##更新玩家当前详细信息到GameServer
|
| | | # @param curPlayer, tick
|
| | | # @return None
|
| | | def UpdateGameServerPlayerCache(curPlayer, tick, IsLogouting=False):
|
| | | def UpdateGameServerPlayerCache(curPlayer, tick, IsLogouting=False, forcePackData=False, packMsg=None):
|
| | | if PlayerTJG.GetIsTJG(curPlayer):
|
| | | # 脱机不处理
|
| | | return
|
| | |
| | | for classLV, itemData in itemDataDict.items():
|
| | | setattr(sendPack, "ItemData%s" % classLV, itemData)
|
| | | setattr(sendPack, "ItemDataSize%s" % classLV, len(itemData))
|
| | | # 打包数据相关
|
| | | sendPack.PackDataSyncState = 11 if forcePackData else curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncState)
|
| | | sendPack.PackData = GetSyncPlayerPackData(curPlayer, forcePackData)
|
| | | sendPack.PackDataLen = len(sendPack.PackData)
|
| | | sendPack.PackMsg = str(packMsg) if packMsg else "{}"
|
| | | sendPack.PackMsgLen = len(sendPack.PackMsg)
|
| | | #GameWorld.DebugLog("同步缓存: %s" % sendPack.OutputString())
|
| | | NetPackCommon.SendPyPackToGameServer(sendPack)
|
| | | return
|