From 03f617028885a2e8840500bb520f3418d54eb791 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 30 一月 2019 18:09:20 +0800 Subject: [PATCH] 2968 【1.6】本服打boss,中途传送到跨服,未清空本服归属 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 142 ++++++++++++++--------------------------------- 1 files changed, 43 insertions(+), 99 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index b09183a..3c5ea40 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py @@ -25,13 +25,10 @@ import ShareDefine #import PlayerExam import PlayerDBGSEvent -import MergeBroadcast #import PlayerManorWar #import GameWorldShopItem #import GameWorldActionTeHui import GameWorldAverageLv -#import GameWorldMergeBoss -#import GameWorldMergeKing import CrossRealmPK import GameWorldFamilyWar import PlayerFamilyParty @@ -39,7 +36,9 @@ import PlayerXMZZ import PlayerFamilySWRH import GameWorldBoss +import PlayerFamilyRedPacket import PlayerFairyCeremony +import PlayerNewFairyCeremony import GameWorldProcess import ChPyNetSendPack import NetPackCommon @@ -79,12 +78,22 @@ ipyData = operationActionDict[ShareDefine.OperationActionName_FairyCeremony][0] if ipyData: PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData, curPlayer) - + # 新仙界盛典活动进行中 + if ShareDefine.OperationActionName_NewFairyCeremony in operationActionDict: + ipyData = operationActionDict[ShareDefine.OperationActionName_NewFairyCeremony][0] + if ipyData: + PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData, curPlayer) # 多倍修行点活动进行中 if ShareDefine.OperationActionName_RealmPoint in operationActionDict: ipyData = operationActionDict[ShareDefine.OperationActionName_RealmPoint][0] if ipyData: Sync_OperationAction_RealmPoint(ipyData, curPlayer) + # 节日红包活动进行中 + if ShareDefine.OperationActionName_FeastRedPacket in operationActionDict: + ipyData = operationActionDict[ShareDefine.OperationActionName_FeastRedPacket][0] + if ipyData: + PlayerFamilyRedPacket.Sync_FeastRedPacket(ipyData, curPlayer) + return def SendMapServerOperationActionState(): @@ -164,7 +173,7 @@ startDateStr = "%d-%d-%d" % (openServerDateTime.year, openServerDateTime.month, openServerDateTime.day) endDateStr = "%d-%d-%d" % (endServerDateTime.year, endServerDateTime.month, endServerDateTime.day) GameWorld.Log(" 开服天转化为日期: %s ~ %s" % (startDateStr, endDateStr)) - else: + elif actName not in ShareDefine.FeastOperationActionNameList: if openServerDay <= customMaxServerDay: GameWorld.Log(" 按日期开的在开服定制限制天内,不处理! cfgID=%s,%s ~ %s,openServerDay=%s" % (cfgID, startDateStr, endDateStr, openServerDay)) continue @@ -344,6 +353,10 @@ def __GetOperationActionServerIpyDataList(ipyDataMgr, serverID, actName): ## 获取运营活动本服务器对应的配置数据列表 + if not hasattr(ipyDataMgr, "Get%sCount" % actName): + GameWorld.ErrLog("没有该运营活动类型对应活动时间表! actName=%s" % actName) + return [] + # 所有配置先按活动标识归组 platform = GameWorld.GetPlatform() actGroupDict = {} # {ActMark:{ServerIDTuple:[ipyData, ...], ...}, ...} @@ -440,7 +453,8 @@ dbOperationActIDKey = PlayerDBGSEvent.Def_OperationActID % actName curActID = sendMapServerMsgDict.get(ShareDefine.ActKey_ID) - if state >= 1 and curActID and PlayerDBGSEvent.GetDBGSTrig_ByKey(dbOperationActIDKey) != curActID: + dayIndex = sendMapServerMsgDict.get(ShareDefine.ActKey_DayIndex, 0) + if curActID and PlayerDBGSEvent.GetDBGSTrig_ByKey(dbOperationActIDKey) != curActID: PlayerDBGSEvent.SetDBGSTrig_ByKey(dbOperationActIDKey, curActID) if actName in ShareDefine.NeedWorldLVOperationActNameList: #记录开启时世界等级 @@ -454,10 +468,19 @@ elif actName == ShareDefine.OperationActionName_FairyCeremony: #重置仙界盛典 PlayerFairyCeremony.ResetFairyCeremony() - - + elif actName == ShareDefine.OperationActionName_NewFairyCeremony: + #重置仙界盛典 + PlayerNewFairyCeremony.ResetNewFairyCeremony() + elif actName == ShareDefine.OperationActionName_FeastRedPacket: + #重置节日红包 + if ipyData: + PlayerFamilyRedPacket.OnResetFeastRedPacket(ipyData, dayIndex) + elif actName == ShareDefine.OperationActionName_FlashSale: + #限时抢购重置购买次数 本次活动每场不能重复 + #dayIndex = sendMapServerMsgDict.get(ShareDefine.ActKey_DayIndex, 0) + PlayerStore.ResetFlashSaleBuyCnt(ipyData) - if state >= 1 and actName in ShareDefine.NeedWorldLVOperationActNameList: + if actName in ShareDefine.NeedWorldLVOperationActNameList: actWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % actName) sendMapServerMsgDict[ShareDefine.ActKey_WorldLV] = actWorldLV @@ -477,13 +500,18 @@ PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData) if preState != state and state == 0: PlayerFairyCeremony.OnFairyCeremonyEnd() + elif actName == ShareDefine.OperationActionName_NewFairyCeremony: + if isReload and ipyData: + PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData) + if preState != state and state == 0: + PlayerNewFairyCeremony.OnNewFairyCeremonyEnd() + elif actName == ShareDefine.OperationActionName_RealmPoint: if isReload and ipyData: Sync_OperationAction_RealmPoint(ipyData) - elif actName == ShareDefine.OperationActionName_FlashSale: - if ipyData and preState != state: - dayIndex = sendMapServerMsgDict.get(ShareDefine.ActKey_DayIndex, 0) - PlayerStore.ResetFlashSaleBuyCnt(ipyData, dayIndex, state) + elif actName == ShareDefine.OperationActionName_FeastRedPacket: + if isReload and ipyData: + PlayerFamilyRedPacket.Sync_FeastRedPacket(ipyData) #通知Mapserver,设置字典 #GameWorld.SendMapServerMsgEx(dictName, state) # 运营活动不单独通知活动状态,需与活动信息整合后一起通知 @@ -1069,77 +1097,11 @@ # #间隔未到 # return - if GameWorld.IsMergeServer(): + if GameWorld.IsCrossServer(): return Dispose_ActionGoOnByDayKey() return - - -## 设定上次开启活动时间距离现在天数事件 -# @param None: -# @return: None -def DoLogic_ServerLastOpenActionDay(): - - #是跨服服务器 - if GameWorld.IsMergeServer(): - if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeServerOpenActionDay): - return - - PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_MergeServerOpenActionDay) - - #通知子服务器天数 - SendBroadcastMergeOpenActionDay() - return - - DoLogic_ActionByDayKeyOnDay() - - #上次开启活动时间距离现在天数 - lastOpenActionDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerLastOpenActionDay) - openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) - initDayList = ReadChConfig.GetEvalChConfig('ActionControlByDayInitOpenServerDay') - if openServerDay < initDayList[0]: - #开服时间未超过30天 - return - - #新一轮活动从头开始 - if lastOpenActionDay >= initDayList[1] or openServerDay == initDayList[2]: - NewRingOpenActionDay() - return - - PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_ServerLastOpenActionDay) - return - - -## 新一轮活动开始 -# @param None: -# @return: -def NewRingOpenActionDay(): - - #设置字典值从1开始, 跟SetDBGSTrig_ServerTime接口同步 - PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerLastOpenActionDay, 1) - - # 活动天数重设 - OpenActionDay_Reset() - return - -#------------------------------------------------------------------------------ -## 活动天数重设 -# @param None -# @return None -def OpenActionDay_Reset(): - # 设置国王战开始 - #PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeWarStart, 1) - return - -### 检查key是否处理 -#def __CheckIsProcessDictName(dictName): -# -# # 非跨服服务器不处理某些key -# if dictName in [ShareDefine.Def_Notify_WorldKey_Merge_King] and not GameWorld.IsMergeServer(): -# return False -# -# return True ## 当前时间与指定时间比较 # @param curTime 当前服务器时间 @@ -1205,15 +1167,6 @@ # #领地争夺战 # if dictName == ShareDefine.Def_Notify_WorldKey_ManorWar: # PlayerManorWar.ManorWar_ChangeState(isOpen) - # #跨服boss - # elif dictName == ShareDefine.Def_Notify_WorldKey_MergeBoss: - # GameWorldMergeBoss.MergeBoss_ChangeState(isOpen) - # #跨服PK - # elif dictName == ShareDefine.Def_Notify_WorldKey_Merge_PK: - # GameWorldMergePK.OnMergePKMatchStateChange(isOpen) - # #跨服王者争霸 - # elif dictName == ShareDefine.Def_Notify_WorldKey_Merge_King: - # GameWorldMergeKing.OnMergeKingStateChange(isOpen) # #答题活动 # elif dictName == ShareDefine.Def_Notify_WorldKey_Game_EXAM: # PlayerExam.Exam_ChangeState(isOpen) @@ -1243,15 +1196,6 @@ #跨服PK elif dictName == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_CrossReamPK: CrossRealmPK.OnCrossRealmPKDailyActionStateChange(isOpen) - return - -#------------------------------------------------------------------------------ -## 通知子服务器天数 -# @param param: None -# @return: None -def SendBroadcastMergeOpenActionDay(): - mergeServerOpenActionDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MergeServerOpenActionDay) - MergeBroadcast.SendBroadcastMerge(ChConfig.Def_MergeServerOpenActionDay, 0, {"Day":mergeServerOpenActionDay}) return #------------------------------------------------------------------------------- @@ -1358,7 +1302,7 @@ # @param None # @return None def Dispose_ActionGoOnByDayKey(): - if GameWorld.IsMergeServer(): + if GameWorld.IsCrossServer(): return GameWorld.DebugLog("处理特惠状态信息...") openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) -- Gitblit v1.8.0