5315 子 【1.5.100】登录奖励活动(初版)
| | |
| | | dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
|
| | | WORD LVLimit; //限制等级
|
| | | }; |
| | |
|
| | | //登录奖励时间表
|
| | |
|
| | | struct tagActLoginAward
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char ActMark; //活动组标记
|
| | | list PlatformList; //活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | list ServerIDList; //服务器ID列表
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | WORD AdvanceMinutes; //前端提前X分钟展示活动
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | dict NotifyInfoStart; //全服提示信息 - 相对开始时间
|
| | | dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
|
| | | WORD LVLimit; //限制等级
|
| | | }; |
| | |
| | | list Reward; //奖励物品
|
| | | WORD Point; //积分
|
| | | }; |
| | |
|
| | | //登录奖励时间表
|
| | |
|
| | | struct tagActLoginAward
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | WORD AdvanceMinutes; //前端提前X分钟展示活动
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | WORD LVLimit; //限制等级
|
| | | list TemplateID; //模板编号
|
| | | };
|
| | |
|
| | | //登录奖励模板表
|
| | |
|
| | | struct tagLoginAward
|
| | | {
|
| | | BYTE _TemplateID; //模板ID
|
| | | BYTE ActionType; //活动条目ID
|
| | | DWORD TotalTimes; //可完成的总次数,0表示不限次数
|
| | | WORD SingleTimes; //单次领奖需要的次数
|
| | | list Reward; //奖励物品
|
| | | }; |
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
|
| | |
|
| | | class tagMCActLoginAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0C 登录奖励活动信息 //tagMCActLoginAwardInfo:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Count = 0 #(BYTE Count)// 物品数
|
| | | ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemInfo = tagMCWeekPartyItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.ActionType = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.Count = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TemplateID)
|
| | | data = CommFunc.WriteWORD(data, self.ActionType)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.SingleTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TemplateID:%d,
|
| | | ActionType:%d,
|
| | | TotalTimes:%d,
|
| | | SingleTimes:%d,
|
| | | Count:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.ActionType,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayInfo(Structure):
|
| | | ActCnt = 0 #(BYTE ActCnt)// 数量
|
| | | TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.TemplateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ActCnt = 0
|
| | | self.TemplateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.ActCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ActCnt)
|
| | | for i in range(self.ActCnt):
|
| | | data = CommFunc.WriteWORD(data, self.TemplateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ActCnt:%d,
|
| | | TemplateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ActCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | DayCnt = 0 #(BYTE DayCnt)// 天数
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
|
| | | TCount = 0 #(BYTE TCount)// 模板数
|
| | | ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DayCnt):
|
| | | temDayInfoList = tagMCActLoginAwardDayInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TCount):
|
| | | temActionInfo = tagMCActLoginAwardAction()
|
| | | _pos = temActionInfo.ReadData(_lpData, _pos)
|
| | | self.ActionInfo.append(temActionInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.DayCnt = 0
|
| | | self.DayInfoList = list()
|
| | | self.TCount = 0
|
| | | self.ActionInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.DayCnt):
|
| | | length += self.DayInfoList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TCount):
|
| | | length += self.ActionInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | 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.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.DayCnt)
|
| | | for i in range(self.DayCnt):
|
| | | data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TCount)
|
| | | for i in range(self.TCount):
|
| | | data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | DayCnt:%d,
|
| | | DayInfoList:%s,
|
| | | TCount:%d,
|
| | | ActionInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.DayCnt,
|
| | | "...",
|
| | | self.TCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
|
| | |
|
| | | class tagMCActLoginAwardTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ("GotTimes", c_ushort), #已领取次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginAwardTaskInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayPlayerInfo(Structure):
|
| | | DayIndex = 0 #(DWORD DayIndex)//第X天
|
| | | ACount = 0 #(DWORD ACount)//任务条目数
|
| | | TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.ACount):
|
| | | temTaskList = tagMCActLoginAwardTaskInfo()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.ACount = 0
|
| | | self.TaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | for i in range(self.ACount):
|
| | | length += self.TaskList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.DayIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.ACount)
|
| | | for i in range(self.ACount):
|
| | | data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DayIndex:%d,
|
| | | ACount:%d,
|
| | | TaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.ACount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | self.Count = 0
|
| | | self.DayInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.DayInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DayInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
|
| | |
|
| | | class tagMCTotalRechargeAwardItem(Structure):
|
| | |
| | | ("dict", "NotifyInfoEnd", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ),
|
| | |
|
| | | "ActLoginAward":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "ActMark", 0),
|
| | | ("list", "PlatformList", 0),
|
| | | ("list", "ServerIDList", 0),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("WORD", "AdvanceMinutes", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("dict", "NotifyInfoStart", 0),
|
| | | ("dict", "NotifyInfoEnd", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ),
|
| | | }
|
| | |
|
| | | |
| | |
| | | def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级 |
| | |
|
| | | # 登录奖励时间表 |
| | | class IPY_ActLoginAward(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.ActMark = ""
|
| | | self.PlatformList = []
|
| | | self.ServerIDList = []
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.NotifyInfoStart = {}
|
| | | self.NotifyInfoEnd = {}
|
| | | self.LVLimit = 0 |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetActMark(self): return self.ActMark # 活动组标记
|
| | | def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
|
| | | def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级 |
| | |
|
| | |
|
| | | def Log(msg, playerID=0, par=0):
|
| | | LogUI.Msg("%s\t%s\t%s" % (par, playerID, msg))
|
| | |
| | | self.ipyCrossPenglaiZoneLen = len(self.ipyCrossPenglaiZoneCache)
|
| | | self.ipyActWeekPartyCache = self.__LoadFileData("ActWeekParty", IPY_ActWeekParty)
|
| | | self.ipyActWeekPartyLen = len(self.ipyActWeekPartyCache)
|
| | | self.ipyActLoginAwardCache = self.__LoadFileData("ActLoginAward", IPY_ActLoginAward)
|
| | | self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)
|
| | | Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
|
| | | Log("IPY_DataMgr InitOK!")
|
| | | return
|
| | |
| | | def GetCrossPenglaiZoneByIndex(self, index): return self.ipyCrossPenglaiZoneCache[index]
|
| | | def GetActWeekPartyCount(self): return self.ipyActWeekPartyLen
|
| | | def GetActWeekPartyByIndex(self, index): return self.ipyActWeekPartyCache[index]
|
| | | def GetActLoginAwardCount(self): return self.ipyActLoginAwardLen
|
| | | def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]
|
| | |
|
| | | IPYData = IPY_DataMgr()
|
| | | def IPY_Data(): return IPYData
|
| | |
| | | OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
|
| | | OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
|
| | | OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
|
| | | OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | | OperationActionName_BossReborn,OperationActionName_SpringSale,
|
| | | OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
|
| | | OperationActionName_RealmPoint, OperationActionName_FlashSale,
|
| | | OperationActionName_WishingWell, OperationActionName_TotalRecharge,
|
| | | OperationActionName_WeekParty, ]
|
| | | OperationActionName_WeekParty, OperationActionName_LoginAward, ]
|
| | | #需要记录开启活动时的世界等级的运营活动
|
| | | NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
|
| | |
|
| | |
| | | Def_PDictType_OpenServerCampaign, # 开服活动
|
| | | Def_PDictType_WeekParty,
|
| | | Def_PDictType_Family_Contribution, # 战盟贡献度
|
| | | Def_PDictType_10, # 10
|
| | | Def_PDictType_LoginAward, # 登录奖励运营活动
|
| | | Def_PDictType_OfficialRank, # 官爵
|
| | | Def_PDictType_Horse, # 坐骑
|
| | | Def_PDictType_Wing, # 翅膀
|
| | |
| | | Def_PDict_WeekPartyGotTimes = "WeekPartyGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
|
| | | Def_PDict_WeekPartyAwardRecord = "WeekPartyAwardRecord_%s" #积分领奖记录 参数(第X天)
|
| | | Def_PDict_WeekPartyPoint = "WeekPartyPoint_%s" #当天积分 参数(第X天)
|
| | |
|
| | | #登录奖励运营活动
|
| | | Def_PDict_LoginAwardID = "LoginAwardID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
|
| | | Def_PDict_LoginAwardCurTimes = "LoginAwardCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
|
| | | Def_PDict_LoginAwardGotTimes = "LoginAwardGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
|
| | | #-------------------------------------------------------------------------------
|
| | | #类型 Def_PDictType_OnlinePrize
|
| | | Def_PDict1_OnlinePrizeCnt = "OnlinePrizeCnt" # 新手在线已领取奖励次数
|
| | |
| | | Def_RewardType_IceLodeStar, # 冰晶矿脉星级奖励19
|
| | | Def_RewardType_WeekPartyAct, # 领取周狂欢活动奖励20
|
| | | Def_RewardType_WeekPartyPoint, # 领取周狂欢积分奖励21
|
| | | )= range(22)
|
| | | Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
|
| | | )= range(23)
|
| | |
|
| | |
|
| | | #boss复活相关活动定义
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
|
| | |
|
| | | class tagMCActLoginAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0C 登录奖励活动信息 //tagMCActLoginAwardInfo:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Count = 0 #(BYTE Count)// 物品数
|
| | | ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemInfo = tagMCWeekPartyItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.ActionType = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.Count = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TemplateID)
|
| | | data = CommFunc.WriteWORD(data, self.ActionType)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.SingleTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TemplateID:%d,
|
| | | ActionType:%d,
|
| | | TotalTimes:%d,
|
| | | SingleTimes:%d,
|
| | | Count:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.ActionType,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayInfo(Structure):
|
| | | ActCnt = 0 #(BYTE ActCnt)// 数量
|
| | | TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.TemplateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ActCnt = 0
|
| | | self.TemplateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.ActCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ActCnt)
|
| | | for i in range(self.ActCnt):
|
| | | data = CommFunc.WriteWORD(data, self.TemplateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ActCnt:%d,
|
| | | TemplateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ActCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | DayCnt = 0 #(BYTE DayCnt)// 天数
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
|
| | | TCount = 0 #(BYTE TCount)// 模板数
|
| | | ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DayCnt):
|
| | | temDayInfoList = tagMCActLoginAwardDayInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TCount):
|
| | | temActionInfo = tagMCActLoginAwardAction()
|
| | | _pos = temActionInfo.ReadData(_lpData, _pos)
|
| | | self.ActionInfo.append(temActionInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.DayCnt = 0
|
| | | self.DayInfoList = list()
|
| | | self.TCount = 0
|
| | | self.ActionInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.DayCnt):
|
| | | length += self.DayInfoList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TCount):
|
| | | length += self.ActionInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | 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.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.DayCnt)
|
| | | for i in range(self.DayCnt):
|
| | | data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TCount)
|
| | | for i in range(self.TCount):
|
| | | data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | DayCnt:%d,
|
| | | DayInfoList:%s,
|
| | | TCount:%d,
|
| | | ActionInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.DayCnt,
|
| | | "...",
|
| | | self.TCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
|
| | |
|
| | | class tagMCActLoginAwardTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ("GotTimes", c_ushort), #已领取次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginAwardTaskInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayPlayerInfo(Structure):
|
| | | DayIndex = 0 #(DWORD DayIndex)//第X天
|
| | | ACount = 0 #(DWORD ACount)//任务条目数
|
| | | TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.ACount):
|
| | | temTaskList = tagMCActLoginAwardTaskInfo()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.ACount = 0
|
| | | self.TaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | for i in range(self.ACount):
|
| | | length += self.TaskList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.DayIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.ACount)
|
| | | for i in range(self.ACount):
|
| | | data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DayIndex:%d,
|
| | | ACount:%d,
|
| | | TaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.ACount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | self.Count = 0
|
| | | self.DayInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.DayInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DayInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
|
| | |
|
| | | class tagMCTotalRechargeAwardItem(Structure):
|
| | |
| | | ("list", "Reward", 0),
|
| | | ("WORD", "Point", 0),
|
| | | ),
|
| | |
|
| | | "ActLoginAward":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("WORD", "AdvanceMinutes", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ("list", "TemplateID", 0),
|
| | | ),
|
| | |
|
| | | "LoginAward":(
|
| | | ("BYTE", "TemplateID", 1),
|
| | | ("BYTE", "ActionType", 0),
|
| | | ("DWORD", "TotalTimes", 0),
|
| | | ("WORD", "SingleTimes", 0),
|
| | | ("list", "Reward", 0),
|
| | | ),
|
| | | }
|
| | |
|
| | | |
| | |
| | | def GetReward(self): return self.Reward # 奖励物品
|
| | | def GetPoint(self): return self.Point # 积分 |
| | |
|
| | | # 登录奖励时间表 |
| | | class IPY_ActLoginAward(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LVLimit = 0
|
| | | self.TemplateID = [] |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
|
| | | def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetLVLimit(self): return self.LVLimit # 限制等级
|
| | | def GetTemplateID(self): return self.TemplateID # 模板编号 |
| | | |
| | | # 登录奖励模板表 |
| | | class IPY_LoginAward(): |
| | | |
| | | def __init__(self): |
| | | self.TemplateID = 0
|
| | | self.ActionType = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.Reward = [] |
| | | return |
| | | |
| | | def GetTemplateID(self): return self.TemplateID # 模板ID
|
| | | def GetActionType(self): return self.ActionType # 活动条目ID
|
| | | def GetTotalTimes(self): return self.TotalTimes # 可完成的总次数,0表示不限次数
|
| | | def GetSingleTimes(self): return self.SingleTimes # 单次领奖需要的次数
|
| | | def GetReward(self): return self.Reward # 奖励物品 |
| | |
|
| | |
|
| | | def Log(msg, playerID=0, par=0):
|
| | | LogUI.Msg("%s\t%s\t%s" % (par, playerID, msg))
|
| | |
| | | self.ipyActWeekPartyLen = len(self.ipyActWeekPartyCache)
|
| | | self.ipyWeekPartyCache = self.__LoadFileData("WeekParty", IPY_WeekParty)
|
| | | self.ipyWeekPartyLen = len(self.ipyWeekPartyCache)
|
| | | self.ipyActLoginAwardCache = self.__LoadFileData("ActLoginAward", IPY_ActLoginAward)
|
| | | self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)
|
| | | self.ipyLoginAwardCache = self.__LoadFileData("LoginAward", IPY_LoginAward)
|
| | | self.ipyLoginAwardLen = len(self.ipyLoginAwardCache)
|
| | | Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
|
| | | Log("IPY_DataMgr InitOK!")
|
| | | return
|
| | |
| | | def GetActWeekPartyByIndex(self, index): return self.ipyActWeekPartyCache[index]
|
| | | def GetWeekPartyCount(self): return self.ipyWeekPartyLen
|
| | | def GetWeekPartyByIndex(self, index): return self.ipyWeekPartyCache[index]
|
| | | def GetActLoginAwardCount(self): return self.ipyActLoginAwardLen
|
| | | def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]
|
| | | def GetLoginAwardCount(self): return self.ipyLoginAwardLen
|
| | | def GetLoginAwardByIndex(self, index): return self.ipyLoginAwardCache[index]
|
| | |
|
| | | IPYData = IPY_DataMgr()
|
| | | def IPY_Data(): return IPYData
|
| | |
| | | import GameLogic_FamilyWar
|
| | | import PlayerBossReborn
|
| | | import PlayerWeekParty
|
| | | import PlayerActLogin
|
| | | import Operate_EquipWash
|
| | | import PlayerTreasure
|
| | | import GameLogic_GodArea
|
| | |
| | | PlayerBossReborn.OnLogin(curPlayer)
|
| | | # 周狂欢活动
|
| | | PlayerWeekParty.OnLogin(curPlayer)
|
| | | # 登录奖励活动
|
| | | PlayerActLogin.OnLogin(curPlayer)
|
| | | # 仙界盛典活动
|
| | | PlayerFairyCeremony.OnLogin(curPlayer)
|
| | | # 分支下载奖励记录通知
|
| | |
| | | # 领取周狂欢积分奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_WeekPartyPoint:
|
| | | PlayerWeekParty.GetWeekPartyPointAward(curPlayer, dataEx, dataExStr)
|
| | | # 领取登录奖励活动奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
|
| | | PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
|
| | |
|
| | | return
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Player.PlayerActLogin
|
| | | #
|
| | | # @todo:登录奖励
|
| | | # @author xdh
|
| | | # @date 2018-07-12 16:50
|
| | | # @version 1.0
|
| | | #
|
| | | #
|
| | | # 详细描述: 登录奖励
|
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | """Version = 2018-07-12 16:50"""
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | import IPY_GameWorld
|
| | | import GameWorld
|
| | | import ChConfig
|
| | | import IpyGameDataPY
|
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import ShareDefine
|
| | | import PyGameData
|
| | | import ItemCommon
|
| | |
|
| | |
|
| | | def OnLogin(curPlayer):
|
| | | isReset = __CheckPlayerLoginAwardAction(curPlayer)
|
| | | if not isReset:
|
| | | actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
|
| | | # 活动中同步活动信息
|
| | | SyncLoginAwardInfo(curPlayer)
|
| | | if actCostRebateInfo.get(ShareDefine.ActKey_State):
|
| | | SyncLoginAwardPlayerInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | def RefreshOperationAction_LoginAward():
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for i in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(i)
|
| | | if curPlayer == None or not curPlayer.GetInitOK():
|
| | | continue
|
| | | __CheckPlayerLoginAwardAction(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | def __CheckPlayerLoginAwardAction(curPlayer):
|
| | | ## 检查玩家登录奖励活动数据信息
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | |
| | | actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
|
| | | #LoginAwardID = actLoginAwardInfo.get(ShareDefine.ActKey_ID, 0)
|
| | | state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | #passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
|
| | | #isOk = AddLoginAwardActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False)
|
| | | #AddLoginAwardActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1)
|
| | | |
| | | playerLoginAwardID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardID, 0, ChConfig.Def_PDictType_LoginAward) # 玩家身上的活动ID
|
| | | # if not isOk and state:
|
| | | # SyncLoginAwardPlayerInfo(curPlayer)
|
| | | # 活动ID 相同的话不处理
|
| | | if cfgID == playerLoginAwardID:
|
| | | #GameWorld.DebugLog("登录奖励活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | # 未领取的奖励邮件发放
|
| | | __SendLoginAwardMail(curPlayer, playerLoginAwardID)
|
| | | |
| | | if not cfgID:
|
| | | GameWorld.DebugLog(' 登录奖励活动重置!')
|
| | | curPlayer.ClearNomalDict(ChConfig.Def_PDictType_LoginAward)
|
| | | |
| | | GameWorld.DebugLog("登录奖励变更! state=%s,cfgID=%s,playerLoginAwardID=%s" % (state, cfgID, playerLoginAwardID), playerID)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardID, cfgID, ChConfig.Def_PDictType_LoginAward)
|
| | | |
| | | SyncLoginAwardInfo(curPlayer)
|
| | | return True
|
| | |
|
| | |
|
| | | def __SendLoginAwardMail(curPlayer, cfgID):
|
| | | # 未领取的奖励邮件发放
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateIDList = actBossIpyData.GetTemplateID()
|
| | | if not templateIDList:
|
| | | return
|
| | | |
| | | totalItemDict = {}
|
| | | for day, tidList in enumerate(templateIDList):
|
| | | for tid in tidList:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tid)
|
| | | if not ipyData:
|
| | | continue
|
| | | singleTimes = ipyData.GetSingleTimes()
|
| | | curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (day, tid), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (day, tid), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | canGotCnt = (curTimes - gotTimes) / singleTimes
|
| | | if not canGotCnt:
|
| | | continue
|
| | | itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
|
| | | GameWorld.AddDictValue(totalItemDict, itemDict)
|
| | | |
| | | if not totalItemDict:
|
| | | return
|
| | | totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
|
| | | PlayerControl.SendMailByKey('SecondWeekReward', [curPlayer.GetID()], totalItemList)
|
| | | return
|
| | |
|
| | |
|
| | | def AddLoginAwardActionCnt(curPlayer, actionID, addCnt=1, isAdd=True):
|
| | | '''增加登录奖励相关活动完成次数'''
|
| | | #判断活动是否开启
|
| | | if not addCnt:
|
| | | return
|
| | | actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
|
| | | state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | |
| | | if not state or not cfgID:
|
| | | return
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateIDList = actBossIpyData.GetTemplateID()
|
| | | dayIndex = actLoginAwardInfo.get(ShareDefine.ActKey_DayIndex, 0)
|
| | | if dayIndex >= len(templateIDList):
|
| | | return
|
| | | dayTidList = templateIDList[dayIndex]
|
| | | findTid = 0
|
| | | for tid in dayTidList:
|
| | | if tid / 100 == actionID:
|
| | | findTid = tid
|
| | | break
|
| | | if not findTid:
|
| | | return
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', findTid)
|
| | | if not ipyData:
|
| | | return
|
| | | totalTimes = ipyData.GetTotalTimes()
|
| | | curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | if isAdd:
|
| | | addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
|
| | | if addCnt <= 0:
|
| | | return
|
| | | updTimes = curTimes + addCnt
|
| | | else:
|
| | | updTimes = min(addCnt, totalTimes)
|
| | | realAddCnt = updTimes - curTimes
|
| | | if realAddCnt <= 0:
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_LoginAward)
|
| | | GameWorld.DebugLog(' 增加登录奖励相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s' % (dayIndex, findTid, realAddCnt))
|
| | | SyncLoginAwardPlayerInfo(curPlayer, dayIndex, findTid)
|
| | | return True
|
| | |
|
| | |
|
| | | def GetLoginAwardActionAward(curPlayer, day, templateID):
|
| | | '''领取登录奖励活动奖励'''
|
| | | templateID = GameWorld.ToIntDef(templateID, 0)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', templateID)
|
| | | if not ipyData:
|
| | | return
|
| | | singleTimes = ipyData.GetSingleTimes()
|
| | | curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (day, templateID), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (day, templateID), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | if curTimes - gotTimes < singleTimes:
|
| | | return
|
| | | |
| | | #给奖励
|
| | | awardDict = __GetAwardItem(curPlayer, ipyData)
|
| | | # 检查背包
|
| | | needSpace = len(awardDict)
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | | #更新次数 每次领奖只领一次
|
| | | newGotTimes = gotTimes + singleTimes
|
| | | |
| | | #GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_LoginAward)
|
| | | for itemID, itemCnt in awardDict.items():
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
|
| | | SyncLoginAwardPlayerInfo(curPlayer, day, templateID)
|
| | | return
|
| | |
|
| | |
|
| | |
|
| | | def __GetAwardItem(curPlayer, ipyData, times=1):
|
| | | awardDict = {}
|
| | | for itemID, itemCnt, isbind in ipyData.GetReward():
|
| | | if not itemID or not itemCnt:
|
| | | continue
|
| | | awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
|
| | | |
| | | return awardDict
|
| | |
|
| | |
|
| | | def SyncLoginAwardPlayerInfo(curPlayer, day=-1, templateID=-1):
|
| | | #通知当前次数、已领次数 |
| | | actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
|
| | | state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | if not state or not cfgID:
|
| | | return
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateIDList = actBossIpyData.GetTemplateID()
|
| | | if not templateIDList:
|
| | | return
|
| | | if day != -1:
|
| | | if day >= len(templateIDList):
|
| | | return
|
| | | syncDayList = [day]
|
| | | else:
|
| | | syncDayList = range(len(templateIDList))
|
| | | |
| | | packData = ChPyNetSendPack.tagMCActLoginAwardPlayerInfo()
|
| | | packData.DayInfoList = []
|
| | | for cday in syncDayList:
|
| | | tiemInfo = ChPyNetSendPack.tagMCActLoginAwardDayPlayerInfo()
|
| | | tiemInfo.DayIndex = cday
|
| | | tiemInfo.TaskList = []
|
| | | for tID in templateIDList[cday]:
|
| | | if templateID != -1 and tID != templateID:
|
| | | continue
|
| | | tipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tID)
|
| | | if not tipyData:
|
| | | continue
|
| | | taskInfo = ChPyNetSendPack.tagMCActLoginAwardTaskInfo()
|
| | | taskInfo.TemplateID = tID
|
| | | taskInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (cday, tID), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | taskInfo.GotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (cday, tID), 0, ChConfig.Def_PDictType_LoginAward)
|
| | | tiemInfo.TaskList.append(taskInfo)
|
| | | tiemInfo.ACount = len(tiemInfo.TaskList)
|
| | | packData.DayInfoList.append(tiemInfo)
|
| | | packData.Count = len(packData.DayInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | |
|
| | | def SyncLoginAwardInfo(curPlayer):
|
| | | actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
|
| | | state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | if not cfgID:
|
| | | return
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
|
| | | if not actBossIpyData:
|
| | | return
|
| | | templateIDList = actBossIpyData.GetTemplateID()
|
| | | if not templateIDList:
|
| | | return
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | actInfo = ChPyNetSendPack.tagMCActLoginAwardInfo()
|
| | | actInfo.Clear()
|
| | | actInfo.StartDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetStartDate(), openServerDay)
|
| | | actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetEndDate(), openServerDay)
|
| | | actInfo.AdvanceMinutes = actBossIpyData.GetAdvanceMinutes()
|
| | | actInfo.IsDayReset = actBossIpyData.GetIsDayReset()
|
| | | actInfo.ResetType = actBossIpyData.GetResetType()
|
| | | actInfo.LimitLV = actBossIpyData.GetLVLimit()
|
| | | actInfo.DayInfoList = []
|
| | | tidList = []
|
| | | for day, dayActList in enumerate(templateIDList):
|
| | | dayInfo = ChPyNetSendPack.tagMCActLoginAwardDayInfo()
|
| | | dayInfo.TemplateList = dayActList
|
| | | dayInfo.ActCnt = len(dayActList)
|
| | | for tid in dayActList:
|
| | | if tid not in tidList:
|
| | | tidList.append(tid)
|
| | | |
| | | actInfo.DayInfoList.append(dayInfo)
|
| | | actInfo.DayCnt = len(actInfo.DayInfoList)
|
| | | actInfo.ActionInfo = []
|
| | | for tid in tidList:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tid)
|
| | | if not ipyData:
|
| | | GameWorld.ErrLog(' 登录奖励模板表找不到模板%s' % tid)
|
| | | continue
|
| | | tInfo = ChPyNetSendPack.tagMCActLoginAwardAction()
|
| | | tInfo.TemplateID = tid
|
| | | tInfo.ActionType = ipyData.GetActionType()
|
| | | tInfo.TotalTimes = ipyData.GetTotalTimes()
|
| | | tInfo.SingleTimes = ipyData.GetSingleTimes()
|
| | | tInfo.ItemInfo = []
|
| | | for itemID, itemCnt, isBind in ipyData.GetReward():
|
| | | awardItem = ChPyNetSendPack.tagMCActLoginAwardItem()
|
| | | awardItem.ItemID = itemID
|
| | | awardItem.ItemCnt = itemCnt
|
| | | awardItem.IsBind = isBind
|
| | | tInfo.ItemInfo.append(awardItem)
|
| | | tInfo.Count = len(tInfo.ItemInfo)
|
| | | actInfo.ActionInfo.append(tInfo)
|
| | | actInfo.TCount = len(actInfo.ActionInfo)
|
| | | NetPackCommon.SendFakePack(curPlayer, actInfo)
|
| | | return
|
| | |
| | | import PlayerSpringSale
|
| | | import PlayerBossReborn
|
| | | import PlayerWeekParty
|
| | | import PlayerActLogin
|
| | | import PlayerFlashGiftbag
|
| | | import PlayerFairyCeremony
|
| | | import PlayerRefineStove
|
| | |
| | | elif actionName == ShareDefine.OperationActionName_WeekParty:
|
| | | PlayerWeekParty.RefreshOperationAction_WeekParty()
|
| | |
|
| | | elif actionName == ShareDefine.OperationActionName_LoginAward:
|
| | | PlayerActLogin.RefreshOperationAction_LoginAward()
|
| | | return
|
| | |
|
| | | if msgValue.isdigit():
|
| | |
| | | itemData = GameWorld.GetGameData().GetItemByTypeID(GatherSoulItemID)
|
| | | if not itemData:
|
| | | continue
|
| | | if itemData.GetType() == ChConfig.Def_ItemType_GatherSoulCore:
|
| | | continue
|
| | | # if itemData.GetType() == ChConfig.Def_ItemType_GatherSoulCore:
|
| | | # continue
|
| | | itemColor = itemData.GetItemColor()
|
| | | GatherSoulItemPlusLV = ItemControler.GetGatherSoulItemPlusLV(GatherSoulData) + 1 #客户端1开始
|
| | | totalLV += GatherSoulItemPlusLV
|
| | |
| | | OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
|
| | | OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
|
| | | OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
|
| | | OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | | OperationActionName_BossReborn,OperationActionName_SpringSale,
|
| | | OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
|
| | | OperationActionName_RealmPoint, OperationActionName_FlashSale,
|
| | | OperationActionName_WishingWell, OperationActionName_TotalRecharge,
|
| | | OperationActionName_WeekParty, ]
|
| | | OperationActionName_WeekParty, OperationActionName_LoginAward, ]
|
| | | #需要记录开启活动时的世界等级的运营活动
|
| | | NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
|
| | |
|