8983 【港台】【BT2】【港台-1.100.7】【BT2-1.100.1】循环相关的活动配置优化(周循环支持配置开始循环日期及结束循环日期,格式: W1|开启日期  或 W7|结束日期)

# Conflicts:
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActManyDayRecharge.py
28个文件已修改
392 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFairyCeremony.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGrowupBuy.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActHorsePetFeast.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLogin.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargePrize.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastLogin.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyTreasure.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
@@ -538,31 +538,73 @@
#---------------------------------------------------------------------
def GetOperationActionDateStr(dateInfo, openServerDay):
    '''获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
    @param dateInfo: 运营活动表配置的日期信息, 如果是纯数字代表开服天
    @param openServerDay: 当前开服天
    '''
    if not dateInfo:
        curDateTime = datetime.datetime.today()
        return "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    if dateInfo.startswith("W"):
        curDateTime = datetime.datetime.today()
        curWeekday = curDateTime.weekday() + 1
        actionWeekday = int(dateInfo[1:])
        actionDateTime = curDateTime + datetime.timedelta(days=(actionWeekday-curWeekday))
        return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
    if dateInfo.startswith("Mix"):
        diffDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1
        actionServerDay = int(dateInfo[3:])
    elif not dateInfo.isdigit():
        return dateInfo
    else:
        diffDay = openServerDay
        actionServerDay = int(dateInfo)
def GetOperationActionDateStr(ipyData):
    ## 获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
    curDateTime = datetime.datetime.today()
    actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-diffDay))
    return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
    startDateStr = ipyData.GetStartDate()
    endDateStr = ipyData.GetEndDate()
    if not startDateStr:
        startDateStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    if not endDateStr:
        endDateStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    # 日期直接返回
    if startDateStr.count("-") == 2 and "W" not in startDateStr:
        return startDateStr, endDateStr
    # 开服天
    if startDateStr.isdigit():
        diffDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
        startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr)-diffDay))
        endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr)-diffDay))
    # 合服天
    elif startDateStr.startswith("Mix"):
        diffDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1
        startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr[3:])-diffDay))
        endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr[3:])-diffDay))
    # 周循环, 直接配置 Wx 或 Wx|有效开始日期  或 Wx|有效结束日期
    elif startDateStr.startswith("W"):
        curWeekday = curDateTime.weekday() + 1
        startWeekDateInfo = startDateStr.split("|")
        startWeekInfo = startWeekDateInfo[0]
        startWeekday = int(startWeekInfo[1:])
        startDateTime = curDateTime + datetime.timedelta(days=(startWeekday-curWeekday))
        # 限制开启循环日期
        if len(startWeekDateInfo) > 1:
            startLoopDateStr = startWeekDateInfo[1]
            startLoopDateTime = ChangeStrToDatetime(startLoopDateStr, ChConfig.TYPE_Time_YmdFormat)
            if startLoopDateTime > startDateTime:
                startDateTime = startLoopDateTime
        startWeekDay = startDateTime.weekday() + 1 # 实际开启活动是周几,不一定和配置的周几一样,可能从中间被截断开始
        # 处理周循环的结束日期
        endWeekDateInfo = endDateStr.split("|")
        endWeekInfo = endWeekDateInfo[0]
        endWeekday = int(endWeekInfo[1:])
        endDateTime = startDateTime + datetime.timedelta(days=(endWeekday-startWeekDay))
        if len(endWeekDateInfo) > 1:
            endLoopDateStr = endWeekDateInfo[1]
            endLoopDateTime = ChangeStrToDatetime(endLoopDateStr, ChConfig.TYPE_Time_YmdFormat)
            if endDateTime > endLoopDateTime:
                endDateTime = endLoopDateTime
            # 只配置结束日期的时候可能导致开始日期计算出来比结束日期还大,即当前时间超过结束日期,且 配置还存在的情况
            if startDateTime > endDateTime:
                startDateTime = endDateTime # 反正都无法开启,随便给个日期,不超过结束日期即可
    # 默认
    else:
        startDateTime = curDateTime
        endDateTime = curDateTime
    startDateStr = "%d-%d-%d" % (startDateTime.year, startDateTime.month, startDateTime.day)
    endDateStr = "%d-%d-%d" % (endDateTime.year, endDateTime.month, endDateTime.day)
    return startDateStr, endDateStr
