| | |
| | | #"""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
|
| | |
| | | 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
|
| | |
|