| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 31 前端自定义保存的设置内容信息 #tagSCSettingDataInfo
|
| | |
|
| | | class tagSCSettingData(Structure):
|
| | | KeyNum = 0 #(BYTE KeyNum)// 自定义key编号,后端使用数字key存储,前端自行进行转换定义,限制100个
|
| | | DataLen = 0 #(BYTE DataLen)
|
| | | SetData = "" #(String SetData)//自定义保存的内容
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.KeyNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.DataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SetData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.KeyNum = 0
|
| | | self.DataLen = 0
|
| | | self.SetData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.SetData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.KeyNum)
|
| | | data = CommFunc.WriteBYTE(data, self.DataLen)
|
| | | data = CommFunc.WriteString(data, self.DataLen, self.SetData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | KeyNum:%d,
|
| | | DataLen:%d,
|
| | | SetData:%s
|
| | | '''\
|
| | | %(
|
| | | self.KeyNum,
|
| | | self.DataLen,
|
| | | self.SetData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCSettingDataInfo(Structure):
|
| | | Head = tagHead()
|
| | | DataCnt = 0 #(WORD DataCnt)
|
| | | SettingDataList = list() #(vector<tagSCSettingData> SettingDataList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA1
|
| | | self.Head.SubCmd = 0x31
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.DataCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.DataCnt):
|
| | | temSettingDataList = tagSCSettingData()
|
| | | _pos = temSettingDataList.ReadData(_lpData, _pos)
|
| | | self.SettingDataList.append(temSettingDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA1
|
| | | self.Head.SubCmd = 0x31
|
| | | self.DataCnt = 0
|
| | | self.SettingDataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.DataCnt):
|
| | | length += self.SettingDataList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.DataCnt)
|
| | | for i in range(self.DataCnt):
|
| | | data = CommFunc.WriteString(data, self.SettingDataList[i].GetLength(), self.SettingDataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DataCnt:%d,
|
| | | SettingDataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.DataCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCSettingDataInfo=tagSCSettingDataInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSettingDataInfo.Head.Cmd,m_NAtagSCSettingDataInfo.Head.SubCmd))] = m_NAtagSCSettingDataInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A1 26 准备切换地图 #tagMCPrepareChangeMap
|
| | |
|
| | | class tagMCPrepareChangeMap(Structure):
|
| | |
| | | ("GubaoID", c_ushort),
|
| | | ("GubaoStar", c_ubyte),
|
| | | ("GubaoLV", c_ubyte),
|
| | | ("EffLayer", c_ubyte), # 该特殊效果累加层值
|
| | | ("EffLayer", c_ushort), # 该特殊效果累加层值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 1F 玩家符印信息 #tagMCRuneInfo
|
| | |
|
| | | class tagMCRuneInfo(Structure):
|
| | | Head = tagHead()
|
| | | RuneHoleOpenState = 0 #(DWORD RuneHoleOpenState)//符印孔状态, 按索引表示激活状态
|
| | | Count = 0 #(BYTE Count)// 符印孔信息数
|
| | | RuneDataList = list() #(vector<DWORD> RuneDataList)// 符印孔数据信息, 数据与背包数据相同
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x1F
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RuneHoleOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.RuneDataList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x1F
|
| | | self.RuneHoleOpenState = 0
|
| | | self.Count = 0
|
| | | self.RuneDataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.Count
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RuneHoleOpenState)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.RuneDataList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RuneHoleOpenState:%d,
|
| | | Count:%d,
|
| | | RuneDataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RuneHoleOpenState,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRuneInfo=tagMCRuneInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
|
| | |
|
| | | class tagMCSingleGoldGift(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | | Head = tagHead()
|
| | | TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
|
| | | TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
|
| | | CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
|
| | | CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
|
| | | XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
|
| | | StartTime = 0 #(DWORD StartTime)//通天令本轮开始时间戳,秒
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CommAwardStateList.append(value)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.XianAwardStateList.append(value)
|
| | | self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | self.TTLBuyState = 0
|
| | | self.TTLLV = 0
|
| | | self.CurPoint = 0
|
| | | self.AwardStateCount = 0
|
| | | self.CommAwardStateList = list()
|
| | | self.XianAwardStateList = list()
|
| | | self.StartTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | | length += 4 * self.AwardStateCount
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TTLBuyState)
|
| | | data = CommFunc.WriteBYTE(data, self.TTLLV)
|
| | | data = CommFunc.WriteDWORD(data, self.CurPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
|
| | | data = CommFunc.WriteDWORD(data, self.StartTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TTLBuyState:%d,
|
| | | TTLLV:%d,
|
| | | CurPoint:%d,
|
| | | AwardStateCount:%d,
|
| | | CommAwardStateList:%s,
|
| | | XianAwardStateList:%s,
|
| | | StartTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TTLBuyState,
|
| | | self.TTLLV,
|
| | | self.CurPoint,
|
| | | self.AwardStateCount,
|
| | | "...",
|
| | | "...",
|
| | | self.StartTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
|
| | |
|
| | | class tagMCTongTianLingTaskAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)
|
| | | TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TaskAwardStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | self.AwardStateCount = 0
|
| | | self.TaskAwardStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AwardStateCount:%d,
|
| | | TaskAwardStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AwardStateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
|
| | |
|
| | | class tagMCTongTianLingTaskValue(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TaskType", c_ubyte), #成就类型
|
| | | ("IsDaily", c_ubyte), #是否每日任务
|
| | | ("TaskValue", c_int), #当前完成进度值
|
| | | ]
|
| | |
|
| | | 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.TaskType = 0
|
| | | self.IsDaily = 0
|
| | | self.TaskValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTongTianLingTaskValue)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
|
| | | TaskType:%d,
|
| | | IsDaily:%d,
|
| | | TaskValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.TaskType,
|
| | | self.IsDaily,
|
| | | self.TaskValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTongTianLingTaskValueInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//信息个数
|
| | | TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | 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):
|
| | | temTaskValueList = tagMCTongTianLingTaskValue()
|
| | | _pos = temTaskValueList.ReadData(_lpData, _pos)
|
| | | self.TaskValueList.append(temTaskValueList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | self.Count = 0
|
| | | self.TaskValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TaskValueList[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.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TaskValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 51 寻宝功能信息 #tagMCTreasureInfo
|
| | |
|
| | | class tagMCTreasureWish(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("WishID", c_ushort), # 寻宝物品库中的数据ID,注意不是库ID
|
| | | ("OutCnt", c_ubyte), # 做为心愿物品时已产出次数,有产出过的无法重新选择,未产出的可任意修改选择
|
| | | ("OutCnt", c_ubyte), # 该心愿物品已产出次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | %(
|
| | | self.WishID,
|
| | | self.OutCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTreasureWishLib(Structure):
|
| | | LibID = 0 #(WORD LibID)// 寻宝物品库ID
|
| | | OutCntTotal = 0 #(WORD OutCntTotal)// 本库累计产出心愿总次数
|
| | | IsUseWishCard = 0 #(BYTE IsUseWishCard)// 是否勾选了自动使用心愿卡
|
| | | WishCnt = 0 #(BYTE WishCnt)
|
| | | WishList = list() #(vector<tagMCTreasureWish> WishList)//已选心愿物品信息,只同步已选的
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.LibID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OutCntTotal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsUseWishCard,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishCnt):
|
| | | temWishList = tagMCTreasureWish()
|
| | | _pos = temWishList.ReadData(_lpData, _pos)
|
| | | self.WishList.append(temWishList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.LibID = 0
|
| | | self.OutCntTotal = 0
|
| | | self.IsUseWishCard = 0
|
| | | self.WishCnt = 0
|
| | | self.WishList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.WishCnt):
|
| | | length += self.WishList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.LibID)
|
| | | data = CommFunc.WriteWORD(data, self.OutCntTotal)
|
| | | data = CommFunc.WriteBYTE(data, self.IsUseWishCard)
|
| | | data = CommFunc.WriteBYTE(data, self.WishCnt)
|
| | | for i in range(self.WishCnt):
|
| | | data = CommFunc.WriteString(data, self.WishList[i].GetLength(), self.WishList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | LibID:%d,
|
| | | OutCntTotal:%d,
|
| | | IsUseWishCard:%d,
|
| | | WishCnt:%d,
|
| | | WishList:%s
|
| | | '''\
|
| | | %(
|
| | | self.LibID,
|
| | | self.OutCntTotal,
|
| | | self.IsUseWishCard,
|
| | | self.WishCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
|
| | | GridLimitCnt = 0 #(BYTE GridLimitCnt)
|
| | | GridLimitCntList = list() #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
|
| | | WishCnt = 0 #(BYTE WishCnt)
|
| | | WishList = list() #(vector<tagMCTreasureWish> WishList)//心愿物品信息
|
| | | WishLibCnt = 0 #(BYTE WishLibCnt)
|
| | | WishLibList = list() #(vector<tagMCTreasureWishLib> WishLibList)//心愿库信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temGridLimitCntList = tagMCTreasureGridLimit()
|
| | | _pos = temGridLimitCntList.ReadData(_lpData, _pos)
|
| | | self.GridLimitCntList.append(temGridLimitCntList)
|
| | | self.WishCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishCnt):
|
| | | temWishList = tagMCTreasureWish()
|
| | | _pos = temWishList.ReadData(_lpData, _pos)
|
| | | self.WishList.append(temWishList)
|
| | | self.WishLibCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishLibCnt):
|
| | | temWishLibList = tagMCTreasureWishLib()
|
| | | _pos = temWishLibList.ReadData(_lpData, _pos)
|
| | | self.WishLibList.append(temWishLibList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.TreasureCntAward = 0
|
| | | self.GridLimitCnt = 0
|
| | | self.GridLimitCntList = list()
|
| | | self.WishCnt = 0
|
| | | self.WishList = list()
|
| | | self.WishLibCnt = 0
|
| | | self.WishLibList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | for i in range(self.GridLimitCnt):
|
| | | length += self.GridLimitCntList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.WishCnt):
|
| | | length += self.WishList[i].GetLength()
|
| | | for i in range(self.WishLibCnt):
|
| | | length += self.WishLibList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
|
| | | for i in range(self.GridLimitCnt):
|
| | | data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WishCnt)
|
| | | for i in range(self.WishCnt):
|
| | | data = CommFunc.WriteString(data, self.WishList[i].GetLength(), self.WishList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WishLibCnt)
|
| | | for i in range(self.WishLibCnt):
|
| | | data = CommFunc.WriteString(data, self.WishLibList[i].GetLength(), self.WishLibList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | TreasureCntAward:%d,
|
| | | GridLimitCnt:%d,
|
| | | GridLimitCntList:%s,
|
| | | WishCnt:%d,
|
| | | WishList:%s
|
| | | WishLibCnt:%d,
|
| | | WishLibList:%s
|
| | | '''\
|
| | | %(
|
| | | self.TreasureType,
|
| | |
| | | self.TreasureCntAward,
|
| | | self.GridLimitCnt,
|
| | | "...",
|
| | | self.WishCnt,
|
| | | self.WishLibCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | |
|
| | | class tagMCTreasureResult(Structure):
|
| | | Head = tagHead()
|
| | | TreasureType = 0 #(BYTE TreasureType)//寻宝类型
|
| | | TreasureIndex = 0 #(BYTE TreasureIndex)//寻宝索引
|
| | | CostType = 0 #(BYTE CostType)//消耗类型:0-默认仙玉;1-免费次数;2-寻宝道具
|
| | | AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
|
| | | AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
|
| | | AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TreasureIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CostType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x50
|
| | | self.TreasureType = 0
|
| | | self.TreasureIndex = 0
|
| | | self.CostType = 0
|
| | | self.AddMoneyType = 0
|
| | | self.AddMoneyValue = 0
|
| | | self.AddTreasureLuck = 0
|
| | |
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureType)
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.CostType)
|
| | | data = CommFunc.WriteBYTE(data, self.AddMoneyType)
|
| | | data = CommFunc.WriteWORD(data, self.AddMoneyValue)
|
| | | data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TreasureType:%d,
|
| | | TreasureIndex:%d,
|
| | | CostType:%d,
|
| | | AddMoneyType:%d,
|
| | | AddMoneyValue:%d,
|
| | | AddTreasureLuck:%d,
|
| | |
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TreasureType,
|
| | | self.TreasureIndex,
|
| | | self.CostType,
|
| | | self.AddMoneyType,
|
| | | self.AddMoneyValue,
|
| | | self.AddTreasureLuck,
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 05 公会跨服互通信息 #tagSCFamilyCrossInfo
|
| | |
|
| | | class tagSCFamilyCrossInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属分区
|
| | | ServerCnt = 0 #(WORD ServerCnt)
|
| | | ServerIDList = list() #(vector<DWORD> ServerIDList)// 互通服务器ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ServerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.ServerCnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ServerIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x05
|
| | | self.ZoneID = 0
|
| | | self.ServerCnt = 0
|
| | | self.ServerIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4 * self.ServerCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.ServerCnt)
|
| | | for i in range(self.ServerCnt):
|
| | | data = CommFunc.WriteDWORD(data, self.ServerIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneID:%d,
|
| | | ServerCnt:%d,
|
| | | ServerIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneID,
|
| | | self.ServerCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCFamilyCrossInfo=tagSCFamilyCrossInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyCrossInfo.Head.Cmd,m_NAtagSCFamilyCrossInfo.Head.SubCmd))] = m_NAtagSCFamilyCrossInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 24 公会成员删除 #tagSCFamilyMemDel
|
| | |
|
| | | class tagSCFamilyMemDel(Structure):
|
| | | Head = tagHead()
|
| | | Type = 0 #(BYTE Type)// 0-踢出;1-主动退出
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x24
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x24
|
| | | self.Type = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Type)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Type:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Type,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCFamilyMemDel=tagSCFamilyMemDel()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyMemDel.Head.Cmd,m_NAtagSCFamilyMemDel.Head.SubCmd))] = m_NAtagSCFamilyMemDel
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
|
| | |
|
| | | class tagMCFamilyReqJoinPlayer(Structure):
|
| | |
| | | LeaderID = 0 #(DWORD LeaderID)//族长ID
|
| | | LeaderNameLen = 0 #(BYTE LeaderNameLen)
|
| | | LeaderName = "" #(String LeaderName)//size = LeaderNameLen
|
| | | LeaderServerID = 0 #(DWORD LeaderServerID)//族长服务器ID
|
| | | FamilyLV = 0 #(BYTE FamilyLV)//家族等级
|
| | | JoinReview = 0 #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
|
| | | JoinLVMin = 0 #(WORD JoinLVMin)//限制最低可加入的玩家等级
|
| | |
| | | self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
|
| | | self.LeaderServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.LeaderID = 0
|
| | | self.LeaderNameLen = 0
|
| | | self.LeaderName = ""
|
| | | self.LeaderServerID = 0
|
| | | self.FamilyLV = 0
|
| | | self.JoinReview = 0
|
| | | self.JoinLVMin = 0
|
| | |
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.LeaderName)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.LeaderID)
|
| | | data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
|
| | | data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
|
| | | data = CommFunc.WriteDWORD(data, self.LeaderServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLV)
|
| | | data = CommFunc.WriteBYTE(data, self.JoinReview)
|
| | | data = CommFunc.WriteWORD(data, self.JoinLVMin)
|
| | |
| | | LeaderID:%d,
|
| | | LeaderNameLen:%d,
|
| | | LeaderName:%s,
|
| | | LeaderServerID:%d,
|
| | | FamilyLV:%d,
|
| | | JoinReview:%d,
|
| | | JoinLVMin:%d,
|
| | |
| | | self.LeaderID,
|
| | | self.LeaderNameLen,
|
| | | self.LeaderName,
|
| | | self.LeaderServerID,
|
| | | self.FamilyLV,
|
| | | self.JoinReview,
|
| | | self.JoinLVMin,
|
| | |
| | | TotalPage = 0 #(BYTE TotalPage)//一共有多少页
|
| | | FamilyCount = 0 #(BYTE FamilyCount)
|
| | | FamilyList = list() #(vector<tagMCFamilyView> FamilyList)//本页家族信息列表
|
| | | Rank = 0 #(DWORD Rank)//玩家公会所在名次,0-没有公会或没有在榜上;>0-对应排名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temFamilyList = tagMCFamilyView()
|
| | | _pos = temFamilyList.ReadData(_lpData, _pos)
|
| | | self.FamilyList.append(temFamilyList)
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.TotalPage = 0
|
| | | self.FamilyCount = 0
|
| | | self.FamilyList = list()
|
| | | self.Rank = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.FamilyCount):
|
| | | length += self.FamilyList[i].GetLength()
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.FamilyCount)
|
| | | for i in range(self.FamilyCount):
|
| | | data = CommFunc.WriteString(data, self.FamilyList[i].GetLength(), self.FamilyList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | ShowCount:%d,
|
| | | TotalPage:%d,
|
| | | FamilyCount:%d,
|
| | | FamilyList:%s
|
| | | FamilyList:%s,
|
| | | Rank:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.ShowCount,
|
| | | self.TotalPage,
|
| | | self.FamilyCount,
|
| | | "..."
|
| | | "...",
|
| | | self.Rank
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | LeaderID = 0 #(DWORD LeaderID)//族长玩家ID
|
| | | MemberCount = 0 #(BYTE MemberCount)//人数
|
| | | MemberList = list() #(vector<tagMCRoleFamilyMember> MemberList)//size = MemberCount
|
| | | Extra1 = 0 #(DWORD Extra1)//附加字段1
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temMemberList = tagMCRoleFamilyMember()
|
| | | _pos = temMemberList.ReadData(_lpData, _pos)
|
| | | self.MemberList.append(temMemberList)
|
| | | self.Extra1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.LeaderID = 0
|
| | | self.MemberCount = 0
|
| | | self.MemberList = list()
|
| | | self.Extra1 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.MemberCount):
|
| | | length += self.MemberList[i].GetLength()
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | for i in range(self.MemberCount):
|
| | | data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Extra1)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Broadcast:%s,
|
| | | LeaderID:%d,
|
| | | MemberCount:%d,
|
| | | MemberList:%s
|
| | | MemberList:%s,
|
| | | Extra1:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.Broadcast,
|
| | | self.LeaderID,
|
| | | self.MemberCount,
|
| | | "..."
|
| | | "...",
|
| | | self.Extra1
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRoleFamilyInfo=tagMCRoleFamilyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRoleFamilyInfo.Head.Cmd,m_NAtagMCRoleFamilyInfo.Head.SubCmd))] = m_NAtagMCRoleFamilyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 19 查看目标公会信息 #tagSCTagFamilyInfo
|
| | |
|
| | | class tagSCTagFamilyInfo(Structure):
|
| | | Head = tagHead()
|
| | | FamilyID = 0 #(DWORD FamilyID)//家族ID
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | LeaderID = 0 #(DWORD LeaderID)//族长ID
|
| | | LeaderNameLen = 0 #(BYTE LeaderNameLen)
|
| | | LeaderName = "" #(String LeaderName)//size = LeaderNameLen
|
| | | LeaderServerID = 0 #(DWORD LeaderServerID)//会长区服ID
|
| | | FamilyLV = 0 #(BYTE FamilyLV)//家族等级
|
| | | ServerID = 0 #(DWORD ServerID)//区服ID
|
| | | EmblemID = 0 #(DWORD EmblemID)//徽章ID
|
| | | EmblemWord = "" #(char EmblemWord[3])//徽章文字
|
| | | FightPower = 0 #(DWORD FightPower)//总战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//总战力,整除亿部分
|
| | | BroadcastLen = 0 #(WORD BroadcastLen)//公告
|
| | | Broadcast = "" #(String Broadcast)//size = BroadcastLen
|
| | | MemberCount = 0 #(BYTE MemberCount)//成员人数
|
| | | DataServerID = 0 #(DWORD DataServerID)//数据所在服务器ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyNameLen)
|
| | | self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
|
| | | self.LeaderServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Broadcast,_pos = CommFunc.ReadString(_lpData, _pos,self.BroadcastLen)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.DataServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x19
|
| | | self.FamilyID = 0
|
| | | self.FamilyNameLen = 0
|
| | | self.FamilyName = ""
|
| | | self.LeaderID = 0
|
| | | self.LeaderNameLen = 0
|
| | | self.LeaderName = ""
|
| | | self.LeaderServerID = 0
|
| | | self.FamilyLV = 0
|
| | | self.ServerID = 0
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ""
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.BroadcastLen = 0
|
| | | self.Broadcast = ""
|
| | | self.MemberCount = 0
|
| | | self.DataServerID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.FamilyName)
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.LeaderName)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.Broadcast)
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyID)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
|
| | | data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
|
| | | data = CommFunc.WriteDWORD(data, self.LeaderID)
|
| | | data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
|
| | | data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
|
| | | data = CommFunc.WriteDWORD(data, self.LeaderServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLV)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.EmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteWORD(data, self.BroadcastLen)
|
| | | data = CommFunc.WriteString(data, self.BroadcastLen, self.Broadcast)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | data = CommFunc.WriteDWORD(data, self.DataServerID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FamilyID:%d,
|
| | | FamilyNameLen:%d,
|
| | | FamilyName:%s,
|
| | | LeaderID:%d,
|
| | | LeaderNameLen:%d,
|
| | | LeaderName:%s,
|
| | | LeaderServerID:%d,
|
| | | FamilyLV:%d,
|
| | | ServerID:%d,
|
| | | EmblemID:%d,
|
| | | EmblemWord:%s,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | BroadcastLen:%d,
|
| | | Broadcast:%s,
|
| | | MemberCount:%d,
|
| | | DataServerID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FamilyID,
|
| | | self.FamilyNameLen,
|
| | | self.FamilyName,
|
| | | self.LeaderID,
|
| | | self.LeaderNameLen,
|
| | | self.LeaderName,
|
| | | self.LeaderServerID,
|
| | | self.FamilyLV,
|
| | | self.ServerID,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.BroadcastLen,
|
| | | self.Broadcast,
|
| | | self.MemberCount,
|
| | | self.DataServerID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCTagFamilyInfo=tagSCTagFamilyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTagFamilyInfo.Head.Cmd,m_NAtagSCTagFamilyInfo.Head.SubCmd))] = m_NAtagSCTagFamilyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | FamilyName = "" #(char FamilyName[33])
|
| | | FamilyEmblemID = 0 #(DWORD FamilyEmblemID)//仙盟徽章ID
|
| | | FamilyEmblemWord = "" #(char FamilyEmblemWord[3])//徽章文字
|
| | | FamilyDataServerID = 0 #(DWORD FamilyDataServerID)//公会数据所在服务器ID,A619查看公会用
|
| | | PlusDataSize = 0 #(DWORD PlusDataSize)
|
| | | PlusData = "" #(String PlusData)//扩展记录
|
| | | data = None
|
| | |
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyEmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.FamilyDataServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
|
| | | return _pos
|
| | |
| | | self.FamilyName = ""
|
| | | self.FamilyEmblemID = 0
|
| | | self.FamilyEmblemWord = ""
|
| | | self.FamilyDataServerID = 0
|
| | | self.PlusDataSize = 0
|
| | | self.PlusData = ""
|
| | | return
|
| | |
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += 4
|
| | | length += len(self.PlusData)
|
| | |
|
| | | return length
|
| | |
| | | data = CommFunc.WriteString(data, 33, self.FamilyName)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyEmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.FamilyEmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyDataServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlusDataSize)
|
| | | data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
|
| | | return data
|
| | |
| | | FamilyName:%s,
|
| | | FamilyEmblemID:%d,
|
| | | FamilyEmblemWord:%s,
|
| | | FamilyDataServerID:%d,
|
| | | PlusDataSize:%d,
|
| | | PlusData:%s
|
| | | '''\
|
| | |
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.FamilyDataServerID,
|
| | | self.PlusDataSize,
|
| | | self.PlusData
|
| | | )
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
|
| | |
|
| | | class tagMCActRechargePrize(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("CTGID", c_ushort), # 对应充值表充值ID
|
| | | ("GoldPrize", c_int), #返利仙玉数
|
| | | ("PrizeCountLimit", 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.CTGID = 0
|
| | | self.GoldPrize = 0
|
| | | self.PrizeCountLimit = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActRechargePrize)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
|
| | | CTGID:%d,
|
| | | GoldPrize:%d,
|
| | | PrizeCountLimit:%d
|
| | | '''\
|
| | | %(
|
| | | self.CTGID,
|
| | | self.GoldPrize,
|
| | | self.PrizeCountLimit
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActRechargePrizeDay(Structure):
|
| | | Prizes = 0 #(BYTE Prizes)// 返利档数
|
| | | PrizeInfo = list() #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Prizes):
|
| | | temPrizeInfo = tagMCActRechargePrize()
|
| | | _pos = temPrizeInfo.ReadData(_lpData, _pos)
|
| | | self.PrizeInfo.append(temPrizeInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Prizes = 0
|
| | | self.PrizeInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.Prizes):
|
| | | length += self.PrizeInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Prizes)
|
| | | for i in range(self.Prizes):
|
| | | data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Prizes:%d,
|
| | | PrizeInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Prizes,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActRechargePrizeInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | PrizeDays = 0 #(BYTE PrizeDays)
|
| | | PrizeDayInfo = list() #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x27
|
| | | 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PrizeDays):
|
| | | temPrizeDayInfo = tagMCActRechargePrizeDay()
|
| | | _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
|
| | | self.PrizeDayInfo.append(temPrizeDayInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x27
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.IsDayReset = 0
|
| | | self.PrizeDays = 0
|
| | | self.PrizeDayInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.PrizeDays):
|
| | | length += self.PrizeDayInfo[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.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.PrizeDays)
|
| | | for i in range(self.PrizeDays):
|
| | | data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | IsDayReset:%d,
|
| | | PrizeDays:%d,
|
| | | PrizeDayInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.IsDayReset,
|
| | | self.PrizeDays,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
|
| | |
|
| | | class tagMCActRechargeRebate(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RMBMin", c_int), # 充值RMB最小值
|
| | | ("RMBMax", c_int), # 充值RMB最大值,0代表无上限
|
| | | ("RebateRate", 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.RMBMin = 0
|
| | | self.RMBMax = 0
|
| | | self.RebateRate = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActRechargeRebate)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
|
| | | RMBMin:%d,
|
| | | RMBMax:%d,
|
| | | RebateRate:%d
|
| | | '''\
|
| | | %(
|
| | | self.RMBMin,
|
| | | self.RMBMax,
|
| | | self.RebateRate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActRechargeRebateDay(Structure):
|
| | | Rebates = 0 #(BYTE Rebates)// 返利档数
|
| | | RebateInfo = list() #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Rebates):
|
| | | temRebateInfo = tagMCActRechargeRebate()
|
| | | _pos = temRebateInfo.ReadData(_lpData, _pos)
|
| | | self.RebateInfo.append(temRebateInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rebates = 0
|
| | | self.RebateInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.Rebates):
|
| | | length += self.RebateInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Rebates)
|
| | | for i in range(self.Rebates):
|
| | | data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rebates:%d,
|
| | | RebateInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rebates,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActRechargeRebateGoldInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | RebateDays = 0 #(BYTE RebateDays)
|
| | | RebateDayInfo = list() #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x29
|
| | | 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RebateDays):
|
| | | temRebateDayInfo = tagMCActRechargeRebateDay()
|
| | | _pos = temRebateDayInfo.ReadData(_lpData, _pos)
|
| | | self.RebateDayInfo.append(temRebateDayInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x29
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.IsDayReset = 0
|
| | | self.RebateDays = 0
|
| | | self.RebateDayInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.RebateDays):
|
| | | length += self.RebateDayInfo[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.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.RebateDays)
|
| | | for i in range(self.RebateDays):
|
| | | data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | IsDayReset:%d,
|
| | | RebateDays:%d,
|
| | | RebateDayInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.IsDayReset,
|
| | | self.RebateDays,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 50 单笔累充活动信息 #tagMCActSingleRechargeInfo
|
| | |
|
| | | class tagMCActSingleRechargeAwardItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo
|
| | |
|
| | | class tagMCCACTGBillboardAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", 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.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCACTGBillboardAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCACTGBillboardDabiao(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
|
| | | NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCCACTGBillboardAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedRMB = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedRMB)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | NeedRMB:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedRMB,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCACTGBillboardOrder(Structure):
|
| | | OrderA = 0 #(BYTE OrderA)// 名次A
|
| | | OrderB = 0 #(BYTE OrderB)// 至名次B
|
| | | NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCCACTGBillboardAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.OrderA = 0
|
| | | self.OrderB = 0
|
| | | self.NeedRMB = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.OrderA)
|
| | | data = CommFunc.WriteBYTE(data, self.OrderB)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedRMB)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | OrderA:%d,
|
| | | OrderB:%d,
|
| | | NeedRMB:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.OrderA,
|
| | | self.OrderB,
|
| | | self.NeedRMB,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCACTGBillboardTempInfo(Structure):
|
| | | TemplateID = 0 #(BYTE TemplateID)// 活动模板ID
|
| | | DabiaoAwardCount = 0 #(BYTE DabiaoAwardCount)// 达标奖励档数
|
| | | DabiaoAwardInfo = list() #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息
|
| | | OrderAwardCount = 0 #(BYTE OrderAwardCount)// 排行奖励档数
|
| | | OrderAwardInfo = list() #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DabiaoAwardCount):
|
| | | temDabiaoAwardInfo = tagMCCACTGBillboardDabiao()
|
| | | _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos)
|
| | | self.DabiaoAwardInfo.append(temDabiaoAwardInfo)
|
| | | self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.OrderAwardCount):
|
| | | temOrderAwardInfo = tagMCCACTGBillboardOrder()
|
| | | _pos = temOrderAwardInfo.ReadData(_lpData, _pos)
|
| | | self.OrderAwardInfo.append(temOrderAwardInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.DabiaoAwardCount = 0
|
| | | self.DabiaoAwardInfo = list()
|
| | | self.OrderAwardCount = 0
|
| | | self.OrderAwardInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.DabiaoAwardCount):
|
| | | length += self.DabiaoAwardInfo[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.OrderAwardCount):
|
| | | length += self.OrderAwardInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.TemplateID)
|
| | | data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount)
|
| | | for i in range(self.DabiaoAwardCount):
|
| | | data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.OrderAwardCount)
|
| | | for i in range(self.OrderAwardCount):
|
| | | data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TemplateID:%d,
|
| | | DabiaoAwardCount:%d,
|
| | | DabiaoAwardInfo:%s,
|
| | | OrderAwardCount:%d,
|
| | | OrderAwardInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.DabiaoAwardCount,
|
| | | "...",
|
| | | self.OrderAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCACTGBillboardInfo(Structure):
|
| | | Head = tagHead()
|
| | | ServerInfoLen = 0 #(BYTE ServerInfoLen)
|
| | | ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
|
| | | GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | TemplateID = 0 #(BYTE TemplateID)// 当前活动模板ID
|
| | | TemplateCount = 0 #(BYTE TemplateCount)
|
| | | TempInfo = list() #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
|
| | | self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TemplateCount):
|
| | | temTempInfo = tagMCCACTGBillboardTempInfo()
|
| | | _pos = temTempInfo.ReadData(_lpData, _pos)
|
| | | self.TempInfo.append(temTempInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x32
|
| | | self.ServerInfoLen = 0
|
| | | self.ServerIDRangeInfo = ""
|
| | | self.GroupValue1 = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.TemplateID = 0
|
| | | self.TemplateCount = 0
|
| | | self.TempInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.ServerIDRangeInfo)
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.TemplateCount):
|
| | | length += self.TempInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
|
| | | data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
|
| | | data = CommFunc.WriteBYTE(data, self.GroupValue1)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.TemplateID)
|
| | | data = CommFunc.WriteBYTE(data, self.TemplateCount)
|
| | | for i in range(self.TemplateCount):
|
| | | data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ServerInfoLen:%d,
|
| | | ServerIDRangeInfo:%s,
|
| | | GroupValue1:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | TemplateID:%d,
|
| | | TemplateCount:%d,
|
| | | TempInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ServerInfoLen,
|
| | | self.ServerIDRangeInfo,
|
| | | self.GroupValue1,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.TemplateID,
|
| | | self.TemplateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo
|
| | |
|
| | | class tagMCCACTGBillboardPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CTGRMBTotal", c_int), # 活动已累计充值RMB
|
| | | ("DabiaoAwardRecord", c_int), # 达标奖励记录,与达标奖励索引位或运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x33
|
| | | 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 = 0x33
|
| | | self.CTGRMBTotal = 0
|
| | | self.DabiaoAwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCACTGBillboardPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CTGRMBTotal:%d,
|
| | | DabiaoAwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CTGRMBTotal,
|
| | | self.DabiaoAwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 09 消费返利活动信息 #tagMCCostRebateInfo
|
| | |
|
| | | class tagMCCostRebateAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_int), |
| | | ("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.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostRebateAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 09 消费返利活动信息 //tagMCCostRebateInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCostRebateAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
|
| | | NeedGold = 0 #(DWORD NeedGold)// 所需仙玉数
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItem = list() #(vector<tagMCCostRebateAwardItem> AwardItem)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItem = tagMCCostRebateAwardItem()
|
| | | _pos = temAwardItem.ReadData(_lpData, _pos)
|
| | | self.AwardItem.append(temAwardItem)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedGold = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItem = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItem[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedGold)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | NeedGold:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItem:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedGold,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCostRebateAwardDay(Structure):
|
| | | AwardCount = 0 #(BYTE AwardCount)// 奖励档数
|
| | | AwardInfo = list() #(vector<tagMCCostRebateAward> AwardInfo)// 奖励档信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardInfo = tagMCCostRebateAward()
|
| | | _pos = temAwardInfo.ReadData(_lpData, _pos)
|
| | | self.AwardInfo.append(temAwardInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardCount = 0
|
| | | self.AwardInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardCount:%d,
|
| | | AwardInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCostRebateInfo(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)// 限制等级
|
| | | AwardDays = 0 #(BYTE AwardDays)
|
| | | AwardDayInfo = list() #(vector<tagMCCostRebateAwardDay> AwardDayInfo)//每天对应返利信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x09
|
| | | 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.AwardDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardDays):
|
| | | temAwardDayInfo = tagMCCostRebateAwardDay()
|
| | | _pos = temAwardDayInfo.ReadData(_lpData, _pos)
|
| | | self.AwardDayInfo.append(temAwardDayInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x09
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.AwardDays = 0
|
| | | self.AwardDayInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.AwardDays):
|
| | | length += self.AwardDayInfo[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.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.AwardDays)
|
| | | for i in range(self.AwardDays):
|
| | | data = CommFunc.WriteString(data, self.AwardDayInfo[i].GetLength(), self.AwardDayInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | AwardDays:%d,
|
| | | AwardDayInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.AwardDays,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostRebateInfo=tagMCCostRebateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebateInfo.Head.Cmd,m_NAtagMCCostRebateInfo.Head.SubCmd))] = m_NAtagMCCostRebateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 10 消费返利玩家活动信息 #tagMCCostRebatePlayerInfo
|
| | |
|
| | | class tagMCCostRebatePlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("CostGoldTotal", c_int), #本次活动已累计消费仙玉数
|
| | | ("AwardRecord", c_int), #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x10
|
| | | 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 = 0x10
|
| | | self.ActNum = 0
|
| | | self.CostGoldTotal = 0
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostRebatePlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | CostGoldTotal:%d,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.CostGoldTotal,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 34 跨服全民充值活动玩家信息 #tagMCCrossActAllRechargePlayerInfo
|
| | |
|
| | | class tagMCCrossActAllRechargePlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CTGRMBTotal", c_int), # 活动已累计充值RMB
|
| | | ("AwardRecord", c_int), # 奖励记录,根据奖励索引位或运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x34
|
| | | 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 = 0x34
|
| | | self.CTGRMBTotal = 0
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCrossActAllRechargePlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 34 跨服全民充值活动玩家信息 //tagMCCrossActAllRechargePlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CTGRMBTotal:%d,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CTGRMBTotal,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossActAllRechargePlayerInfo=tagMCCrossActAllRechargePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActAllRechargePlayerInfo.Cmd,m_NAtagMCCrossActAllRechargePlayerInfo.SubCmd))] = m_NAtagMCCrossActAllRechargePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
|
| | |
|
| | | class tagMCCrossActLianqiItem(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
|
| | |
|
| | | class tagMCFeastWeekPartyItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NeedPoint", c_ushort), # 领奖需要积分
|
| | | ("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.NeedPoint = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastWeekPartyItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
|
| | | NeedPoint:%d,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.NeedPoint,
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWeekPartyAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Point = 0 #(DWORD Point)// 单次领奖积分
|
| | | Count = 0 #(BYTE Count)// 物品数
|
| | | ItemInfo = list() #(vector<tagMCFeastWeekPartyItem> 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.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemInfo = tagMCFeastWeekPartyItem()
|
| | | _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.Point = 0
|
| | | self.Count = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | 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.WriteDWORD(data, self.Point)
|
| | | 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,
|
| | | Point:%d,
|
| | | Count:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.ActionType,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.Point,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWeekPartyDayInfo(Structure):
|
| | | ActCnt = 0 #(BYTE ActCnt)// 数量
|
| | | TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
|
| | | PCount = 0 #(BYTE PCount)// 物品数
|
| | | PItemInfo = list() #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
|
| | | 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)
|
| | | self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PCount):
|
| | | temPItemInfo = tagMCFeastWeekPartyItem()
|
| | | _pos = temPItemInfo.ReadData(_lpData, _pos)
|
| | | self.PItemInfo.append(temPItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ActCnt = 0
|
| | | self.TemplateList = list()
|
| | | self.PCount = 0
|
| | | self.PItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.ActCnt
|
| | | length += 1
|
| | | for i in range(self.PCount):
|
| | | length += self.PItemInfo[i].GetLength()
|
| | |
|
| | | 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])
|
| | | data = CommFunc.WriteBYTE(data, self.PCount)
|
| | | for i in range(self.PCount):
|
| | | data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ActCnt:%d,
|
| | | TemplateList:%s,
|
| | | PCount:%d,
|
| | | PItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.ActCnt,
|
| | | "...",
|
| | | self.PCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWeekPartyInfo(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<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
|
| | | TCount = 0 #(BYTE TCount)// 模板数
|
| | | ActionInfo = list() #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x20
|
| | | 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 = tagMCFeastWeekPartyDayInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TCount):
|
| | | temActionInfo = tagMCFeastWeekPartyAction()
|
| | | _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 = 0x20
|
| | | 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_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
|
| | |
|
| | | class tagMCFeastWeekPartyTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_int), #已完成次数
|
| | | ("GotTimes", c_int), #已领取次数
|
| | | ]
|
| | |
|
| | | 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(tagMCFeastWeekPartyTaskInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWeekPartyDayPlayerInfo(Structure):
|
| | | DayIndex = 0 #(DWORD DayIndex)//第X天
|
| | | Point = 0 #(DWORD Point)//积分
|
| | | AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
|
| | | ACount = 0 #(DWORD ACount)//任务条目数
|
| | | TaskList = list() #(vector<tagMCFeastWeekPartyTaskInfo> 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.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.ACount):
|
| | | temTaskList = tagMCFeastWeekPartyTaskInfo()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.Point = 0
|
| | | self.AwardRecord = 0
|
| | | self.ACount = 0
|
| | | self.TaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | 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.Point)
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | 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,
|
| | | Point:%d,
|
| | | AwardRecord:%d,
|
| | | ACount:%d,
|
| | | TaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.Point,
|
| | | self.AwardRecord,
|
| | | self.ACount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWeekPartyPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x21
|
| | | 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 = tagMCFeastWeekPartyDayPlayerInfo()
|
| | | _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 = 0x21
|
| | | 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_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
|
| | |
|
| | | class tagMCRechargePrizeInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("CTGID", c_ushort), # 对应充值表充值ID
|
| | | ("PrizeCount", 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.CTGID = 0
|
| | | self.PrizeCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargePrizeInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
|
| | | CTGID:%d,
|
| | | PrizeCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.CTGID,
|
| | | self.PrizeCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCRechargePrizePlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | PlayerInfoList = list() #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x28
|
| | | 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):
|
| | | temPlayerInfoList = tagMCRechargePrizeInfo()
|
| | | _pos = temPlayerInfoList.ReadData(_lpData, _pos)
|
| | | self.PlayerInfoList.append(temPlayerInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x28
|
| | | self.Count = 0
|
| | | self.PlayerInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.PlayerInfoList[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.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | PlayerInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
|
| | |
|
| | | class tagMCRechargeRebateGoldPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RechargeRMBTotal", c_int), # 活动已累计充值RMB
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x30
|
| | | 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 = 0x30
|
| | | self.RechargeRMBTotal = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargeRebateGoldPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RechargeRMBTotal:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RechargeRMBTotal
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
|
| | |
|
| | | class tagMCSpringSaleItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
|
| | |
|
| | | class tagMCWeekPartyItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NeedPoint", c_ushort), # 领奖需要积分
|
| | | ("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.NeedPoint = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCWeekPartyItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
|
| | | NeedPoint:%d,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.NeedPoint,
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWeekPartyAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Point = 0 #(DWORD Point)// 单次领奖积分
|
| | | 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.Point,_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.Point = 0
|
| | | self.Count = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | 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.WriteDWORD(data, self.Point)
|
| | | 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,
|
| | | Point:%d,
|
| | | Count:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.ActionType,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.Point,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWeekPartyDayInfo(Structure):
|
| | | ActCnt = 0 #(BYTE ActCnt)// 数量
|
| | | TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
|
| | | PCount = 0 #(BYTE PCount)// 物品数
|
| | | PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
|
| | | 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)
|
| | | self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PCount):
|
| | | temPItemInfo = tagMCWeekPartyItem()
|
| | | _pos = temPItemInfo.ReadData(_lpData, _pos)
|
| | | self.PItemInfo.append(temPItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ActCnt = 0
|
| | | self.TemplateList = list()
|
| | | self.PCount = 0
|
| | | self.PItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.ActCnt
|
| | | length += 1
|
| | | for i in range(self.PCount):
|
| | | length += self.PItemInfo[i].GetLength()
|
| | |
|
| | | 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])
|
| | | data = CommFunc.WriteBYTE(data, self.PCount)
|
| | | for i in range(self.PCount):
|
| | | data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ActCnt:%d,
|
| | | TemplateList:%s,
|
| | | PCount:%d,
|
| | | PItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.ActCnt,
|
| | | "...",
|
| | | self.PCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWeekPartyInfo(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<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
|
| | | TCount = 0 #(BYTE TCount)// 模板数
|
| | | ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0A
|
| | | 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 = tagMCWeekPartyDayInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TCount):
|
| | | temActionInfo = tagMCWeekPartyAction()
|
| | | _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 = 0x0A
|
| | | 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_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
|
| | |
|
| | | class tagMCWeekPartyTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_int), #已完成次数
|
| | | ("GotTimes", c_int), #已领取次数
|
| | | ]
|
| | |
|
| | | 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(tagMCWeekPartyTaskInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWeekPartyDayPlayerInfo(Structure):
|
| | | DayIndex = 0 #(DWORD DayIndex)//第X天
|
| | | Point = 0 #(DWORD Point)//积分
|
| | | AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
|
| | | ACount = 0 #(DWORD ACount)//任务条目数
|
| | | TaskList = list() #(vector<tagMCWeekPartyTaskInfo> 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.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.ACount):
|
| | | temTaskList = tagMCWeekPartyTaskInfo()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.Point = 0
|
| | | self.AwardRecord = 0
|
| | | self.ACount = 0
|
| | | self.TaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | 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.Point)
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | 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,
|
| | | Point:%d,
|
| | | AwardRecord:%d,
|
| | | ACount:%d,
|
| | | TaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.Point,
|
| | | self.AwardRecord,
|
| | | self.ACount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWeekPartyPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0B
|
| | | 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 = tagMCWeekPartyDayPlayerInfo()
|
| | | _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 = 0x0B
|
| | | 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_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
|
| | |
|
| | | class tagMCXJSDRecharge(Structure):
|
| | |
| | |
|
| | | m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 13 跨服全民充值活动信息 #tagGCCrossActAllRechargeInfo
|
| | |
|
| | | class tagGCCrossActAllRechargeItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", 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.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCrossActAllRechargeItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AC 13 跨服全民充值活动信息 //tagGCCrossActAllRechargeInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossActAllRechargeAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
|
| | | NeedRMB = 0 #(DWORD NeedRMB)// 所需全民充值RMB
|
| | | NeedPlayerCount = 0 #(WORD NeedPlayerCount)// 所需充值达到该档玩家数
|
| | | NowPlayerCount = 0 #(WORD NowPlayerCount)// 当前充值达到该档玩家数
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagGCCrossActAllRechargeItem> AwardItemList)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.NowPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagGCCrossActAllRechargeItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedRMB = 0
|
| | | self.NeedPlayerCount = 0
|
| | | self.NowPlayerCount = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedRMB)
|
| | | data = CommFunc.WriteWORD(data, self.NeedPlayerCount)
|
| | | data = CommFunc.WriteWORD(data, self.NowPlayerCount)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | NeedRMB:%d,
|
| | | NeedPlayerCount:%d,
|
| | | NowPlayerCount:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedRMB,
|
| | | self.NeedPlayerCount,
|
| | | self.NowPlayerCount,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossActAllRechargeInfo(Structure):
|
| | | Head = tagHead()
|
| | | ServerInfoLen = 0 #(BYTE ServerInfoLen)
|
| | | ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AwardCount = 0 #(BYTE AwardCount)
|
| | | AwardList = list() #(vector<tagGCCrossActAllRechargeAward> AwardList)// 奖励档次信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardList = tagGCCrossActAllRechargeAward()
|
| | | _pos = temAwardList.ReadData(_lpData, _pos)
|
| | | self.AwardList.append(temAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x13
|
| | | self.ServerInfoLen = 0
|
| | | self.ServerIDRangeInfo = ""
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AwardCount = 0
|
| | | self.AwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.ServerIDRangeInfo)
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
|
| | | data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ServerInfoLen:%d,
|
| | | ServerIDRangeInfo:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AwardCount:%d,
|
| | | AwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ServerInfoLen,
|
| | | self.ServerIDRangeInfo,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossActAllRechargeInfo=tagGCCrossActAllRechargeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActAllRechargeInfo.Head.Cmd,m_NAtagGCCrossActAllRechargeInfo.Head.SubCmd))] = m_NAtagGCCrossActAllRechargeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagSCTravelInfo=tagSCTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 63 战斗预设切换信息 #tagSCBatPresetSwitchInfo
|
| | |
|
| | | class tagSCBatPresetSwitch(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("BatPresetType", c_ubyte), #战斗预设类型:1-主线战斗;2-演武场防守;
|
| | | ("BatPresetID", c_ubyte), #该战斗功能所使用的战斗预设ID
|
| | | ]
|
| | |
|
| | | 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.BatPresetType = 0
|
| | | self.BatPresetID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCBatPresetSwitch)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 63 战斗预设切换信息 //tagSCBatPresetSwitchInfo:
|
| | | BatPresetType:%d,
|
| | | BatPresetID:%d
|
| | | '''\
|
| | | %(
|
| | | self.BatPresetType,
|
| | | self.BatPresetID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCBatPresetSwitchInfo(Structure):
|
| | | Head = tagHead()
|
| | | BatFuncCnt = 0 #(BYTE BatFuncCnt)
|
| | | BatPresetList = list() #(vector<tagSCBatPresetSwitch> BatPresetList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x63
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BatFuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BatFuncCnt):
|
| | | temBatPresetList = tagSCBatPresetSwitch()
|
| | | _pos = temBatPresetList.ReadData(_lpData, _pos)
|
| | | self.BatPresetList.append(temBatPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x63
|
| | | self.BatFuncCnt = 0
|
| | | self.BatPresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BatFuncCnt):
|
| | | length += self.BatPresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BatFuncCnt)
|
| | | for i in range(self.BatFuncCnt):
|
| | | data = CommFunc.WriteString(data, self.BatPresetList[i].GetLength(), self.BatPresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BatFuncCnt:%d,
|
| | | BatPresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BatFuncCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCBatPresetSwitchInfo=tagSCBatPresetSwitchInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCBatPresetSwitchInfo.Head.Cmd,m_NAtagSCBatPresetSwitchInfo.Head.SubCmd))] = m_NAtagSCBatPresetSwitchInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 61 功能预设信息 #tagSCFuncPresetInfoList
|
| | |
|
| | | class tagSCFuncPreset(Structure):
|
| | | PresetID = 0 #(BYTE PresetID)//预设方案ID
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PresetName = "" #(String PresetName)//预设名称
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PresetName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PresetID = 0
|
| | | self.NameLen = 0
|
| | | self.PresetName = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.PresetName)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.PresetID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PresetName)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PresetID:%d,
|
| | | NameLen:%d,
|
| | | PresetName:%s
|
| | | '''\
|
| | | %(
|
| | | self.PresetID,
|
| | | self.NameLen,
|
| | | self.PresetName
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFuncPresetInfo(Structure):
|
| | | FuncPresetType = 0 #(BYTE FuncPresetType)//预设类型,1-全局战斗;2-阵容;3-命格;
|
| | | UnlockState = 0 #(DWORD UnlockState)//该功能预设解锁状态,按预设ID二进制位运算记录是否已解锁
|
| | | PresetCnt = 0 #(BYTE PresetCnt)
|
| | | PresetList = list() #(vector<tagSCFuncPreset> PresetList)//本功能下预设列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.FuncPresetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UnlockState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PresetCnt):
|
| | | temPresetList = tagSCFuncPreset()
|
| | | _pos = temPresetList.ReadData(_lpData, _pos)
|
| | | self.PresetList.append(temPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.FuncPresetType = 0
|
| | | self.UnlockState = 0
|
| | | self.PresetCnt = 0
|
| | | self.PresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.PresetCnt):
|
| | | length += self.PresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.FuncPresetType)
|
| | | data = CommFunc.WriteDWORD(data, self.UnlockState)
|
| | | data = CommFunc.WriteBYTE(data, self.PresetCnt)
|
| | | for i in range(self.PresetCnt):
|
| | | data = CommFunc.WriteString(data, self.PresetList[i].GetLength(), self.PresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | FuncPresetType:%d,
|
| | | UnlockState:%d,
|
| | | PresetCnt:%d,
|
| | | PresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.FuncPresetType,
|
| | | self.UnlockState,
|
| | | self.PresetCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFuncPresetInfoList(Structure):
|
| | | Head = tagHead()
|
| | | FuncCnt = 0 #(BYTE FuncCnt)
|
| | | FuncPresetList = list() #(vector<tagSCFuncPresetInfo> FuncPresetList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x61
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.FuncCnt):
|
| | | temFuncPresetList = tagSCFuncPresetInfo()
|
| | | _pos = temFuncPresetList.ReadData(_lpData, _pos)
|
| | | self.FuncPresetList.append(temFuncPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x61
|
| | | self.FuncCnt = 0
|
| | | self.FuncPresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.FuncCnt):
|
| | | length += self.FuncPresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.FuncCnt)
|
| | | for i in range(self.FuncCnt):
|
| | | data = CommFunc.WriteString(data, self.FuncPresetList[i].GetLength(), self.FuncPresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FuncCnt:%d,
|
| | | FuncPresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FuncCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCFuncPresetInfoList=tagSCFuncPresetInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFuncPresetInfoList.Head.Cmd,m_NAtagSCFuncPresetInfoList.Head.SubCmd))] = m_NAtagSCFuncPresetInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 62 功能预设切换信息 #tagSCFuncPresetSwitchInfo
|
| | |
|
| | | class tagSCFuncPresetFunc(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FuncPresetType", c_ubyte), #预设类型,2-阵容;3-命格;
|
| | | ("FuncPresetID", c_ubyte), #该全局战斗预设下本功能使用的预设ID
|
| | | ]
|
| | |
|
| | | 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.FuncPresetType = 0
|
| | | self.FuncPresetID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCFuncPresetFunc)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 62 功能预设切换信息 //tagSCFuncPresetSwitchInfo:
|
| | | FuncPresetType:%d,
|
| | | FuncPresetID:%d
|
| | | '''\
|
| | | %(
|
| | | self.FuncPresetType,
|
| | | self.FuncPresetID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFuncPresetBat(Structure):
|
| | | BatPresetID = 0 #(BYTE BatPresetID)//所属全局战斗预设ID
|
| | | FuncCnt = 0 #(BYTE FuncCnt)
|
| | | FuncPresetList = list() #(vector<tagSCFuncPresetFunc> FuncPresetList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.BatPresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.FuncCnt):
|
| | | temFuncPresetList = tagSCFuncPresetFunc()
|
| | | _pos = temFuncPresetList.ReadData(_lpData, _pos)
|
| | | self.FuncPresetList.append(temFuncPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.BatPresetID = 0
|
| | | self.FuncCnt = 0
|
| | | self.FuncPresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.FuncCnt):
|
| | | length += self.FuncPresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.BatPresetID)
|
| | | data = CommFunc.WriteBYTE(data, self.FuncCnt)
|
| | | for i in range(self.FuncCnt):
|
| | | data = CommFunc.WriteString(data, self.FuncPresetList[i].GetLength(), self.FuncPresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | BatPresetID:%d,
|
| | | FuncCnt:%d,
|
| | | FuncPresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.BatPresetID,
|
| | | self.FuncCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFuncPresetSwitchInfo(Structure):
|
| | | Head = tagHead()
|
| | | BatPresetCnt = 0 #(BYTE BatPresetCnt)
|
| | | BatPresetList = list() #(vector<tagSCFuncPresetBat> BatPresetList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x62
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BatPresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BatPresetCnt):
|
| | | temBatPresetList = tagSCFuncPresetBat()
|
| | | _pos = temBatPresetList.ReadData(_lpData, _pos)
|
| | | self.BatPresetList.append(temBatPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x62
|
| | | self.BatPresetCnt = 0
|
| | | self.BatPresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BatPresetCnt):
|
| | | length += self.BatPresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BatPresetCnt)
|
| | | for i in range(self.BatPresetCnt):
|
| | | data = CommFunc.WriteString(data, self.BatPresetList[i].GetLength(), self.BatPresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BatPresetCnt:%d,
|
| | | BatPresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BatPresetCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCFuncPresetSwitchInfo=tagSCFuncPresetSwitchInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFuncPresetSwitchInfo.Head.Cmd,m_NAtagSCFuncPresetSwitchInfo.Head.SubCmd))] = m_NAtagSCFuncPresetSwitchInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
|
| | |
|
| | | class tagMCFuncSysPrivilegeInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 24 阵容信息 #tagSCLineupInfo
|
| | | # B1 24 武将预设信息 #tagSCHeroPresetInfo
|
| | |
|
| | | class tagSCLineup(Structure):
|
| | | LineupID = 0 #(BYTE LineupID)// 阵容ID
|
| | | ShapeType = 0 #(BYTE ShapeType)// 阵型
|
| | | class tagSCHeroPreset(Structure):
|
| | | PresetID = 0 #(BYTE PresetID)//阵容方案预设ID
|
| | | HeroCnt = 0 #(BYTE HeroCnt)
|
| | | HeroItemIndexList = list() #(vector<WORD> HeroItemIndexList)// 所在武将背包索引+1列表 [站位1物品索引+1, 站位2, ...],站位无武将时为0
|
| | | data = None
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.LineupID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ShapeType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.HeroCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.HeroCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.LineupID = 0
|
| | | self.ShapeType = 0
|
| | | self.PresetID = 0
|
| | | self.HeroCnt = 0
|
| | | self.HeroItemIndexList = list()
|
| | | return
|
| | |
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2 * self.HeroCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.LineupID)
|
| | | data = CommFunc.WriteBYTE(data, self.ShapeType)
|
| | | data = CommFunc.WriteBYTE(data, self.PresetID)
|
| | | data = CommFunc.WriteBYTE(data, self.HeroCnt)
|
| | | for i in range(self.HeroCnt):
|
| | | data = CommFunc.WriteWORD(data, self.HeroItemIndexList[i])
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | LineupID:%d,
|
| | | ShapeType:%d,
|
| | | PresetID:%d,
|
| | | HeroCnt:%d,
|
| | | HeroItemIndexList:%s
|
| | | '''\
|
| | | %(
|
| | | self.LineupID,
|
| | | self.ShapeType,
|
| | | self.PresetID,
|
| | | self.HeroCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCLineupInfo(Structure):
|
| | | class tagSCHeroPresetInfo(Structure):
|
| | | Head = tagHead()
|
| | | LineupCnt = 0 #(BYTE LineupCnt)
|
| | | LineupList = list() #(vector<tagSCLineup> LineupList)
|
| | | PresetCnt = 0 #(BYTE PresetCnt)
|
| | | PresetList = list() #(vector<tagSCHeroPreset> PresetList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.LineupCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.LineupCnt):
|
| | | temLineupList = tagSCLineup()
|
| | | _pos = temLineupList.ReadData(_lpData, _pos)
|
| | | self.LineupList.append(temLineupList)
|
| | | self.PresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PresetCnt):
|
| | | temPresetList = tagSCHeroPreset()
|
| | | _pos = temPresetList.ReadData(_lpData, _pos)
|
| | | self.PresetList.append(temPresetList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x24
|
| | | self.LineupCnt = 0
|
| | | self.LineupList = list()
|
| | | self.PresetCnt = 0
|
| | | self.PresetList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.LineupCnt):
|
| | | length += self.LineupList[i].GetLength()
|
| | | for i in range(self.PresetCnt):
|
| | | length += self.PresetList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.LineupCnt)
|
| | | for i in range(self.LineupCnt):
|
| | | data = CommFunc.WriteString(data, self.LineupList[i].GetLength(), self.LineupList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.PresetCnt)
|
| | | for i in range(self.PresetCnt):
|
| | | data = CommFunc.WriteString(data, self.PresetList[i].GetLength(), self.PresetList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | LineupCnt:%d,
|
| | | LineupList:%s
|
| | | PresetCnt:%d,
|
| | | PresetList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.LineupCnt,
|
| | | self.PresetCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCLineupInfo=tagSCLineupInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupInfo.Head.Cmd,m_NAtagSCLineupInfo.Head.SubCmd))] = m_NAtagSCLineupInfo
|
| | | m_NAtagSCHeroPresetInfo=tagSCHeroPresetInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroPresetInfo.Head.Cmd,m_NAtagSCHeroPresetInfo.Head.SubCmd))] = m_NAtagSCHeroPresetInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagSCLLMJInfo=tagSCLLMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 32 命格信息 #tagSCMinggeInfo
|
| | |
|
| | | class tagSCMinggeInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GanwuLV", c_ushort), #感悟等级,从1开始
|
| | | ("GanwuExp", c_int), #当前感悟等级经验,每级从0开始
|
| | | ("Lingying", c_int), #当前灵应值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x32
|
| | | 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 = 0xB1
|
| | | self.SubCmd = 0x32
|
| | | self.GanwuLV = 0
|
| | | self.GanwuExp = 0
|
| | | self.Lingying = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCMinggeInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 32 命格信息 //tagSCMinggeInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GanwuLV:%d,
|
| | | GanwuExp:%d,
|
| | | Lingying:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GanwuLV,
|
| | | self.GanwuExp,
|
| | | self.Lingying
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCMinggeInfo=tagSCMinggeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCMinggeInfo.Cmd,m_NAtagSCMinggeInfo.SubCmd))] = m_NAtagSCMinggeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCZhanlingInfo=tagMCZhanlingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhanlingInfo.Head.Cmd,m_NAtagMCZhanlingInfo.Head.SubCmd))] = m_NAtagMCZhanlingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 02 定军阁信息 #tagSCDingjungeInfo
|
| | |
|
| | | class tagSCDingjungeEff(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("EffIndex", c_ubyte), #槽索引,0~n
|
| | | ("EffID", c_ushort), |
| | | ("EffLV", 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.EffIndex = 0
|
| | | self.EffID = 0
|
| | | self.EffLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCDingjungeEff)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 02 定军阁信息 //tagSCDingjungeInfo:
|
| | | EffIndex:%d,
|
| | | EffID:%d,
|
| | | EffLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.EffIndex,
|
| | | self.EffID,
|
| | | self.EffLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCDingjungeInfo(Structure):
|
| | | Head = tagHead()
|
| | | TodayPass = 0 #(DWORD TodayPass)//今日过关进度 层*100+关卡编号,历史最高过关记录取A320中的PassLineID
|
| | | EffCnt = 0 #(BYTE EffCnt)
|
| | | EffList = list() #(vector<tagSCDingjungeEff> EffList)//已生效的效果列表
|
| | | SelectEffCnt = 0 #(BYTE SelectEffCnt)
|
| | | SelectEffList = list() #(vector<DWORD> SelectEffList)//待手动选择的效果ID列表
|
| | | UnSelectCnt = 0 #(WORD UnSelectCnt)//还有几个未选择的效果
|
| | | SelectAuto = 0 #(BYTE SelectAuto)//是否启用自动选择
|
| | | SelectSetCnt = 0 #(BYTE SelectSetCnt)
|
| | | SelectSetAttrIDList = list() #(vector<WORD> SelectSetAttrIDList)//预设优先选择属性ID列表 [优先级1属性ID, ...]
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TodayPass,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EffCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.EffCnt):
|
| | | temEffList = tagSCDingjungeEff()
|
| | | _pos = temEffList.ReadData(_lpData, _pos)
|
| | | self.EffList.append(temEffList)
|
| | | self.SelectEffCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SelectEffCnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SelectEffList.append(value)
|
| | | self.UnSelectCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.SelectAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SelectSetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SelectSetCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.SelectSetAttrIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x02
|
| | | self.TodayPass = 0
|
| | | self.EffCnt = 0
|
| | | self.EffList = list()
|
| | | self.SelectEffCnt = 0
|
| | | self.SelectEffList = list()
|
| | | self.UnSelectCnt = 0
|
| | | self.SelectAuto = 0
|
| | | self.SelectSetCnt = 0
|
| | | self.SelectSetAttrIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.EffCnt):
|
| | | length += self.EffList[i].GetLength()
|
| | | length += 1
|
| | | length += 4 * self.SelectEffCnt
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2 * self.SelectSetCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TodayPass)
|
| | | data = CommFunc.WriteBYTE(data, self.EffCnt)
|
| | | for i in range(self.EffCnt):
|
| | | data = CommFunc.WriteString(data, self.EffList[i].GetLength(), self.EffList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SelectEffCnt)
|
| | | for i in range(self.SelectEffCnt):
|
| | | data = CommFunc.WriteDWORD(data, self.SelectEffList[i])
|
| | | data = CommFunc.WriteWORD(data, self.UnSelectCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.SelectAuto)
|
| | | data = CommFunc.WriteBYTE(data, self.SelectSetCnt)
|
| | | for i in range(self.SelectSetCnt):
|
| | | data = CommFunc.WriteWORD(data, self.SelectSetAttrIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TodayPass:%d,
|
| | | EffCnt:%d,
|
| | | EffList:%s,
|
| | | SelectEffCnt:%d,
|
| | | SelectEffList:%s,
|
| | | UnSelectCnt:%d,
|
| | | SelectAuto:%d,
|
| | | SelectSetCnt:%d,
|
| | | SelectSetAttrIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TodayPass,
|
| | | self.EffCnt,
|
| | | "...",
|
| | | self.SelectEffCnt,
|
| | | "...",
|
| | | self.UnSelectCnt,
|
| | | self.SelectAuto,
|
| | | self.SelectSetCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCDingjungeInfo=tagSCDingjungeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDingjungeInfo.Head.Cmd,m_NAtagSCDingjungeInfo.Head.SubCmd))] = m_NAtagSCDingjungeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("LV", c_ushort), # 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
|
| | | ("PosNum", c_ubyte), # 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
|
| | | ("AngreXP", c_ushort), # 当前怒气值
|
| | | ("FightPower", c_int), # 战力,求余亿部分
|
| | | ("FightPowerEx", c_int), # 战力,整除亿部分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.LV = 0
|
| | | self.PosNum = 0
|
| | | self.AngreXP = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | MaxHPEx:%d,
|
| | | LV:%d,
|
| | | PosNum:%d,
|
| | | AngreXP:%d
|
| | | AngreXP:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.ObjID,
|
| | |
| | | self.MaxHPEx,
|
| | | self.LV,
|
| | | self.PosNum,
|
| | | self.AngreXP
|
| | | self.AngreXP,
|
| | | self.FightPower,
|
| | | self.FightPowerEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagSCUseSkill=tagSCUseSkill()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCUseSkill.Head.Cmd,m_NAtagSCUseSkill.Head.SubCmd))] = m_NAtagSCUseSkill
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 32 查看NPC属性结果 #tagSCViewNPCAttrRet
|
| | |
|
| | | class tagSCViewNPCAttr(Structure):
|
| | | PosNum = 0 #(BYTE PosNum)// 在本阵容中的站位,从1开始
|
| | | NPCID = 0 #(DWORD NPCID)// 战斗NPCID,不同的实例ID对应的NPCID可能一样
|
| | | HeroID = 0 #(DWORD HeroID)// 武将ID,玩家或NPC均可能有,如果有值则外观相关以该武将为准,否则以NPCID为准
|
| | | LV = 0 #(WORD LV)// 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
|
| | | Star = 0 #(BYTE Star)// 星级
|
| | | BreakLV = 0 #(BYTE BreakLV)// 突破
|
| | | AwakeLV = 0 #(BYTE AwakeLV)// 觉醒
|
| | | AttrLen = 0 #(WORD AttrLen)
|
| | | AttrMsg = "" #(String AttrMsg)// 属性信息 {"属性ID":value, ...}
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PosNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HeroID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.BreakLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwakeLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AttrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AttrMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AttrLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PosNum = 0
|
| | | self.NPCID = 0
|
| | | self.HeroID = 0
|
| | | self.LV = 0
|
| | | self.Star = 0
|
| | | self.BreakLV = 0
|
| | | self.AwakeLV = 0
|
| | | self.AttrLen = 0
|
| | | self.AttrMsg = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += len(self.AttrMsg)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.PosNum)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteDWORD(data, self.HeroID)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.Star)
|
| | | data = CommFunc.WriteBYTE(data, self.BreakLV)
|
| | | data = CommFunc.WriteBYTE(data, self.AwakeLV)
|
| | | data = CommFunc.WriteWORD(data, self.AttrLen)
|
| | | data = CommFunc.WriteString(data, self.AttrLen, self.AttrMsg)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PosNum:%d,
|
| | | NPCID:%d,
|
| | | HeroID:%d,
|
| | | LV:%d,
|
| | | Star:%d,
|
| | | BreakLV:%d,
|
| | | AwakeLV:%d,
|
| | | AttrLen:%d,
|
| | | AttrMsg:%s
|
| | | '''\
|
| | | %(
|
| | | self.PosNum,
|
| | | self.NPCID,
|
| | | self.HeroID,
|
| | | self.LV,
|
| | | self.Star,
|
| | | self.BreakLV,
|
| | | self.AwakeLV,
|
| | | self.AttrLen,
|
| | | self.AttrMsg
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCViewNPCAttrRet(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
|
| | | FuncLineID = 0 #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
|
| | | ViewNPCID = 0 #(DWORD ViewNPCID)// 指定查看某个NPCID,发0则查看该关卡阵容所有NPC
|
| | | NPCCnt = 0 #(BYTE NPCCnt)
|
| | | NPCAttrList = list() #(vector<tagSCViewNPCAttr> NPCAttrList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ViewNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.NPCCnt):
|
| | | temNPCAttrList = tagSCViewNPCAttr()
|
| | | _pos = temNPCAttrList.ReadData(_lpData, _pos)
|
| | | self.NPCAttrList.append(temNPCAttrList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x32
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.ViewNPCID = 0
|
| | | self.NPCCnt = 0
|
| | | self.NPCAttrList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.NPCCnt):
|
| | | length += self.NPCAttrList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncLineID)
|
| | | data = CommFunc.WriteDWORD(data, self.ViewNPCID)
|
| | | data = CommFunc.WriteBYTE(data, self.NPCCnt)
|
| | | for i in range(self.NPCCnt):
|
| | | data = CommFunc.WriteString(data, self.NPCAttrList[i].GetLength(), self.NPCAttrList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | ViewNPCID:%d,
|
| | | NPCCnt:%d,
|
| | | NPCAttrList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.ViewNPCID,
|
| | | self.NPCCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCViewNPCAttrRet=tagSCViewNPCAttrRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCViewNPCAttrRet.Head.Cmd,m_NAtagSCViewNPCAttrRet.Head.SubCmd))] = m_NAtagSCViewNPCAttrRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
|
| | |
|
| | | class tagGCCrossYaomoBossPlayerHurtInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HurtTotal", c_int), # 总伤害值,小于亿部分
|
| | | ("HurtTotalEx", c_int), # 总伤害值,整除亿部分
|
| | | ("AwardState", c_int), # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x11
|
| | | 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 = 0xC0
|
| | | self.SubCmd = 0x11
|
| | | self.HurtTotal = 0
|
| | | self.HurtTotalEx = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HurtTotal:%d,
|
| | | HurtTotalEx:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HurtTotal,
|
| | | self.HurtTotalEx,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
|
| | |
|
| | | class tagGCCrossZoneInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
|
| | |
|
| | | class tagGCLuckyCloudBuyLotteryRec(Structure):
|
| | | SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)// 中奖玩家名
|
| | | LotteryNum = 0 #(WORD LotteryNum)// 开奖号码
|
| | | LotteryTime = 0 #(DWORD LotteryTime)// 开奖时间戳,秒
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.LotteryNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LotteryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.SuperItemID = 0
|
| | | self.SuperItemCount = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.LotteryNum = 0
|
| | | self.LotteryTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.SuperItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCount)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteWORD(data, self.LotteryNum)
|
| | | data = CommFunc.WriteDWORD(data, self.LotteryTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | SuperItemID:%d,
|
| | | SuperItemCount:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | LotteryNum:%d,
|
| | | LotteryTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.SuperItemID,
|
| | | self.SuperItemCount,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.LotteryNum,
|
| | | self.LotteryTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCLuckyCloudBuyLotteryRecInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 分区数
|
| | | ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有分区ID列表
|
| | | ZoneID = 0 #(BYTE ZoneID)// 返回记录分区ID
|
| | | Count = 0 #(WORD Count)
|
| | | LotteryRecList = list() #(vector<tagGCLuckyCloudBuyLotteryRec> LotteryRecList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x14
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ZoneCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ZoneIDList.append(value)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temLotteryRecList = tagGCLuckyCloudBuyLotteryRec()
|
| | | _pos = temLotteryRecList.ReadData(_lpData, _pos)
|
| | | self.LotteryRecList.append(temLotteryRecList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x14
|
| | | self.ZoneCount = 0
|
| | | self.ZoneIDList = list()
|
| | | self.ZoneID = 0
|
| | | self.Count = 0
|
| | | self.LotteryRecList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ZoneCount
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.LotteryRecList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneCount)
|
| | | for i in range(self.ZoneCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.LotteryRecList[i].GetLength(), self.LotteryRecList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneCount:%d,
|
| | | ZoneIDList:%s,
|
| | | ZoneID:%d,
|
| | | Count:%d,
|
| | | LotteryRecList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneCount,
|
| | | "...",
|
| | | self.ZoneID,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCLuckyCloudBuyLotteryRecInfo=tagGCLuckyCloudBuyLotteryRecInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyLotteryRecInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 13 幸运云购购买号码记录 #tagGCLuckyCloudBuyNumRecInfo
|
| | |
|
| | | class tagGCLuckyCloudBuyNumRec(Structure):
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)
|
| | | BuyNum = 0 #(WORD BuyNum)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.BuyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.BuyNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteWORD(data, self.BuyNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | BuyNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.BuyNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCLuckyCloudBuyNumRecInfo(Structure):
|
| | | Head = tagHead()
|
| | | RemainCount = 0 #(WORD RemainCount)// 开奖剩余份数
|
| | | Count = 0 #(WORD Count)
|
| | | BuyNumRecList = list() #(vector<tagGCLuckyCloudBuyNumRec> BuyNumRecList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RemainCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyNumRecList = tagGCLuckyCloudBuyNumRec()
|
| | | _pos = temBuyNumRecList.ReadData(_lpData, _pos)
|
| | | self.BuyNumRecList.append(temBuyNumRecList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x13
|
| | | self.RemainCount = 0
|
| | | self.Count = 0
|
| | | self.BuyNumRecList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.BuyNumRecList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.RemainCount)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyNumRecList[i].GetLength(), self.BuyNumRecList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RemainCount:%d,
|
| | | Count:%d,
|
| | | BuyNumRecList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RemainCount,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCLuckyCloudBuyNumRecInfo=tagGCLuckyCloudBuyNumRecInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyNumRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyNumRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyNumRecInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 12 幸运云购轮次信息 #tagGCLuckyCloudBuyRoundInfo
|
| | |
|
| | | class tagGCLuckyCloudBuyRoundItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", 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.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCLuckyCloudBuyRoundItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 12 幸运云购轮次信息 //tagGCLuckyCloudBuyRoundInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCLuckyCloudBuyRoundTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | RoundMax = 0 #(BYTE RoundMax)// 本时段最大轮次
|
| | | 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)
|
| | | self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | self.RoundMax = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | data = CommFunc.WriteBYTE(data, self.RoundMax)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s,
|
| | | RoundMax:%d
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime,
|
| | | self.RoundMax
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCLuckyCloudBuyRoundInfo(Structure):
|
| | | Head = tagHead()
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属分区ID
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | RoundTimeCount = 0 #(BYTE RoundTimeCount)
|
| | | RoundTimeList = list() #(vector<tagGCLuckyCloudBuyRoundTime> RoundTimeList)//轮次时间段
|
| | | RoundID = 0 #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存
|
| | | RoundNum = 0 #(BYTE RoundNum)// 当前时段第几轮
|
| | | SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
|
| | | SuperItemMoneyType = 0 #(BYTE SuperItemMoneyType)// 大奖价值货币类型
|
| | | SuperItemMoneyValue = 0 #(DWORD SuperItemMoneyValue)// 大奖价值
|
| | | LVLimit = 0 #(WORD LVLimit)//开启等级
|
| | | BaseItemCount = 0 #(BYTE BaseItemCount)// 每次购买固定奖励物品数
|
| | | BaseItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> BaseItemList)// 每次购买固定奖励物品信息
|
| | | RandItemCount = 0 #(BYTE RandItemCount)// 每次购买随机奖励物品数
|
| | | RandItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> RandItemList)// 每次购买随机奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.RoundTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RoundTimeCount):
|
| | | temRoundTimeList = tagGCLuckyCloudBuyRoundTime()
|
| | | _pos = temRoundTimeList.ReadData(_lpData, _pos)
|
| | | self.RoundTimeList.append(temRoundTimeList)
|
| | | self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SuperItemMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SuperItemMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BaseItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BaseItemCount):
|
| | | temBaseItemList = tagGCLuckyCloudBuyRoundItem()
|
| | | _pos = temBaseItemList.ReadData(_lpData, _pos)
|
| | | self.BaseItemList.append(temBaseItemList)
|
| | | self.RandItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RandItemCount):
|
| | | temRandItemList = tagGCLuckyCloudBuyRoundItem()
|
| | | _pos = temRandItemList.ReadData(_lpData, _pos)
|
| | | self.RandItemList.append(temRandItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x12
|
| | | self.ZoneID = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.RoundTimeCount = 0
|
| | | self.RoundTimeList = list()
|
| | | self.RoundID = 0
|
| | | self.RoundNum = 0
|
| | | self.SuperItemID = 0
|
| | | self.SuperItemCount = 0
|
| | | self.SuperItemMoneyType = 0
|
| | | self.SuperItemMoneyValue = 0
|
| | | self.LVLimit = 0
|
| | | self.BaseItemCount = 0
|
| | | self.BaseItemList = list()
|
| | | self.RandItemCount = 0
|
| | | self.RandItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | for i in range(self.RoundTimeCount):
|
| | | length += self.RoundTimeList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.BaseItemCount):
|
| | | length += self.BaseItemList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.RandItemCount):
|
| | | length += self.RandItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.RoundTimeCount)
|
| | | for i in range(self.RoundTimeCount):
|
| | | data = CommFunc.WriteString(data, self.RoundTimeList[i].GetLength(), self.RoundTimeList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RoundID)
|
| | | data = CommFunc.WriteBYTE(data, self.RoundNum)
|
| | | data = CommFunc.WriteDWORD(data, self.SuperItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCount)
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemMoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.SuperItemMoneyValue)
|
| | | data = CommFunc.WriteWORD(data, self.LVLimit)
|
| | | data = CommFunc.WriteBYTE(data, self.BaseItemCount)
|
| | | for i in range(self.BaseItemCount):
|
| | | data = CommFunc.WriteString(data, self.BaseItemList[i].GetLength(), self.BaseItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RandItemCount)
|
| | | for i in range(self.RandItemCount):
|
| | | data = CommFunc.WriteString(data, self.RandItemList[i].GetLength(), self.RandItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneID:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | RoundTimeCount:%d,
|
| | | RoundTimeList:%s,
|
| | | RoundID:%d,
|
| | | RoundNum:%d,
|
| | | SuperItemID:%d,
|
| | | SuperItemCount:%d,
|
| | | SuperItemMoneyType:%d,
|
| | | SuperItemMoneyValue:%d,
|
| | | LVLimit:%d,
|
| | | BaseItemCount:%d,
|
| | | BaseItemList:%s,
|
| | | RandItemCount:%d,
|
| | | RandItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneID,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.RoundTimeCount,
|
| | | "...",
|
| | | self.RoundID,
|
| | | self.RoundNum,
|
| | | self.SuperItemID,
|
| | | self.SuperItemCount,
|
| | | self.SuperItemMoneyType,
|
| | | self.SuperItemMoneyValue,
|
| | | self.LVLimit,
|
| | | self.BaseItemCount,
|
| | | "...",
|
| | | self.RandItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCLuckyCloudBuyRoundInfo=tagGCLuckyCloudBuyRoundInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyRoundInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyRoundInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyRoundInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo
|
| | |
|
| | | class tagMCChampionshipPlayerInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 08 幸运云购玩家信息 #tagMCLuckyCloudBuyPlayerInfo
|
| | |
|
| | | class tagMCLuckyCloudBuyPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("BuyCount", c_ushort), # 本轮已购买份数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x08
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x08
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCLuckyCloudBuyPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 08 幸运云购玩家信息 //tagMCLuckyCloudBuyPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCLuckyCloudBuyPlayerInfo=tagMCLuckyCloudBuyPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyCloudBuyPlayerInfo.Cmd,m_NAtagMCLuckyCloudBuyPlayerInfo.SubCmd))] = m_NAtagMCLuckyCloudBuyPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
|
| | |
|
| | | class tagMCPrepareEnterCrossServer(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 02 跨服通用信息包 #tagSSCommMsg
|
| | | # C2 03 跨服中心事件同步 #tagSSCrossCenterEvent
|
| | |
|
| | | class tagSSCrossCenterEvent(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ServerID", c_int), |
| | | ("ServerType", c_ubyte), #服务器类型
|
| | | ("EventValue", c_int), #事件值,yyyyMMddhh用于判断过天等
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC2
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xC2
|
| | | self.SubCmd = 0x03
|
| | | self.ServerID = 0
|
| | | self.ServerType = 0
|
| | | self.EventValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSSCrossCenterEvent)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C2 03 跨服中心事件同步 //tagSSCrossCenterEvent:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ServerID:%d,
|
| | | ServerType:%d,
|
| | | EventValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ServerID,
|
| | | self.ServerType,
|
| | | self.EventValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSCrossCenterEvent=tagSSCrossCenterEvent()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Cmd,m_NAtagSSCrossCenterEvent.SubCmd))] = m_NAtagSSCrossCenterEvent
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 04 跨服GM命令 #tagSSGMCMD
|
| | |
|
| | | class tagSSGMCMD(Structure):
|
| | | Head = tagHead()
|
| | | FromServerID = 0 #(DWORD FromServerID)//哪个服发的
|
| | | ServerType = 0 #(BYTE ServerType)//服务器类型
|
| | | PlayerID = 0 #(DWORD PlayerID)//哪个玩家触发发送的
|
| | | CMDLen = 0 #(BYTE CMDLen)
|
| | | CMDStr = "" #(String CMDStr)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CMDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CMDStr,_pos = CommFunc.ReadString(_lpData, _pos,self.CMDLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x04
|
| | | self.FromServerID = 0
|
| | | self.ServerType = 0
|
| | | self.PlayerID = 0
|
| | | self.CMDLen = 0
|
| | | self.CMDStr = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.CMDStr)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FromServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerType)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.CMDLen)
|
| | | data = CommFunc.WriteString(data, self.CMDLen, self.CMDStr)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromServerID:%d,
|
| | | ServerType:%d,
|
| | | PlayerID:%d,
|
| | | CMDLen:%d,
|
| | | CMDStr:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromServerID,
|
| | | self.ServerType,
|
| | | self.PlayerID,
|
| | | self.CMDLen,
|
| | | self.CMDStr
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSGMCMD=tagSSGMCMD()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSGMCMD.Head.Cmd,m_NAtagSSGMCMD.Head.SubCmd))] = m_NAtagSSGMCMD
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 02 服务器连接跨服成功 #tagSSServerConnOK
|
| | |
|
| | | class tagSSServerConnOK(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ServerID", c_int), |
| | | ("ServerType", c_ubyte), #服务器类型
|
| | | ("IsReconn", c_ubyte), #是否重连的
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC2
|
| | | self.SubCmd = 0x02
|
| | | 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 = 0xC2
|
| | | self.SubCmd = 0x02
|
| | | self.ServerID = 0
|
| | | self.ServerType = 0
|
| | | self.IsReconn = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSSServerConnOK)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C2 02 服务器连接跨服成功 //tagSSServerConnOK:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ServerID:%d,
|
| | | ServerType:%d,
|
| | | IsReconn:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ServerID,
|
| | | self.ServerType,
|
| | | self.IsReconn
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSServerConnOK=tagSSServerConnOK()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSServerConnOK.Cmd,m_NAtagSSServerConnOK.SubCmd))] = m_NAtagSSServerConnOK
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 10 跨服通用信息包 #tagSSCommMsg
|
| | |
|
| | | class tagSSCommMsg(Structure):
|
| | | Head = tagHead()
|
| | | FromServerID = 0 #(DWORD FromServerID)//哪个服发的
|
| | | ServerTime = 0 #(DWORD ServerTime)//来源服务器时间戳
|
| | | ServerType = 0 #(BYTE ServerType)//服务器类型
|
| | | PlayerID = 0 #(DWORD PlayerID)//哪个玩家触发发送的
|
| | | TypeLen = 0 #(BYTE TypeLen)
|
| | | MsgType = "" #(String MsgType)
|
| | | Len = 0 #(DWORD Len)
|
| | |
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | self.Head.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
|
| | | self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | |
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | self.Head.SubCmd = 0x10
|
| | | self.FromServerID = 0
|
| | | self.ServerTime = 0
|
| | | self.ServerType = 0
|
| | | self.PlayerID = 0
|
| | | self.TypeLen = 0
|
| | | self.MsgType = ""
|
| | | self.Len = 0
|
| | |
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.MsgType)
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FromServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerTime)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerType)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.TypeLen)
|
| | | data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
|
| | | data = CommFunc.WriteDWORD(data, self.Len)
|
| | |
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromServerID:%d,
|
| | | ServerTime:%d,
|
| | | ServerType:%d,
|
| | | PlayerID:%d,
|
| | | TypeLen:%d,
|
| | | MsgType:%s,
|
| | | Len:%d,
|
| | |
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromServerID,
|
| | | self.ServerTime,
|
| | | self.ServerType,
|
| | | self.PlayerID,
|
| | | self.TypeLen,
|
| | | self.MsgType,
|
| | | self.Len,
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 01 跨服服务器间的测试包 #tagSSTest
|
| | | # C2 01 跨服服务器心跳包 #tagSSHeart
|
| | |
|
| | | class tagSSTest(Structure):
|
| | | class tagSSHeart(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Data", c_int), #测试
|
| | | ("ServerID", c_int), |
| | | ("ServerType", c_ubyte), #服务器类型
|
| | | ("ServerTime", c_int), #服务器时间戳
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xC2
|
| | | self.SubCmd = 0x01
|
| | | self.Data = 0
|
| | | self.ServerID = 0
|
| | | self.ServerType = 0
|
| | | self.ServerTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSSTest)
|
| | | return sizeof(tagSSHeart)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C2 01 跨服服务器间的测试包 //tagSSTest:
|
| | | DumpString = '''// C2 01 跨服服务器心跳包 //tagSSHeart:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Data:%d
|
| | | ServerID:%d,
|
| | | ServerType:%d,
|
| | | ServerTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Data
|
| | | self.ServerID,
|
| | | self.ServerType,
|
| | | self.ServerTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSTest=tagSSTest()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSTest.Cmd,m_NAtagSSTest.SubCmd))] = m_NAtagSSTest |
| | | m_NAtagSSHeart=tagSSHeart()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSHeart.Cmd,m_NAtagSSHeart.SubCmd))] = m_NAtagSSHeart |