8650 【主干】【BT2】活动规则优化(多活动支持的改为单表模式,增加活动分组编号字段区分不同的活动编号;常规活动改为不受合服影响,合服活动独立出来;累计充值活动、集字活动适配为新模式 master冲突补同步);
5个文件已修改
215 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -200,6 +200,13 @@
Def_Notify_WorldKey_AssistBoss = "AssistBoss"  # 协助boss
#活动类型定义
ActTypeList = (
ActType_OpenComm, # 开服及常规运营活动 1
ActType_MixServer, # 合服活动 2
ActType_Feast, # 节日活动 3
) = range(1, 1 + 3)
#运营活动表名定义
OperationActionName_ExpRate = "ActExpRate" # 多倍经验活动
OperationActionName_CostRebate = "ActCostRebate" # 消费返利活动
@@ -213,14 +220,11 @@
OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
OperationActionName_TotalRecharge3 = "ActTotalRecharge3" # 累计充值活动 - 节日充值领奖
OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
OperationActionName_FeastRedPacket = "ActFeastRedPacket" # 节日红包活动
OperationActionName_CollectWords = "ActCollectWords" # 集字活动
OperationActionName_CollectWords2 = "ActCollectWords2" # 集字活动2
OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
OperationActionName_RechargePrize = "ActRechargePrize" # 充值返利活动
OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
@@ -231,7 +235,7 @@
#节日活动类型列表 - 该类型无视开服天,日期到了就开启
FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
                                OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
                                OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
                                OperationActionName_FeastLogin,
                                OperationActionName_FeastWish, OperationActionName_FeastTravel,
                                ]
#所有的运营活动列表,含节日活动
@@ -239,31 +243,28 @@
                           OperationActionName_BossReborn,OperationActionName_SpringSale, 
                           OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                           OperationActionName_RealmPoint, OperationActionName_FlashSale,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge,
                           OperationActionName_WeekParty, OperationActionName_LoginAward, 
                           OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
                           OperationActionName_DailyGiftbag, OperationActionName_RechargePrize, 
                           OperationActionName_CollectWords, OperationActionName_CollectWords2] \
                           OperationActionName_CollectWords] \
                           + FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, 
                                   OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge,
                                   OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
                                   OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
                                   OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
                                   OperationActionName_WeekParty,
                                   OperationActionName_CollectWords, OperationActionName_CollectWords2,
                                   OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
                                   OperationActionName_CollectWords,
                                   OperationActionName_FeastLogin,
                                   OperationActionName_FeastWish, OperationActionName_FeastTravel,
                                   ]
#所有的累计充值活动
OperationActionName_TotalRechargeDict = {
                                         1:OperationActionName_TotalRecharge,
                                         2:OperationActionName_TotalRecharge2,
                                         3:OperationActionName_TotalRecharge3,
                                         }
#支持多活动分组编号的活动名
MultiActNumOperationActNameList = [OperationActionName_TotalRecharge, OperationActionName_CollectWords]
#跨服运营活动表名定义
CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
@@ -274,6 +275,7 @@
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
ActKey_State = "State" # 活动状态 0-未开启, >0开启中,也代表当日的第几个时间段
ActKey_CfgID = "CfgID" # 活动表配置ID
ActKey_ActNum = "ActNum" # 活动分组编号
ActKey_DayIndex = "DayIndex" # 当前活动天索引,0开始,代表第1天
ActKey_TemplateID = "TemplateID" # 当前活动模板ID
ActKey_WorldLV = "WorldLV" # 活动开启时世界等级
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py
@@ -29,29 +29,69 @@
import ChConfig
import CommFunc
def GetTemplateID(cfgID, dayIndex, actNum):
def GetTemplateID(cfgID, dayIndex):
    if cfgID == None or dayIndex == None:
        return 0
    if actNum == 1:
        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
    else:
        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge%s" % actNum, cfgID)
    if not ipyData:
        return 0
    templateIDList = ipyData.GetTemplateIDList()
    templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
    return templateID
def GetActInfo(actNum):
    if ShareDefine.OperationActionName_TotalRecharge not in PyGameData.g_operationActionDict:
        return {}
    actNumDict = PyGameData.g_operationActionDict[ShareDefine.OperationActionName_TotalRecharge]
    if actNum not in actNumDict:
        return {}
    return actNumDict[actNum]