##获得系统时间
# @param 无意义
@@ -844,6 +886,8 @@
    timeStr = datetime.datetime.strptime(timeStr, timeFormat).timetuple() 
    return int(time.mktime(timeStr)) 
def ChangeStrToDatetime(timeStr, timeFormat=ChConfig.TYPE_Time_Format):
    return datetime.datetime.strptime(timeStr, timeFormat)
##获取与当前时间相差天数的datetime格式数据
# @param diffDays 差距天数
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 = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList)
        actNumDisableWeekIpyDataInfo, disableWeekCfgIDList = __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList)
        
        for ipyData in curServerActIpyDataList:
            
@@ -269,7 +269,7 @@
            # 开服常规:  开服天 > 日期 > 周x   (不受合服天影响,合服活动新增一套独立的活动,还是走运营活动配置)
            if actType == ShareDefine.ActType_OpenComm:
                actByWeek = (startDateStr.startswith("W") and endDateStr.startswith("W")) # 按周x开
                actByDate = (startDateStr.count("-") == 2 and endDateStr.count("-") == 2) # 按日期开
                actByDate = (not actByWeek and startDateStr.count("-") == 2 and endDateStr.count("-") == 2) # 按日期开
                
                # 开服天的
                if startDateStr.isdigit() and endDateStr.isdigit():
@@ -297,13 +297,13 @@
                                      % (cfgID, startWeekDate, startDateStr, endWeekDate, endDateStr, ymdCfgID, ymdStartDate, ymdEndDate))
                        continue
                    
                    if cfgID in disableWeekCfgIDList:
                        GameWorld.Log("        常规活动,按星期开启的未到开启循环日期或已结束循环日期,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s"
                                      % (cfgID, startDateStr, endDateStr))
                        continue
                    if actByWeek:
                        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)
                        startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
                        GameWorld.Log("        星期X转化为日期: %s ~ %s" % (startDateStr, endDateStr))
                        
                    curServerOpenDateTime = curDateTime + datetime.timedelta(days=(1 - openServerDay)) # 开服第一天的日期
@@ -595,10 +595,12 @@
def __GetOperationActionDisableWeekIpyDataInfo(actName, curDateTime, curServerActIpyDataList):
    ## 获取不可用的按星期X开启的配置数据信息,按星期X开启的 活动优先级小于按日期的,当有重叠时以日期的为准
    curWeekday = curDateTime.weekday() + 1 # 今天星期几, 1代表星期1
    #curWeekday = curDateTime.weekday() + 1 # 今天星期几, 1代表星期1
    actNumWeekYMDIpyDataInfo = {} # {actNum:[weekIpyDataList, ymdIpyDatList], ...}
    disableWeekCfgIDList = [] # [cfgID, ...]
    
    for ipyData in curServerActIpyDataList:
        cfgID = ipyData.GetCfgID()
        startDateStr = ipyData.GetStartDate()
        endDateStr = ipyData.GetEndDate()
        actNum = GetOperationActNum(actName, ipyData)
@@ -614,11 +616,14 @@
        
        # 按星期X的
        if startDateStr.startswith("W"):
            startWeekday = int(startDateStr[1:])
            endWeekday = int(endDateStr[1:])
            startWeekDate = curDateTime + datetime.timedelta(days=(startWeekday - curWeekday))
            endWeekDate = curDateTime + datetime.timedelta(days=(endWeekday - curWeekday))
            weekIpyDataList.append([ipyData, startWeekDate, endWeekDate])
            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)
            else:
                weekIpyDataList.append([ipyData, startWeekDate, endWeekDate])
        # 按日期的
        elif startDateStr.count("-") == 2:
            ymdIpyData = ipyData
