From 2e0dbebc2b1e2dbfea405ac4674c7c50bd92b73d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 08 十一月 2024 13:56:48 +0800 Subject: [PATCH] 10289 【越南】【英语】【砍树】【tqxbqy】运势-服务端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 31 +++++++++++++++++++++++++++++-- 1 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py index fe37d50..8bf2cdc 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py @@ -649,6 +649,30 @@ templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex] return templateID +def GetOperationActionLoopDate(startDateStr, endDateStr, curDateTime): + ## 获取运营活动配置日期循环的具体活动时间 + # @return: 开始日期, 结束日期, 返回的日期是第x次循环 + startSplitList = startDateStr.split("_") + loopDays = int(startSplitList[0][1:]) + startLoopDateStr = startSplitList[1] + startLoopDateTime = ChangeStrToDatetime(startLoopDateStr, ChConfig.TYPE_Time_Format_Day) + + endSplitList = endDateStr.split("_") # 可不配Lx_开头,防误配,做兼容 + endLoopDateStr = endSplitList[0] if len(endSplitList) == 1 else endSplitList[1] + endLoopDateTime = ChangeStrToDatetime(endLoopDateStr, ChConfig.TYPE_Time_Format_Day) + + if curDateTime >= startLoopDateTime: + passDays = (curDateTime - startLoopDateTime).days + loopTimes = passDays / loopDays + 1 # 第x次循环 + loopTimeMax = (endLoopDateTime - startLoopDateTime).days / loopDays + 1 # 最大循环次数 + loopTimes = min(loopTimes, loopTimeMax) + else: + loopTimes = 1 # 还未开始取第一次 + + startDateTime = startLoopDateTime + datetime.timedelta((loopTimes - 1)*loopDays) + endDateTime = startDateTime + datetime.timedelta(days=(loopDays - 1)) + return startDateTime, endDateTime, loopTimes + def GetOperationActionDateStr(ipyData): ## 获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期 curDateTime = datetime.datetime.today() @@ -660,7 +684,7 @@ endDateStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day) # 日期直接返回 - if startDateStr.count("-") == 2 and "W" not in startDateStr: + if startDateStr.count("-") == 2 and "W" not in startDateStr and not startDateStr.startswith("L"): return startDateStr, endDateStr # 开服天 @@ -707,7 +731,10 @@ # 只配置结束日期的时候可能导致开始日期计算出来比结束日期还大,即当前时间超过结束日期,且 配置还存在的情况 if startDateTime > endDateTime: startDateTime = endDateTime # 反正都无法开启,随便给个日期,不超过结束日期即可 - + # 按日期循环 + elif startDateStr.startswith("L"): + startDateTime, endDateTime, _ = GetOperationActionLoopDate(startDateStr, endDateStr, curDateTime) + # 默认 else: startDateTime = curDateTime -- Gitblit v1.8.0