From 5685e4d493ef5b7570bc20b6037fc2c8603cab85 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 13 二月 2019 14:41:57 +0800 Subject: [PATCH] 6211 【后端】【1.6】合服任务单(删除旧合服相关内容) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 215 ----------------------------------------------------- 1 files changed, 0 insertions(+), 215 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index 7b8d625..8954560 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py @@ -1091,21 +1091,6 @@ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FBOpenRecord, fbOpenRecord) return -## 处理重开服务器后, 活动继续开启逻辑根据天数 -# @param tick 当前时间 -# @return None -def Dispose_Action_GoOn_ByDay(tick): - #已固定在每整分钟触发,故暂不需要时间间隔控制 - #if not GameWorld.SetWorldDictKey(ChConfig.TYPE_ActionOpenAndCloseByDayCountGoOn, tick): - # #间隔未到 - # return - - if GameWorld.IsCrossServer(): - return - - Dispose_ActionGoOnByDayKey() - return - ## 当前时间与指定时间比较 # @param curTime 当前服务器时间 # @param timeInfo 指定时间 [[3,4(星期几)], 年,月,日,时,分] @@ -1202,203 +1187,3 @@ return #------------------------------------------------------------------------------- - -## 根据活动开启的活动事件OnDay -# @param None: -# @return: None -def DoLogic_ActionByDayKeyOnDay(): - openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) - isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) - mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) - repeatDayInfo = ReadChConfig.GetEvalChConfig('ActionControlByDayKeyRepeat') - startRepeatOpenDay, startRepeatMixDay, repeatList = repeatDayInfo - # 不是循环阶段 - if openServerDay < startRepeatOpenDay or (isMixServer and mixServerDay < startRepeatMixDay): - GameWorld.Log("没有正式进入周期循环,不处理!") - return - - Def_RepeatOrderKey = PlayerDBGSEvent.Def_TeHuiRepeatOrderKey - Def_RepeatNumKey = PlayerDBGSEvent.Def_TeHuiRepeatNumKey - - # 强制更新一次世界等级 - GameWorldAverageLv.OpenWorldAverageLv() - - repeatOrder = PlayerDBGSEvent.GetDBGSTrig_ByKey(Def_RepeatOrderKey) - repeatOrder = "" if not repeatOrder else str(repeatOrder) - preRepeatNum = PlayerDBGSEvent.GetDBGSTrig_ByKey(Def_RepeatNumKey) - preRepeatNum = "" if not preRepeatNum else str(preRepeatNum) - worldAverageLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) - GameWorld.Log("处理周期循环: openServerDay=%s,isMixServer=%s,mixServerDay=%s" % (openServerDay, isMixServer, mixServerDay)) - GameWorld.Log(" startRepeatOpenDay=%s,startRepeatMixDay=%s,repeatOrder=%s,preRepeatNum=%s,worldAverageLV=%s" - % (startRepeatOpenDay, startRepeatMixDay, repeatOrder, preRepeatNum, worldAverageLV)) - - # 开始循环 - if openServerDay == startRepeatOpenDay or (isMixServer and mixServerDay == startRepeatMixDay): - repeatOrder = "" - for i, repeatInfo in enumerate(repeatList, 1): - if i > 9: - break - needWorldAverageLV = repeatInfo[0] - if worldAverageLV < needWorldAverageLV: - continue - repeatOrder = "%s%s" % (repeatOrder, i) - PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatOrderKey, GameWorld.ToIntDef(repeatOrder)) - GameWorld.Log(" 开始循环, 生成循环编号顺序: %s" % repeatOrder) - - # 还没全部开始循环,则判断是否有动态新插入的循环 - elif len(repeatOrder) < len(repeatList): - GameWorld.Log(" 还没全部开始循环,判断是否有动态新插入的循环..") - for i, repeatInfo in enumerate(repeatList, 1): - if i > 9: - break - if str(i) in repeatOrder: # 已经在循环里的不处理 - continue - needWorldAverageLV = repeatInfo[0] - if worldAverageLV < needWorldAverageLV: - continue - - # 插入新循环 - if preRepeatNum in repeatOrder: - insertIndex = repeatOrder.index(preRepeatNum) - repeatOrder = repeatOrder[:insertIndex + 1] + str(i) + repeatOrder[insertIndex + 1:] - else: - repeatOrder = str(i) - PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatOrderKey, GameWorld.ToIntDef(repeatOrder)) - GameWorld.Log(" 编号%s, needWorldAverageLV=%s,插入循环,更新循环编号顺序: %s" % (i, needWorldAverageLV, repeatOrder)) - break - - if not repeatOrder: - GameWorld.Log(" 没有可循环的活动!") - return - - # 进入下一天循环编号 - if preRepeatNum and preRepeatNum in repeatOrder: - nextRepeatIndex = repeatOrder.index(preRepeatNum) + 1 - nextRepeatIndex = 0 if nextRepeatIndex >= len(repeatOrder) else nextRepeatIndex - else: - nextRepeatIndex = 0 - nextRepeatNum = GameWorld.ToIntDef(repeatOrder[nextRepeatIndex]) - PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatNumKey, nextRepeatNum) - if nextRepeatNum <= 0 or nextRepeatNum > len(repeatList): - GameWorld.Log(" 下一个循环编号错误!nextRepeatNum=%s" % nextRepeatNum) - return - - GameWorld.Log(" 过天变更循环活动状态, nextRepeatNum=%s" % nextRepeatNum) - - gameWorld = GameWorld.GetGameWorld() - nextRepeatDict = repeatList[nextRepeatNum - 1][1] - for dictName, signID in nextRepeatDict.items(): - # 已经是这个值不处理 - if gameWorld.GetDictByKey(dictName) == signID: - #GameWorld.DebugLog(" 已经是这个值不处理dictName=%s,signID=%s" % (dictName,signID)) - continue - - # 默认当前的0点开始到当天的23点59分 - curDay, beginDay, beginH, beginM, endDay, endH, endM = 0, 0, 0, 0, 0, 23, 59 - __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM) - - return - - - -## 处理重开服务器后, 活动继续开启逻辑根据天数key -# @param None -# @return None -def Dispose_ActionGoOnByDayKey(): - if GameWorld.IsCrossServer(): - return - GameWorld.DebugLog("处理特惠状态信息...") - openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) - isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) - mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) - allActionGoOnInfo = ReadChConfig.GetEvalChConfig("ActionControlByDayKeyGoOn") - - if not isMixServer: - __DoActionGoOnByDayKeyCheck(allActionGoOnInfo[0], openServerDay) - else: - __DoActionGoOnByDayKeyCheck(allActionGoOnInfo[1], mixServerDay) - - return - - -## 按天开启可循环活动检查 -# @param controlList: -# @return: None -def __DoActionGoOnByDayKeyCheck(goOnList, curDay): - curTime = GameWorld.GetServerTime() - gameWorld = GameWorld.GetGameWorld() - for goOnControl in goOnList: - beginDay, beginH, beginM = goOnControl[0] - endDay, endH, endM = goOnControl[1] - if curDay < beginDay or curDay > endDay: - #活动不在这一时间段 - #GameWorld.DebugLog("活动不在这一时间段curDay=%s < beginDay=%s or curDay > endDay=%s" - # % (curDay,beginDay,endDay)) - continue - - dictName = goOnControl[2] # 字典名 - signID = goOnControl[3] # 标记 - - # 已经是这个值不处理 - if gameWorld.GetDictByKey(dictName) == signID: - #GameWorld.DebugLog("已经是这个值不处理dictName=%s,signID=%s" % (dictName,signID)) - continue - - beginTime = ['-', '-', '-', '-', beginH, beginM] - endTime = ['-', '-', '-', '-', endH, endM] - #还没开始 - if curDay == beginDay and CompareActTime(curTime, beginTime) == ChConfig.Def_Cmp_Lower: - #GameWorld.DebugLog("还没开始...") - continue - - #已经结束 - if curDay == endDay and CompareActTime(curTime, endTime) == ChConfig.Def_Cmp_Greater: - #GameWorld.DebugLog("已经结束...") - continue - - __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM) - - return - -def __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM): - # 计算开始及结束日期 - beginTime, endTime = GetBeginEndTimeByDay(dictName, curDay, beginDay, beginH, beginM, endDay, endH, endM) - - actionID = int(time.time()) - GameWorld.Log('活动状态变更: dictName=%s,signID=%s,beginTime=%s,endTime=%s,actionID=%s' - % (dictName, signID, beginTime, endTime, actionID)) - - #潜规则:在ChConfig活动相关设置中,提取了字典名 - gameWorld.SetDict(dictName, signID) - gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_DayAction_BeginTime % dictName, beginTime) - gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_DayAction_EndTime % dictName, endTime) - # 标记活动唯一id - actionIDKey = ShareDefine.Def_Notify_WorldKey_DayAction_ID % dictName - gameWorld.SetDict(actionIDKey, actionID) - - #通知Mapserver,设置字典 - GameWorld.SendMapServerMsgEx(actionIDKey, actionID) - GameWorld.SendMapServerMsgEx(dictName, signID) - - #处理GameServer活动逻辑 - __DoLogic_GameServer_ActionState(dictName, signID) - return - -## 获取开启结束时间 -# @param tick -# @return None -def GetBeginEndTimeByDay(dictName, curDay, beginDay, beginH, beginM, endDay, endH, endM): - beginDiffDays = max(0, curDay - beginDay) - beginDateTime = GameWorld.GetDatetimeBySubDays(beginDiffDays) - beginDateTimeStr = str(beginDateTime).split(".")[0] - beginDateTimeStr = "%s %02d:%02d:00" % (beginDateTimeStr[:10], beginH, beginM) - beginTimeNum = GameWorld.ChangeTimeStrToNum(beginDateTimeStr, ChConfig.TYPE_Time_Format) - - endDiffDays = max(0, endDay - curDay) - endDateTime = GameWorld.GetDatetimeByDiffDays(endDiffDays) - endDateTimeStr = str(endDateTime).split(".")[0] - endDateTimeStr = "%s %02d:%02d:59" % (endDateTimeStr[:10], endH, endM) - endTimeNum = GameWorld.ChangeTimeStrToNum(endDateTimeStr, ChConfig.TYPE_Time_Format) - return beginTimeNum, endTimeNum - - -- Gitblit v1.8.0