From b2c05a41e1a78fbc310ea94852fd0b4c595e6863 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 十一月 2024 19:05:51 +0800
Subject: [PATCH] 1111 修改同步跨服缓存数据条件(50级以内不同步)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
index 975ef4d..538ec46 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
@@ -574,6 +574,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_YmdFormat)
+
+ endSplitList = endDateStr.split("_") # 可不配Lx_开头,防误配,做兼容
+ endLoopDateStr = endSplitList[0] if len(endSplitList) == 1 else endSplitList[1]
+ endLoopDateTime = ChangeStrToDatetime(endLoopDateStr, ChConfig.TYPE_Time_YmdFormat)
+
+ 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()
@@ -585,7 +609,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
# 开服天
@@ -632,7 +656,10 @@
# 只配置结束日期的时候可能导致开始日期计算出来比结束日期还大,即当前时间超过结束日期,且 配置还存在的情况
if startDateTime > endDateTime:
startDateTime = endDateTime # 反正都无法开启,随便给个日期,不超过结束日期即可
-
+ # 按日期循环
+ elif startDateStr.startswith("L"):
+ startDateTime, endDateTime, _ = GetOperationActionLoopDate(startDateStr, endDateStr, curDateTime)
+
# 默认
else:
startDateTime = curDateTime
--
Gitblit v1.8.0