def OnPlayerLogin(curPlayer):
    
    for actNum, actName in ShareDefine.OperationActionName_TotalRechargeDict.items():
    TransferPlayerActDBKeyValue(curPlayer)
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {}).values():
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
        isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
        if not isReset:
            actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
            # 活动中同步活动信息
            if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
            if actInfo.get(ShareDefine.ActKey_State):
                Sync_TotalRechargeActionInfo(curPlayer, actNum)
                Sync_TotalRechargeInfo(curPlayer, actNum)
    return
def TransferPlayerActDBKeyValue(curPlayer):
    ## 玩家登录时调用,旧版本玩家活动数据转移到新版本字典,线上版本维护之后的版本可删除此代码,线上版本分支 gt_1.100.4
    # 原: 1-常规单日;2-常规多日;3-节日多日
    # 新:10            11        31
    transferActNumDict = {1:10, 2:11, 3:31}
    for actNumOld, actNumNew in transferActNumDict.items():
        actID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID % actNumOld)
        if not actID:
            continue
        templateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeTemplateID % actNumOld)
        rechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNumOld)
        awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord % actNumOld)
        worldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeWorldLV % actNumOld)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID % actNumNew, actID)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID % actNumNew, templateID)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold % actNumNew, rechargeGold)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNumNew, awardRecord)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeWorldLV % actNumNew, worldLV)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID % actNumOld, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID % actNumOld, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold % actNumOld, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNumOld, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeWorldLV % actNumOld, 0)
        GameWorld.Log("累计充值转移玩家活动字典记录: actNumOld=%s,actNumNew=%s,actID=%s,templateID=%s,rechargeGold=%s,awardRecord=%s,worldLV=%s"
                      % (actNumOld, actNumNew, actID, templateID, rechargeGold, awardRecord, worldLV), curPlayer.GetPlayerID())
                
    return
@@ -69,12 +109,9 @@
    ## 检查玩家累计充值活动数据信息
    
    playerID = curPlayer.GetPlayerID()
    if actNum not in ShareDefine.OperationActionName_TotalRechargeDict:
        return
    actName = ShareDefine.OperationActionName_TotalRechargeDict[actNum]
    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
    TotalRechargeID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID, 0)
    state = actTotalRechargeInfo.get(ShareDefine.ActKey_State, 0)
    actInfo = GetActInfo(actNum)
    TotalRechargeID = actInfo.get(ShareDefine.ActKey_ID, 0)
    state = actInfo.get(ShareDefine.ActKey_State, 0)
    
    playerTotalRechargeID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID % actNum) # 玩家身上的活动ID
    
@@ -82,9 +119,9 @@
    if TotalRechargeID == playerTotalRechargeID:
        GameWorld.DebugLog("累计充值活动ID不变,不处理!actNum=%s" % actNum, curPlayer.GetPlayerID())
        return
    actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeWorldLV % actNum)
    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
    templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeTemplateID % actNum)
    
    GameWorld.DebugLog("累计充值重置! actNum=%s,TotalRechargeID=%s,playerTotalRechargeID=%s,state=%s,templateID=%s,playerTemplateID=%s" 
@@ -138,8 +175,8 @@
        
    if batchPlayerIDList:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum, awardRecord)
        mailTypeKey = "TotalRechargeMail40" if actNum == 3 else "TotalRechargeMail"
        PlayerControl.SendMailBatch(mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList)
        actType = actNum / 10
        PlayerControl.SendMailBatch("TotalRechargeMail%s" % actType, batchPlayerIDList, batchAddItemList, batchParamList)
        
    return
@@ -153,24 +190,21 @@
        return itemInfoDict[str(job)]
    
def AddTotalRechargeGold(curPlayer, addGold, actNum):
def AddTotalRechargeGold(curPlayer, addGold):
    if addGold <= 0:
        return
   
    if actNum not in ShareDefine.OperationActionName_TotalRechargeDict:
        return
    actName = ShareDefine.OperationActionName_TotalRechargeDict[actNum]
    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
    if not actTotalRechargeInfo.get(ShareDefine.ActKey_State):
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {}).values():
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
        if not actInfo.get(ShareDefine.ActKey_State):
        GameWorld.DebugLog("累计充值活动当前未开启! actNum=%s" % actNum)
        return
            continue
    
    actID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID)
    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
        actID = actInfo.get(ShareDefine.ActKey_ID)
        templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
    if not actID or not templateID:
        GameWorld.ErrLog("累计充值活动数据异常!actID=%s,templateID=%s" % (actID, templateID), curPlayer.GetPlayerID())
        return
            continue
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID % actNum, actID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID % actNum, templateID)
    
