From f1c2ac9588321aad9e075c1440b52eb155b8ba18 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 29 十一月 2024 11:37:24 +0800 Subject: [PATCH] 10263 【越南】【英文】后端支持NPC仿真实玩家战斗和快速战斗 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py index 6a22007..f1e19db 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py @@ -47,6 +47,8 @@ ##玩家下线同步 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): @@ -60,10 +62,31 @@ 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 @@ -85,6 +108,12 @@ 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 -- Gitblit v1.8.0