From 80f98c222c349b33d621ccc444c2ab9134f2649a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 05 七月 2021 19:06:31 +0800 Subject: [PATCH] 8921 【主干】【BT2】【BT3】【后端】H.活动-节日活动-垃圾分类(封包AA56 AA57 增加本次活动累计获得环保值) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 25 +++++++++++++++++-------- 1 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index b1083ac..277b74b 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: @@ -402,6 +402,12 @@ ## 防止未真正开始的活动需要提前预告,而导致覆盖掉了实际正在进行中的活动,一般是活动时间配置连续的时候可能出现该情况 GameWorld.Log(" 已经存在需要处理的配置ID(%s)! 当前需要提前通知或广播的活动未达到活动开始时间,不处理!cfgID=%s,advanceMinutes=%s,minNotifyStartMinute=%s,startDayDateJudge=%s" % (activityIpyData.GetCfgID(), cfgID, advanceMinutes, minNotifyStartMinute, startDayDateJudge)) + continue + + #注:刚好是结束的时间点,防范已经有需要处理的配置被覆盖 + if curActTodayInfo and curDateTime == endDayDate: + activityIpyData = curActTodayInfo[0] + GameWorld.Log(" 已经存在需要处理的配置ID(%s)! 当前刚好结束的时间点,不处理!cfgID=%s" % (activityIpyData.GetCfgID(), cfgID)) continue # 在需要处理的时间内附加世界等级开启限制,未达到最低世界等级要求的不开,活动时间从未达到到达到也不开 @@ -597,7 +603,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 +628,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 +656,7 @@ ymdCfgID = ymdIpyData.GetCfgID() actNumDisableWeekIpyDataInfo[actNum][cfgID] = [startWeekDate, endWeekDate, ymdCfgID, ymdStartDate, ymdEndDate] - return actNumDisableWeekIpyDataInfo, disableWeekCfgIDList + return actNumDisableWeekIpyDataInfo, disableWeekCfgIDDict def TransferOperationActDBKeyValue(): ''' 服务器启动时调用 -- Gitblit v1.8.0