@@ -185,22 +219,18 @@
def OnGetTotalRechargeAward(curPlayer, awardIndex, actNum):
    '''OnGetTotalRechargeAward
    @param awardIndex: 奖励索引
    @param actNum: 活动编号,如1 或 2 代表不同的活动
    @param actNum: 活动编号,如11 或  12 代表不同的活动
    '''
    actNum = GameWorld.ToIntDef(actNum, 0)
    if actNum <= 0:
        GameWorld.DebugLog("没有指定领取的累充活动编号! actNum=%s" % actNum)
        return
    playerID = curPlayer.GetPlayerID()
    actInfo = GetActInfo(actNum)
    
    if actNum not in ShareDefine.OperationActionName_TotalRechargeDict:
        return
    actName = ShareDefine.OperationActionName_TotalRechargeDict[actNum]
    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
    TotalRechargeID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID, 0)
    state = actTotalRechargeInfo.get(ShareDefine.ActKey_State, 0)
    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
    TotalRechargeID = actInfo.get(ShareDefine.ActKey_ID, 0)
    state = actInfo.get(ShareDefine.ActKey_State, 0)
    templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
    if not state or not templateID:
        GameWorld.DebugLog("没有累计充值活动,无法领奖!actNum=%s,state=%s,templateID=%s" % (actNum, state, templateID), playerID)
        return
@@ -229,7 +259,7 @@
        return
    
    needGold = CommFunc.RMBToCoin(awardIpyData.GetNeedGold())
    actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    awardItemList = __GetItemList(ipyData.GetAwardItem(), curPlayer.GetJob(), actWorldLV)
    
    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNum)
@@ -271,22 +301,12 @@
def Sync_TotalRechargeActionInfo(curPlayer, actNum):
    ## 通知累计充值活动信息
    
    if actNum not in ShareDefine.OperationActionName_TotalRechargeDict:
        return
    actName = ShareDefine.OperationActionName_TotalRechargeDict[actNum]
    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
    if not actTotalRechargeInfo:
    actInfo = GetActInfo(actNum)
    if not actInfo.get(ShareDefine.ActKey_State):
        return
    
    if not actTotalRechargeInfo.get(ShareDefine.ActKey_State):
        return
    cfgID = actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID)
    if actNum == 1:
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
    else:
        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge%s" % actNum, cfgID)
    if not ipyData:
        return
    
@@ -294,7 +314,7 @@
    if not templateIDList:
        return
    job = curPlayer.GetJob()
    actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    actInfo = ChPyNetSendPack.tagMCActTotalRechargeInfo()
    actInfo.ActNum = actNum
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -442,8 +442,7 @@
    PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
    PlayerGoldGift.OnPlayerChargeGold(curPlayer)
    #累积充值X元
    for actNum in ShareDefine.OperationActionName_TotalRechargeDict.keys():
        PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, actNum)
    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin)
    PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin)
    PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin)
    #开服活动
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -1336,18 +1336,27 @@
        if key.startswith(ShareDefine.Def_Notify_WorldKey_OperationActionInfo[:-2]): 
            keyHead = ShareDefine.Def_Notify_WorldKey_OperationActionInfo[:-2]
            actionName = key[len(keyHead):]
            PyGameData.g_operationActionDict[actionName] = eval(msgValue)
            actInfo = eval(msgValue)
            actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
            if actionName in ShareDefine.MultiActNumOperationActNameList:
                if not actNum:
                    GameWorld.ErrLog('MultiActNumOperation can not found actNum. actionName=%s,msg = %s' % (actionName, msg))
                    return
                if actionName not in PyGameData.g_operationActionDict:
                    PyGameData.g_operationActionDict[actionName] = {}
                PyGameData.g_operationActionDict[actionName][actNum] = actInfo
            else:
                PyGameData.g_operationActionDict[actionName] = actInfo
            
            if actionName == ShareDefine.OperationActionName_ExpRate:
                PlayerControl.RefreshOperationAction_ExpRate()
                
            elif actionName == ShareDefine.OperationActionName_CostRebate:
                PlayerCostRebate.RefreshCostRebateActionInfo()
            elif actionName in ShareDefine.OperationActionName_TotalRechargeDict.values():
                for actNum, actName in ShareDefine.OperationActionName_TotalRechargeDict.items():
                    if actionName == actName:
            elif actionName == ShareDefine.OperationActionName_TotalRecharge:
                        PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(actNum)
                        break
            elif actionName == ShareDefine.OperationActionName_SpringSale:
                PlayerSpringSale.RefreshSpringSaleActionInfo()
