From ac0e60d82a41d51ce63323389b2224ef2200f2dd Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 09 十月 2020 18:14:16 +0800 Subject: [PATCH] 8542 【主干】【长尾】【BT】【后端】组队逻辑优化(支持发送teamID请求加入;支持双方无队伍请求加入,被请求玩家为队长) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py | 53 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 33 insertions(+), 20 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py index 4daf6d4..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 - - recordDict = json.loads(bossAttentionData.RecordData) - if recordDict.get(str(bossID), 0) in [0, 9]: - #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注 - continue - curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID) + + # 离线玩家 + curCache = PlayerViewCache.FindViewCache(playerID) if not curCache: continue - cacheDict = json.loads(curCache.GetPropData()) + + if not CanGeTuiByCache(curCache): + #无推送资格,减少检索和eval + continue + + recordDict = eval(bossAttentionData.RecordData) + if recordDict.get(bossID, 0) in [0, 9]: + #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注 + continue + + 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 = json.loads(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