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 | 127 +++++++++++++---------------------------- 1 files changed, 41 insertions(+), 86 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py index 08c9e57..3c5ea40 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py @@ -25,7 +25,6 @@ import ShareDefine #import PlayerExam import PlayerDBGSEvent -import MergeBroadcast #import PlayerManorWar #import GameWorldShopItem #import GameWorldActionTeHui @@ -37,7 +36,9 @@ import PlayerXMZZ import PlayerFamilySWRH import GameWorldBoss +import PlayerFamilyRedPacket import PlayerFairyCeremony +import PlayerNewFairyCeremony import GameWorldProcess import ChPyNetSendPack import NetPackCommon @@ -77,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(): @@ -162,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 @@ -342,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, ...], ...}, ...} @@ -438,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: #记录开启时世界等级 @@ -452,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 @@ -475,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) # 运营活动不单独通知活动状态,需与活动信息整合后一起通知 @@ -1073,72 +1103,6 @@ Dispose_ActionGoOnByDayKey() return - -## 设定上次开启活动时间距离现在天数事件 -# @param None: -# @return: None -def DoLogic_ServerLastOpenActionDay(): - - #是跨服服务器 - if GameWorld.IsCrossServer(): - 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.IsCrossServer(): -# return False -# -# return True - ## 当前时间与指定时间比较 # @param curTime 当前服务器时间 # @param timeInfo 指定时间 [[3,4(星期几)], 年,月,日,时,分] @@ -1232,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 #------------------------------------------------------------------------------- -- Gitblit v1.8.0