From 2334c75ef35c5ef5432f883c0eb2f4a22209a94a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 11 六月 2025 17:18:56 +0800
Subject: [PATCH] 10263 【越南】【BT】增加后台执行命令清除本服榜单某个玩家ID数据: ClearBillboardData

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

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index 75ac486..60b3d25 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -131,10 +131,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)
         
@@ -233,24 +237,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
 
@@ -427,6 +435,8 @@
     @param equipClassLV: 指定查看某一阶装备信息
     @param isShort: 是否查看简短信息
     '''
+    if not curPlayer:
+        return
     playerID = curPlayer.GetPlayerID()
     GameWorld.DebugLog("查看玩家: tagPlayerID=%s,equipClassLV=%s,isShort=%s" % (tagPlayerID, equipClassLV, isShort), playerID)
     # 在跨服服务器查询

--
Gitblit v1.8.0