8716 【主干】【后端】【BT2】H.活动-节日祈愿(增加节日充值领奖);
| | |
| | | BYTE IsDayReset; //是否每天重置
|
| | | };
|
| | |
|
| | | //累计充值活动表3 - 节日充值
|
| | |
|
| | | struct tagActTotalRecharge3
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char ActMark; //活动组标记
|
| | | list PlatformList; //活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | list ServerGroupIDList; //服务器ID列表
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | dict NotifyInfoStart; //全服提示信息 - 相对开始时间
|
| | | dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
|
| | | list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | };
|
| | |
|
| | | //跨服分区表通用
|
| | |
|
| | | struct tagCrossZoneComm
|
| | |
| | | BYTE PrizeCountLimit; //最大赠送次数
|
| | | };
|
| | |
|
| | | //累计充值活动表3 - 节日充值
|
| | |
|
| | | struct tagActTotalRecharge3
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | WORD LVLimit; //限制等级
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | list TemplateIDList; //模板ID列表
|
| | | };
|
| | |
|
| | | //累计充值活动表2
|
| | |
|
| | | struct tagActTotalRecharge2
|
| | |
| | | ("BYTE", "IsDayReset", 0),
|
| | | ),
|
| | |
|
| | | "ActTotalRecharge3":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "ActMark", 0),
|
| | | ("list", "PlatformList", 0),
|
| | | ("list", "ServerGroupIDList", 0),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("dict", "NotifyInfoStart", 0),
|
| | | ("dict", "NotifyInfoEnd", 0),
|
| | | ("list", "NotifyInfoLoop", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ),
|
| | |
|
| | | "CrossZoneComm":(
|
| | | ("char", "CrossZoneName", 1),
|
| | | ("BYTE", "ZoneID", 1),
|
| | |
| | | def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置 |
| | | |
| | | # 累计充值活动表3-节日充值 |
| | | class IPY_ActTotalRecharge3(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.ActMark = ""
|
| | | self.PlatformList = []
|
| | | self.ServerGroupIDList = []
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.NotifyInfoStart = {}
|
| | | self.NotifyInfoEnd = {}
|
| | | self.NotifyInfoLoop = []
|
| | | self.IsDayReset = 0 |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetActMark(self): return self.ActMark # 活动组标记
|
| | | def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
|
| | | def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
|
| | | def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置 |
| | | |
| | | # 跨服分区表通用 |
| | | class IPY_CrossZoneComm(): |
| | | |
| | |
| | | self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
|
| | | self.ipyActTotalRecharge2Cache = self.__LoadFileData("ActTotalRecharge2", IPY_ActTotalRecharge2)
|
| | | self.ipyActTotalRecharge2Len = len(self.ipyActTotalRecharge2Cache)
|
| | | self.ipyActTotalRecharge3Cache = self.__LoadFileData("ActTotalRecharge3", IPY_ActTotalRecharge3)
|
| | | self.ipyActTotalRecharge3Len = len(self.ipyActTotalRecharge3Cache)
|
| | | self.ipyCrossZoneCommCache = self.__LoadFileData("CrossZoneComm", IPY_CrossZoneComm)
|
| | | self.ipyCrossZoneCommLen = len(self.ipyCrossZoneCommCache)
|
| | | self.ipyCrossZonePKCache = self.__LoadFileData("CrossZonePK", IPY_CrossZonePK)
|
| | |
| | | def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
|
| | | def GetActTotalRecharge2Count(self): return self.ipyActTotalRecharge2Len
|
| | | def GetActTotalRecharge2ByIndex(self, index): return self.ipyActTotalRecharge2Cache[index]
|
| | | def GetActTotalRecharge3Count(self): return self.ipyActTotalRecharge3Len
|
| | | def GetActTotalRecharge3ByIndex(self, index): return self.ipyActTotalRecharge3Cache[index]
|
| | | def GetCrossZoneCommCount(self): return self.ipyCrossZoneCommLen
|
| | | def GetCrossZoneCommByIndex(self, index): return self.ipyCrossZoneCommCache[index]
|
| | | def GetCrossZonePKCount(self): return self.ipyCrossZonePKLen
|
| | |
| | | OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
|
| | | OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
|
| | | OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
|
| | | OperationActionName_TotalRecharge3 = "ActTotalRecharge3" # 累计充值活动 - 节日充值领奖
|
| | | OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
|
| | | OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
|
| | | OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
|
| | |
| | | #节日活动类型列表 - 该类型无视开服天,日期到了就开启
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
|
| | | OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
|
| | | OperationActionName_FeastLogin,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | ]
|
| | | #所有的运营活动列表,含节日活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | |
| | | OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
|
| | | OperationActionName_WeekParty,
|
| | | OperationActionName_CollectWords, OperationActionName_CollectWords2,
|
| | | OperationActionName_FeastLogin,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | ]
|
| | |
|
| | | #所有的累计充值活动
|
| | | OperationActionName_TotalRechargeDict = {
|
| | | 1:OperationActionName_TotalRecharge,
|
| | | 2:OperationActionName_TotalRecharge2,
|
| | | 3:OperationActionName_TotalRecharge3,
|
| | | }
|
| | | #跨服运营活动表名定义
|
| | | CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
|
| | |
|
| | |
| | | ("BYTE", "PrizeCountLimit", 0),
|
| | | ),
|
| | |
|
| | | "ActTotalRecharge3":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("list", "TemplateIDList", 0),
|
| | | ),
|
| | |
|
| | | "ActTotalRecharge2":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | |
| | | def GetGoldPrize(self): return self.GoldPrize # 返利仙玉数
|
| | | def GetPrizeCountLimit(self): return self.PrizeCountLimit # 最大赠送次数 |
| | | |
| | | # 累计充值活动表3-节日充值 |
| | | class IPY_ActTotalRecharge3(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.LVLimit = 0
|
| | | self.IsDayReset = 0
|
| | | self.TemplateIDList = [] |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
|
| | | def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表 |
| | | |
| | | # 累计充值活动表2 |
| | | class IPY_ActTotalRecharge2(): |
| | | |
| | |
| | | self.ipyActRechargePrizeLen = len(self.ipyActRechargePrizeCache)
|
| | | self.ipyRechargePrizeTemplateCache = self.__LoadFileData("RechargePrizeTemplate", IPY_RechargePrizeTemplate)
|
| | | self.ipyRechargePrizeTemplateLen = len(self.ipyRechargePrizeTemplateCache)
|
| | | self.ipyActTotalRecharge3Cache = self.__LoadFileData("ActTotalRecharge3", IPY_ActTotalRecharge3)
|
| | | self.ipyActTotalRecharge3Len = len(self.ipyActTotalRecharge3Cache)
|
| | | self.ipyActTotalRecharge2Cache = self.__LoadFileData("ActTotalRecharge2", IPY_ActTotalRecharge2)
|
| | | self.ipyActTotalRecharge2Len = len(self.ipyActTotalRecharge2Cache)
|
| | | self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
|
| | |
| | | def GetActRechargePrizeByIndex(self, index): return self.ipyActRechargePrizeCache[index]
|
| | | def GetRechargePrizeTemplateCount(self): return self.ipyRechargePrizeTemplateLen
|
| | | def GetRechargePrizeTemplateByIndex(self, index): return self.ipyRechargePrizeTemplateCache[index]
|
| | | def GetActTotalRecharge3Count(self): return self.ipyActTotalRecharge3Len
|
| | | def GetActTotalRecharge3ByIndex(self, index): return self.ipyActTotalRecharge3Cache[index]
|
| | | def GetActTotalRecharge2Count(self): return self.ipyActTotalRecharge2Len
|
| | | def GetActTotalRecharge2ByIndex(self, index): return self.ipyActTotalRecharge2Cache[index]
|
| | | def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
|
| | |
| | | if actNum == 1:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
|
| | | else:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge2", cfgID) |
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge%s" % actNum, cfgID) |
| | | if not ipyData:
|
| | | return 0
|
| | | templateIDList = ipyData.GetTemplateIDList()
|
| | |
| | | return templateID
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | # 活动1
|
| | | actNum = 1
|
| | | isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
|
| | | if not isReset:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
|
| | | # 活动中同步活动信息
|
| | | if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
|
| | | Sync_TotalRechargeActionInfo(curPlayer, actNum)
|
| | | Sync_TotalRechargeInfo(curPlayer, actNum)
|
| | | |
| | | # 活动2 |
| | | actNum = 2
|
| | | isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
|
| | | if not isReset:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
|
| | | # 活动中同步活动信息
|
| | | if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
|
| | | Sync_TotalRechargeActionInfo(curPlayer, actNum)
|
| | | Sync_TotalRechargeInfo(curPlayer, actNum)
|
| | | |
| | | for actNum, actName in ShareDefine.OperationActionName_TotalRechargeDict.items():
|
| | | isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
|
| | | if not isReset:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
|
| | | # 活动中同步活动信息
|
| | | if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
|
| | | Sync_TotalRechargeActionInfo(curPlayer, actNum)
|
| | | Sync_TotalRechargeInfo(curPlayer, actNum)
|
| | | |
| | | return
|
| | |
|
| | | def RefreshTotalRechargeActionInfo(actNum):
|
| | |
| | | ## 检查玩家累计充值活动数据信息
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | |
| | | if actNum == 1:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
|
| | | else:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
|
| | | 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)
|
| | |
|
| | |
| | | if addGold <= 0:
|
| | | return
|
| | |
|
| | | if actNum == 1:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
|
| | | else:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
|
| | | |
| | | 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):
|
| | | GameWorld.DebugLog("累计充值活动当前未开启! actNum=%s" % actNum)
|
| | | return
|
| | |
| | | return
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | if actNum == 1:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
|
| | | else:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
|
| | | 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)
|
| | |
| | |
|
| | | def Sync_TotalRechargeActionInfo(curPlayer, actNum):
|
| | | ## 通知累计充值活动信息
|
| | | if actNum == 1:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
|
| | | else:
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
|
| | | |
| | | |
| | | if actNum not in ShareDefine.OperationActionName_TotalRechargeDict:
|
| | | return
|
| | | actName = ShareDefine.OperationActionName_TotalRechargeDict[actNum]
|
| | | actTotalRechargeInfo = PyGameData.g_operationActionDict.get(actName, {})
|
| | | |
| | | if not actTotalRechargeInfo:
|
| | | return
|
| | |
|
| | |
| | | if actNum == 1:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
|
| | | else:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge2", cfgID) |
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge%s" % actNum, cfgID) |
| | | if not ipyData:
|
| | | return
|
| | |
|
| | |
| | | PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
|
| | | PlayerGoldGift.OnPlayerChargeGold(curPlayer)
|
| | | #累积充值X元
|
| | | PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, 1)
|
| | | PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, 2)
|
| | | for actNum in ShareDefine.OperationActionName_TotalRechargeDict.keys():
|
| | | PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, actNum)
|
| | | PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin)
|
| | | PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin)
|
| | | #开服活动
|
| | |
| | |
|
| | | elif actionName == ShareDefine.OperationActionName_CostRebate:
|
| | | PlayerCostRebate.RefreshCostRebateActionInfo()
|
| | | elif actionName == ShareDefine.OperationActionName_TotalRecharge:
|
| | | PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(1)
|
| | | elif actionName == ShareDefine.OperationActionName_TotalRecharge2:
|
| | | PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(2)
|
| | | elif actionName in ShareDefine.OperationActionName_TotalRechargeDict.values():
|
| | | for actNum, actName in ShareDefine.OperationActionName_TotalRechargeDict.items():
|
| | | if actionName == actName:
|
| | | PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(actNum)
|
| | | break
|
| | | elif actionName == ShareDefine.OperationActionName_SpringSale:
|
| | | PlayerSpringSale.RefreshSpringSaleActionInfo()
|
| | |
|
| | |
| | | OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
|
| | | OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
|
| | | OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
|
| | | OperationActionName_TotalRecharge3 = "ActTotalRecharge3" # 累计充值活动 - 节日充值领奖
|
| | | OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
|
| | | OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
|
| | | OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
|
| | |
| | | #节日活动类型列表 - 该类型无视开服天,日期到了就开启
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
|
| | | OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
|
| | | OperationActionName_FeastLogin,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | ]
|
| | | #所有的运营活动列表,含节日活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | |
| | | OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
|
| | | OperationActionName_WeekParty,
|
| | | OperationActionName_CollectWords, OperationActionName_CollectWords2,
|
| | | OperationActionName_FeastLogin,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | ]
|
| | |
|
| | | #所有的累计充值活动
|
| | | OperationActionName_TotalRechargeDict = {
|
| | | 1:OperationActionName_TotalRecharge,
|
| | | 2:OperationActionName_TotalRecharge2,
|
| | | 3:OperationActionName_TotalRecharge3,
|
| | | }
|
| | | #跨服运营活动表名定义
|
| | | CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
|
| | |
|