From 7c48580fab636fbc0d59793431e4ac6a6f6ccc65 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 17 六月 2021 17:38:21 +0800 Subject: [PATCH] 8983 【港台】【BT2】【港台-1.100.7】【BT2-1.100.1】循环相关的活动配置优化(修复循环结束日当日无法开启活动bug) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index b1083ac..43dd8b1 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py @@ -235,7 +235,7 @@ GameWorld.Log("加载运营活动: actName=%s,platform=%s,serverGroupID=%s" % (actName, platform, serverGroupID)) curServerActIpyDataList = __GetOperationActionServerIpyDataList(ipyDataMgr, platform, serverGroupID, actName) GameWorld.Log(" 可处理条数=%s" % (len(curServerActIpyDataList))) - actNumDisableWeekIpyDataInfo, disableWeekCfgIDList = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList) + actNumDisableWeekIpyDataInfo, disableWeekCfgIDDict = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList) for ipyData in curServerActIpyDataList: @@ -297,9 +297,9 @@ % (cfgID, startWeekDate, startDateStr, endWeekDate, endDateStr, ymdCfgID, ymdStartDate, ymdEndDate)) continue - if cfgID in disableWeekCfgIDList: - GameWorld.Log(" 常规活动,按星期开启的未到开启循环日期或已结束循环日期,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s" - % (cfgID, startDateStr, endDateStr)) + if cfgID in disableWeekCfgIDDict: + GameWorld.Log(" 常规活动,按星期开启的未到开启循环日期或已结束循环日期,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s, %s" + % (cfgID, startDateStr, endDateStr, disableWeekCfgIDDict[cfgID])) continue if actByWeek: @@ -597,7 +597,10 @@ ## 获取不可用的按星期X开启的配置数据信息,按星期X开启的 活动优先级小于按日期的,当有重叠时以日期的为准 #curWeekday = curDateTime.weekday() + 1 # 今天星期几, 1代表星期1 actNumWeekYMDIpyDataInfo = {} # {actNum:[weekIpyDataList, ymdIpyDatList], ...} - disableWeekCfgIDList = [] # [cfgID, ...] + disableWeekCfgIDDict = {} # {cfgID:[startDateStr, endDateStr], ...} + + curDateTimeYmdStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day) + curDateTimeYmd = GameWorld.ChangeStrToDatetime(curDateTimeYmdStr, ChConfig.TYPE_Time_YmdFormat) for ipyData in curServerActIpyDataList: cfgID = ipyData.GetCfgID() @@ -619,8 +622,8 @@ startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) startWeekDate = GameWorld.ChangeStrToDatetime(startDateStr, ChConfig.TYPE_Time_YmdFormat) endWeekDate = GameWorld.ChangeStrToDatetime(endDateStr, ChConfig.TYPE_Time_YmdFormat) - if startWeekDate > curDateTime or curDateTime >= endWeekDate: # 还未开始的循环 or 已经强制结束的循环 - disableWeekCfgIDList.append(cfgID) + if startWeekDate > curDateTimeYmd or curDateTimeYmd > endWeekDate: # 还未开始的循环 or 已经强制结束的循环 + disableWeekCfgIDDict[cfgID] = [startDateStr, endDateStr] else: weekIpyDataList.append([ipyData, startWeekDate, endWeekDate]) @@ -647,7 +650,7 @@ ymdCfgID = ymdIpyData.GetCfgID() actNumDisableWeekIpyDataInfo[actNum][cfgID] = [startWeekDate, endWeekDate, ymdCfgID, ymdStartDate, ymdEndDate] - return actNumDisableWeekIpyDataInfo, disableWeekCfgIDList + return actNumDisableWeekIpyDataInfo, disableWeekCfgIDDict def TransferOperationActDBKeyValue(): ''' 服务器启动时调用 -- Gitblit v1.8.0