| | |
| | | % (cfgID, actNum, startDateStr, endDateStr, openServerDay, isMixServer, mixServerDay, curDateTime, platformList, serverGroupIDList, serverGroupIDListExcept))
|
| | |
|
| | | actIDDateTimeSpec = None # 特殊指定的活动ID日期
|
| | | startDateSync = None # 特殊同步前端显示用的开始日期,一般用于与开服前X天交叉的活动
|
| | | if actName in ShareDefine.MultiActNumOperationActNameList:
|
| | | # 多活动分组编号的需要把所有配置的 actNum 都登记进来,以确保地图能正确进行逻辑
|
| | | if actNum not in mapServerOperationActionDict[actName]:
|
| | |
| | | % (customMaxServerDateTime.year, customMaxServerDateTime.month, customMaxServerDateTime.day),
|
| | | ChConfig.TYPE_Time_Format) + datetime.timedelta(days=1)
|
| | | GameWorld.Log(" 开服天后可开启的非每日重置活动! 活动ID日期特殊设置为开服定制天结束后一天! cfgID=%s,actIDDateTimeSpec=%s" % (cfgID, actIDDateTimeSpec))
|
| | | |
| | | # 特殊同步的开始日期,无视是否每日重置
|
| | | if actName in startDateInCustomCanOpenList:
|
| | | startDateSync = datetime.datetime.strptime("%d-%d-%d 00:00:00" |
| | | % (customMaxServerDateTime.year, customMaxServerDateTime.month, customMaxServerDateTime.day), |
| | | ChConfig.TYPE_Time_Format) + datetime.timedelta(days=1)
|
| | | startDateSync = "%d-%d-%d" % (startDateSync.year, startDateSync.month, startDateSync.day)
|
| | | |
| | | else:
|
| | | GameWorld.Log(" 开服常规活动,配置时间格式不支持,不处理! cfgID=%s,startDateStr=%s,endDateStr=%s" % (cfgID, startDateStr, endDateStr))
|
| | | continue
|
| | |
| | | if actName == ShareDefine.OperationActionName_LoginAward:
|
| | | #活动每天的世界等级
|
| | | activityInfoDict[ShareDefine.ActKey_WorldLVList] = GameWorldAverageLv.GetWorldLVListByTime(startDayDate, (endDayDate - startDayDate).days)
|
| | | |
| | | if startDateSync:
|
| | | activityInfoDict[ShareDefine.ActKey_StartDateSync] = startDateSync
|
| | | GameWorld.Log(" startDateSync=%s" % (startDateSync))
|
| | |
|
| | | dayIndex = (curDateTime - startDayDate).days
|
| | | actIDDateTime = startDayDate
|
| | |
| | | def Dispose_DailyActionState():
|
| | | # 日常活动状态变更检查处理
|
| | |
|
| | | if GameWorld.IsCrossServer():
|
| | | CrossActionControl.Dispose_CrossDailyActionState()
|
| | | |
| | | todayDailyActionInfo = __GetTodayDailyActionInfo()
|
| | | if not todayDailyActionInfo:
|
| | | return
|
| | |
| | | def SendMapServerDailyActionState():
|
| | | # 地图启动成功时通知本日进行中的日常活动状态
|
| | |
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | if GameWorld.IsCrossServer():
|
| | | CrossActionControl.SendMapServerCrossDailyActionState()
|
| | | else:
|
| | | for dailyActionID in ShareDefine.CrossDailyActionIDList:
|
| | | dictName = ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % dailyActionID |
| | | state = gameWorld.GetDictByKey(dictName)
|
| | | if state:
|
| | | GameWorld.SendMapServerMsgEx(dictName, state)
|
| | | |
| | | todayDailyActionInfo = __GetTodayDailyActionInfo()
|
| | | if not todayDailyActionInfo:
|
| | | return
|
| | |
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | for actionInfo in todayDailyActionInfo:
|
| | | dailyActionID = actionInfo[0]
|
| | | dictName = ShareDefine.Def_Notify_WorldKey_DailyActionState % dailyActionID
|