From ae4ad3c017c9ed69e06186be6694e9a3703ebf42 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 05 七月 2019 15:38:35 +0800 Subject: [PATCH] 7843 【后端】【主干】掉落、宝箱装备部位集合优化(读配置方式修改) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py | 49 +++++++++++++++++++++++++++++++------------------ 1 files changed, 31 insertions(+), 18 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py index 8f3468d..28611ad 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py @@ -86,14 +86,6 @@ # 检查是否可以个推,geTuiType小于0的代表默认可推,无VIP限制 def CheckCanGeTui(playerCache, geTuiType=-1): - if not playerCache.get("GeTuiClientID", ""): - return False - - # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID - if not playerCache.get("Time", 0): - return False - if time.time() - playerCache.get("Time", 0) > 24*60*60: - return False if not playerCache.get("VIPLV", 0): if geTuiType < 0: @@ -263,6 +255,16 @@ return True return True +# 个推基础判定 +def CanGeTuiByCache(curCache): + if not curCache.GeTuiID: + return False + + # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID + if time.time() - curCache.OffTime > 24*60*60: + return False + return True + def BossAttentionGeTui(bossData, bossID): if bossData.GetMapID() == ChConfig.Def_FBMapID_SealDemon: # 非VIP玩家 封魔坛个推 @@ -281,17 +283,24 @@ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) if curPlayer and not PlayerControl.GetIsTJG(curPlayer): continue - + + # 离线玩家 + curCache = PlayerViewCache.FindViewCache(playerID) + if not curCache: + continue + + if not CanGeTuiByCache(curCache): + #无推送资格,减少检索和eval + continue + recordDict = eval(bossAttentionData.RecordData) if recordDict.get(bossID, 0) in [0, 9]: #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注 continue - curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID) - if not curCache: - continue - cacheDict = eval(curCache.GetPropData()) + + cacheDict = PlayerViewCache.GetCachePropDataDict(curCache) if not CheckCanGeTui(cacheDict, geTuiType): - # 过滤个推 + # 个推逻辑检查 continue if not CheckBossGeTuiCnt(playerID, bossID, geTuiType, cacheDict): @@ -302,7 +311,7 @@ if appID not in appIDDict: appIDDict[appID] = [] - appIDDict[appID].append([cacheDict.get("GeTuiClientID", ""), cacheDict.get("Name", "")]) + appIDDict[appID].append([curCache.GeTuiID, cacheDict.get("Name", "")]) if not appIDDict: @@ -323,17 +332,21 @@ # 私聊 def ChatMiGeTui(playerID, playerName, tagPlayerName): - curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID) + curCache = PlayerViewCache.FindViewCache(playerID) if not curCache: return - cacheDict = eval(curCache.GetPropData()) + if not CanGeTuiByCache(curCache): + #无推送资格,基础判定 + return + + cacheDict = PlayerViewCache.GetCachePropDataDict(curCache) if not CheckCanGeTui(cacheDict, Def_Onoff_Chat): # 过滤个推 return showStr = GameWorld.GbkToCode(IpyGameDataPY.GetFuncCfg("GeTuiOffLine", 3))%(tagPlayerName) # 文字信息 - GeTuiNotify({cacheDict.get("AppID", ""):[[cacheDict.get("GeTuiClientID", ""), playerName]]}, showStr) + GeTuiNotify({cacheDict.get("AppID", ""):[[curCache.GeTuiID, playerName]]}, showStr) return # 下线时,低级玩家没有离线时间的玩家提示, 上线清空 -- Gitblit v1.8.0