3443 【后端】Boss复活活动,时间段支持日期跨天或日期支持重置时间点设置(如0点或5点)
2303 【后端】限时特惠提前通知前端开启
2302 【后端】限时礼包开启提前通知前端
3305 【后端】运营类活动优化
| | |
| | | WORD LVLimit; //限制等级
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | list ShopTypeList; //商店类型列表
|
| | | char MailKey; //活动更新时发送邮件key
|
| | | list MailItemPrize; //活动更新时发送邮件奖励物品
|
| | | };
|
| | |
|
| | | //日常任务表
|
| | |
| | | WORD LVLimit; //限制等级
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | list GiftbagTypeList; //礼包类型列表
|
| | | char MailKey; //活动更新时发送邮件key
|
| | | list MailItemPrize; //活动更新时发送邮件奖励物品
|
| | | };
|
| | |
|
| | | //限时礼包模板表
|
| | |
| | | DWORD _CfgID; //配置ID
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | WORD LVLimit; //限制等级
|
| | | BYTE TemplateID; //模板编号
|
| | | };
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCFlashGiftbagTime()
|
| | |
| | | self.Head.SubCmd = 0x12
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCSpringSaleTime()
|
| | |
| | | self.Head.SubCmd = 0x11
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | TaskCnt = 0 #(BYTE TaskCnt)
|
| | | TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | self.Head.SubCmd = 0x04
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TaskCnt = 0
|
| | | self.TaskInfo = list()
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.TaskCnt)
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TaskCnt:%d,
|
| | | TaskInfo:%s
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TaskCnt,
|
| | | "..."
|
| | |
| | | # 通知开服天数
|
| | | openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
|
| | | openServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime, openServerTime)
|
| | | # 合服状态
|
| | | isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer)
|
| | |
| | | #通知玩家登陆信息,来自运营方
|
| | | #DoLogic_LoginUserData(curPlayer)
|
| | |
|
| | | #通知开服天数
|
| | | PlayerEventCounter.Sync_OpenServerDay(curPlayer)
|
| | | #通知开服天数, 登录时改为地图通知,因为GameServer的PlayerLogin在地图之后,前端有些功能处理需要提前得到开服天
|
| | | #PlayerEventCounter.Sync_OpenServerDay(curPlayer)
|
| | | # 通知广播信息
|
| | | GMCommon.SendBroadCastToClient(curPlayer)
|
| | |
|
| | |
| | | Def_Notify_Separator = '+'
|
| | |
|
| | | #通知地图服务器并设置该字典值
|
| | | Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
|
| | | Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
|
| | | Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
|
| | | Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
|
| | |
| | |
|
| | | #限时特惠活动
|
| | | Def_PDict_SpringSaleID = "SpringSaleID" # 玩家身上的限时特惠活动ID,唯一标识,取活动开始日期time
|
| | | Def_PDict_SpringSaleMailState = "SpringSaleMailState" # 玩家身上的活动更新提醒邮件状态
|
| | |
|
| | | #限时礼包活动
|
| | | Def_PDict_FlashGiftbagID = "FlashGiftbagID" # 玩家身上的限时礼包活动ID,唯一标识,取活动开始日期time
|
| | | Def_PDict_FlashGiftbagBuyCount = "FlashGiftbagBuyCount_%s" # 限时礼包已购买次数,参数(礼包ID)
|
| | | Def_PDict_FlashGiftbagMailState = "FlashGiftbagMailState" # 玩家身上的活动更新提醒邮件状态
|
| | |
|
| | | #BOSS复活
|
| | | Def_PDict_BossRebornID = "BossRebornID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCFlashGiftbagTime()
|
| | |
| | | self.Head.SubCmd = 0x12
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCSpringSaleTime()
|
| | |
| | | self.Head.SubCmd = 0x11
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | TaskCnt = 0 #(BYTE TaskCnt)
|
| | | TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | self.Head.SubCmd = 0x04
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TaskCnt = 0
|
| | | self.TaskInfo = list()
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.TaskCnt)
|
| | | for i in range(self.TaskCnt):
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TaskCnt:%d,
|
| | | TaskInfo:%s
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TaskCnt,
|
| | | "..."
|
| | |
| | | ("WORD", "LVLimit", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("list", "ShopTypeList", 0),
|
| | | ("char", "MailKey", 0),
|
| | | ("list", "MailItemPrize", 0),
|
| | | ),
|
| | |
|
| | | "DailyQuest":(
|
| | |
| | | ("WORD", "LVLimit", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("list", "GiftbagTypeList", 0),
|
| | | ("char", "MailKey", 0),
|
| | | ("list", "MailItemPrize", 0),
|
| | | ),
|
| | |
|
| | | "FlashGiftbag":(
|
| | |
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ("BYTE", "TemplateID", 0),
|
| | | ),
|
| | |
| | | self.AdvanceMinutes = 0
|
| | | self.LVLimit = 0
|
| | | self.IsDayReset = 0
|
| | | self.ShopTypeList = [] |
| | | self.ShopTypeList = []
|
| | | self.MailKey = ""
|
| | | self.MailItemPrize = [] |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | |
| | | def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
|
| | | def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表 |
| | | def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
|
| | | def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
|
| | | def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品 |
| | | |
| | | # 日常任务表 |
| | | class IPY_DailyQuest(): |
| | |
| | | self.AdvanceMinutes = 0
|
| | | self.LVLimit = 0
|
| | | self.IsDayReset = 0
|
| | | self.GiftbagTypeList = [] |
| | | self.GiftbagTypeList = []
|
| | | self.MailKey = ""
|
| | | self.MailItemPrize = [] |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | |
| | | def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
|
| | | def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表 |
| | | def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
|
| | | def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
|
| | | def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品 |
| | | |
| | | # 限时礼包模板表 |
| | | class IPY_FlashGiftbag(): |
| | |
| | | self.CfgID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.ResetType = 0
|
| | | self.LVLimit = 0
|
| | | self.TemplateID = 0 |
| | | return |
| | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级
|
| | | def GetTemplateID(self): return self.TemplateID # 模板编号 |
| | | |
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_LoadMapIsLogin, 1)
|
| | | #通知时间
|
| | | Sync_PyServerDataTimeToClient(curPlayer)
|
| | | Sync_OpenServerDay(curPlayer)
|
| | | #通知玩家基本信息
|
| | | curPlayer.Sync_ClientPlayerLogin()
|
| | |
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, serverDateTime)
|
| | | return
|
| | |
|
| | | ## 通知开服天数
|
| | | # @param curPlayer: 玩家实例
|
| | | # @return: None
|
| | | def Sync_OpenServerDay(curPlayer):
|
| | | gw = GameWorld.GetGameWorld()
|
| | | packData = ChPyNetSendPack.tagOpenServerDay()
|
| | | packData.Clear()
|
| | | packData.Day = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | packData.IsMixServer = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
|
| | | packData.MixDay = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
|
| | | packData.OpenServerTime = GameWorld.ChangeTimeNumToStr(gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime))
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | | #===============================================================================
|
| | | # //B4 09 玩家移动 # tagCMPyMove
|
| | |
| | | actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
|
| | | bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
|
| | | state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | |
|
| | | playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
|
| | |
|
| | |
| | | if bossRebornID == playerBossRebornID:
|
| | | #GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0))
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateID = actBossIpyData.GetTemplateID()
|
| | | |
| | | templateID = 0
|
| | | if cfgID:
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
|
| | | templateID = 0 if not actBossIpyData else actBossIpyData.GetTemplateID()
|
| | | playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
|
| | |
|
| | | GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
|
| | |
| | | def SyncBossRebornInfo(curPlayer):
|
| | | actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
|
| | | state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
|
| | | if not state:
|
| | | cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | if not state or not cfgID:
|
| | | return
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0))
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateID = actBossIpyData.GetTemplateID()
|
| | |
| | | actInfo.Clear()
|
| | | actInfo.StartDate = actBossIpyData.GetStartDate()
|
| | | actInfo.EndtDate = actBossIpyData.GetEndDate()
|
| | | actInfo.ResetType = actBossIpyData.GetResetType()
|
| | | actInfo.LimitLV = actBossIpyData.GetLVLimit()
|
| | | actInfo.TaskInfo = []
|
| | | for ipyData in ipyDataList:
|
| | |
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {})
|
| | | actID = actInfo.get(ShareDefine.ActKey_ID, 0)
|
| | | state = actInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | |
|
| | | playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagID) # 玩家身上的活动ID
|
| | |
|
| | | # 活动ID 相同的话不处理
|
| | | if actID == playerActID:
|
| | | if actID != playerActID:
|
| | | giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
|
| | | ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID, actID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState, 0)
|
| | | GameWorld.DebugLog("限时礼包重置! actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s" % (actID, playerActID, state, giftbagTypeList), playerID)
|
| | | Sync_FlashGiftbagActionInfo(curPlayer)
|
| | | else:
|
| | | GameWorld.DebugLog("限时礼包活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | |
| | | giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID, actID)
|
| | | ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList)
|
| | | |
| | | GameWorld.DebugLog("限时礼包重置! actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s" % (actID, playerActID, state, giftbagTypeList), playerID)
|
| | | |
| | | Sync_FlashGiftbagActionInfo(curPlayer)
|
| | | |
| | | playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagMailState) # 玩家身上的活动提醒邮件状态
|
| | | if actID and state and state != playerMailState:
|
| | | flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
|
| | | if flashGiftbagIpyData and flashGiftbagIpyData.GetMailKey() and curPlayer.GetLV() >= flashGiftbagIpyData.GetLVLimit():
|
| | | PlayerControl.SendMailByKey(flashGiftbagIpyData.GetMailKey(), [playerID], flashGiftbagIpyData.GetMailItemPrize())
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState, state)
|
| | | GameWorld.DebugLog(" 发送新限时礼包邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
|
| | | return True
|
| | |
|
| | | def ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList):
|
| | |
| | | packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
|
| | | packInfo.StartDate = flashGiftbagIpyData.GetStartDate()
|
| | | packInfo.EndtDate = flashGiftbagIpyData.GetEndDate()
|
| | | packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()
|
| | | packInfo.ActivityTime = []
|
| | | for i, startTime in enumerate(startTimeList):
|
| | | timeInfo = ChPyNetSendPack.tagMCFlashGiftbagTime()
|
| | |
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {})
|
| | | actID = actInfo.get(ShareDefine.ActKey_ID, 0)
|
| | | state = actInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | |
|
| | | playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleID) # 玩家身上的活动ID
|
| | |
|
| | | # 活动ID 相同的话不处理
|
| | | if actID == playerActID:
|
| | | GameWorld.DebugLog("限时特惠活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | |
| | | shopTypeList = GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
|
| | | FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
|
| | | |
| | | GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
|
| | | |
| | | Sync_SpringSaleActionInfo(curPlayer)
|
| | | if actID != playerActID:
|
| | | shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
|
| | | FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, 0)
|
| | | Sync_SpringSaleActionInfo(curPlayer)
|
| | | GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
|
| | | else:
|
| | | GameWorld.DebugLog("限时特惠活动ID不变,不处理!", playerID)
|
| | | |
| | | playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleMailState) # 玩家身上的活动提醒邮件状态
|
| | | if actID and state and state != playerMailState:
|
| | | springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
|
| | | if springSaleIpyData and springSaleIpyData.GetMailKey() and curPlayer.GetLV() >= springSaleIpyData.GetLVLimit():
|
| | | PlayerControl.SendMailByKey(springSaleIpyData.GetMailKey(), [playerID], springSaleIpyData.GetMailItemPrize())
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, state)
|
| | | GameWorld.DebugLog(" 发送新限时特惠邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
|
| | | return True
|
| | |
|
| | | def Sync_SpringSaleActionInfo(curPlayer):
|
| | |
| | | packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
|
| | | packInfo.StartDate = springSaleIpyData.GetStartDate()
|
| | | packInfo.EndtDate = springSaleIpyData.GetEndDate()
|
| | | packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
|
| | | packInfo.ActivityTime = []
|
| | | for i, startTime in enumerate(startTimeList):
|
| | | timeInfo = ChPyNetSendPack.tagMCSpringSaleTime()
|
| | |
| | | Def_Notify_Separator = '+'
|
| | |
|
| | | #通知地图服务器并设置该字典值
|
| | | Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
|
| | | Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
|
| | | Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
|
| | | Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
|