From bc433db8262081f0400bcb9c2c3476000662daf3 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 10 七月 2024 14:24:53 +0800 Subject: [PATCH] 10205 【越南】【主干】【港台】【砍树】自选礼包(支持一次性放入超65535个数叠加物品;邮件同步支持一次性领取超65535个数叠加物品) --- 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