From 11a8ef04dc70453203e1f1ab7b0bceffd6a7774a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 05 七月 2024 16:35:12 +0800
Subject: [PATCH] 10198 【香港】【越南】【主干】【砍树】【后端】BOSS凭证优化(优化凭证转化: 活动开始后到参与结束都不转化,包含活动开始参与前;)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 41 +++++++++++++++++++++++++++++++++++------
1 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index a40bc65..5d8626c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -19,11 +19,14 @@
#---------------------------------------------------------------------
import GameWorld
+import GameWorship
import PlayerControl
import NetPackCommon
import GameWorldArena
import ChPyNetSendPack
+import ChGameToMapPyPack
import PlayerFBHelpBattle
+import GameWorldSkyTower
import CrossChampionship
import CrossBattlefield
import PyGameDataStruct
@@ -51,6 +54,12 @@
return True
if CrossChampionship.IsChampionshipPlayer(playerID):
+ return True
+
+ if GameWorship.IsWorshipPlayer(playerID):
+ return True
+
+ if GameWorldSkyTower.IsSkyTowerPassPlayer(playerID):
return True
SaveDBLimitLV = IpyGameDataPY.GetFuncCfg("PlayerViewCache", 1)
@@ -143,6 +152,8 @@
def GetCachePropDataDict(curCache):
## 获取缓存基础属性字典信息
+ if not curCache:
+ return {}
if not hasattr(curCache, "PropDataDict"):
curCache.PropDataDict = {}
if not curCache.PropDataDict and curCache.PropData:
@@ -187,12 +198,7 @@
return
curCache.LV = curPackData.PlayerLV
curCache.OffTime = curPackData.OffTime
- if isLogout:
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
- if curPlayer:
- curCache.GeTuiID = curPlayer.GetGeTuiClientID()
- curCache.GeTuiIDSize = len(curCache.GeTuiID)
-
+
curCache.PropDataDict = {} # 每次更新数据时,重置字典缓存,下次获取时重新eval缓存
curCache.PropData = curPackData.PropData
curCache.PropDataSize = curPackData.PropDataSize
@@ -234,16 +240,36 @@
# DWORD PlayerID; //玩家ID
# DWORD FindPlayerID; //要查询的玩家ID
# BYTE EquipClassLV; //大于0为查看指定境界阶装备信息, 0为查看默认信息
+# BYTE CallMap; //是否需要通知地图
#};
def OnMGQueryPlayerCache(routeIndex, mapID, curPackData, tick):
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)
findPlayerID = curPackData.FindPlayerID
equipClassLV = curPackData.EquipClassLV
+ callMap = curPackData.CallMap
curCache = FindViewCache(findPlayerID)
if not curCache:
PlayerControl.NotifyCode(curPlayer, "ViewPlayer_OffLine")
+ if callMap:
+ sendPack = ChGameToMapPyPack.tagGMPlayerCache()
+ sendPack.PlayerID = curPlayer.GetPlayerID()
+ sendPack.FindPlayerID = findPlayerID
+ sendPack.PropData = ""
+ sendPack.PropDataSize = len(sendPack.PropData)
+ sendPack.PlusData = ""
+ sendPack.PlusDataSize = len(sendPack.PlusData)
+ NetPackCommon.SendPyPackToMapServer(routeIndex, mapID, sendPack)
return
Sync_PlayerCache(curPlayer, curCache, equipClassLV)
+ if callMap:
+ sendPack = ChGameToMapPyPack.tagGMPlayerCache()
+ sendPack.PlayerID = curPlayer.GetPlayerID()
+ sendPack.FindPlayerID = findPlayerID
+ sendPack.PropData = curCache.PropData
+ sendPack.PropDataSize = len(sendPack.PropData)
+ sendPack.PlusData = curCache.PlusData
+ sendPack.PlusDataSize = len(sendPack.PlusData)
+ NetPackCommon.SendPyPackToMapServer(routeIndex, mapID, sendPack)
return
def Sync_PlayerCache(curPlayer, curCache, equipClassLV=0):
@@ -294,6 +320,7 @@
answerPack.RealmLV = 1
answerPack.OnlineType = ChConfig.Def_Offline
answerPack.ServerGroupID = 0
+ answerPack.Face = 0
else:
cacheDict = GetCachePropDataDict(curCache)
answerPack.PlayerID = clientPack.PlayerID
@@ -302,6 +329,7 @@
answerPack.LV = cacheDict["LV"]
answerPack.RealmLV = cacheDict["RealmLV"]
answerPack.OnlineType = ChConfig.Def_Offline
+ answerPack.Face = cacheDict.get("Face", 0)
if GameWorld.IsCrossServer():
answerPack.ServerGroupID = cacheDict.get("ServerGroupID", 0)
@@ -316,6 +344,7 @@
answerPack.OnlineType = ChConfig.Def_Online
answerPack.IsInTeam = tagPlayer.GetTeamID() > 0
answerPack.ServerGroupID = PlayerControl.GetPlayerServerGroupID(tagPlayer)
+ answerPack.Face = tagPlayer.GetFace()
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
NetPackCommon.SendFakePack(curPlayer, answerPack)
--
Gitblit v1.8.0