From 4c115be5ce3f4be8766b2e10d1982807b787f132 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 18 七月 2024 17:46:34 +0800 Subject: [PATCH] 10223 【越南】【砍树】【主干】【港台】秘境寻宝(仙匣秘境层支持配置物品数、支持消耗道具寻宝;增加本服榜;增加跨服活动榜;任务活动支持仙匣秘境寻宝x次、x层任务类型;充值购买次数礼包活动支持配置额外的活动商城类型,支持配置每日重置的购买次数奖励;) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 51 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 45 insertions(+), 6 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index 2797827..ce034af 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -19,14 +19,19 @@ #--------------------------------------------------------------------- import GameWorld +import GameWorship import PlayerControl import NetPackCommon import GameWorldArena import ChPyNetSendPack import PlayerFBHelpBattle +import GameWorldSkyTower +import CrossChampionship +import CrossBattlefield import PyGameDataStruct import IpyGameDataPY import PyDataManager +import ShareDefine import ChConfig import json @@ -42,6 +47,18 @@ return True if GameWorldArena.IsArenaBattlePlayer(playerID): + return True + + if CrossBattlefield.IsBattlefieldCallPlayer(playerID): + 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) @@ -60,6 +77,12 @@ if GameWorldArena.IsArenaBattlePlayer(playerID): return True + if CrossBattlefield.IsBattlefieldCallPlayer(playerID): + return True + + if CrossChampionship.IsChampionshipPlayer(playerID): + return True + NeedCheckBillBoardType = IpyGameDataPY.GetFuncEvalCfg("PlayerViewCache", 2) #校验玩家是否上排行榜 billboardMgr = GameWorld.GetBillboard() @@ -70,13 +93,23 @@ 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(): ## 删除过期的查看缓存数据 curTime = int(time.time()) - MaxTime = 30 * 3600 * 24 # 30天 + MaxTime = IpyGameDataPY.GetFuncCfg("PlayerViewCache", 3) * 3600 * 24 pyViewCacheMgr = PyDataManager.GetPlayerViewCachePyManager() playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict @@ -99,8 +132,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 @@ -109,14 +143,19 @@ 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: + if not curCache.PropDataDict and curCache.PropData: curCache.PropDataDict = eval(curCache.PropData) return curCache.PropDataDict @@ -136,8 +175,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 @@ -174,7 +213,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