From 7ed0e73dddba3e791e6c45f05a5dfa8edb28209f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 02 八月 2024 16:16:00 +0800 Subject: [PATCH] 10229 【越南】【主干】【港台】【砍树】古神战场修改(增加功能组队系统;古神支持组队进入,组队参与可增加原当被召集人成就146;) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 76 +++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 1 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index ce034af..3e85bec 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -28,6 +28,7 @@ import GameWorldSkyTower import CrossChampionship import CrossBattlefield +import CrossRealmPlayer import PyGameDataStruct import IpyGameDataPY import PyDataManager @@ -36,6 +37,7 @@ import json import time +import random def DoOnDayEx(): DelOutofTimeViewCacheData() @@ -56,6 +58,9 @@ return True if GameWorship.IsWorshipPlayer(playerID): + return True + + if PyDataManager.GetDBPyFuncTeamManager().IsTeamPlayer(playerID): return True if GameWorldSkyTower.IsSkyTowerPassPlayer(playerID): @@ -140,7 +145,24 @@ playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict if playerID in playerViewCachePyDict: curCache = playerViewCachePyDict[playerID] - elif isAddNew: + elif isAddNew or playerID < 10000: + # 内网测试假玩家 + if playerID < 10000 and not newPropData: + openJobList = IpyGameDataPY.GetFuncEvalCfg("OpenJob", 1) + fakeName = "匿名玩家".decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding()) + fakeName = "%s%s" % (fakeName, playerID) + serverID = random.randint(9900, 9950) + accID = "fake%s@test@s%s" % (playerID, serverID) + newPropData = { + "AccID":accID, + "PlayerID":playerID, + "Name":fakeName, + "Job":random.choice(openJobList) if openJobList else 1, + "LV":random.randint(100, 200), + "RealmLV":random.randint(5, 15), + "FightPower":random.randint(1000000, 100000000), + "ServerGroupID":serverID, + } curCache = PyGameDataStruct.tagPlayerViewCachePy() curCache.PlayerID = playerID if newPropData: @@ -159,6 +181,58 @@ curCache.PropDataDict = eval(curCache.PropData) return curCache.PropDataDict +def GetShotCahceDict(playerID, withEquip=False): + ## 获取玩家简短的缓存信息字典 + cacheDict = GetCachePropDataDict(FindViewCache(playerID)) + if not cacheDict: + return {} + shotCacheDict = { + "PlayerID":playerID, + "Name":cacheDict["Name"], + "Job":cacheDict["Job"], + "LV":cacheDict["LV"], + "RealmLV":cacheDict["RealmLV"], + "FightPower":cacheDict["FightPower"], + "ServerID":GameWorld.GetAccIDServerID(cacheDict["AccID"]), + } + if withEquip: + shotCacheDict.update({ + "TitleID":cacheDict.get("TitleID", 0), + "EquipShowSwitch":cacheDict.get("EquipShowSwitch", 0), + "EquipShowID":cacheDict.get("EquipShowID", 0), + }) + return shotCacheDict + +def GetSyncCrossCacheBase(curPlayer): + ## 获取同步跨服基础查看缓存,主要用于个别功能需要提前先同步玩家基础缓存到跨服,因为跨服不一定有玩家缓存,需要提前同步 + 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), + "FamilyID":curPlayer.GetFamilyID(), + "FamilyName":cacheDict.get("FamilyName", ""), + "TitleID":cacheDict.get("TitleID", 0), + "FightPower":PlayerControl.GetFightPower(curPlayer), + "EquipShowSwitch":cacheDict.get("EquipShowSwitch", 0), + "EquipShowID":cacheDict.get("EquipShowID", 0), + "ServerGroupID":PlayerControl.GetPlayerServerGroupID(curPlayer), + } + return cacheBase + +def UpdCrossCacheBase(playerID, cacheBase): + ## 更新同步跨服基础查看缓存 + cacheDict = GetCachePropDataDict(FindViewCache(playerID, True)) + if not cacheBase: + return cacheDict + for k, v in cacheBase.items(): + cacheDict[k] = v + return cacheDict + #//04 01 地图同步玩家缓存数据到GameServer#tagMGUpdatePlayerCache # #struct tagMGUpdatePlayerCache -- Gitblit v1.8.0