From 28bb89eb2ee8558b1529df973347803088cef88e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 19 四月 2019 15:10:27 +0800
Subject: [PATCH] 6374 境界提示增加参数
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py | 50 +++++++++++++++++++++++++++++++-------------------
1 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py
index ca043b2..e59ad49 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py
@@ -25,7 +25,6 @@
import PyDataManager
import time
import json
-import cPickle
# VIP权限
Def_Onoff_VIPCount = 5
(
@@ -87,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:
@@ -264,6 +255,16 @@
return True
return True
+# 个推基础判定
+def CanGeTuiByCache(curCache):
+ if not curCache.GetGeTuiID():
+ return False
+
+ # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID
+ if time.time() - curCache.GetOffTime() > 24*60*60:
+ return False
+ return True
+
def BossAttentionGeTui(bossData, bossID):
if bossData.GetMapID() == ChConfig.Def_FBMapID_SealDemon:
# 非VIP玩家 封魔坛个推
@@ -282,17 +283,24 @@
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
if curPlayer and not PlayerControl.GetIsTJG(curPlayer):
continue
-
- recordDict = cPickle.loads(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 = cPickle.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 = eval(curCache.GetPropData())
if not CheckCanGeTui(cacheDict, geTuiType):
- # 过滤个推
+ # 个推逻辑检查
continue
if not CheckBossGeTuiCnt(playerID, bossID, geTuiType, cacheDict):
@@ -303,7 +311,7 @@
if appID not in appIDDict:
appIDDict[appID] = []
- appIDDict[appID].append([cacheDict.get("GeTuiClientID", ""), cacheDict.get("Name", "")])
+ appIDDict[appID].append([curCache.GetGeTuiID(), cacheDict.get("Name", "")])
if not appIDDict:
@@ -328,13 +336,17 @@
if not curCache:
return
- cacheDict = cPickle.loads(curCache.GetPropData())
+ if not CanGeTuiByCache(curCache):
+ #无推送资格,基础判定
+ return
+
+ cacheDict = eval(curCache.GetPropData())
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.GetGeTuiID(), playerName]]}, showStr)
return
# 下线时,低级玩家没有离线时间的玩家提示, 上线清空
--
Gitblit v1.8.0