@@ -1373,10 +1382,7 @@
                PlayerWishingWell.RefreshWishingWellAction()
                
            elif actionName == ShareDefine.OperationActionName_CollectWords:
                PlayerActCollectWords.RefreshActCollectWordsInfo(1)
            elif actionName == ShareDefine.OperationActionName_CollectWords2:
                PlayerActCollectWords.RefreshActCollectWordsInfo(2)
                PlayerActCollectWords.RefreshActCollectWordsInfo(actNum)
                
            elif actionName == ShareDefine.OperationActionName_WeekParty:
                PlayerWeekParty.RefreshOperationAction_WeekParty()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -200,6 +200,13 @@
Def_Notify_WorldKey_AssistBoss = "AssistBoss"  # 协助boss
#活动类型定义
ActTypeList = (
ActType_OpenComm, # 开服及常规运营活动 1
ActType_MixServer, # 合服活动 2
ActType_Feast, # 节日活动 3
) = range(1, 1 + 3)
#运营活动表名定义
OperationActionName_ExpRate = "ActExpRate" # 多倍经验活动
OperationActionName_CostRebate = "ActCostRebate" # 消费返利活动
@@ -213,14 +220,11 @@
OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
OperationActionName_TotalRecharge3 = "ActTotalRecharge3" # 累计充值活动 - 节日充值领奖
OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
OperationActionName_FeastRedPacket = "ActFeastRedPacket" # 节日红包活动
OperationActionName_CollectWords = "ActCollectWords" # 集字活动
OperationActionName_CollectWords2 = "ActCollectWords2" # 集字活动2
OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
OperationActionName_RechargePrize = "ActRechargePrize" # 充值返利活动
OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
@@ -231,7 +235,7 @@
#节日活动类型列表 - 该类型无视开服天,日期到了就开启
FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
                                OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
                                OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
                                OperationActionName_FeastLogin,
                                OperationActionName_FeastWish, OperationActionName_FeastTravel,
                                ]
#所有的运营活动列表,含节日活动
@@ -239,31 +243,28 @@
                           OperationActionName_BossReborn,OperationActionName_SpringSale, 
                           OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                           OperationActionName_RealmPoint, OperationActionName_FlashSale,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge,
                           OperationActionName_WeekParty, OperationActionName_LoginAward, 
                           OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
                           OperationActionName_DailyGiftbag, OperationActionName_RechargePrize, 
                           OperationActionName_CollectWords, OperationActionName_CollectWords2] \
                           OperationActionName_CollectWords] \
                           + FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, 
                                   OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge,
                                   OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
                                   OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
                                   OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
                                   OperationActionName_WeekParty,
                                   OperationActionName_CollectWords, OperationActionName_CollectWords2,
                                   OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
                                   OperationActionName_CollectWords,
                                   OperationActionName_FeastLogin,
                                   OperationActionName_FeastWish, OperationActionName_FeastTravel,
                                   ]
#所有的累计充值活动
OperationActionName_TotalRechargeDict = {
                                         1:OperationActionName_TotalRecharge,
                                         2:OperationActionName_TotalRecharge2,
                                         3:OperationActionName_TotalRecharge3,
                                         }
#支持多活动分组编号的活动名
MultiActNumOperationActNameList = [OperationActionName_TotalRecharge, OperationActionName_CollectWords]
#跨服运营活动表名定义
CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
@@ -274,6 +275,7 @@
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
ActKey_State = "State" # 活动状态 0-未开启, >0开启中,也代表当日的第几个时间段
ActKey_CfgID = "CfgID" # 活动表配置ID
ActKey_ActNum = "ActNum" # 活动分组编号
ActKey_DayIndex = "DayIndex" # 当前活动天索引,0开始,代表第1天
ActKey_TemplateID = "TemplateID" # 当前活动模板ID
ActKey_WorldLV = "WorldLV" # 活动开启时世界等级