From 798dfcc9c8ae4521a49ce6740b110435f89ac486 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 十一月 2020 14:06:14 +0800 Subject: [PATCH] 4869 【主干】【长尾】【BT】运营活动按周开没有判断时间;(优化周开启时间逻辑,在开服/合服前x天不开) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 64 ++++++++++++++----------------- 1 files changed, 29 insertions(+), 35 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index 410b063..b6faf6a 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py @@ -159,7 +159,6 @@ needStartList = [] # [startDateTime, ...] needEndList = [] # [endDateTime, ...] needNotifyDict = {} # {notifyDateTime:[notifyKey, [参数]], ...} - isCustomDay = False activityIpyData = None # 活动中的的配置,取需要处理的配置中开始时间最晚的,反之开关时间头尾相连的时候无法开启后面的活动 # 注意:每个活动配置会有多个活动时间点,但是有且只能生效一条活动配置,换句话说就是每个活动配置时间不允许交叉 for ipyData in curServerActIpyDataList: @@ -186,8 +185,6 @@ # 按开服天开的 if startDateStr.isdigit() and endDateStr.isdigit(): startServerDay, endServerDay = int(startDateStr), int(endDateStr) - if not isCustomDay: - isCustomDay = startServerDay == openServerDay #结束日可能还需要处理广播之类,所以这里需要+1 if openServerDay > endServerDay + 1: GameWorld.Log(" 当前开服天超过活动结束开服天,不处理! cfgID=%s,%s ~ %s < openServerDay(%s)" % (cfgID, startDateStr, endDateStr, openServerDay)) @@ -202,8 +199,6 @@ GameWorld.Log(" 非合服服务器,不处理! cfgID=%s,%s ~ %s" % (cfgID, startDateStr, endDateStr)) continue startMixServerDay, endMixServerDay = int(startDateStr[3:]), int(endDateStr[3:]) - if not isCustomDay: - isCustomDay = startMixServerDay == mixServerDay #结束日可能还需要处理广播之类,所以这里需要+1 if mixServerDay > endMixServerDay + 1: GameWorld.Log(" 当前合服天超过活动结束合服天,不处理! cfgID=%s,%s ~ %s < mixServerDay(%s)" % (cfgID, startDateStr, endDateStr, mixServerDay)) @@ -213,41 +208,40 @@ startDateStr = "%d-%d-%d" % (openServerDateTime.year, openServerDateTime.month, openServerDateTime.day) endDateStr = "%d-%d-%d" % (endServerDateTime.year, endServerDateTime.month, endServerDateTime.day) GameWorld.Log(" 合服天转化为日期: %s ~ %s" % (startDateStr, endDateStr)) - elif startDateStr.startswith("W") and endDateStr.startswith("W"): - if isCustomDay: - GameWorld.Log(" 当前开服合服天存在的定制天,周循环开启的不处理! cfgID=%s,%s ~ %s" % (cfgID, startDateStr, endDateStr)) - continue - startWeekday = int(startDateStr[1:]) - endWeekday = int(endDateStr[1:]) - startWeekDate = curDateTime + datetime.timedelta(days=(startWeekday-curWeekday)) - endWeekDate = curDateTime + datetime.timedelta(days=(endWeekday-curWeekday)) - startDateStr = "%d-%d-%d" % (startWeekDate.year, startWeekDate.month, startWeekDate.day) - endDateStr = "%d-%d-%d" % (endWeekDate.year, endWeekDate.month, endWeekDate.day) - GameWorld.Log(" 星期X转化为日期: %s ~ %s" % (startDateStr, endDateStr)) - elif actName not in ShareDefine.FeastOperationActionNameList: - if openServerDay <= customMaxServerDay: - GameWorld.Log(" 按日期开的在开服定制限制天内,不处理! cfgID=%s,%s ~ %s,openServerDay=%s" % (cfgID, startDateStr, endDateStr, openServerDay)) - continue - curServerOpenDateTime = curDateTime + datetime.timedelta(days=(1-openServerDay)) # 开服第一天的日期 - customMaxServerDateTime = curDateTime + datetime.timedelta(days=(customMaxServerDay-openServerDay)) - curStartDateTime = datetime.datetime.strptime("%s %02d:%02d:%02d" % (startDateStr, customMaxServerDateTime.hour, customMaxServerDateTime.minute, - customMaxServerDateTime.second), ChConfig.TYPE_Time_Format) - if curServerOpenDateTime <= curStartDateTime <= customMaxServerDateTime: - GameWorld.Log(" 按日期开的开始日期在开服定制限制天内,不处理! cfgID=%s,curServerOpenDateTime=%s<=curStartDateTime=%s<=customMaxServerDateTime=%s" % (cfgID, curServerOpenDateTime, curStartDateTime, customMaxServerDateTime)) - continue - - if isMixServer: - if mixServerDay <= maxCustomServerDayMix: - GameWorld.Log(" 按日期开的在合服定制限制天内,不处理! cfgID=%s,%s ~ %s,mixServerDay=%s" % (cfgID, startDateStr, endDateStr, mixServerDay)) + else: + if startDateStr.startswith("W") and endDateStr.startswith("W"): + startWeekday = int(startDateStr[1:]) + endWeekday = int(endDateStr[1:]) + startWeekDate = curDateTime + datetime.timedelta(days=(startWeekday-curWeekday)) + endWeekDate = curDateTime + datetime.timedelta(days=(endWeekday-curWeekday)) + startDateStr = "%d-%d-%d" % (startWeekDate.year, startWeekDate.month, startWeekDate.day) + endDateStr = "%d-%d-%d" % (endWeekDate.year, endWeekDate.month, endWeekDate.day) + GameWorld.Log(" 星期X转化为日期: %s ~ %s" % (startDateStr, endDateStr)) + + if actName not in ShareDefine.FeastOperationActionNameList: + if openServerDay <= customMaxServerDay: + GameWorld.Log(" 按日期/周开的在开服定制限制天内,不处理! cfgID=%s,%s ~ %s,openServerDay=%s" % (cfgID, startDateStr, endDateStr, openServerDay)) continue - mixStartServerDateTime = curDateTime + datetime.timedelta(days=(1-mixServerDay)) # 合服第一天的日期 - customMaxServerDateTime = curDateTime + datetime.timedelta(days=(maxCustomServerDayMix-mixServerDay)) + curServerOpenDateTime = curDateTime + datetime.timedelta(days=(1-openServerDay)) # 开服第一天的日期 + customMaxServerDateTime = curDateTime + datetime.timedelta(days=(customMaxServerDay-openServerDay)) curStartDateTime = datetime.datetime.strptime("%s %02d:%02d:%02d" % (startDateStr, customMaxServerDateTime.hour, customMaxServerDateTime.minute, customMaxServerDateTime.second), ChConfig.TYPE_Time_Format) - if mixStartServerDateTime <= curStartDateTime <= customMaxServerDateTime: - GameWorld.Log(" 按日期开的开始日期在合服定制限制天内,不处理! cfgID=%s,mixStartServerDateTime=%s<=curStartDateTime=%s<=customMaxServerDateTime=%s" % (cfgID, mixStartServerDateTime, curStartDateTime, customMaxServerDateTime)) + if curServerOpenDateTime <= curStartDateTime <= customMaxServerDateTime: + GameWorld.Log(" 按日期/周开的开始日期在开服定制限制天内,不处理! cfgID=%s,curServerOpenDateTime=%s<=curStartDateTime=%s<=customMaxServerDateTime=%s" % (cfgID, curServerOpenDateTime, curStartDateTime, customMaxServerDateTime)) continue + if isMixServer: + if mixServerDay <= maxCustomServerDayMix: + GameWorld.Log(" 按日期/周开的在合服定制限制天内,不处理! cfgID=%s,%s ~ %s,mixServerDay=%s" % (cfgID, startDateStr, endDateStr, mixServerDay)) + continue + mixStartServerDateTime = curDateTime + datetime.timedelta(days=(1-mixServerDay)) # 合服第一天的日期 + customMaxServerDateTime = curDateTime + datetime.timedelta(days=(maxCustomServerDayMix-mixServerDay)) + curStartDateTime = datetime.datetime.strptime("%s %02d:%02d:%02d" % (startDateStr, customMaxServerDateTime.hour, customMaxServerDateTime.minute, + customMaxServerDateTime.second), ChConfig.TYPE_Time_Format) + if mixStartServerDateTime <= curStartDateTime <= customMaxServerDateTime: + GameWorld.Log(" 按日期/周开的开始日期在合服定制限制天内,不处理! cfgID=%s,mixStartServerDateTime=%s<=curStartDateTime=%s<=customMaxServerDateTime=%s" % (cfgID, mixStartServerDateTime, curStartDateTime, customMaxServerDateTime)) + continue + if hasattr(ipyData, "GetStartTimeList") and hasattr(ipyData, "GetEndTimeList"): startHMStrList = ipyData.GetStartTimeList() endHMStrList = ipyData.GetEndTimeList() -- Gitblit v1.8.0