@@ -642,7 +647,7 @@
                    ymdCfgID = ymdIpyData.GetCfgID()
                    actNumDisableWeekIpyDataInfo[actNum][cfgID] = [startWeekDate, endWeekDate, ymdCfgID, ymdStartDate, ymdEndDate]
                    
    return actNumDisableWeekIpyDataInfo
    return actNumDisableWeekIpyDataInfo, disableWeekCfgIDList
def TransferOperationActDBKeyValue():
    '''  服务器启动时调用
@@ -904,11 +909,11 @@
        return
    if len(ipyData.GetStartTimeList()) != len(ipyData.GetEndTimeList()):
        return
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    multiExpRateInfo = ChPyNetSendPack.tagGCMultiExpRateInfo()
    multiExpRateInfo.Clear()
    multiExpRateInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    multiExpRateInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    multiExpRateInfo.StartDate = startDateStr
    multiExpRateInfo.EndtDate = endDateStr
    multiExpRateInfo.ActivityTime = []
    for i, startTime in enumerate(ipyData.GetStartTimeList()):
        endTime = ipyData.GetEndTimeList()[i]
@@ -937,11 +942,11 @@
    ##多倍修行点活动信息通知
    if not ipyData:
        return
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    multiRealmPointInfo = ChPyNetSendPack.tagGCMultiRealmPointInfo()
    multiRealmPointInfo.Clear()
    multiRealmPointInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    multiRealmPointInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    multiRealmPointInfo.StartDate = startDateStr
    multiRealmPointInfo.EndtDate = endDateStr
    multiRealmPointInfo.Multiple = ipyData.GetMultiple()
    multiRealmPointInfo.LimitLV = ipyData.GetLVLimit()
    multiRealmPointInfo.LimitPoint = ipyData.GetPointLimit()
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFairyCeremony.py
@@ -88,11 +88,11 @@
    if not ipyData:
        return
    
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    fairyCeremonyInfo = ChPyNetSendPack.tagGCFairyCeremonyInfo()
    fairyCeremonyInfo.Clear()
    fairyCeremonyInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    fairyCeremonyInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    fairyCeremonyInfo.StartDate = startDateStr
    fairyCeremonyInfo.EndtDate = endDateStr
    fairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_FairyCeremony)
    fairyCeremonyInfo.LimitLV = ipyData.GetLVLimit()
    fairyCeremonyInfo.ResetType = ipyData.GetResetType()
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -827,10 +827,10 @@
    if not ipyData:
        return
    
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    feastPack = ChPyNetSendPack.tagGCFeastRedPacketInfo()
    feastPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    feastPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    feastPack.StartDate = startDateStr
    feastPack.EndtDate = endDateStr
    feastPack.LimitLV = ipyData.GetLVLimit()
    feastPack.ResetType = ipyData.GetResetType()
    feastPack.RedPacketDayList = []
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
@@ -88,11 +88,11 @@
    if not ipyData:
        return
    
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    NewFairyCeremonyInfo = ChPyNetSendPack.tagGCNewFairyCeremonyInfo()
    NewFairyCeremonyInfo.Clear()
    NewFairyCeremonyInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    NewFairyCeremonyInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    NewFairyCeremonyInfo.StartDate = startDateStr
    NewFairyCeremonyInfo.EndtDate = endDateStr
    NewFairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
    NewFairyCeremonyInfo.LimitLV = ipyData.GetLVLimit()
    NewFairyCeremonyInfo.ResetType = ipyData.GetResetType()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -611,31 +611,73 @@
        return {}
    return actNumDict[actNum]
def GetOperationActionDateStr(dateInfo, openServerDay):
    '''获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
    @param dateInfo: 运营活动表配置的日期信息, 如果是纯数字代表开服天
    @param openServerDay: 当前开服天
    '''
    if not dateInfo:
        curDateTime = datetime.datetime.today()
        return "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    if dateInfo.startswith("W"):
        curDateTime = datetime.datetime.today()
        curWeekday = curDateTime.weekday() + 1
        actionWeekday = int(dateInfo[1:])
        actionDateTime = curDateTime + datetime.timedelta(days=(actionWeekday-curWeekday))
        return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
    if dateInfo.startswith("Mix"):
        diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) + 1
        actionServerDay = int(dateInfo[3:])
    elif not dateInfo.isdigit():
        return dateInfo
    else:
        diffDay = openServerDay
        actionServerDay = int(dateInfo)
def GetOperationActionDateStr(ipyData):
    ## 获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
    curDateTime = datetime.datetime.today()
    actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-diffDay))
    return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day)
    startDateStr = ipyData.GetStartDate()
    endDateStr = ipyData.GetEndDate()
    if not startDateStr:
        startDateStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    if not endDateStr:
        endDateStr = "%d-%d-%d" % (curDateTime.year, curDateTime.month, curDateTime.day)
    # 日期直接返回
    if startDateStr.count("-") == 2 and "W" not in startDateStr:
        return startDateStr, endDateStr
    # 开服天
    if startDateStr.isdigit():
        diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
        startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr)-diffDay))
        endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr)-diffDay))
    # 合服天
    elif startDateStr.startswith("Mix"):
        diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) + 1
        startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr[3:])-diffDay))
        endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr[3:])-diffDay))
    # 周循环, 直接配置 Wx 或 Wx|有效开始日期  或 Wx|有效结束日期
    elif startDateStr.startswith("W"):
        curWeekday = curDateTime.weekday() + 1
        startWeekDateInfo = startDateStr.split("|")
        startWeekInfo = startWeekDateInfo[0]
        startWeekday = int(startWeekInfo[1:])
        startDateTime = curDateTime + datetime.timedelta(days=(startWeekday-curWeekday))
        # 限制开启循环日期
        if len(startWeekDateInfo) > 1:
            startLoopDateStr = startWeekDateInfo[1]
            startLoopDateTime = ChangeStrToDatetime(startLoopDateStr, ChConfig.TYPE_Time_Format_Day)
            if startLoopDateTime > startDateTime:
                startDateTime = startLoopDateTime
        startWeekDay = startDateTime.weekday() + 1 # 实际开启活动是周几,不一定和配置的周几一样,可能从中间被截断开始
        # 处理周循环的结束日期
        endWeekDateInfo = endDateStr.split("|")
        endWeekInfo = endWeekDateInfo[0]
        endWeekday = int(endWeekInfo[1:])
        endDateTime = startDateTime + datetime.timedelta(days=(endWeekday-startWeekDay))
        if len(endWeekDateInfo) > 1:
            endLoopDateStr = endWeekDateInfo[1]
            endLoopDateTime = ChangeStrToDatetime(endLoopDateStr, ChConfig.TYPE_Time_Format_Day)
            if endDateTime > endLoopDateTime:
                endDateTime = endLoopDateTime
            # 只配置结束日期的时候可能导致开始日期计算出来比结束日期还大,即当前时间超过结束日期,且 配置还存在的情况
            if startDateTime > endDateTime:
                startDateTime = endDateTime # 反正都无法开启,随便给个日期,不超过结束日期即可
    # 默认
    else:
        startDateTime = curDateTime
        endDateTime = curDateTime
    startDateStr = "%d-%d-%d" % (startDateTime.year, startDateTime.month, startDateTime.day)
    endDateStr = "%d-%d-%d" % (endDateTime.year, endDateTime.month, endDateTime.day)
    return startDateStr, endDateStr
##获得服务器系统时间
# @param 无
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -146,8 +146,7 @@
    
    lastDayOnlyExchange = ipyData.GetLastDayOnlyExchange()
    if lastDayOnlyExchange:
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
        endDateStr = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
        _, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
        curDate = GameWorld.GetCurrentTime()
        curDateStr = "%d-%s-%s" % (curDate.year, curDate.month, curDate.day)
        if curDateStr == endDateStr:
@@ -306,11 +305,11 @@
    if not templateID:
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    clientPack = ChPyNetSendPack.tagMCActCollectWordsInfo()
    clientPack.ActNum = actNum
    clientPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    clientPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    clientPack.StartDate = startDateStr
    clientPack.EndtDate = endDateStr
    clientPack.LimitLV = ipyData.GetLVLimit()
    clientPack.LastDayOnlyExchange = ipyData.GetLastDayOnlyExchange()
    clientPack.ExchangeItemList = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
@@ -294,11 +294,11 @@
    if not ipyData:
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    clientPack = ChPyNetSendPack.tagMCActGarbageSortingInfo()
    clientPack.ActNum = actNum
    clientPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    clientPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    clientPack.StartDate = startDateStr
    clientPack.EndtDate = endDateStr
    clientPack.LimitLV = ipyData.GetLVLimit()
    clientPack.ResetType = ipyData.GetResetType()
    NetPackCommon.SendFakePack(curPlayer, clientPack)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGrowupBuy.py
@@ -157,10 +157,10 @@
    import PlayerCoin
    buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrowupBuyState)
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actPack = ChPyNetSendPack.tagMCActGrowupBuyInfo()
    actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actPack.StartDate = startDateStr
    actPack.EndtDate = endDateStr
    actPack.LimitLV = ipyData.GetLVLimit()
    actPack.GroupList = []
    for i, ctgIDList in enumerate(ctgIDGroupList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActHorsePetFeast.py
@@ -64,11 +64,11 @@
    if len(startTimeList) != len(endTimeList):
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
    actInfo = ChPyNetSendPack.tagMCActHorsePetFeastInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.ActTimeList = []
    for i, startTime in enumerate(startTimeList):
        timeObj = ChPyNetSendPack.tagMCActHorsePetFeastTime()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLogin.py
@@ -278,11 +278,11 @@
    if not templateIDList:
        return
    actWorldLVList = actLoginAwardInfo.get(ShareDefine.ActKey_WorldLVList, [])
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
    actInfo = ChPyNetSendPack.tagMCActLoginAwardInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.AdvanceMinutes = actIpyData.GetAdvanceMinutes()
    actInfo.IsDayReset = actIpyData.GetIsDayReset()
    actInfo.ResetType = actIpyData.GetResetType()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargePrize.py
@@ -165,10 +165,10 @@
    templateIDList = ipyData.GetTemplateIDList()
    if not templateIDList:
        return
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actInfo = ChPyNetSendPack.tagMCActRechargePrizeInfo()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.LimitLV = ipyData.GetLVLimit()
    actInfo.IsDayReset = ipyData.GetIsDayReset()
    actInfo.PrizeDayInfo = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py
@@ -164,10 +164,10 @@
    if not templateIDList:
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actInfo = ChPyNetSendPack.tagMCActRechargeRebateGoldInfo()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.LimitLV = ipyData.GetLVLimit()
    actInfo.IsDayReset = ipyData.GetIsDayReset()
    actInfo.RebateDayInfo = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py
@@ -374,12 +374,12 @@
        return
    
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    
    clientPack = ChPyNetSendPack.tagMCActSingleRechargeInfo()
    clientPack.ActNum = actNum
    clientPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    clientPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    clientPack.StartDate = startDateStr
    clientPack.EndtDate = endDateStr
    clientPack.IsDayReset = ipyData.GetIsDayReset()
    clientPack.LimitLV = ipyData.GetLVLimit()
    clientPack.AwardRuleType = ipyData.GetAwardRuleType()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py
@@ -315,11 +315,11 @@
        return
    job = curPlayer.GetJob()
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actInfo = ChPyNetSendPack.tagMCActTotalRechargeInfo()
    actInfo.ActNum = actNum
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.LimitLV = ipyData.GetLVLimit()
    actInfo.IsDayReset = ipyData.GetIsDayReset()
    actInfo.AwardDayInfo = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
@@ -482,12 +482,12 @@
        return
    
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    
    clientPack = ChPyNetSendPack.tagMCActTurntableInfo()
    clientPack.ActNum = actNum
    clientPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    clientPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    clientPack.StartDate = startDateStr
    clientPack.EndtDate = endDateStr
    clientPack.IsDayReset = ipyData.GetIsDayReset()
    clientPack.LimitLV = ipyData.GetLVLimit()
    clientPack.CTGPrizeList = [CommFunc.RMBToCoin(floatRMB) for floatRMB in ipyData.GetCTGPrizeList()]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActXianXiaMJ.py
@@ -524,15 +524,15 @@
    costMoneyType, costMoneyValue = ipyData.GetUseMoneyInfo()
    
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    
    layerInfoValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XianXiaMJAwardLayerInfo % actNum)
    layerNum = layerInfoValue % 100
    
    clientPack = ChPyNetSendPack.tagMCActXianXiaMJInfo()
    clientPack.ActNum = actNum
    clientPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    clientPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    clientPack.StartDate = startDateStr
    clientPack.EndtDate = endDateStr
    clientPack.LimitLV = ipyData.GetLVLimit()
    clientPack.ResetType = ipyData.GetResetType()
    clientPack.MoneyType = costMoneyType
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -229,11 +229,11 @@
    if not ipyDataList:
        return
    worldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actBossIpyData)
    actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.ResetType = actBossIpyData.GetResetType()
    actInfo.LimitLV = actBossIpyData.GetLVLimit()
    actInfo.TaskInfo = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
@@ -280,11 +280,11 @@
        return
    job = curPlayer.GetJob()
    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
    actInfo.ActNum = actNum
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.LimitLV = ipyData.GetLVLimit()
    actInfo.IsDayReset = ipyData.GetIsDayReset()
    actInfo.AwardDayInfo = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastLogin.py
@@ -189,11 +189,11 @@
    if not dayIpyDataList:
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actPack = ChPyNetSendPack.tagMCFeastLoginInfo()
    actPack.Clear()
    actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actPack.StartDate = startDateStr
    actPack.EndtDate = endDateStr
    actPack.LimitLV = ipyData.GetLVLimit()
    actPack.DayAwardList = []
    for dayIpyData in dayIpyDataList:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py
@@ -269,11 +269,11 @@
    if not templateID:
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actPack = ChPyNetSendPack.tagMCFeastTravelInfo()
    actPack.Clear()
    actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actPack.StartDate = startDateStr
    actPack.EndtDate = endDateStr
    actPack.LimitLV = ipyData.GetLVLimit()
    actPack.ResetType = ipyData.GetResetType()
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
@@ -443,11 +443,11 @@
    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", templateID)
    poolIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWishPool", templateID)
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
    actPack = ChPyNetSendPack.tagMCFeastWishInfo()
    actPack.Clear()
    actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    actPack.StartDate = startDateStr
    actPack.EndtDate = endDateStr
    actPack.LimitLV = ipyData.GetLVLimit()
    actPack.ResetType = ipyData.GetResetType()
    actPack.WishPoolShowItemList = poolIpyData.GetWishPoolClientItemShow() if poolIpyData else []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
@@ -294,11 +294,11 @@
    # 取玩家APPID,混服使用
    appID = GameWorld.GetPlayerPlatform(curPlayer)
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData)
    packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
    packInfo.ActNum = actNum
    packInfo.StartDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetStartDate(), openServerDay)
    packInfo.EndtDate = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData.GetEndDate(), openServerDay)
    packInfo.StartDate = startDateStr
    packInfo.EndtDate = endDateStr
    packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()
    packInfo.ActivityTime = []
    for i, startTime in enumerate(startTimeList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
@@ -127,8 +127,7 @@
        isReset = True
        if cfgID:
            flashSaleIpyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
            openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
            startDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData.GetStartDate(), openServerDay)
            startDate, _ = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
            startTimeNum = GameWorld.ChangeTimeStrToNum(startDate, timeFormat=ChConfig.TYPE_Time_Format_Day)
        else:
            startTimeNum = 0
@@ -191,9 +190,7 @@
        LVLimit = flashSaleIpyData.GetLVLimit()
        if not mailKey or curPlayer.GetLV() < LVLimit:
            continue
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
        startDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData.GetStartDate(), openServerDay)
        endDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData.GetEndDate(), openServerDay)
        startDate, endDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
        startTimeList = flashSaleIpyData.GetStartTimeList()
        endTimeList = flashSaleIpyData.GetEndTimeList()
        if not startTimeList or not endTimeList:
@@ -238,11 +235,11 @@
        GameWorld.ErrLog("限时抢购开关时间时分配置错误!cfgID=%s" % cfgID)
        return
    job = curPlayer.GetJob()
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
    packInfo = ChPyNetSendPack.tagMCFlashSaleInfo()
    packInfo.ActNum = actNum
    packInfo.StartDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData.GetStartDate(), openServerDay)
    packInfo.EndtDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData.GetEndDate(), openServerDay)
    packInfo.StartDate = startDateStr
    packInfo.EndtDate = endDateStr
    packInfo.AdvanceMinutes = flashSaleIpyData.GetAdvanceMinutes()
    packInfo.ActivityTime = []
    for i, startTime in enumerate(startTimeList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyTreasure.py
@@ -206,11 +206,11 @@
    actIpyData = IpyGameDataPY.GetIpyGameData("ActLuckyTreasure", cfgID)
    if not actIpyData:
        return
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
    actInfo = ChPyNetSendPack.tagMCLuckyTreasureInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.ResetType = actIpyData.GetResetType()
    actInfo.LimitLV = actIpyData.GetLVLimit()
    actInfo.LuckyPoint = actIpyData.GetLuckyPoint()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
@@ -134,11 +134,11 @@
        GameWorld.ErrLog("限时特惠开关时间时分配置错误!cfgID=%s" % cfgID)
        return
    job = curPlayer.GetJob()
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(springSaleIpyData)
    packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
    packInfo.ActNum = actNum
    packInfo.StartDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetStartDate(), openServerDay)
    packInfo.EndtDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetEndDate(), openServerDay)
    packInfo.StartDate = startDateStr
    packInfo.EndtDate = endDateStr
    packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
    packInfo.ActivityTime = []
    for i, startTime in enumerate(startTimeList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -412,11 +412,11 @@
        return
    worldLV = actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0)
    pointAwardDict = __GetPointAwardInfo(actBossIpyData.GetPointAward(), worldLV)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actBossIpyData)
    actInfo = ChPyNetSendPack.tagMCWeekPartyInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.AdvanceMinutes = actBossIpyData.GetAdvanceMinutes()
    actInfo.IsDayReset = actBossIpyData.GetIsDayReset()
    actInfo.ResetType = actBossIpyData.GetResetType()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
@@ -377,11 +377,11 @@
    actIpyData = IpyGameDataPY.GetIpyGameData("ActWishingWell", cfgID)
    if not actIpyData:
        return
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
    actInfo = ChPyNetSendPack.tagMCActWishingWellInfo()
    actInfo.Clear()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(actIpyData.GetStartDate(), openServerDay)
    actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actIpyData.GetEndDate(), openServerDay)
    actInfo.StartDate = startDateStr
    actInfo.EndtDate = endDateStr
    actInfo.IsDayReset = actIpyData.GetIsDayReset()
    actInfo.ResetType = actIpyData.GetResetType()
    actInfo.LimitLV = actIpyData.GetLVLimit()
@@ -410,8 +410,7 @@
        cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
        actIpyData = IpyGameDataPY.GetIpyGameData("ActWishingWell", cfgID)
        if actIpyData:
            openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
            startDate = GameWorld.GetOperationActionDateStr(actIpyData.GetStartDate(), openServerDay)
            startDate, _ = GameWorld.GetOperationActionDateStr(actIpyData)
            
            resetType = actIpyData.GetResetType() # 重置类型,0-0点重置;1-5点重置
            if resetType == 1: