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/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index a60bc5a..9eadc2a 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -32,6 +32,7 @@ import CrossBattlefield import CrossRealmPlayer import PyGameDataStruct +import PlayerPackData import IpyGameDataPY import PyDataManager import CrossRealmPK @@ -75,6 +76,9 @@ return True if GameWorldSkyTower.IsSkyTowerPassPlayer(playerID): + return True + + if PlayerPackData.IsPackDataPlayer(playerID): return True #跨服榜单上的默认保留 @@ -124,6 +128,8 @@ def DelOutofTimeViewCacheData(): ## 删除过期的查看缓存数据 + + PlayerPackData.DelOutofTimePackData() pyViewCacheMgr = PyDataManager.GetPlayerViewCachePyManager() playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict @@ -249,9 +255,6 @@ def UpdCrossCacheBase(playerID, cacheBase, isLogout=False): ## 更新同步跨服基础查看缓存 - #更新跨服在线状态,只要有同步即视为在线,除了指定是Logout的 - olMgr = ChPlayer.GetOnlinePlayerMgr() - olMgr.SetOnlineState(playerID, not isLogout, cacheBase.get("ServerGroupID", 0)) curCache = FindViewCache(playerID, True) if not curCache: return {} @@ -286,6 +289,11 @@ # ... ... # WORD ItemDataSize20; # char ItemData20[ItemDataSize20]; +# BYTE PackDataSyncState; // 打包数据同步状态: 0-不同步;个位-是否同步本服;十位-是否同步跨服 +# DWORD PackDataLen; +# char PackData[PackDataLen]; +# WORD PackMsgLen; +# char PackMsg[PackMsgLen]; #}; def OnMGUpdatePlayerCache(routeIndex, mapID, curPackData, tick): playerID = curPackData.PlayerID @@ -323,12 +331,15 @@ setattr(curCache, "ItemDataSize%s" % classLV, itemDataSize) #GameWorld.DebugLog(" 更新Item数据: classLV=%s,size=%s, %s" % (classLV, itemDataSize, itemData), playerID) + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) + # 在可能删除之前执行打包数据相关逻辑 + PlayerPackData.OnMGUpdatePlayerPackData(curPlayer, curPackData) + if isLogout: #不需要保存离线数据的,直接删除缓存数据 if not IsSaveDBViewCache(curCache): DeleteViewCache(playerID) return - curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) if curPlayer: curCache.GeTuiID = curPlayer.GetGeTuiClientID() curCache.GeTuiIDSize = len(curCache.GeTuiID) -- Gitblit v1.8.0