From 1754cadb92aaf7b5aeada2fbe3b982c770959c02 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 06 六月 2024 11:17:52 +0800
Subject: [PATCH] 10130 【后端】福地争夺资源功能(假人不增加个人记录)

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

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index 322b1a8..78a97b5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -24,10 +24,13 @@
 import GameWorldArena
 import ChPyNetSendPack
 import PlayerFBHelpBattle
+import GameWorldSkyTower
+import CrossChampionship
 import CrossBattlefield
 import PyGameDataStruct
 import IpyGameDataPY
 import PyDataManager
+import ShareDefine
 import ChConfig
 
 import json
@@ -46,6 +49,12 @@
         return True
     
     if CrossBattlefield.IsBattlefieldCallPlayer(playerID):
+        return True
+    
+    if CrossChampionship.IsChampionshipPlayer(playerID):
+        return True
+    
+    if GameWorldSkyTower.IsSkyTowerPassPlayer(playerID):
         return True
     
     SaveDBLimitLV = IpyGameDataPY.GetFuncCfg("PlayerViewCache", 1)
@@ -67,6 +76,9 @@
     if CrossBattlefield.IsBattlefieldCallPlayer(playerID):
         return True
     
+    if CrossChampionship.IsChampionshipPlayer(playerID):
+        return True
+    
     NeedCheckBillBoardType = IpyGameDataPY.GetFuncEvalCfg("PlayerViewCache", 2)
     #校验玩家是否上排行榜
     billboardMgr = GameWorld.GetBillboard()
@@ -77,6 +89,16 @@
         if curBillboard.FindByID(playerID):
             return True
         
+    #跨服榜单上的默认保留
+    if GameWorld.IsCrossServer():
+        billboardMgr = PyDataManager.GetCrossBillboardManager()
+        for billboardType in ShareDefine.CrossBillboardTypeList:
+            groupList = billboardMgr.GetBillboardGroupList(billboardType)
+            for billboardType, groupValue1, groupValue2 in groupList:
+                billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1, groupValue2)
+                if billboardObj.FindByID(playerID):
+                    return True
+                
     return False
 
 def DelOutofTimeViewCacheData():
@@ -106,8 +128,9 @@
     GameWorld.DebugLog("删除查看缓存!", playerID)
     return
 
-def FindViewCache(playerID, isAddNew=False):
+def FindViewCache(playerID, isAddNew=False, newPropData={}):
     ## 查找玩家缓存
+    # @param newPropData: 新数据初始PropData {}, key: LV,RealmLV,Job,VIPLV,Name,FamilyID,FamilyName,FightPower
     curCache = None
     pyViewCacheMgr = PyDataManager.GetPlayerViewCachePyManager()
     playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict
@@ -116,11 +139,16 @@
     elif isAddNew:
         curCache = PyGameDataStruct.tagPlayerViewCachePy()
         curCache.PlayerID = playerID
+        if newPropData:
+            curCache.PropData = json.dumps(newPropData, ensure_ascii=False).replace(" ", "")
+            curCache.PropDataSize = len(curCache.PropData)
         playerViewCachePyDict[playerID] = curCache
     return curCache
 
 def GetCachePropDataDict(curCache):
     ## 获取缓存基础属性字典信息
+    if not curCache:
+        return {}
     if not hasattr(curCache, "PropDataDict"):
         curCache.PropDataDict = {}
     if not curCache.PropDataDict and curCache.PropData:
@@ -143,8 +171,8 @@
 #    WORD        ItemDataSize1;
 #    char        ItemData1[ItemDataSize1];    //1阶装备数据
 #    ...         ...
-#    WORD        ItemDataSize15;
-#    char        ItemData15[ItemDataSize15];
+#    WORD        ItemDataSize20;
+#    char        ItemData20[ItemDataSize20];
 #};
 def OnMGUpdatePlayerCache(routeIndex, mapID, curPackData, tick):
     playerID = curPackData.PlayerID
@@ -181,7 +209,7 @@
     #GameWorld.DebugLog("    更新Plus数据: size=%s, %s" % (curCache.PlusDataSize, curCache.PlusData), playerID)
     
     # 装备数据存储,不保存装备数据的话则清空
-    for classLV in xrange(1, 15 + 1):
+    for classLV in xrange(1, 20 + 1):
         if not isSaveAll:
             itemDataSize = 0
             itemData = ""

--
Gitblit v1.8.0