| | |
| | | # A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
|
| | |
|
| | | class tagFGrabRedPacketInfo(Structure):
|
| | | Name = "" #(char Name[33])//名字
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//名字
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | data = None
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayeJob = 0
|
| | | self.MoneyNum = 0
|
| | |
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 33, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayeJob:%d,
|
| | | MoneyNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayeJob,
|
| | | self.MoneyNum
|
| | |
| | | class tagFRedPacketInfo(Structure):
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | Name = "" #(char Name[33])//玩家名字
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//玩家名字
|
| | | Time = 0 #(DWORD Time)//时间
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | MoneyType = 0 #(BYTE MoneyType)//金钱类型
|
| | |
| | | GetWay = 0 #(BYTE GetWay)//获得途径
|
| | | PacketCnt = 0 #(BYTE PacketCnt)//可抢个数
|
| | | State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完
|
| | | Wish = "" #(char Wish[33])//祝福语
|
| | | WishLen = 0 #(BYTE WishLen)
|
| | | Wish = "" #(String Wish)//祝福语
|
| | | IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Clear()
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
|
| | | self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.Time = 0
|
| | | self.PlayeJob = 0
|
| | |
| | | self.GetWay = 0
|
| | | self.PacketCnt = 0
|
| | | self.State = 0
|
| | | self.WishLen = 0
|
| | | self.Wish = ""
|
| | | self.IsAnonymous = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | |
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 33
|
| | | length += 1
|
| | | length += len(self.Wish)
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.GetWay)
|
| | | data = CommFunc.WriteBYTE(data, self.PacketCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteString(data, 33, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.WishLen)
|
| | | data = CommFunc.WriteString(data, self.WishLen, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAnonymous)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | Time:%d,
|
| | | PlayeJob:%d,
|
| | |
| | | GetWay:%d,
|
| | | PacketCnt:%d,
|
| | | State:%d,
|
| | | Wish:%s
|
| | | WishLen:%d,
|
| | | Wish:%s,
|
| | | IsAnonymous:%d
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.Time,
|
| | | self.PlayeJob,
|
| | |
| | | self.GetWay,
|
| | | self.PacketCnt,
|
| | | self.State,
|
| | | self.Wish
|
| | | self.WishLen,
|
| | | self.Wish,
|
| | | self.IsAnonymous
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C4 装备神装拆解结果 #tagMCEquipDecomposeRet
|
| | |
|
| | | class tagMCEquipDecomposeRet(Structure):
|
| | | Head = tagHead()
|
| | | DecomposeEquipIDCount = 0 #(BYTE DecomposeEquipIDCount)// 已分解的装备个数
|
| | | DecomposeEquipIDList = list() #(vector<DWORD> DecomposeEquipIDList)// 已分解的神装装备ID列表
|
| | | GetItemLen = 0 #(WORD GetItemLen)
|
| | | GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...] |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC4
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.DecomposeEquipIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DecomposeEquipIDCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.DecomposeEquipIDList.append(value)
|
| | | self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC4
|
| | | self.DecomposeEquipIDCount = 0
|
| | | self.DecomposeEquipIDList = list()
|
| | | self.GetItemLen = 0
|
| | | self.GetItemData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.DecomposeEquipIDCount
|
| | | length += 2
|
| | | length += len(self.GetItemData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.DecomposeEquipIDCount)
|
| | | for i in range(self.DecomposeEquipIDCount):
|
| | | data = CommFunc.WriteDWORD(data, self.DecomposeEquipIDList[i])
|
| | | data = CommFunc.WriteWORD(data, self.GetItemLen)
|
| | | data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DecomposeEquipIDCount:%d,
|
| | | DecomposeEquipIDList:%s,
|
| | | GetItemLen:%d,
|
| | | GetItemData:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.DecomposeEquipIDCount,
|
| | | "...",
|
| | | self.GetItemLen,
|
| | | self.GetItemData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCEquipDecomposeRet=tagMCEquipDecomposeRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipDecomposeRet.Head.Cmd,m_NAtagMCEquipDecomposeRet.Head.SubCmd))] = m_NAtagMCEquipDecomposeRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
|
| | |
|
| | | class tagMCEquipPartStar(Structure):
|
| | |
| | | #A3 01 坐骑培养信息 #tagTrainHorseData
|
| | |
|
| | | class tagTrainHorseData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LV", c_ubyte), #等阶
|
| | | ("EatItemCount", c_int), #当前阶已吃丹个数
|
| | | ("SkinPlusState", c_int), #幻化激活状态,按位存储是否激活,幻化编号ID对应位
|
| | | ]
|
| | | Head = tagHead()
|
| | | LV = 0 #(BYTE LV)//等阶
|
| | | EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
|
| | | SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位
|
| | | TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
|
| | | TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
|
| | | TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x01
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainLVList.append(value)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainItemCountList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x01
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x01
|
| | | self.LV = 0
|
| | | self.EatItemCount = 0
|
| | | self.SkinPlusState = 0
|
| | | self.TrainTypes = 0
|
| | | self.TrainLVList = list()
|
| | | self.TrainItemCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagTrainHorseData)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.TrainTypes
|
| | | length += 4 * self.TrainTypes
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.LV)
|
| | | data = CommFunc.WriteDWORD(data, self.EatItemCount)
|
| | | data = CommFunc.WriteDWORD(data, self.SkinPlusState)
|
| | | data = CommFunc.WriteBYTE(data, self.TrainTypes)
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | LV:%d,
|
| | | EatItemCount:%d,
|
| | | SkinPlusState:%d
|
| | | SkinPlusState:%d,
|
| | | TrainTypes:%d,
|
| | | TrainLVList:%s,
|
| | | TrainItemCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Head.OutputString(),
|
| | | self.LV,
|
| | | self.EatItemCount,
|
| | | self.SkinPlusState
|
| | | self.SkinPlusState,
|
| | | self.TrainTypes,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagTrainHorseData=tagTrainHorseData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Cmd,m_NAtagTrainHorseData.SubCmd))] = m_NAtagTrainHorseData
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HasSendGold", c_int), # 已用额度
|
| | | ("ServerGrabCnt", c_int), # 全服红包已抢次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x05
|
| | | self.HasSendGold = 0
|
| | | self.ServerGrabCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HasSendGold:%d
|
| | | HasSendGold:%d,
|
| | | ServerGrabCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HasSendGold
|
| | | self.HasSendGold,
|
| | | self.ServerGrabCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 18 灵器培养信息 #tagMCLingQiTrainInfo
|
| | |
|
| | | class tagMCLingQiTrainInfo(Structure):
|
| | | Head = tagHead()
|
| | | EquipPlace = 0 #(BYTE EquipPlace)//灵器装备位
|
| | | TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
|
| | | TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
|
| | | TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.EquipPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainLVList.append(value)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainItemCountList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x18
|
| | | self.EquipPlace = 0
|
| | | self.TrainTypes = 0
|
| | | self.TrainLVList = list()
|
| | | self.TrainItemCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.TrainTypes
|
| | | length += 4 * self.TrainTypes
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.EquipPlace)
|
| | | data = CommFunc.WriteBYTE(data, self.TrainTypes)
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EquipPlace:%d,
|
| | | TrainTypes:%d,
|
| | | TrainLVList:%s,
|
| | | TrainItemCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.EquipPlace,
|
| | | self.TrainTypes,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCLingQiTrainInfo=tagMCLingQiTrainInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiTrainInfo.Head.Cmd,m_NAtagMCLingQiTrainInfo.Head.SubCmd))] = m_NAtagMCLingQiTrainInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 14 合成结果通知 #tagMCMakeItemAnswer
|
| | |
|
| | | class tagMCMakeItemAnswer(Structure):
|
| | |
| | |
|
| | | m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 17 宠物培养信息 #tagMCPetTrainInfo
|
| | |
|
| | | class tagMCPetTrainInfo(Structure):
|
| | | Head = tagHead()
|
| | | TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
|
| | | TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
|
| | | TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainLVList.append(value)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainItemCountList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x17
|
| | | self.TrainTypes = 0
|
| | | self.TrainLVList = list()
|
| | | self.TrainItemCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.TrainTypes
|
| | | length += 4 * self.TrainTypes
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TrainTypes)
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TrainTypes:%d,
|
| | | TrainLVList:%s,
|
| | | TrainItemCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TrainTypes,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPetTrainInfo=tagMCPetTrainInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPetTrainInfo.Head.Cmd,m_NAtagMCPetTrainInfo.Head.SubCmd))] = m_NAtagMCPetTrainInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 55 垃圾收集活动信息 #tagMCActGarbageSortingInfo
|
| | |
|
| | | class tagMCActGarbageSortingInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x55
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x55
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGarbageSortingInfo=tagMCActGarbageSortingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageSortingInfo.Head.Cmd,m_NAtagMCActGarbageSortingInfo.Head.SubCmd))] = m_NAtagMCActGarbageSortingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 57 垃圾收集活动分类结果 #tagMCActGarbageSortingResult
|
| | |
|
| | | class tagMCActGarbageSortingResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("GarbageSortingType", c_ubyte), #垃圾分类类型
|
| | | ("IsRight", c_ubyte), #是否正确
|
| | | ("AddEnvValue", c_int), #增加环保值
|
| | | ("HisEnvValueTotal", c_int), # 当前活动累计获得环保值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x57
|
| | | 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.Cmd = 0xAA
|
| | | self.SubCmd = 0x57
|
| | | self.ActNum = 0
|
| | | self.GarbageSortingType = 0
|
| | | self.IsRight = 0
|
| | | self.AddEnvValue = 0
|
| | | self.HisEnvValueTotal = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGarbageSortingResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 57 垃圾收集活动分类结果 //tagMCActGarbageSortingResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | GarbageSortingType:%d,
|
| | | IsRight:%d,
|
| | | AddEnvValue:%d,
|
| | | HisEnvValueTotal:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.GarbageSortingType,
|
| | | self.IsRight,
|
| | | self.AddEnvValue,
|
| | | self.HisEnvValueTotal
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGarbageSortingResult=tagMCActGarbageSortingResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageSortingResult.Cmd,m_NAtagMCActGarbageSortingResult.SubCmd))] = m_NAtagMCActGarbageSortingResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 56 垃圾收集活动任务进度信息 #tagMCActGarbageTaskInfo
|
| | |
|
| | | class tagMCActGarbageTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GarbageTaskID", c_ubyte), #垃圾任务ID
|
| | | ("GarbageTaskValue", c_int), #当前进度值,一直累加
|
| | | ("GarbageTaskFinishCount", c_int), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
|
| | | ]
|
| | |
|
| | | 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.GarbageTaskID = 0
|
| | | self.GarbageTaskValue = 0
|
| | | self.GarbageTaskFinishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGarbageTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 56 垃圾收集活动任务进度信息 //tagMCActGarbageTaskInfo:
|
| | | GarbageTaskID:%d,
|
| | | GarbageTaskValue:%d,
|
| | | GarbageTaskFinishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.GarbageTaskID,
|
| | | self.GarbageTaskValue,
|
| | | self.GarbageTaskFinishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGarbageTaskInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | HisEnvValueTotal = 0 #(DWORD HisEnvValueTotal)// 当前活动累计获得环保值
|
| | | GarbageTaskCount = 0 #(BYTE GarbageTaskCount)//任务数
|
| | | GarbageTaskList = list() #(vector<tagMCActGarbageTask> GarbageTaskList)//任务信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x56
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.HisEnvValueTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GarbageTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GarbageTaskCount):
|
| | | temGarbageTaskList = tagMCActGarbageTask()
|
| | | _pos = temGarbageTaskList.ReadData(_lpData, _pos)
|
| | | self.GarbageTaskList.append(temGarbageTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x56
|
| | | self.ActNum = 0
|
| | | self.HisEnvValueTotal = 0
|
| | | self.GarbageTaskCount = 0
|
| | | self.GarbageTaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.GarbageTaskCount):
|
| | | length += self.GarbageTaskList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteDWORD(data, self.HisEnvValueTotal)
|
| | | data = CommFunc.WriteBYTE(data, self.GarbageTaskCount)
|
| | | for i in range(self.GarbageTaskCount):
|
| | | data = CommFunc.WriteString(data, self.GarbageTaskList[i].GetLength(), self.GarbageTaskList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | HisEnvValueTotal:%d,
|
| | | GarbageTaskCount:%d,
|
| | | GarbageTaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.HisEnvValueTotal,
|
| | | self.GarbageTaskCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGarbageTaskInfo=tagMCActGarbageTaskInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageTaskInfo.Head.Cmd,m_NAtagMCActGarbageTaskInfo.Head.SubCmd))] = m_NAtagMCActGarbageTaskInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
|
| | |
|
| | | class tagMCActGrowupBuyCTGItem(Structure):
|
| | |
| | |
|
| | | m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 54 骑宠盛宴活动信息 #tagMCActHorsePetFeastInfo
|
| | |
|
| | | class tagMCActHorsePetFeastTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActHorsePetFeastInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | TimeCount = 0 #(BYTE TimeCount)
|
| | | ActTimeList = list() #(vector<tagMCActHorsePetFeastTime> ActTimeList)// 活动时间 H:M 列表
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x54
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.TimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TimeCount):
|
| | | temActTimeList = tagMCActHorsePetFeastTime()
|
| | | _pos = temActTimeList.ReadData(_lpData, _pos)
|
| | | self.ActTimeList.append(temActTimeList)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x54
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.TimeCount = 0
|
| | | self.ActTimeList = list()
|
| | | self.LimitLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | for i in range(self.TimeCount):
|
| | | length += self.ActTimeList[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.TimeCount)
|
| | | for i in range(self.TimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActTimeList[i].GetLength(), self.ActTimeList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | TimeCount:%d,
|
| | | ActTimeList:%s,
|
| | | LimitLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.TimeCount,
|
| | | "...",
|
| | | self.LimitLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActHorsePetFeastInfo=tagMCActHorsePetFeastInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetFeastInfo.Head.Cmd,m_NAtagMCActHorsePetFeastInfo.Head.SubCmd))] = m_NAtagMCActHorsePetFeastInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | class tagMCActSingleRechargeInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | AwardRuleType = 0 #(BYTE AwardRuleType)// 领奖规则类型 0-向下兼容;1-匹配最高档;2-精确匹配对应档次
|
| | | AwardCount = 0 #(BYTE AwardCount)// 奖励档数
|
| | | AwardInfo = list() #(vector<tagMCActSingleRechargeAward> AwardInfo)// 奖励档信息
|
| | | data = None
|
| | |
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardRuleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardInfo = tagMCActSingleRechargeAward()
|
| | |
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.AwardRuleType = 0
|
| | | self.AwardCount = 0
|
| | | self.AwardInfo = list()
|
| | | return
|
| | |
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardInfo[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardRuleType)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
|
| | |
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | AwardRuleType:%d,
|
| | | AwardCount:%d,
|
| | | AwardInfo:%s
|
| | | '''\
|
| | |
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.AwardRuleType,
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
|
| | | ("HightestSingleRecharge", c_int), # 最高单笔充值额度
|
| | | ("CanAwardValue", c_int), #可否领奖记录,按奖励索引二进制位存储是否可领取
|
| | | ("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取
|
| | | ]
|
| | |
|
| | |
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x51
|
| | | self.ActNum = 0
|
| | | self.HightestSingleRecharge = 0
|
| | | self.CanAwardValue = 0
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | |
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | HightestSingleRecharge:%d,
|
| | | CanAwardValue:%d,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.HightestSingleRecharge,
|
| | | self.CanAwardValue,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
| | |
|
| | | m_NAtagMCActTotalRechargeInfo=tagMCActTotalRechargeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTotalRechargeInfo.Head.Cmd,m_NAtagMCActTotalRechargeInfo.Head.SubCmd))] = m_NAtagMCActTotalRechargeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 52 转盘活动信息 #tagMCActTurntableInfo
|
| | |
|
| | | class tagMCActTurntableItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemNum", c_ubyte), #物品编号 1~n;注意转盘已确定物品编号 与 极品终极物品待选择库编号可能相同,但并不代表同一物品
|
| | | ("ItemLibType", c_ubyte), #物品库类型;1-常规,2-极品,3-终极
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", 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.ItemNum = 0
|
| | | self.ItemLibType = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActTurntableItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 52 转盘活动信息 //tagMCActTurntableInfo:
|
| | | ItemNum:%d,
|
| | | ItemLibType:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemNum,
|
| | | self.ItemLibType,
|
| | | self.ItemID,
|
| | | self.ItemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActTurntableInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | CTGPrizeCount = 0 #(BYTE CTGPrizeCount)
|
| | | CTGPrizeList = list() #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
|
| | | UseMoneyType = 0 #(BYTE UseMoneyType)// 累计消费货币类型
|
| | | UseMoneyPrizeCount = 0 #(BYTE UseMoneyPrizeCount)
|
| | | UseMoneyPrizeList = list() #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
|
| | | TurnItemCount = 0 #(BYTE TurnItemCount)
|
| | | TurnItemList = list() #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
|
| | | GoodItemCount = 0 #(BYTE GoodItemCount)
|
| | | GoodItemList = list() #(vector<tagMCActTurntableItem> GoodItemList)// 极品物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
|
| | | GoodItemCanChooseCount = 0 #(BYTE GoodItemCanChooseCount)// 极品物品可选择个数
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)
|
| | | SuperItemList = list() #(vector<tagMCActTurntableItem> SuperItemList)// 终极物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
|
| | | SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 终极物品可选择个数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x52
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CTGPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CTGPrizeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CTGPrizeList.append(value)
|
| | | self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.UseMoneyPrizeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.UseMoneyPrizeList.append(value)
|
| | | self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TurnItemCount):
|
| | | temTurnItemList = tagMCActTurntableItem()
|
| | | _pos = temTurnItemList.ReadData(_lpData, _pos)
|
| | | self.TurnItemList.append(temTurnItemList)
|
| | | self.GoodItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GoodItemCount):
|
| | | temGoodItemList = tagMCActTurntableItem()
|
| | | _pos = temGoodItemList.ReadData(_lpData, _pos)
|
| | | self.GoodItemList.append(temGoodItemList)
|
| | | self.GoodItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SuperItemCount):
|
| | | temSuperItemList = tagMCActTurntableItem()
|
| | | _pos = temSuperItemList.ReadData(_lpData, _pos)
|
| | | self.SuperItemList.append(temSuperItemList)
|
| | | self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x52
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.CTGPrizeCount = 0
|
| | | self.CTGPrizeList = list()
|
| | | self.UseMoneyType = 0
|
| | | self.UseMoneyPrizeCount = 0
|
| | | self.UseMoneyPrizeList = list()
|
| | | self.TurnItemCount = 0
|
| | | self.TurnItemList = list()
|
| | | self.GoodItemCount = 0
|
| | | self.GoodItemList = list()
|
| | | self.GoodItemCanChooseCount = 0
|
| | | self.SuperItemCount = 0
|
| | | self.SuperItemList = list()
|
| | | self.SuperItemCanChooseCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.CTGPrizeCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.UseMoneyPrizeCount
|
| | | length += 1
|
| | | for i in range(self.TurnItemCount):
|
| | | length += self.TurnItemList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.GoodItemCount):
|
| | | length += self.GoodItemList[i].GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.SuperItemCount):
|
| | | length += self.SuperItemList[i].GetLength()
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
|
| | | for i in range(self.CTGPrizeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.UseMoneyType)
|
| | | data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
|
| | | for i in range(self.UseMoneyPrizeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.TurnItemCount)
|
| | | for i in range(self.TurnItemCount):
|
| | | data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemCount)
|
| | | for i in range(self.GoodItemCount):
|
| | | data = CommFunc.WriteString(data, self.GoodItemList[i].GetLength(), self.GoodItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemCanChooseCount)
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCount)
|
| | | for i in range(self.SuperItemCount):
|
| | | data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | CTGPrizeCount:%d,
|
| | | CTGPrizeList:%s,
|
| | | UseMoneyType:%d,
|
| | | UseMoneyPrizeCount:%d,
|
| | | UseMoneyPrizeList:%s,
|
| | | TurnItemCount:%d,
|
| | | TurnItemList:%s,
|
| | | GoodItemCount:%d,
|
| | | GoodItemList:%s,
|
| | | GoodItemCanChooseCount:%d,
|
| | | SuperItemCount:%d,
|
| | | SuperItemList:%s,
|
| | | SuperItemCanChooseCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.CTGPrizeCount,
|
| | | "...",
|
| | | self.UseMoneyType,
|
| | | self.UseMoneyPrizeCount,
|
| | | "...",
|
| | | self.TurnItemCount,
|
| | | "...",
|
| | | self.GoodItemCount,
|
| | | "...",
|
| | | self.GoodItemCanChooseCount,
|
| | | self.SuperItemCount,
|
| | | "...",
|
| | | self.SuperItemCanChooseCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTurntableInfo=tagMCActTurntableInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntableInfo.Head.Cmd,m_NAtagMCActTurntableInfo.Head.SubCmd))] = m_NAtagMCActTurntableInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 53 转盘活动玩家信息 #tagMCActTurntablePlayerInfo
|
| | |
|
| | | class tagMCActTurntablePlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("CanUseCount", c_ubyte), #可转盘次数
|
| | | ("CTGTotal", c_int), #累计充值额度
|
| | | ("UseMoneyTotal", c_int), #累计消费货币额度
|
| | | ("TurnItemState", c_int), #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
|
| | | ("GetItemNum", c_ubyte), #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x53
|
| | | 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.Cmd = 0xAA
|
| | | self.SubCmd = 0x53
|
| | | self.ActNum = 0
|
| | | self.CanUseCount = 0
|
| | | self.CTGTotal = 0
|
| | | self.UseMoneyTotal = 0
|
| | | self.TurnItemState = 0
|
| | | self.GetItemNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActTurntablePlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 53 转盘活动玩家信息 //tagMCActTurntablePlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | CanUseCount:%d,
|
| | | CTGTotal:%d,
|
| | | UseMoneyTotal:%d,
|
| | | TurnItemState:%d,
|
| | | GetItemNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.CanUseCount,
|
| | | self.CTGTotal,
|
| | | self.UseMoneyTotal,
|
| | | self.TurnItemState,
|
| | | self.GetItemNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTurntablePlayerInfo=tagMCActTurntablePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntablePlayerInfo.Cmd,m_NAtagMCActTurntablePlayerInfo.SubCmd))] = m_NAtagMCActTurntablePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 59 仙匣秘境抽奖结果 #tagMCActXianXiaMJAwardItemResult
|
| | |
|
| | | class tagMCActXianXiaMJAwardItemResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
|
| | | ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
|
| | | ("ItemCount", c_ushort), |
| | | ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
|
| | | ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x59
|
| | | 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.Cmd = 0xAA
|
| | | self.SubCmd = 0x59
|
| | | self.ActNum = 0
|
| | | self.ItemLibType = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.PosNum = 0
|
| | | self.TotalTimesNow = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActXianXiaMJAwardItemResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 59 仙匣秘境抽奖结果 //tagMCActXianXiaMJAwardItemResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | ItemLibType:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | PosNum:%d,
|
| | | TotalTimesNow:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.ItemLibType,
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.PosNum,
|
| | | self.TotalTimesNow
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActXianXiaMJAwardItemResult=tagMCActXianXiaMJAwardItemResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJAwardItemResult.Cmd,m_NAtagMCActXianXiaMJAwardItemResult.SubCmd))] = m_NAtagMCActXianXiaMJAwardItemResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo
|
| | |
|
| | | class tagMCActXianXiaMJAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
|
| | | ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
|
| | | ("ItemCount", c_ushort), |
| | | ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
|
| | | ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
|
| | | ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限
|
| | | ("LayerLimit", c_ubyte), #大于等于X层后可产出,0不限
|
| | | ]
|
| | |
|
| | | 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.ItemLibType = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.PosNum = 0
|
| | | self.TotalTimesNow = 0
|
| | | self.TotalTimesMax = 0
|
| | | self.LayerLimit = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActXianXiaMJAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
|
| | | ItemLibType:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | PosNum:%d,
|
| | | TotalTimesNow:%d,
|
| | | TotalTimesMax:%d,
|
| | | LayerLimit:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemLibType,
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.PosNum,
|
| | | self.TotalTimesNow,
|
| | | self.TotalTimesMax,
|
| | | self.LayerLimit
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
|
| | | MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
|
| | | LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)
|
| | | SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
|
| | | SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCActXianXiaMJAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SuperItemCount):
|
| | | temSuperItemList = tagMCActXianXiaMJAwardItem()
|
| | | _pos = temSuperItemList.ReadData(_lpData, _pos)
|
| | | self.SuperItemList.append(temSuperItemList)
|
| | | self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x58
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.LayerNum = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | self.SuperItemCount = 0
|
| | | self.SuperItemList = list()
|
| | | self.SuperItemCanChooseCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.SuperItemCount):
|
| | | length += self.SuperItemList[i].GetLength()
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteWORD(data, self.MoneyValue)
|
| | | data = CommFunc.WriteBYTE(data, self.LayerNum)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCount)
|
| | | for i in range(self.SuperItemCount):
|
| | | data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d,
|
| | | LayerNum:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s,
|
| | | SuperItemCount:%d,
|
| | | SuperItemList:%s,
|
| | | SuperItemCanChooseCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.MoneyType,
|
| | | self.MoneyValue,
|
| | | self.LayerNum,
|
| | | self.AwardItemCount,
|
| | | "...",
|
| | | self.SuperItemCount,
|
| | | "...",
|
| | | self.SuperItemCanChooseCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo
|
| | |
|
| | | class tagMCAllPeoplePartyCount(Structure):
|