From 84ede803777ff10b5cbe93b1ec0168af08f55d5e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 13 一月 2021 18:11:26 +0800 Subject: [PATCH] 8677 【BT】【后端】跨服冲榜活动; 新增跨服活动时间管理模块、跨服榜单;跨服邮件;跨服广播优化;相关GM命令、后台工具; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py index 8eca865..ca42a7b 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py @@ -15,10 +15,13 @@ #"""Version = 2018-12-21 18:00""" #------------------------------------------------------------------------------- import GameWorld +import PyGameData import ReadChConfig import PlayerControl import IpyGameDataPY import IPY_GameWorld +import ChPyNetSendPack +import NetPackCommon import ShareDefine import ChConfig import FBLogic @@ -157,3 +160,37 @@ if PlayerControl.GetCrossMapID(curPlayer): PlayerControl.SetCrossMapID(curPlayer, 0) return + +def GetPlayerCrossActInfo(curPlayer, actName): + ## 获取跨服玩家对应的跨服活动信息 + actInfoDict = PyGameData.g_crossActInfoDict.get(actName, {}) + if not actInfoDict: + return {} + playerServerID = GameWorld.GetPlayerServerID(curPlayer) + for actInfo in actInfoDict.values(): + if ShareDefine.ActKey_ServerIDRangeList not in actInfo: + continue + serverIDRangeList = actInfo[ShareDefine.ActKey_ServerIDRangeList] + if not serverIDRangeList: + # 全服开启 + return actInfo + for serverIDA, serverIDB in serverIDRangeList: + if serverIDA <= playerServerID <= serverIDB: + return actInfo + return {} + +def NotifyCrossActEnd(curPlayer, actName): + '''通知跨服运营活动结束 + 防止跨服服务器与子服时间不一致导致可能出现活动实际已关闭 + 但是前端根据本服服务器时间判断还未关闭,可能引起玩家误以为活动未关闭而引发的一系列问题 + 前端跨服活动显隐规则: + 显示:根据通知的活动包 且 时间>=活动开始日期 才显示 + 关闭:收到后端通知的活动结束包 或 时间>=活动结束日期 则直接关闭活动界面 + ''' + + clientPack = ChPyNetSendPack.tagGCCrossActEnd() + clientPack.ActName = actName + clientPack.ActNameLen = len(clientPack.ActName) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return + -- Gitblit v1.8.0