From b3c6d36f5ae851f09a3c2e73494ff19956b06fb0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 11 四月 2025 16:56:14 +0800
Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(跨服仙盟支持;后台查询区服仙盟支持;活动时间流程支持;攻城战主活动功能完整流程:公示、分组、战备、战斗、榜单、竞猜、领奖等;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index dcadebf..e087772 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -132,10 +132,14 @@
     
     PlayerPackData.DelOutofTimePackData()
     
+    onlineMgr = ChPlayer.GetOnlinePlayerMgr()
     pyViewCacheMgr = PyDataManager.GetPlayerViewCachePyManager()
     playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict
     for playerID, viewCache in playerViewCachePyDict.items():
         if IsSaveDBViewCache(viewCache):
+            continue
+        if onlineMgr.IsOnline(playerID):
+            #在线的先不删除
             continue
         playerViewCachePyDict.pop(playerID)
         
@@ -234,24 +238,28 @@
 
 def GetSyncCrossCacheBase(curPlayer):
     ## 获取同步跨服基础查看缓存,主要用于个别功能需要提前先同步玩家基础缓存到跨服,因为跨服不一定有玩家缓存,需要提前同步
-    playerID = curPlayer.GetPlayerID()
+    if isinstance(curPlayer, int):
+        playerID = curPlayer
+        curPlayer = None
+    else:
+        playerID = curPlayer.GetPlayerID()
     cacheDict = GetCachePropDataDict(FindViewCache(playerID))
     cacheBase = {
-                 "AccID":curPlayer.GetAccID(),
-                 "LV":curPlayer.GetLV(),
-                 "RealmLV":curPlayer.GetOfficialRank(),
-                 "Job":curPlayer.GetJob(),
-                 "VIPLV":curPlayer.GetVIPLv(),
-                 "Name":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
-                 "Face":curPlayer.GetFace(),
-                 "FacePic":curPlayer.GetFacePic(),
-                 "FamilyID":curPlayer.GetFamilyID(),
+                 "AccID":curPlayer.GetAccID() if curPlayer else cacheDict.get("AccID", ""),
+                 "LV":curPlayer.GetLV() if curPlayer else cacheDict.get("LV", 1),
+                 "RealmLV":curPlayer.GetOfficialRank() if curPlayer else cacheDict.get("RealmLV", 1),
+                 "Job":curPlayer.GetJob() if curPlayer else cacheDict.get("Job", 1),
+                 "VIPLV":curPlayer.GetVIPLv() if curPlayer else cacheDict.get("VIPLV", 0),
+                 "Name":curPlayer.GetName() if curPlayer else cacheDict.get("Name", ""), # 此处不用跨服名称,如前端需要展示跨服名称,可通过ServerID或AccID取得ServerID展示
+                 "Face":curPlayer.GetFace() if curPlayer else cacheDict.get("Face", 0),
+                 "FacePic":curPlayer.GetFacePic() if curPlayer else cacheDict.get("FacePic", 0),
+                 "FamilyID":curPlayer.GetFamilyID() if curPlayer else cacheDict.get("FacmilyID", 0),
                  "FamilyName":cacheDict.get("FamilyName", ""),
                  "TitleID":cacheDict.get("TitleID", 0),
-                 "FightPower":PlayerControl.GetFightPower(curPlayer),
+                 "FightPower":PlayerControl.GetFightPower(curPlayer) if curPlayer else cacheDict.get("FightPower", 0),
                  "EquipShowSwitch":cacheDict.get("EquipShowSwitch", 0),
                  "EquipShowID":cacheDict.get("EquipShowID", []),
-                 "ServerGroupID":PlayerControl.GetPlayerServerGroupID(curPlayer),
+                 "ServerGroupID":PlayerControl.GetPlayerServerGroupID(curPlayer) if curPlayer else cacheDict.get("ServerGroupID", GameWorld.GetServerGroupID()),
                  }
     return cacheBase
 

--
Gitblit v1.8.0