| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 04 玩家扫荡信息 #tagMCFBWipeOutData
|
| | |
|
| | | class tagMCFBData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FBID", c_int), #fbId
|
| | | ("LineIndex", c_ubyte), #副本通关场次
|
| | | ("WipeOutCnt", c_ubyte), #扫荡次数
|
| | | ("passGrade", 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.FBID = 0
|
| | | self.LineIndex = 0
|
| | | self.WipeOutCnt = 0
|
| | | self.passGrade = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFBData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 04 玩家扫荡信息 //tagMCFBWipeOutData:
|
| | | FBID:%d,
|
| | | LineIndex:%d,
|
| | | WipeOutCnt:%d,
|
| | | passGrade:%d
|
| | | '''\
|
| | | %(
|
| | | self.FBID,
|
| | | self.LineIndex,
|
| | | self.WipeOutCnt,
|
| | | self.passGrade
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFBWipeOutData(Structure):
|
| | | Head = tagHead()
|
| | | WipeOutFBID = 0 #(DWORD WipeOutFBID)//当前扫荡的副本id
|
| | | FBDataCnt = 0 #(BYTE FBDataCnt)//
|
| | | FBDataList = list() #(vector<tagMCFBData> FBDataList)//
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WipeOutFBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FBDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.FBDataCnt):
|
| | | temFBDataList = tagMCFBData()
|
| | | _pos = temFBDataList.ReadData(_lpData, _pos)
|
| | | self.FBDataList.append(temFBDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x04
|
| | | self.WipeOutFBID = 0
|
| | | self.FBDataCnt = 0
|
| | | self.FBDataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.FBDataCnt):
|
| | | length += self.FBDataList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.WipeOutFBID)
|
| | | data = CommFunc.WriteBYTE(data, self.FBDataCnt)
|
| | | for i in range(self.FBDataCnt):
|
| | | data = CommFunc.WriteString(data, self.FBDataList[i].GetLength(), self.FBDataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WipeOutFBID:%d,
|
| | | FBDataCnt:%d,
|
| | | FBDataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WipeOutFBID,
|
| | | self.FBDataCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFBWipeOutData=tagMCFBWipeOutData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBWipeOutData.Head.Cmd,m_NAtagMCFBWipeOutData.Head.SubCmd))] = m_NAtagMCFBWipeOutData
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 18 极品白拿信息 #tagMCFreeGoodsInfo
|
| | |
|
| | | class tagMCFreeGoods(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 1D 神兵等级信息 #tagMCGodWeaponLVList
|
| | |
|
| | | class tagMCGodWeaponLVInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("WeaponType", c_ubyte), #神兵类型
|
| | | ("WeaponLV", c_ushort), #神兵等级
|
| | | ("WeaponExp", 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.WeaponType = 0
|
| | | self.WeaponLV = 0
|
| | | self.WeaponExp = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGodWeaponLVInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 1D 神兵等级信息 //tagMCGodWeaponLVList:
|
| | | WeaponType:%d,
|
| | | WeaponLV:%d,
|
| | | WeaponExp:%d
|
| | | '''\
|
| | | %(
|
| | | self.WeaponType,
|
| | | self.WeaponLV,
|
| | | self.WeaponExp
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGodWeaponLVList(Structure):
|
| | | Head = tagHead()
|
| | | WeaponNum = 0 #(BYTE WeaponNum)//神器个数
|
| | | WeaponInfoList = list() #(vector<tagMCGodWeaponLVInfo> WeaponInfoList)// 副本数据列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x1D
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WeaponNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WeaponNum):
|
| | | temWeaponInfoList = tagMCGodWeaponLVInfo()
|
| | | _pos = temWeaponInfoList.ReadData(_lpData, _pos)
|
| | | self.WeaponInfoList.append(temWeaponInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x1D
|
| | | self.WeaponNum = 0
|
| | | self.WeaponInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.WeaponNum):
|
| | | length += self.WeaponInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WeaponNum)
|
| | | for i in range(self.WeaponNum):
|
| | | data = CommFunc.WriteString(data, self.WeaponInfoList[i].GetLength(), self.WeaponInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WeaponNum:%d,
|
| | | WeaponInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WeaponNum,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGodWeaponLVList=tagMCGodWeaponLVList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGodWeaponLVList.Head.Cmd,m_NAtagMCGodWeaponLVList.Head.SubCmd))] = m_NAtagMCGodWeaponLVList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 37 投资理财信息 #tagMCGoldInvestInfo
|
| | |
|
| | | class tagMCInvestReward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RewardIndex", c_ushort), # 索引
|
| | | ("RewardValue", c_ubyte), # 该等级已领取数据,0可认为未领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.RewardIndex = 0
|
| | | self.RewardValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCInvestReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 37 投资理财信息 //tagMCGoldInvestInfo:
|
| | | RewardIndex:%d,
|
| | | RewardValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.RewardIndex,
|
| | | self.RewardValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGoldInvestInfo(Structure):
|
| | | Head = tagHead()
|
| | | InvestType = 0 #(BYTE InvestType)// 投资类型
|
| | | CurDay = 0 #(DWORD CurDay)// 当前天数
|
| | | InvestGold = 0 #(DWORD InvestGold)// 投资额度
|
| | | RewardRecordCnt = 0 #(BYTE RewardRecordCnt)// 投资回报个数
|
| | | InvestRewardList = list() #(vector<tagMCInvestReward> InvestRewardList)// 投资回报记录
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x37
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CurDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InvestGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RewardRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RewardRecordCnt):
|
| | | temInvestRewardList = tagMCInvestReward()
|
| | | _pos = temInvestRewardList.ReadData(_lpData, _pos)
|
| | | self.InvestRewardList.append(temInvestRewardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x37
|
| | | self.InvestType = 0
|
| | | self.CurDay = 0
|
| | | self.InvestGold = 0
|
| | | self.RewardRecordCnt = 0
|
| | | self.InvestRewardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.RewardRecordCnt):
|
| | | length += self.InvestRewardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.InvestType)
|
| | | data = CommFunc.WriteDWORD(data, self.CurDay)
|
| | | data = CommFunc.WriteDWORD(data, self.InvestGold)
|
| | | data = CommFunc.WriteBYTE(data, self.RewardRecordCnt)
|
| | | for i in range(self.RewardRecordCnt):
|
| | | data = CommFunc.WriteString(data, self.InvestRewardList[i].GetLength(), self.InvestRewardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | InvestType:%d,
|
| | | CurDay:%d,
|
| | | InvestGold:%d,
|
| | | RewardRecordCnt:%d,
|
| | | InvestRewardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.InvestType,
|
| | | self.CurDay,
|
| | | self.InvestGold,
|
| | | self.RewardRecordCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGoldInvestInfo=tagMCGoldInvestInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGoldInvestInfo.Head.Cmd,m_NAtagMCGoldInvestInfo.Head.SubCmd))] = m_NAtagMCGoldInvestInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 B9 通知玩家今日抢红包次数 #tagMCGrabRedPacketCnt
|
| | |
|
| | | class tagMCGrabRedPacketCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Cnt", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0xB9
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0xB9
|
| | | self.Cnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGrabRedPacketCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 B9 通知玩家今日抢红包次数 //tagMCGrabRedPacketCnt:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Cnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Cnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGrabRedPacketCnt=tagMCGrabRedPacketCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGrabRedPacketCnt.Cmd,m_NAtagMCGrabRedPacketCnt.SubCmd))] = m_NAtagMCGrabRedPacketCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C7 古宝信息 #tagMCGubaoInfo
|
| | |
|
| | | class tagMCGubao(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
|
| | | # A3 03 坐骑阶级信息 #tagSCHorseClassInfo
|
| | |
|
| | | class tagMCHorsePetSkinInfo(Structure):
|
| | | class tagSCHorseClassInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Type", c_ubyte), # 1-坐骑 2-灵宠
|
| | | ("ID", c_int), # 对应坐骑表灵宠表ID
|
| | | ("Exp", c_int), #经验
|
| | | ("SkinLV", c_ubyte), #觉醒等级
|
| | | ("SkinIndex", c_ubyte), #当前选择外观
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ClassLV", c_ubyte), #当前阶级,从0开始
|
| | | ("HorseLV", c_ushort), #当前阶等级,从1开始
|
| | | ("Exp", c_ushort), #当前阶等级经验,每级从0开始
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Type = 0
|
| | | self.ID = 0
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x03
|
| | | self.ClassLV = 0
|
| | | self.HorseLV = 0
|
| | | self.Exp = 0
|
| | | self.SkinLV = 0
|
| | | self.SkinIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorsePetSkinInfo)
|
| | | return sizeof(tagSCHorseClassInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
|
| | | Type:%d,
|
| | | ID:%d,
|
| | | Exp:%d,
|
| | | SkinLV:%d,
|
| | | SkinIndex:%d
|
| | | DumpString = '''// A3 03 坐骑阶级信息 //tagSCHorseClassInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ClassLV:%d,
|
| | | HorseLV:%d,
|
| | | Exp:%d
|
| | | '''\
|
| | | %(
|
| | | self.Type,
|
| | | self.ID,
|
| | | self.Exp,
|
| | | self.SkinLV,
|
| | | self.SkinIndex
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ClassLV,
|
| | | self.HorseLV,
|
| | | self.Exp
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorsePetSkinData(Structure):
|
| | | Head = tagHead()
|
| | | Num = 0 #(BYTE Num)//个数
|
| | | InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Num):
|
| | | temInfoList = tagMCHorsePetSkinInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x12
|
| | | self.Num = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Num):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Num)
|
| | | for i in range(self.Num):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Num:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Num,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
|
| | | m_NAtagSCHorseClassInfo=tagSCHorseClassInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseClassInfo.Cmd,m_NAtagSCHorseClassInfo.SubCmd))] = m_NAtagSCHorseClassInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
|
| | | # A3 04 坐骑外观信息 #tagSCHorseSkinInfo
|
| | |
|
| | | class tagMCHorseSkinTimeInfo(Structure):
|
| | | class tagSCHorseSkin(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ID", c_int), # 对应坐骑幻化表ID
|
| | | ("InvalidTime", c_int), # 失效时间戳
|
| | | ("HorseSkinID", c_ushort), #坐骑外观ID
|
| | | ("State", c_ubyte), #是否已激活
|
| | | ("EndTime", c_int), #到期时间戳,0为永久
|
| | | ("Star", c_ubyte), #星级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ID = 0
|
| | | self.InvalidTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorseSkinTimeInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
|
| | | ID:%d,
|
| | | InvalidTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.ID,
|
| | | self.InvalidTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorseSkinTimeInfoList(Structure):
|
| | | Head = tagHead()
|
| | | TimeCnt = 0 #(BYTE TimeCnt)//个数
|
| | | TimeInfoList = list() #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TimeCnt):
|
| | | temTimeInfoList = tagMCHorseSkinTimeInfo()
|
| | | _pos = temTimeInfoList.ReadData(_lpData, _pos)
|
| | | self.TimeInfoList.append(temTimeInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x10
|
| | | self.TimeCnt = 0
|
| | | self.TimeInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.TimeCnt):
|
| | | length += self.TimeInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TimeCnt)
|
| | | for i in range(self.TimeCnt):
|
| | | data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TimeCnt:%d,
|
| | | TimeInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TimeCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CD 坐骑星级信息 #tagMCHorseStarInfo
|
| | |
|
| | | class tagMCHorseStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("HorseID", c_int), # 坐骑表ID
|
| | | ("Star", 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.HorseID = 0
|
| | | self.HorseSkinID = 0
|
| | | self.State = 0
|
| | | self.EndTime = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorseStar)
|
| | | return sizeof(tagSCHorseSkin)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
|
| | | HorseID:%d,
|
| | | DumpString = '''// A3 04 坐骑外观信息 //tagSCHorseSkinInfo:
|
| | | HorseSkinID:%d,
|
| | | State:%d,
|
| | | EndTime:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.HorseID,
|
| | | self.HorseSkinID,
|
| | | self.State,
|
| | | self.EndTime,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorseStarInfo(Structure):
|
| | | class tagSCHorseSkinInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
|
| | | HorseSkinList = list() #(vector<tagSCHorseSkin> HorseSkinList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temHorseStarList = tagMCHorseStar()
|
| | | _pos = temHorseStarList.ReadData(_lpData, _pos)
|
| | | self.HorseStarList.append(temHorseStarList)
|
| | | temHorseSkinList = tagSCHorseSkin()
|
| | | _pos = temHorseSkinList.ReadData(_lpData, _pos)
|
| | | self.HorseSkinList.append(temHorseSkinList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | self.Head.SubCmd = 0x04
|
| | | self.Count = 0
|
| | | self.HorseStarList = list()
|
| | | self.HorseSkinList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.HorseStarList[i].GetLength()
|
| | | length += self.HorseSkinList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | 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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
|
| | | data = CommFunc.WriteString(data, self.HorseSkinList[i].GetLength(), self.HorseSkinList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | HorseStarList:%s
|
| | | HorseSkinList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
|
| | | m_NAtagSCHorseSkinInfo=tagSCHorseSkinInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseSkinInfo.Head.Cmd,m_NAtagSCHorseSkinInfo.Head.SubCmd))] = m_NAtagSCHorseSkinInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 38 投资理财信息 #tagMCInvestInfo
|
| | | # A3 38 投资信息 #tagSCInvestInfo
|
| | |
|
| | | class tagMCInvestInfo(Structure):
|
| | | Head = tagHead()
|
| | | InvestType = 0 #(BYTE InvestType)// 投资类型
|
| | | CurDay = 0 #(WORD CurDay)// 当前天数,投资第一天为1
|
| | | ValueCount = 0 #(BYTE ValueCount)
|
| | | RewardValue = list() #(vector<DWORD> RewardValue)//领奖记录值,按投资回报索引位记录是否已领取
|
| | | ProgressValue = list() #(vector<DWORD> ProgressValue)//投资相关可领取进度记录值: 9登录投资-记录已登录天数;11Boss投资-按回报索引位记录是否已击杀该boss
|
| | | data = None
|
| | | class tagSCInvestInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("InvestType", c_ubyte), # 投资类型
|
| | | ("InvestBuyTime", c_int), # 投资购买时间戳,永久的通过该时间判断是否有效或已过天数,任意类型均有该值,过期没有重置,前端自己判断
|
| | | ("InvestEndTime", c_int), # 投资到期时间戳,非永久的通过该时间判断到期时间,有天数限制的才有值
|
| | | ("AwardState", c_ubyte), # 今日是否已领取奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x38
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x38
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CurDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.RewardValue.append(value)
|
| | | for i in range(self.ValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ProgressValue.append(value)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x38
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x38
|
| | | self.InvestType = 0
|
| | | self.CurDay = 0
|
| | | self.ValueCount = 0
|
| | | self.RewardValue = list()
|
| | | self.ProgressValue = list()
|
| | | self.InvestBuyTime = 0
|
| | | self.InvestEndTime = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.ValueCount
|
| | | length += 4 * self.ValueCount
|
| | |
|
| | | return length
|
| | | return sizeof(tagSCInvestInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.InvestType)
|
| | | data = CommFunc.WriteWORD(data, self.CurDay)
|
| | | data = CommFunc.WriteBYTE(data, self.ValueCount)
|
| | | for i in range(self.ValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.RewardValue[i])
|
| | | for i in range(self.ValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ProgressValue[i])
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DumpString = '''// A3 38 投资信息 //tagSCInvestInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | InvestType:%d,
|
| | | CurDay:%d,
|
| | | ValueCount:%d,
|
| | | RewardValue:%s,
|
| | | ProgressValue:%s
|
| | | InvestBuyTime:%d,
|
| | | InvestEndTime:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.InvestType,
|
| | | self.CurDay,
|
| | | self.ValueCount,
|
| | | "...",
|
| | | "..."
|
| | | self.InvestBuyTime,
|
| | | self.InvestEndTime,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCInvestInfo=tagMCInvestInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCInvestInfo.Head.Cmd,m_NAtagMCInvestInfo.Head.SubCmd))] = m_NAtagMCInvestInfo
|
| | | m_NAtagSCInvestInfo=tagSCInvestInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Record", c_ubyte), #0-未领取 1-已领取 |
| | | ("Record", c_ubyte), # 0-未领取 1-已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C8 神通等级信息 #tagMCShentongLVInfo
|
| | |
|
| | | class tagMCShentongLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ShentongID", c_ubyte), |
| | | ("ClassLV", c_ubyte), |
| | | ("LV", 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.ShentongID = 0
|
| | | self.ClassLV = 0
|
| | | self.LV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShentongLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
|
| | | ShentongID:%d,
|
| | | ClassLV:%d,
|
| | | LV:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShentongID,
|
| | | self.ClassLV,
|
| | | self.LV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShentongLVInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | ShentongLVList = list() #(vector<tagMCShentongLV> ShentongLVList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC8
|
| | | 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):
|
| | | temShentongLVList = tagMCShentongLV()
|
| | | _pos = temShentongLVList.ReadData(_lpData, _pos)
|
| | | self.ShentongLVList.append(temShentongLVList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC8
|
| | | self.Count = 0
|
| | | self.ShentongLVList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ShentongLVList[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.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ShentongLVList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
|
| | |
|
| | | class tagMCShentongSkillInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | SkillIDList = list() #(vector<DWORD> SkillIDList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC9
|
| | | 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):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SkillIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC9
|
| | | self.Count = 0
|
| | | self.SkillIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.Count
|
| | |
|
| | | 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.WriteDWORD(data, self.SkillIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | SkillIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
|
| | |
|
| | | class tagMCSingleGoldGift(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 41 成就完成 #tagMCSuccessFinish
|
| | | # A3 42 成就领奖记录列表 #tagSCSuccessAwardRecordList
|
| | |
|
| | | class tagMCSuccessFinish(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SuccID", c_int), #成就id
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x41
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x41
|
| | | self.SuccID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSuccessFinish)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 41 成就完成 //tagMCSuccessFinish:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SuccID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SuccID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSuccessFinish=tagMCSuccessFinish()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinish.Cmd,m_NAtagMCSuccessFinish.SubCmd))] = m_NAtagMCSuccessFinish
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 42 成就完成领奖记录列表 #tagMCSuccessFinishAwardRecordList
|
| | |
|
| | | class tagMCSuccessFinishAwardRecord(Structure):
|
| | | class tagSCSuccessAwardRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RecordIndex", c_ushort), #第几个记录值 每个key存31个succid 0-30为0, 31-61为1..
|
| | | ("Record", c_int), #对应是否领取值
|
| | | ("PassportRecord", c_int), #通行证奖励是否领取值
|
| | | ("Record", c_int), #根据成就ID位判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.RecordIndex = 0
|
| | | self.Record = 0
|
| | | self.PassportRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSuccessFinishAwardRecord)
|
| | | return sizeof(tagSCSuccessAwardRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 42 成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
|
| | | DumpString = '''// A3 42 成就领奖记录列表 //tagSCSuccessAwardRecordList:
|
| | | RecordIndex:%d,
|
| | | Record:%d,
|
| | | PassportRecord:%d
|
| | | Record:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordIndex,
|
| | | self.Record,
|
| | | self.PassportRecord
|
| | | self.Record
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSuccessFinishAwardRecordList(Structure):
|
| | | class tagSCSuccessAwardRecordList(Structure):
|
| | | Head = tagHead()
|
| | | RecordCnt = 0 #(WORD RecordCnt)//记录个数
|
| | | RecordList = list() #(vector<tagMCSuccessFinishAwardRecord> RecordList)//记录列表
|
| | | RecordList = list() #(vector<tagSCSuccessAwardRecord> RecordList)//记录列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.RecordCnt):
|
| | | temRecordList = tagMCSuccessFinishAwardRecord()
|
| | | temRecordList = tagSCSuccessAwardRecord()
|
| | | _pos = temRecordList.ReadData(_lpData, _pos)
|
| | | self.RecordList.append(temRecordList)
|
| | | return _pos
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSuccessFinishAwardRecordList=tagMCSuccessFinishAwardRecordList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinishAwardRecordList.Head.Cmd,m_NAtagMCSuccessFinishAwardRecordList.Head.SubCmd))] = m_NAtagMCSuccessFinishAwardRecordList
|
| | | m_NAtagSCSuccessAwardRecordList=tagSCSuccessAwardRecordList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessAwardRecordList.Head.Cmd,m_NAtagSCSuccessAwardRecordList.Head.SubCmd))] = m_NAtagSCSuccessAwardRecordList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 40 成就信息列表 #tagMCSuccessInfoList
|
| | | # A3 40 成就信息列表 #tagSCSuccessInfoList
|
| | |
|
| | | class tagMCSuccessInfo(Structure):
|
| | | class tagSCSuccessInfo(Structure):
|
| | | SuccType = 0 #(WORD SuccType)//成就类型
|
| | | Len = 0 #(WORD Len)//条件长度
|
| | | Condition = "" #(String Condition)//成就条件
|
| | | CntValue = 0 #(DWORD CntValue)//当前完成进度值
|
| | | CLen = 0 #(BYTE CLen)
|
| | | Conds = list() #(vector<DWORD> Conds)// 条件列表
|
| | | CurValue = 0 #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.SuccType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Condition,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
| | | self.CntValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CLen):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.Conds.append(value)
|
| | | self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.SuccType = 0
|
| | | self.Len = 0
|
| | | self.Condition = ""
|
| | | self.CntValue = 0
|
| | | self.CLen = 0
|
| | | self.Conds = list()
|
| | | self.CurValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 2
|
| | | length += len(self.Condition)
|
| | | length += 1
|
| | | length += 4 * self.CLen
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.SuccType)
|
| | | data = CommFunc.WriteWORD(data, self.Len)
|
| | | data = CommFunc.WriteString(data, self.Len, self.Condition)
|
| | | data = CommFunc.WriteDWORD(data, self.CntValue)
|
| | | data = CommFunc.WriteBYTE(data, self.CLen)
|
| | | for i in range(self.CLen):
|
| | | data = CommFunc.WriteDWORD(data, self.Conds[i])
|
| | | data = CommFunc.WriteDWORD(data, self.CurValue)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | SuccType:%d,
|
| | | Len:%d,
|
| | | Condition:%s,
|
| | | CntValue:%d
|
| | | CLen:%d,
|
| | | Conds:%s,
|
| | | CurValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.SuccType,
|
| | | self.Len,
|
| | | self.Condition,
|
| | | self.CntValue
|
| | | self.CLen,
|
| | | "...",
|
| | | self.CurValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSuccessInfoList(Structure):
|
| | | class tagSCSuccessInfoList(Structure):
|
| | | Head = tagHead()
|
| | | count = 0 #(WORD count)//信息个数
|
| | | SuccessInfoList = list() #(vector<tagMCSuccessInfo> SuccessInfoList)
|
| | | Count = 0 #(WORD Count)//信息个数
|
| | | SuccessInfoList = list() #(vector<tagSCSuccessInfo> SuccessInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.count):
|
| | | temSuccessInfoList = tagMCSuccessInfo()
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temSuccessInfoList = tagSCSuccessInfo()
|
| | | _pos = temSuccessInfoList.ReadData(_lpData, _pos)
|
| | | self.SuccessInfoList.append(temSuccessInfoList)
|
| | | return _pos
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x40
|
| | | self.count = 0
|
| | | self.Count = 0
|
| | | self.SuccessInfoList = list()
|
| | | return
|
| | |
|
| | |
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.count):
|
| | | for i in range(self.Count):
|
| | | length += self.SuccessInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.count)
|
| | | for i in range(self.count):
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.SuccessInfoList[i].GetLength(), self.SuccessInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | count:%d,
|
| | | Count:%d,
|
| | | SuccessInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.count,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSuccessInfoList=tagMCSuccessInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessInfoList.Head.Cmd,m_NAtagMCSuccessInfoList.Head.SubCmd))] = m_NAtagMCSuccessInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 43 成就积分信息 #tagMCSuccessScoreInfo
|
| | |
|
| | | class tagMCSuccessScoreInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ScoreAwardState", c_int), #成就积分领奖记录,按奖励索引位记录是否领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x43
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x43
|
| | | self.ScoreAwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSuccessScoreInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 43 成就积分信息 //tagMCSuccessScoreInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ScoreAwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ScoreAwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
|
| | | m_NAtagSCSuccessInfoList=tagSCSuccessInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessInfoList.Head.Cmd,m_NAtagSCSuccessInfoList.Head.SubCmd))] = m_NAtagSCSuccessInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 01 坐骑培养信息 #tagTrainHorseData
|
| | |
|
| | | class tagTrainHorseData(Structure):
|
| | | Head = tagHead()
|
| | | LV = 0 #(BYTE LV)//等阶
|
| | | EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
|
| | | SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
|
| | | TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
|
| | | TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
|
| | | TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
|
| | | SkinPlusStateCount = 0 #(BYTE SkinPlusStateCount)//幻化激活状态值数
|
| | | SkinPlusStateList = list() #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainLVList.append(value)
|
| | | for i in range(self.TrainTypes):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TrainItemCountList.append(value)
|
| | | self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SkinPlusStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SkinPlusStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x01
|
| | | self.LV = 0
|
| | | self.EatItemCount = 0
|
| | | self.SkinPlusState = 0
|
| | | self.TrainTypes = 0
|
| | | self.TrainLVList = list()
|
| | | self.TrainItemCountList = list()
|
| | | self.SkinPlusStateCount = 0
|
| | | self.SkinPlusStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.TrainTypes
|
| | | length += 4 * self.TrainTypes
|
| | | length += 1
|
| | | length += 4 * self.SkinPlusStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.LV)
|
| | | data = CommFunc.WriteDWORD(data, self.EatItemCount)
|
| | | data = CommFunc.WriteDWORD(data, self.SkinPlusState)
|
| | | data = CommFunc.WriteBYTE(data, self.TrainTypes)
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
|
| | | for i in range(self.TrainTypes):
|
| | | data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
|
| | | for i in range(self.SkinPlusStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | LV:%d,
|
| | | EatItemCount:%d,
|
| | | SkinPlusState:%d,
|
| | | TrainTypes:%d,
|
| | | TrainLVList:%s,
|
| | | TrainItemCountList:%s,
|
| | | SkinPlusStateCount:%d,
|
| | | SkinPlusStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.LV,
|
| | | self.EatItemCount,
|
| | | self.SkinPlusState,
|
| | | self.TrainTypes,
|
| | | "...",
|
| | | "...",
|
| | | self.SkinPlusStateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagTrainHorseData=tagTrainHorseData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 51 寻宝功能信息 #tagMCTreasureInfo
|
| | |
|
| | | class tagMCTreasureGridLimit(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 05 扫荡奖励信息 #tagMCWipeOutPrize
|
| | |
|
| | | class tagMCPrizeItemInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), #物品id
|
| | | ("ItemCnt", c_ubyte), #物品数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x05
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPrizeItemInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 05 扫荡奖励信息 //tagMCWipeOutPrize:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID,
|
| | | self.ItemCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCWipeOutPrize(Structure):
|
| | | Head = tagHead()
|
| | | FBID = 0 #(DWORD FBID)//副本id
|
| | | WipeOutCnt = 0 #(DWORD WipeOutCnt)//扫荡次数
|
| | | GiveExp = 0 #(DWORD GiveExp)//给予经验
|
| | | SilverCnt = 0 #(DWORD SilverCnt)//给予金币
|
| | | PrizeCnt = 0 #(BYTE PrizeCnt)//״̬
|
| | | PrizeInfo = list() #(vector<tagMCPrizeItemInfo> PrizeInfo)//״̬
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WipeOutCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GiveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SilverCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PrizeCnt):
|
| | | temPrizeInfo = tagMCPrizeItemInfo()
|
| | | _pos = temPrizeInfo.ReadData(_lpData, _pos)
|
| | | self.PrizeInfo.append(temPrizeInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x05
|
| | | self.FBID = 0
|
| | | self.WipeOutCnt = 0
|
| | | self.GiveExp = 0
|
| | | self.SilverCnt = 0
|
| | | self.PrizeCnt = 0
|
| | | self.PrizeInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.PrizeCnt):
|
| | | length += self.PrizeInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FBID)
|
| | | data = CommFunc.WriteDWORD(data, self.WipeOutCnt)
|
| | | data = CommFunc.WriteDWORD(data, self.GiveExp)
|
| | | data = CommFunc.WriteDWORD(data, self.SilverCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.PrizeCnt)
|
| | | for i in range(self.PrizeCnt):
|
| | | data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FBID:%d,
|
| | | WipeOutCnt:%d,
|
| | | GiveExp:%d,
|
| | | SilverCnt:%d,
|
| | | PrizeCnt:%d,
|
| | | PrizeInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FBID,
|
| | | self.WipeOutCnt,
|
| | | self.GiveExp,
|
| | | self.SilverCnt,
|
| | | self.PrizeCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCWipeOutPrize=tagMCWipeOutPrize()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWipeOutPrize.Head.Cmd,m_NAtagMCWipeOutPrize.Head.SubCmd))] = m_NAtagMCWipeOutPrize
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 35 通知世界等级 #tagPyMCWorldAverageLv
|
| | |
|
| | | class tagPyMCWorldAverageLv(Structure):
|
| | |
| | |
|
| | | m_NAtagPyMCWorldAverageLv=tagPyMCWorldAverageLv()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyMCWorldAverageLv.Cmd,m_NAtagPyMCWorldAverageLv.SubCmd))] = m_NAtagPyMCWorldAverageLv
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 48 仙宝寻主领奖记录 #tagMCXBXZAwardRecordList
|
| | |
|
| | | class tagMCXBXZAwardRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RecordIndex", c_ushort), #第几个记录值 每个key存31个id 0-30为0, 31-61为1..
|
| | | ("Record", 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.RecordIndex = 0
|
| | | self.Record = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCXBXZAwardRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 48 仙宝寻主领奖记录 //tagMCXBXZAwardRecordList:
|
| | | RecordIndex:%d,
|
| | | Record:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordIndex,
|
| | | self.Record
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCXBXZAwardRecordList(Structure):
|
| | | Head = tagHead()
|
| | | RecordCnt = 0 #(WORD RecordCnt)//记录个数
|
| | | RecordList = list() #(vector<tagMCXBXZAwardRecord> RecordList)//记录列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x48
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.RecordCnt):
|
| | | temRecordList = tagMCXBXZAwardRecord()
|
| | | _pos = temRecordList.ReadData(_lpData, _pos)
|
| | | self.RecordList.append(temRecordList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x48
|
| | | self.RecordCnt = 0
|
| | | self.RecordList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.RecordCnt):
|
| | | length += self.RecordList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.RecordCnt)
|
| | | for i in range(self.RecordCnt):
|
| | | data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RecordCnt:%d,
|
| | | RecordList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RecordCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCXBXZAwardRecordList=tagMCXBXZAwardRecordList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXBXZAwardRecordList.Head.Cmd,m_NAtagMCXBXZAwardRecordList.Head.SubCmd))] = m_NAtagMCXBXZAwardRecordList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
|
| | |
|
| | | class tagFGrabRedPacketInfo(Structure):
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//名字
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | 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.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayeJob = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MoneyNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayeJob:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MoneyNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayeJob,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MoneyNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFamilyRedPacketGrabInfo(Structure):
|
| | | Head = tagHead()
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | Count = 0 #(BYTE Count)//数量
|
| | | GrabInfo = list() #(vector<tagFGrabRedPacketInfo> GrabInfo)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temGrabInfo = tagFGrabRedPacketInfo()
|
| | | _pos = temGrabInfo.ReadData(_lpData, _pos)
|
| | | self.GrabInfo.append(temGrabInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x05
|
| | | self.RedPacketID = 0
|
| | | self.Count = 0
|
| | | self.GrabInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.GrabInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.GrabInfo[i].GetLength(), self.GrabInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RedPacketID:%d,
|
| | | Count:%d,
|
| | | GrabInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RedPacketID,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyRedPacketGrabInfo=tagGCFamilyRedPacketGrabInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketGrabInfo.Head.Cmd,m_NAtagGCFamilyRedPacketGrabInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketGrabInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 04 家族红包总信息 #tagGCFamilyRedPacketInfo
|
| | |
|
| | | class tagFRedPacketInfo(Structure):
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//玩家名字
|
| | | Time = 0 #(DWORD Time)//时间
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MoneyType = 0 #(BYTE MoneyType)//金钱类型
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | GetWay = 0 #(BYTE GetWay)//获得途径
|
| | | PacketCnt = 0 #(BYTE PacketCnt)//可抢个数
|
| | | State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完
|
| | | WishLen = 0 #(BYTE WishLen)
|
| | | Wish = "" #(String Wish)//祝福语
|
| | | IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_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)
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
|
| | | self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.Time = 0
|
| | | self.PlayeJob = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyNum = 0
|
| | | self.GetWay = 0
|
| | | self.PacketCnt = 0
|
| | | self.State = 0
|
| | | self.WishLen = 0
|
| | | self.Wish = ""
|
| | | self.IsAnonymous = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.Wish)
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | data = CommFunc.WriteBYTE(data, self.GetWay)
|
| | | data = CommFunc.WriteBYTE(data, self.PacketCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteBYTE(data, self.WishLen)
|
| | | data = CommFunc.WriteString(data, self.WishLen, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAnonymous)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | Time:%d,
|
| | | PlayeJob:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MoneyType:%d,
|
| | | MoneyNum:%d,
|
| | | GetWay:%d,
|
| | | PacketCnt:%d,
|
| | | State:%d,
|
| | | WishLen:%d,
|
| | | Wish:%s,
|
| | | IsAnonymous:%d
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.Time,
|
| | | self.PlayeJob,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MoneyType,
|
| | | self.MoneyNum,
|
| | | self.GetWay,
|
| | | self.PacketCnt,
|
| | | self.State,
|
| | | self.WishLen,
|
| | | self.Wish,
|
| | | self.IsAnonymous
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFamilyRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | IsAll = 0 #(BYTE IsAll)//是否全部红包
|
| | | Count = 0 #(BYTE Count)//红包数量
|
| | | RedPacketInfo = list() #(vector<tagFRedPacketInfo> RedPacketInfo)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temRedPacketInfo = tagFRedPacketInfo()
|
| | | _pos = temRedPacketInfo.ReadData(_lpData, _pos)
|
| | | self.RedPacketInfo.append(temRedPacketInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x04
|
| | | self.IsAll = 0
|
| | | self.Count = 0
|
| | | self.RedPacketInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.RedPacketInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsAll)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.RedPacketInfo[i].GetLength(), self.RedPacketInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsAll:%d,
|
| | | Count:%d,
|
| | | RedPacketInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsAll,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyRedPacketInfo=tagGCFamilyRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketInfo.Head.Cmd,m_NAtagGCFamilyRedPacketInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
|
| | |
|
| | | class tagGCFamilyStoreItem(Structure):
|
| | | Index = 0 #(BYTE Index)// 仓库格子索引,从0开始代表第一格
|
| | | ItemID = 0 #(DWORD ItemID)// 物品ID
|
| | | ItemDataLen = 0 #(WORD ItemDataLen)
|
| | | ItemData = "" #(String ItemData)//size = ItemDataLen
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Index = 0
|
| | | self.ItemID = 0
|
| | | self.ItemDataLen = 0
|
| | | self.ItemData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ItemData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.Index)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteWORD(data, self.ItemDataLen)
|
| | | data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Index:%d,
|
| | | ItemID:%d,
|
| | | ItemDataLen:%d,
|
| | | ItemData:%s
|
| | | '''\
|
| | | %(
|
| | | self.Index,
|
| | | self.ItemID,
|
| | | self.ItemDataLen,
|
| | | self.ItemData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFamilyStoreItemInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//数量
|
| | | StoreItemList = list() #(vector<tagGCFamilyStoreItem> StoreItemList)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x06
|
| | | 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):
|
| | | temStoreItemList = tagGCFamilyStoreItem()
|
| | | _pos = temStoreItemList.ReadData(_lpData, _pos)
|
| | | self.StoreItemList.append(temStoreItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x06
|
| | | self.Count = 0
|
| | | self.StoreItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.StoreItemList[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.StoreItemList[i].GetLength(), self.StoreItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | StoreItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyStoreItemInfo=tagGCFamilyStoreItemInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemInfo.Head.Cmd,m_NAtagGCFamilyStoreItemInfo.Head.SubCmd))] = m_NAtagGCFamilyStoreItemInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
|
| | |
|
| | | class tagGCFamilyStoreItemClear(Structure):
|
| | | Head = tagHead()
|
| | | ClearType = 0 #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
|
| | | IndexCount = 0 #(BYTE IndexCount)
|
| | | IndexList = list() #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.IndexCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x07
|
| | | self.ClearType = 0
|
| | | self.IndexCount = 0
|
| | | self.IndexList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.IndexCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ClearType)
|
| | | data = CommFunc.WriteBYTE(data, self.IndexCount)
|
| | | for i in range(self.IndexCount):
|
| | | data = CommFunc.WriteBYTE(data, self.IndexList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ClearType:%d,
|
| | | IndexCount:%d,
|
| | | IndexList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ClearType,
|
| | | self.IndexCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 35 王者仙盟每日俸禄奖励状态 #tagMCChampionFamilyDailyReward
|
| | |
|
| | | class tagMCChampionFamilyDailyReward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GetState", c_ubyte), #是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x35
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x35
|
| | | self.GetState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCChampionFamilyDailyReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 35 王者仙盟每日俸禄奖励状态 //tagMCChampionFamilyDailyReward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GetState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GetState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 10 传功奖励结果 #tagMCChuangongResult
|
| | |
|
| | | class tagMCChuangongItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCChuangongItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
|
| | | ItemID:%d,
|
| | | ItemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCChuangongResult(Structure):
|
| | | Head = tagHead()
|
| | | FromLV = 0 #(WORD FromLV)// 传功前等级
|
| | | ToLV = 0 #(WORD ToLV)// 传功后等级
|
| | | Exp = 0 #(DWORD Exp)// 获得经验求余亿部分
|
| | | ExpPoint = 0 #(DWORD ExpPoint)// 获得经验整除亿部分
|
| | | ItemCount = 0 #(BYTE ItemCount)
|
| | | AwardItemList = list() #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ItemCount):
|
| | | temAwardItemList = tagMCChuangongItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x10
|
| | | self.FromLV = 0
|
| | | self.ToLV = 0
|
| | | self.Exp = 0
|
| | | self.ExpPoint = 0
|
| | | self.ItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.ItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.FromLV)
|
| | | data = CommFunc.WriteWORD(data, self.ToLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Exp)
|
| | | data = CommFunc.WriteDWORD(data, self.ExpPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.ItemCount)
|
| | | for i in range(self.ItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromLV:%d,
|
| | | ToLV:%d,
|
| | | Exp:%d,
|
| | | ExpPoint:%d,
|
| | | ItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromLV,
|
| | | self.ToLV,
|
| | | self.Exp,
|
| | | self.ExpPoint,
|
| | | self.ItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCChuangongResult=tagMCChuangongResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 02 捐献次数信息 #tagSCDonateCntInfo
|
| | |
|
| | | class tagSCDonateCntInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
|
| | |
|
| | | class tagMCFamilyBosFBPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HurtTotal", c_int), # 累计伤血,亿求余部分
|
| | | ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分
|
| | | ("FightSeconds", c_int), # 已累计战斗时长,秒
|
| | | ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
|
| | | ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x07
|
| | | self.HurtTotal = 0
|
| | | self.HurtTotalPoint = 0
|
| | | self.FightSeconds = 0
|
| | | self.HurtAwardState = 0
|
| | | self.HurtAwardStateFamily = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyBosFBPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HurtTotal:%d,
|
| | | HurtTotalPoint:%d,
|
| | | FightSeconds:%d,
|
| | | HurtAwardState:%d,
|
| | | HurtAwardStateFamily:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HurtTotal,
|
| | | self.HurtTotalPoint,
|
| | | self.FightSeconds,
|
| | | self.HurtAwardState,
|
| | | self.HurtAwardStateFamily
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 21 家族变更 #tagMCFamilyChange
|
| | |
|
| | | class tagMCFamilyChange(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilyChange=tagMCFamilyChange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
|
| | |
|
| | | class tagMCFamilyDayAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GetState", c_ubyte), #是否已领取
|
| | | ("MoneyDonateCount", c_ubyte), #今日货币捐献次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x06
|
| | | self.GetState = 0
|
| | | self.MoneyDonateCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyDayAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GetState:%d,
|
| | | MoneyDonateCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GetState,
|
| | | self.MoneyDonateCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyDayAward=tagMCFamilyDayAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyDayAward.Cmd,m_NAtagMCFamilyDayAward.SubCmd))] = m_NAtagMCFamilyDayAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 03 当日祈福信息 #tagMCFamilyPrayInfo
|
| | |
|
| | | class tagMCFamilyPrayInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PrayCntInfo", c_int), # 当日祈福次数信息, 按位存储祈福类型对应次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x03
|
| | | self.PrayCntInfo = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyPrayInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 03 当日祈福信息 //tagMCFamilyPrayInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PrayCntInfo:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PrayCntInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 05 通知家族钻石红包已用额度 #tagMCFamilyRedPacketGoldLimit
|
| | |
|
| | | class tagMCFamilyRedPacketGoldLimit(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HasSendGold", c_int), # 已用额度
|
| | | ("ServerGrabCnt", c_int), # 全服红包已抢次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x05
|
| | | self.HasSendGold = 0
|
| | | self.ServerGrabCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyRedPacketGoldLimit)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HasSendGold:%d,
|
| | | ServerGrabCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HasSendGold,
|
| | | self.ServerGrabCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 11 打坐信息 #tagMCFamilySitInfo
|
| | | # A5 04 公会讨伐攻击结果 #tagSCFamilyTaofaAtkRet
|
| | |
|
| | | class tagMCFamilySitInfo(Structure):
|
| | | class tagSCFamilyTaofaAtkItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("Count", 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.ItemID = 0
|
| | | self.Count = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCFamilyTaofaAtkItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
|
| | | ItemID:%d,
|
| | | Count:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.Count
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFamilyTaofaAtkHurt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("IsSuper", c_ubyte), # 是否暴击
|
| | | ("HurtValue", c_int), # 本次伤害,求余亿部分
|
| | | ("HurtValueEx", 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.IsSuper = 0
|
| | | self.HurtValue = 0
|
| | | self.HurtValueEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCFamilyTaofaAtkHurt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
|
| | | IsSuper:%d,
|
| | | HurtValue:%d,
|
| | | HurtValueEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.IsSuper,
|
| | | self.HurtValue,
|
| | | self.HurtValueEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCFamilyTaofaAtkRet(Structure):
|
| | | Head = tagHead()
|
| | | AtkType = 0 #(BYTE AtkType)// 攻击类型:0-常规;1-怒气攻击
|
| | | HurtCount = 0 #(BYTE HurtCount)
|
| | | HurtList = list() #(vector<tagSCFamilyTaofaAtkHurt> HurtList)// 伤害次数列表,如怒气攻击有多次伤害
|
| | | ItemCount = 0 #(BYTE ItemCount)
|
| | | ItemList = list() #(vector<tagSCFamilyTaofaAtkItem> ItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AtkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.HurtCount):
|
| | | temHurtList = tagSCFamilyTaofaAtkHurt()
|
| | | _pos = temHurtList.ReadData(_lpData, _pos)
|
| | | self.HurtList.append(temHurtList)
|
| | | self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ItemCount):
|
| | | temItemList = tagSCFamilyTaofaAtkItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x04
|
| | | self.AtkType = 0
|
| | | self.HurtCount = 0
|
| | | self.HurtList = list()
|
| | | self.ItemCount = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.HurtCount):
|
| | | length += self.HurtList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.ItemCount):
|
| | | length += self.ItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.AtkType)
|
| | | data = CommFunc.WriteBYTE(data, self.HurtCount)
|
| | | for i in range(self.HurtCount):
|
| | | data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ItemCount)
|
| | | for i in range(self.ItemCount):
|
| | | data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AtkType:%d,
|
| | | HurtCount:%d,
|
| | | HurtList:%s,
|
| | | ItemCount:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AtkType,
|
| | | self.HurtCount,
|
| | | "...",
|
| | | self.ItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCFamilyTaofaAtkRet=tagSCFamilyTaofaAtkRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaAtkRet.Head.Cmd,m_NAtagSCFamilyTaofaAtkRet.Head.SubCmd))] = m_NAtagSCFamilyTaofaAtkRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 03 公会讨伐信息 #tagSCFamilyTaofaInfo
|
| | |
|
| | | class tagSCFamilyTaofaInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ExpRound", c_ushort), # 已获得经验轮次
|
| | | ("Exp", c_int), # 获得经验求余亿部分
|
| | | ("ExpPoint", c_int), # 获得经验整除亿部分
|
| | | ("BuZhenState", c_ubyte), # 是否已布阵
|
| | | ("AtkCount", c_ushort), # 已斩杀次数,用于计算剩余次数=免费次数+道具增加次数-已斩杀次数
|
| | | ("ItemAddCount", c_ushort), # 道具增加斩杀次数
|
| | | ("Anger", c_ushort), # 当前怒气值
|
| | | ("BoxUnGetCount", c_ushort), # 当前未领取的宝箱数,即可领取的
|
| | | ("BoxHurt", c_int), # 宝箱奖励计算累计伤害,求余亿部分;个人今日累计伤害,换公会不会重置
|
| | | ("BoxHurtEx", c_int), # 宝箱奖励计算累计伤害,整除亿部分
|
| | | ("BoxHurtHis", c_int), # 宝箱奖励计算累计历史最高伤害,求余亿部分
|
| | | ("BoxHurtHisEx", c_int), # 宝箱奖励计算累计历史最高伤害,整除亿部分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x11
|
| | | self.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x11
|
| | | self.ExpRound = 0
|
| | | self.Exp = 0
|
| | | self.ExpPoint = 0
|
| | | self.SubCmd = 0x03
|
| | | self.BuZhenState = 0
|
| | | self.AtkCount = 0
|
| | | self.ItemAddCount = 0
|
| | | self.Anger = 0
|
| | | self.BoxUnGetCount = 0
|
| | | self.BoxHurt = 0
|
| | | self.BoxHurtEx = 0
|
| | | self.BoxHurtHis = 0
|
| | | self.BoxHurtHisEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilySitInfo)
|
| | | return sizeof(tagSCFamilyTaofaInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
|
| | | DumpString = '''// A5 03 公会讨伐信息 //tagSCFamilyTaofaInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ExpRound:%d,
|
| | | Exp:%d,
|
| | | ExpPoint:%d
|
| | | BuZhenState:%d,
|
| | | AtkCount:%d,
|
| | | ItemAddCount:%d,
|
| | | Anger:%d,
|
| | | BoxUnGetCount:%d,
|
| | | BoxHurt:%d,
|
| | | BoxHurtEx:%d,
|
| | | BoxHurtHis:%d,
|
| | | BoxHurtHisEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ExpRound,
|
| | | self.Exp,
|
| | | self.ExpPoint
|
| | | self.BuZhenState,
|
| | | self.AtkCount,
|
| | | self.ItemAddCount,
|
| | | self.Anger,
|
| | | self.BoxUnGetCount,
|
| | | self.BoxHurt,
|
| | | self.BoxHurtEx,
|
| | | self.BoxHurtHis,
|
| | | self.BoxHurtHisEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
|
| | | m_NAtagSCFamilyTaofaInfo=tagSCFamilyTaofaInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaInfo.Cmd,m_NAtagSCFamilyTaofaInfo.SubCmd))] = m_NAtagSCFamilyTaofaInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCFamilyZhenbaogeInfo=tagMCFamilyZhenbaogeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenbaogeInfo.Cmd,m_NAtagMCFamilyZhenbaogeInfo.SubCmd))] = m_NAtagMCFamilyZhenbaogeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
|
| | |
|
| | | class tagMCFamilyZhenfa(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ZhenfaType", c_ubyte), # 阵法类型
|
| | | ("ZhenfaLV", c_ushort), # 阵法等级
|
| | | ("ZhenfaExp", 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.ZhenfaType = 0
|
| | | self.ZhenfaLV = 0
|
| | | self.ZhenfaExp = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyZhenfa)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo:
|
| | | ZhenfaType:%d,
|
| | | ZhenfaLV:%d,
|
| | | ZhenfaExp:%d
|
| | | '''\
|
| | | %(
|
| | | self.ZhenfaType,
|
| | | self.ZhenfaLV,
|
| | | self.ZhenfaExp
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFamilyZhenfaInfo(Structure):
|
| | | Head = tagHead()
|
| | | PlayerID = 0 #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包
|
| | | Count = 0 #(BYTE Count)
|
| | | ZhenfaInfoList = list() #(vector<tagMCFamilyZhenfa> ZhenfaInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x09
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temZhenfaInfoList = tagMCFamilyZhenfa()
|
| | | _pos = temZhenfaInfoList.ReadData(_lpData, _pos)
|
| | | self.ZhenfaInfoList.append(temZhenfaInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x09
|
| | | self.PlayerID = 0
|
| | | self.Count = 0
|
| | | self.ZhenfaInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ZhenfaInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PlayerID:%d,
|
| | | Count:%d,
|
| | | ZhenfaInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PlayerID,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | Face = 0 #(DWORD Face)
|
| | | FacePic = 0 #(DWORD FacePic)
|
| | | ModelMark = 0 #(DWORD ModelMark)//变形模型mark
|
| | | EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//其他外观信息
|
| | | TitleID = 0 #(DWORD TitleID)//佩戴的称号
|
| | | ServerID = 0 #(DWORD ServerID)
|
| | | FightPower = 0 #(DWORD FightPower)
|
| | |
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | |
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.ModelMark = 0
|
| | | self.EquipShowSwitch = 0
|
| | | self.TitleID = 0
|
| | | self.ServerID = 0
|
| | | self.FightPower = 0
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 4
|
| | | length += 3
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.ModelMark)
|
| | | data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
|
| | | data = CommFunc.WriteDWORD(data, self.TitleID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | |
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | ModelMark:%d,
|
| | | EquipShowSwitch:%d,
|
| | | TitleID:%d,
|
| | | ServerID:%d,
|
| | | FightPower:%d,
|
| | |
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.ModelMark,
|
| | | self.EquipShowSwitch,
|
| | | self.TitleID,
|
| | | self.ServerID,
|
| | | self.FightPower,
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 11 商店购买结果 #tagMCShoppingResult
|
| | |
|
| | | class tagMCShoppingResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_int), |
| | | ("ItemCnt", c_int), #购买数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA8
|
| | | 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 = 0xA8
|
| | | self.SubCmd = 0x11
|
| | | self.ItemIndex = 0
|
| | | self.ItemCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShoppingResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 11 商店购买结果 //tagMCShoppingResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d,
|
| | | ItemCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex,
|
| | | self.ItemCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShoppingResult=tagMCShoppingResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
|
| | |
|
| | | class tagMCMysticalShopGoods(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GoodsID", c_int), # 商品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.GoodsID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCMysticalShopGoods)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
|
| | | GoodsID:%d
|
| | | '''\
|
| | | %(
|
| | | self.GoodsID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCMysticalShopInfo(Structure):
|
| | | Head = tagHead()
|
| | | RefreshCnt = 0 #(WORD RefreshCnt)// 刷新次数
|
| | | Count = 0 #(BYTE Count)// 商品数
|
| | | GoodsList = list() #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temGoodsList = tagMCMysticalShopGoods()
|
| | | _pos = temGoodsList.ReadData(_lpData, _pos)
|
| | | self.GoodsList.append(temGoodsList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x16
|
| | | self.RefreshCnt = 0
|
| | | self.Count = 0
|
| | | self.GoodsList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.GoodsList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.RefreshCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RefreshCnt:%d,
|
| | | Count:%d,
|
| | | GoodsList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RefreshCnt,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
|
| | |
|
| | | class tagMCMysticalShopTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GoodsID", c_int), # 商品ID
|
| | | ("StartTime", 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.GoodsID = 0
|
| | | self.StartTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCMysticalShopTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 06 通知神秘限购商品时间 //tagMCMysticalShopTimeInfo:
|
| | | GoodsID:%d,
|
| | | StartTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.GoodsID,
|
| | | self.StartTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCMysticalShopTimeInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)// 商品数
|
| | | ShopTimeList = list() #(vector<tagMCMysticalShopTime> ShopTimeList)// 商品开卖信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temShopTimeList = tagMCMysticalShopTime()
|
| | | _pos = temShopTimeList.ReadData(_lpData, _pos)
|
| | | self.ShopTimeList.append(temShopTimeList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x06
|
| | | self.Count = 0
|
| | | self.ShopTimeList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ShopTimeList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ShopTimeList[i].GetLength(), self.ShopTimeList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ShopTimeList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCMysticalShopTimeInfo=tagMCMysticalShopTimeInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopTimeInfo.Head.Cmd,m_NAtagMCMysticalShopTimeInfo.Head.SubCmd))] = m_NAtagMCMysticalShopTimeInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 10 通知获得物品 #tagMCNotifyUseItemGetItem
|
| | |
|
| | | class tagMCNotifyUseItemGetItem(Structure):
|
| | | Head = tagHead()
|
| | | UseItemID = 0 #(DWORD UseItemID)// 使用的物品ID
|
| | | UseCount = 0 #(WORD UseCount)// 使用物品个数
|
| | | GetItemLen = 0 #(WORD GetItemLen)
|
| | | GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...] |
| | | MoneyType = 0 #(BYTE MoneyType)// 获得货币类型
|
| | | MoneyCount = 0 #(DWORD MoneyCount)// 获得货币数量
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.UseCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x10
|
| | | self.UseItemID = 0
|
| | | self.UseCount = 0
|
| | | self.GetItemLen = 0
|
| | | self.GetItemData = ""
|
| | | self.MoneyType = 0
|
| | | self.MoneyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += 2
|
| | | length += len(self.GetItemData)
|
| | | 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.UseItemID)
|
| | | data = CommFunc.WriteWORD(data, self.UseCount)
|
| | | data = CommFunc.WriteWORD(data, self.GetItemLen)
|
| | | data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | UseItemID:%d,
|
| | | UseCount:%d,
|
| | | GetItemLen:%d,
|
| | | GetItemData:%s,
|
| | | MoneyType:%d,
|
| | | MoneyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.UseItemID,
|
| | | self.UseCount,
|
| | | self.GetItemLen,
|
| | | self.GetItemData,
|
| | | self.MoneyType,
|
| | | self.MoneyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 17 宠物培养信息 #tagMCPetTrainInfo
|
| | |
|
| | | class tagMCPetTrainInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
|
| | | # A8 02 商店物品已购买次数 #tagSCShopItemBuyCntInfo
|
| | |
|
| | | class tagMCShopItemDayBuyCnt(Structure):
|
| | | class tagSCShopItemBuyCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemIndex", c_int), |
| | | ("BuyCnt", c_int), # 今日已购买次数
|
| | | ("IsReset", c_ubyte), #是否重置
|
| | | ("ShopID", c_int), # 商品ID
|
| | | ("BuyCnt", c_int), # 已购买次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemIndex = 0
|
| | | self.ShopID = 0
|
| | | self.BuyCnt = 0
|
| | | self.IsReset = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShopItemDayBuyCnt)
|
| | | return sizeof(tagSCShopItemBuyCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 02 通知NPC商店物品今日已购买次数 //tagMCShopItemDayBuyCntInfo:
|
| | | ItemIndex:%d,
|
| | | BuyCnt:%d,
|
| | | IsReset:%d
|
| | | DumpString = '''// A8 02 商店物品已购买次数 //tagSCShopItemBuyCntInfo:
|
| | | ShopID:%d,
|
| | | BuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemIndex,
|
| | | self.BuyCnt,
|
| | | self.IsReset
|
| | | self.ShopID,
|
| | | self.BuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShopItemDayBuyCntInfo(Structure):
|
| | | class tagSCShopItemBuyCntInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)//通知个数,注意不限制每日购买次数的默认不通知
|
| | | DayBuyCntList = list() #(vector<tagMCShopItemDayBuyCnt> DayBuyCntList)
|
| | | Count = 0 #(WORD Count)
|
| | | BuyCntList = list() #(vector<tagSCShopItemBuyCnt> BuyCntList)//仅通知有限购次数的商品
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temDayBuyCntList = tagMCShopItemDayBuyCnt()
|
| | | _pos = temDayBuyCntList.ReadData(_lpData, _pos)
|
| | | self.DayBuyCntList.append(temDayBuyCntList)
|
| | | temBuyCntList = tagSCShopItemBuyCnt()
|
| | | _pos = temBuyCntList.ReadData(_lpData, _pos)
|
| | | self.BuyCntList.append(temBuyCntList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x02
|
| | | self.Count = 0
|
| | | self.DayBuyCntList = list()
|
| | | self.BuyCntList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.DayBuyCntList[i].GetLength()
|
| | | length += self.BuyCntList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.DayBuyCntList[i].GetLength(), self.DayBuyCntList[i].GetBuffer())
|
| | | data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DayBuyCntList:%s
|
| | | BuyCntList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
|
| | | m_NAtagSCShopItemBuyCntInfo=tagSCShopItemBuyCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopItemBuyCntInfo.Head.Cmd,m_NAtagSCShopItemBuyCntInfo.Head.SubCmd))] = m_NAtagSCShopItemBuyCntInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 03 商店刷新解锁的商品信息 #tagSCShopRefreshItemInfo
|
| | |
|
| | | class tagSCShopRefreshItemInfo(Structure):
|
| | | Head = tagHead()
|
| | | ShopType = 0 #(WORD ShopType)// 商店类型
|
| | | RefreshCnt = 0 #(BYTE RefreshCnt)// 今日已刷新次数
|
| | | Count = 0 #(BYTE Count)
|
| | | ShopIDList = list() #(vector<DWORD> ShopIDList)// 对应刷新出来的商店表商品ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RefreshCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ShopIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | self.ShopType = 0
|
| | | self.RefreshCnt = 0
|
| | | self.Count = 0
|
| | | self.ShopIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.Count
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.ShopType)
|
| | | data = CommFunc.WriteBYTE(data, self.RefreshCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ShopIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ShopType:%d,
|
| | | RefreshCnt:%d,
|
| | | Count:%d,
|
| | | ShopIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ShopType,
|
| | | self.RefreshCnt,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCShopRefreshItemInfo=tagSCShopRefreshItemInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopRefreshItemInfo.Head.Cmd,m_NAtagSCShopRefreshItemInfo.Head.SubCmd))] = m_NAtagSCShopRefreshItemInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | class tagSCArenaMatchInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)//目标玩家ID
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | LV = 0 #(WORD LV)// 玩家等级
|
| | | RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
|
| | | FightPower = 0 #(DWORD FightPower)//战力求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分
|
| | |
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | |
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | |
| | | length += 4
|
| | | length += 33
|
| | | length += 2
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | |
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | |
| | | %(
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Score", c_int), #当前积分
|
| | | ("WinCnt", c_int), #累计胜利次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x23
|
| | | self.Score = 0
|
| | | self.WinCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A9 23 演武场玩家信息 //tagSCArenaPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Score:%d
|
| | | Score:%d,
|
| | | WinCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Score
|
| | | self.Score,
|
| | | self.WinCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A7 通知可抢的红包信息 #tagGCGrabRedPacketInfo
|
| | |
|
| | | class tagGCGrabRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | RedPacketCnt = 0 #(DWORD RedPacketCnt)//可抢红包个数
|
| | | StrLen = 0 #(WORD StrLen)//字符串长度
|
| | | OwnerName = "" #(String OwnerName)//红包主人名字
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//可抢红包ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA7
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RedPacketCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA7
|
| | | self.RedPacketCnt = 0
|
| | | self.StrLen = 0
|
| | | self.OwnerName = ""
|
| | | self.RedPacketID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.OwnerName)
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketCnt)
|
| | | data = CommFunc.WriteWORD(data, self.StrLen)
|
| | | data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RedPacketCnt:%d,
|
| | | StrLen:%d,
|
| | | OwnerName:%s,
|
| | | RedPacketID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RedPacketCnt,
|
| | | self.StrLen,
|
| | | self.OwnerName,
|
| | | self.RedPacketID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGrabRedPacketInfo=tagGCGrabRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketInfo.Head.Cmd,m_NAtagGCGrabRedPacketInfo.Head.SubCmd))] = m_NAtagGCGrabRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A6 通知抢红包结果 #tagGCGrabRedPacketResult
|
| | |
|
| | | class tagGCGrabRedPacketResult(Structure):
|
| | | Head = tagHead()
|
| | | StrLen = 0 #(WORD StrLen)//字符串长度
|
| | | OwnerName = "" #(String OwnerName)//红包主人名字
|
| | | TotalMoney = 0 #(DWORD TotalMoney)//红包总额
|
| | | DataSize = 0 #(DWORD DataSize)
|
| | | GrabInfo = "" #(String GrabInfo)//抢红包具体结果
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA6
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
|
| | | self.TotalMoney,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GrabInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA6
|
| | | self.StrLen = 0
|
| | | self.OwnerName = ""
|
| | | self.TotalMoney = 0
|
| | | self.DataSize = 0
|
| | | self.GrabInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += len(self.OwnerName)
|
| | | length += 4
|
| | | length += 4
|
| | | length += len(self.GrabInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.StrLen)
|
| | | data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalMoney)
|
| | | data = CommFunc.WriteDWORD(data, self.DataSize)
|
| | | data = CommFunc.WriteString(data, self.DataSize, self.GrabInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StrLen:%d,
|
| | | OwnerName:%s,
|
| | | TotalMoney:%d,
|
| | | DataSize:%d,
|
| | | GrabInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StrLen,
|
| | | self.OwnerName,
|
| | | self.TotalMoney,
|
| | | self.DataSize,
|
| | | self.GrabInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGrabRedPacketResult=tagGCGrabRedPacketResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketResult.Head.Cmd,m_NAtagGCGrabRedPacketResult.Head.SubCmd))] = m_NAtagGCGrabRedPacketResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
|
| | |
|
| | | class tagGCNotifyEquipClassEquip(Structure):
|
| | |
| | |
|
| | | m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
|
| | |
|
| | | class tagGCOpenServerCampaignAwardCount(Structure):
|
| | | Head = tagHead()
|
| | | CampaignType = 0 #(BYTE CampaignType)//奖励类型
|
| | | AwardTypeCount = 0 #(BYTE AwardTypeCount)//奖品种类数量
|
| | | GotCountList = list() #(vector<DWORD> GotCountList)//奖品已领取数量列表,根据种类索引依次
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.CampaignType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardTypeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.GotCountList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x03
|
| | | self.CampaignType = 0
|
| | | self.AwardTypeCount = 0
|
| | | self.GotCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.AwardTypeCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.CampaignType)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardTypeCount)
|
| | | for i in range(self.AwardTypeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.GotCountList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | CampaignType:%d,
|
| | | AwardTypeCount:%d,
|
| | | GotCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.CampaignType,
|
| | | self.AwardTypeCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCOpenServerCampaignAwardCount=tagGCOpenServerCampaignAwardCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCOpenServerCampaignAwardCount.Head.Cmd,m_NAtagGCOpenServerCampaignAwardCount.Head.SubCmd))] = m_NAtagGCOpenServerCampaignAwardCount
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
|
| | |
|
| | | class tagMCDayFreeGoldGiftState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x24
|
| | | 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 = 0x24
|
| | | self.DayFreeGoldGiftState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCDayFreeGoldGiftState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayFreeGoldGiftState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayFreeGoldGiftState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
|
| | |
|
| | | class tagMCFeastLoginDayAwardItem(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 46 节日游历活动信息 #tagMCFeastTravelInfo
|
| | |
|
| | | class tagMCFeastTravelAwardItem(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(tagMCFeastTravelAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
|
| | | NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
|
| | | AwardCountMax = 0 #(WORD AwardCountMax)//最大可领取次数,0代表不限
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> 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.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCFeastTravelAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedTravelPoint = 0
|
| | | self.AwardCountMax = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | 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.WriteWORD(data, self.NeedTravelPoint)
|
| | | data = CommFunc.WriteWORD(data, self.AwardCountMax)
|
| | | 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,
|
| | | NeedTravelPoint:%d,
|
| | | AwardCountMax:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedTravelPoint,
|
| | | self.AwardCountMax,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("FinishNeedValue", c_ushort), #单次完成所需进度
|
| | | ("FinishTimeMax", c_ushort), #最大可完成次数,0代表不限
|
| | | ("AddTravelPoint", 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.TravelTaskID = 0
|
| | | self.FinishNeedValue = 0
|
| | | self.FinishTimeMax = 0
|
| | | self.AddTravelPoint = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | TravelTaskID:%d,
|
| | | FinishNeedValue:%d,
|
| | | FinishTimeMax:%d,
|
| | | AddTravelPoint:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.FinishNeedValue,
|
| | | self.FinishTimeMax,
|
| | | self.AddTravelPoint
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
|
| | | TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
|
| | | TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
|
| | | TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelTaskCount):
|
| | | temTravelTaskList = tagMCFeastTravelTask()
|
| | | _pos = temTravelTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelTaskList.append(temTravelTaskList)
|
| | | self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelAwardCount):
|
| | | temTravelAwardList = tagMCFeastTravelAward()
|
| | | _pos = temTravelAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelAwardList.append(temTravelAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.TravelTaskCount = 0
|
| | | self.TravelTaskList = list()
|
| | | self.TravelAwardCount = 0
|
| | | self.TravelAwardList = 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.TravelTaskCount):
|
| | | length += self.TravelTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelAwardCount):
|
| | | length += self.TravelAwardList[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.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
|
| | | for i in range(self.TravelTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
|
| | | for i in range(self.TravelAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | TravelTaskCount:%d,
|
| | | TravelTaskList:%s,
|
| | | TravelAwardCount:%d,
|
| | | TravelAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.TravelTaskCount,
|
| | | "...",
|
| | | self.TravelAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
|
| | |
|
| | | class tagMCFeastTravelPlayerAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("AwardIndex", c_ubyte), #游历奖励索引
|
| | | ("GetAwardCount", c_int), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
|
| | | ]
|
| | |
|
| | | 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.AwardIndex = 0
|
| | | self.GetAwardCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | AwardIndex:%d,
|
| | | GetAwardCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.GetAwardCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("TravelValue", c_int), #当前进度值,一直累加
|
| | | ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TravelTaskID = 0
|
| | | self.TravelValue = 0
|
| | | self.FinishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | TravelTaskID:%d,
|
| | | TravelValue:%d,
|
| | | FinishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.TravelValue,
|
| | | self.FinishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
|
| | | TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
|
| | | TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
|
| | | _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
|
| | | self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
|
| | | _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | self.TravelPoint = 0
|
| | | self.TravelPlayerTaskCount = 0
|
| | | self.TravelPlayerTaskList = list()
|
| | | self.TravelPlayerAwardCount = 0
|
| | | self.TravelPlayerAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | length += self.TravelPlayerTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | length += self.TravelPlayerAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TravelPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TravelPoint:%d,
|
| | | TravelPlayerTaskCount:%d,
|
| | | TravelPlayerTaskList:%s,
|
| | | TravelPlayerAwardCount:%d,
|
| | | TravelPlayerAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TravelPoint,
|
| | | self.TravelPlayerTaskCount,
|
| | | "...",
|
| | | self.TravelPlayerAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
|
| | |
|
| | | class tagMCOnlineRechargeTH(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardState", c_ubyte), #是否已领取奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0x04
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOnlineRechargeTH)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
|
| | |
|
| | | class tagMCRechargePrizeInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
|
| | | # AB 05 开服庆典信息 #tagSCOSACelebrationInfo
|
| | |
|
| | | class tagMCBossFirstKillState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NPCID", c_int), |
| | | ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
|
| | | ]
|
| | |
|
| | | 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.NPCID = 0
|
| | | self.FKState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCBossFirstKillState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
|
| | | NPCID:%d,
|
| | | FKState:%d
|
| | | '''\
|
| | | %(
|
| | | self.NPCID,
|
| | | self.FKState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossFirstKillStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | BossCount = 0 #(BYTE BossCount)
|
| | | FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BossCount):
|
| | | temFirstKillStateList = tagMCBossFirstKillState()
|
| | | _pos = temFirstKillStateList.ReadData(_lpData, _pos)
|
| | | self.FirstKillStateList.append(temFirstKillStateList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | self.BossCount = 0
|
| | | self.FirstKillStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BossCount):
|
| | | length += self.FirstKillStateList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BossCount)
|
| | | for i in range(self.BossCount):
|
| | | data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BossCount:%d,
|
| | | FirstKillStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BossCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
|
| | |
|
| | | class tagMCBossRebornData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActID", c_ubyte), #活动ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ("GotTimes", c_ushort), #已领取次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ActID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCBossRebornData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
|
| | | ActID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//活动个数
|
| | | DataList = list() #(vector<tagMCBossRebornData> DataList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x03
|
| | | 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):
|
| | | temDataList = tagMCBossRebornData()
|
| | | _pos = temDataList.ReadData(_lpData, _pos)
|
| | | self.DataList.append(temDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x03
|
| | | self.Count = 0
|
| | | self.DataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.DataList[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.DataList[i].GetLength(), self.DataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 04 Boss复活活动信息 #tagMCBossRebornInfo
|
| | |
|
| | | class tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornTaskInfo(Structure):
|
| | | TaskID = 0 #(BYTE TaskID)// id
|
| | | TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
|
| | | SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItem = tagMCBossRebornAwardItem()
|
| | | _pos = temAwardItem.ReadData(_lpData, _pos)
|
| | | self.AwardItem.append(temAwardItem)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TaskID = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItem = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItem[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.TaskID)
|
| | | data = CommFunc.WriteBYTE(data, self.TotalTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.SingleTimes)
|
| | | 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 = '''
|
| | | TaskID:%d,
|
| | | TotalTimes:%d,
|
| | | SingleTimes:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItem:%s
|
| | | '''\
|
| | | %(
|
| | | self.TaskID,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | TaskCnt = 0 #(BYTE TaskCnt)
|
| | | TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x04
|
| | | 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCnt):
|
| | | temTaskInfo = tagMCBossRebornTaskInfo()
|
| | | _pos = temTaskInfo.ReadData(_lpData, _pos)
|
| | | self.TaskInfo.append(temTaskInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x04
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TaskCnt = 0
|
| | | self.TaskInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.TaskCnt):
|
| | | length += self.TaskInfo[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.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.TaskCnt)
|
| | | for i in range(self.TaskCnt):
|
| | | data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TaskCnt:%d,
|
| | | TaskInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TaskCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 25 节日红包信息 #tagMCFeastRedPackInfo
|
| | |
|
| | | class tagMCFeastRedPackInfo(Structure):
|
| | | class tagSCOSACelebrationInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MoneyNum", c_int), # 累积抢到多少钱
|
| | | ("GrabCnt", c_ushort), # 已抢红包次数
|
| | | ("PointTotal", c_int), # 累计庆典积分
|
| | | ("PointAward", c_int), # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x25
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x25
|
| | | self.MoneyNum = 0
|
| | | self.GrabCnt = 0
|
| | | self.SubCmd = 0x05
|
| | | self.PointTotal = 0
|
| | | self.PointAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastRedPackInfo)
|
| | | return sizeof(tagSCOSACelebrationInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
|
| | | DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MoneyNum:%d,
|
| | | GrabCnt:%d
|
| | | PointTotal:%d,
|
| | | PointAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MoneyNum,
|
| | | self.GrabCnt
|
| | | self.PointTotal,
|
| | | self.PointAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
|
| | |
|
| | | class tagMCOpenServerCampaignAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("CampaignType", c_ubyte), #奖励类型
|
| | | ("BillAwardRecord", c_ubyte), #排行奖励是否已领取
|
| | | ("TagAwardRecord", c_int), #目标奖励索引位领取记录:0-未领;1-已领
|
| | | ("RecordData", c_int), #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
|
| | | ("RecordDataEx", c_int), #活动时的记录值,整除亿部分,1代表1亿
|
| | | ]
|
| | |
|
| | | 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.CampaignType = 0
|
| | | self.BillAwardRecord = 0
|
| | | self.TagAwardRecord = 0
|
| | | self.RecordData = 0
|
| | | self.RecordDataEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOpenServerCampaignAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 17 开服活动奖励状态 //tagMCOpenServerCampaignAwardList:
|
| | | CampaignType:%d,
|
| | | BillAwardRecord:%d,
|
| | | TagAwardRecord:%d,
|
| | | RecordData:%d,
|
| | | RecordDataEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.CampaignType,
|
| | | self.BillAwardRecord,
|
| | | self.TagAwardRecord,
|
| | | self.RecordData,
|
| | | self.RecordDataEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCOpenServerCampaignAwardList(Structure):
|
| | | Head = tagHead()
|
| | | OSCAwardCnt = 0 #(BYTE OSCAwardCnt)//奖励类型数
|
| | | OSCAwardList = list() #(vector<tagMCOpenServerCampaignAward> OSCAwardList)// 奖励状态列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.OSCAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.OSCAwardCnt):
|
| | | temOSCAwardList = tagMCOpenServerCampaignAward()
|
| | | _pos = temOSCAwardList.ReadData(_lpData, _pos)
|
| | | self.OSCAwardList.append(temOSCAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x17
|
| | | self.OSCAwardCnt = 0
|
| | | self.OSCAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.OSCAwardCnt):
|
| | | length += self.OSCAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.OSCAwardCnt)
|
| | | for i in range(self.OSCAwardCnt):
|
| | | data = CommFunc.WriteString(data, self.OSCAwardList[i].GetLength(), self.OSCAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | OSCAwardCnt:%d,
|
| | | OSCAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.OSCAwardCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 24 开服红包信息 #tagMCOpenServerRedPacketInfo
|
| | |
|
| | | class tagMCOpenServerRedPacketInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MoneyNum", c_int), # 累积抢到多少钱
|
| | | ("GrabCnt", c_ushort), # 已抢红包次数
|
| | | ("StartTime", c_int), # 开始倒计时时间
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x24
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x24
|
| | | self.MoneyNum = 0
|
| | | self.GrabCnt = 0
|
| | | self.StartTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOpenServerRedPacketInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 24 开服红包信息 //tagMCOpenServerRedPacketInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MoneyNum:%d,
|
| | | GrabCnt:%d,
|
| | | StartTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MoneyNum,
|
| | | self.GrabCnt,
|
| | | self.StartTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOpenServerRedPacketInfo=tagMCOpenServerRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerRedPacketInfo.Cmd,m_NAtagMCOpenServerRedPacketInfo.SubCmd))] = m_NAtagMCOpenServerRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 19 炼制奖励信息 #tagMCRefineGiftInfo
|
| | |
|
| | | class tagMCRefineGiftInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ExpRefineStartTime", c_int), # 经验炼制活动开始时间
|
| | | ("MoneyRefineStartTime", c_int), # 金币炼制活动开始时间
|
| | | ("ExpRefineCnt", c_ubyte), # 经验已炼制次数
|
| | | ("MoneyRefineCnt", c_ubyte), # 金币已炼制次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x19
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x19
|
| | | self.ExpRefineStartTime = 0
|
| | | self.MoneyRefineStartTime = 0
|
| | | self.ExpRefineCnt = 0
|
| | | self.MoneyRefineCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRefineGiftInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ExpRefineStartTime:%d,
|
| | | MoneyRefineStartTime:%d,
|
| | | ExpRefineCnt:%d,
|
| | | MoneyRefineCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ExpRefineStartTime,
|
| | | self.MoneyRefineStartTime,
|
| | | self.ExpRefineCnt,
|
| | | self.MoneyRefineCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 08 boss复活点数通知 #tagGCBossRebornPoint
|
| | |
|
| | | class tagGCBossRebornPoint(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Point", c_int), # 复活点数
|
| | | ("TotalPoint", c_int), # 复活总点数
|
| | | ("RebornCnt", c_ushort), # 今日已复活次数
|
| | | ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAC
|
| | | 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 = 0xAC
|
| | | self.SubCmd = 0x08
|
| | | self.Point = 0
|
| | | self.TotalPoint = 0
|
| | | self.RebornCnt = 0
|
| | | self.TotalRebornCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCBossRebornPoint)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Point:%d,
|
| | | TotalPoint:%d,
|
| | | RebornCnt:%d,
|
| | | TotalRebornCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Point,
|
| | | self.TotalPoint,
|
| | | self.RebornCnt,
|
| | | self.TotalRebornCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
|
| | | m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
|
| | |
|
| | | class tagGCFeastRedPacketDay(Structure):
|
| | | RedPacketCount = 0 #(BYTE RedPacketCount)
|
| | | RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RedPacketCount):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.RedPacketIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketCount = 0
|
| | | self.RedPacketIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.RedPacketCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.RedPacketCount)
|
| | | for i in range(self.RedPacketCount):
|
| | | data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketCount:%d,
|
| | | RedPacketIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFeastRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
|
| | | RedPacketDays = 0 #(BYTE RedPacketDays)
|
| | | RedPacketDayList = list() #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x11
|
| | | 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RedPacketDays):
|
| | | temRedPacketDayList = tagGCFeastRedPacketDay()
|
| | | _pos = temRedPacketDayList.ReadData(_lpData, _pos)
|
| | | self.RedPacketDayList.append(temRedPacketDayList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x11
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.RedPacketDays = 0
|
| | | self.RedPacketDayList = 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.RedPacketDays):
|
| | | length += self.RedPacketDayList[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.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.RedPacketDays)
|
| | | for i in range(self.RedPacketDays):
|
| | | data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | RedPacketDays:%d,
|
| | | RedPacketDayList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.RedPacketDays,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
|
| | |
|
| | | class tagGCMultiExpRateTime(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 05 红包删除 #tagGCRedPacketDel
|
| | |
|
| | | class tagGCRedPacketDel(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(DWORD Cnt)// 个数
|
| | | DelRedPacketID = list() #(vector<DWORD> DelRedPacketID)// 红包ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.DelRedPacketID.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cnt = 0
|
| | | self.DelRedPacketID = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4 * self.Cnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteDWORD(data, self.DelRedPacketID[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | DelRedPacketID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCRedPacketDel=tagGCRedPacketDel()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRedPacketDel.Head.Cmd,m_NAtagGCRedPacketDel.Head.SubCmd))] = m_NAtagGCRedPacketDel
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AF 02 合服活动奖励状态 #tagMCMixCampaignAwardRecord
|
| | |
|
| | | class tagMCMixCampaignAwardRecord(Structure):
|
| | |
| | |
|
| | | m_NAtagMCMixLoginDayAwardState=tagMCMixLoginDayAwardState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMixLoginDayAwardState.Cmd,m_NAtagMCMixLoginDayAwardState.SubCmd))] = m_NAtagMCMixLoginDayAwardState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 27 活跃放置信息 #tagMCActivityPlaceInfo
|
| | |
|
| | | class tagMCActivityPlaceInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
|
| | | PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数
|
| | | RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数
|
| | | RewardLen = 0 #(BYTE RewardLen)
|
| | | RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
|
| | | TodayExp = 0 #(DWORD TodayExp)
|
| | | TodayExpPoint = 0 #(DWORD TodayExpPoint)
|
| | | YestordayExp = 0 #(DWORD YestordayExp)
|
| | | YestordayExpPoint = 0 #(DWORD YestordayExpPoint)
|
| | | TotalCount = 0 #(DWORD TotalCount)// 累计活跃放置次数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x27
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
|
| | | self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x27
|
| | | self.StartTime = 0
|
| | | self.PlaceCount = 0
|
| | | self.RewardCount = 0
|
| | | self.RewardLen = 0
|
| | | self.RewardInfo = ""
|
| | | self.TodayExp = 0
|
| | | self.TodayExpPoint = 0
|
| | | self.YestordayExp = 0
|
| | | self.YestordayExpPoint = 0
|
| | | self.TotalCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.RewardInfo)
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.StartTime)
|
| | | data = CommFunc.WriteBYTE(data, self.PlaceCount)
|
| | | data = CommFunc.WriteBYTE(data, self.RewardCount)
|
| | | data = CommFunc.WriteBYTE(data, self.RewardLen)
|
| | | data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
|
| | | data = CommFunc.WriteDWORD(data, self.TodayExp)
|
| | | data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.YestordayExp)
|
| | | data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartTime:%d,
|
| | | PlaceCount:%d,
|
| | | RewardCount:%d,
|
| | | RewardLen:%d,
|
| | | RewardInfo:%s,
|
| | | TodayExp:%d,
|
| | | TodayExpPoint:%d,
|
| | | YestordayExp:%d,
|
| | | YestordayExpPoint:%d,
|
| | | TotalCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartTime,
|
| | | self.PlaceCount,
|
| | | self.RewardCount,
|
| | | self.RewardLen,
|
| | | self.RewardInfo,
|
| | | self.TodayExp,
|
| | | self.TodayExpPoint,
|
| | | self.YestordayExp,
|
| | | self.YestordayExpPoint,
|
| | | self.TotalCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 01 新增协助 #tagGCAssistInfoList
|
| | |
|
| | | class tagGCAssistInfo(Structure):
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)//等级
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AssistGUID = ""
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 40
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AssistGUID:%s,
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s
|
| | | '''\
|
| | | %(
|
| | | self.AssistGUID,
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCAssistInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x01
|
| | | 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):
|
| | | temAssistInfoList = tagGCAssistInfo()
|
| | | _pos = temAssistInfoList.ReadData(_lpData, _pos)
|
| | | self.AssistInfoList.append(temAssistInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x01
|
| | | self.Count = 0
|
| | | self.AssistInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AssistInfoList[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.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | AssistInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistInfoList=tagGCAssistInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 03 正在进行中的协助 #tagGCAssistingInfo
|
| | |
|
| | | class tagGCAssistingInfo(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x03
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistingInfo=tagGCAssistingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 08 协助结束 #tagGCAssistOver
|
| | |
|
| | | class tagGCAssistOver(Structure):
|
| | | Head = tagHead()
|
| | | IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因
|
| | | ReasonLen = 0 #(BYTE ReasonLen)
|
| | | Reason = "" #(String Reason)//原因
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x08
|
| | | self.IsTagPlayerReason = 0
|
| | | self.ReasonLen = 0
|
| | | self.Reason = ""
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.Reason)
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
|
| | | data = CommFunc.WriteBYTE(data, self.ReasonLen)
|
| | | data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsTagPlayerReason:%d,
|
| | | ReasonLen:%d,
|
| | | Reason:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsTagPlayerReason,
|
| | | self.ReasonLen,
|
| | | self.Reason,
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistOver=tagGCAssistOver()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
|
| | |
|
| | | class tagGCCanGetAssistThanksGiftCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CanGetCount", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x06
|
| | | self.CanGetCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCanGetAssistThanksGiftCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CanGetCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CanGetCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 02 删除协助 #tagGCClearAssist
|
| | |
|
| | | class tagGCClearAssist(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x02
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCClearAssist=tagGCClearAssist()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
|
| | |
|
| | | class tagFamilyArrestAwardReceiveState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ReceiveState", c_int), #悬赏任务奖励领取情况
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x25
|
| | | self.ReceiveState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagFamilyArrestAwardReceiveState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B0 25 家族悬赏任务奖励领取情况 //tagFamilyArrestAwardReceiveState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ReceiveState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ReceiveState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagFamilyArrestAwardReceiveState=tagFamilyArrestAwardReceiveState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestAwardReceiveState.Cmd,m_NAtagFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagFamilyArrestAwardReceiveState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
|
| | |
|
| | | class tagFamilyArrestOverState(Structure):
|
| | | ID = 0 #(DWORD ID)//悬赏任务ID
|
| | | NameLen = 0 #(WORD NameLen)//名字长度
|
| | | Name = "" #(String Name)//size = NameLen
|
| | | OverState = 0 #(DWORD OverState)//任务完成情况
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.OverState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.OverState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ID)
|
| | | data = CommFunc.WriteWORD(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.OverState)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | OverState:%d
|
| | | '''\
|
| | | %(
|
| | | self.ID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.OverState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagFamilyArrestOverStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x26
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temArrestOverStateInfo = tagFamilyArrestOverState()
|
| | | _pos = temArrestOverStateInfo.ReadData(_lpData, _pos)
|
| | | self.ArrestOverStateInfo.append(temArrestOverStateInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x26
|
| | | self.Count = 0
|
| | | self.ArrestOverStateInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ArrestOverStateInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ArrestOverStateInfo[i].GetLength(), self.ArrestOverStateInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ArrestOverStateInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
|
| | |
|
| | | class tagGCGetAssistThanksGiftPreview(Structure):
|
| | | Head = tagHead()
|
| | | ItemID = 0 #(DWORD ItemID)//礼盒ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//发起玩家ID
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
|
| | | ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.ItemID = 0
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | self.TimeStr = ""
|
| | | self.ExtraAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | | length += 19
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | data = CommFunc.WriteString(data, 19, self.TimeStr)
|
| | | data = CommFunc.WriteBYTE(data, self.ExtraAward)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemID:%d,
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s,
|
| | | TimeStr:%s,
|
| | | ExtraAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemID,
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData,
|
| | | self.TimeStr,
|
| | | self.ExtraAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
|
| | | # B0 40 游历信息 #tagSCTravelInfo
|
| | |
|
| | | class tagMCTodayAssistMoneyInfo(Structure):
|
| | | class tagSCTravelGrid(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成
|
| | | ("SocialMoney", c_ushort), #社交额外加成
|
| | | ("Row", c_ubyte), #行,从1开始
|
| | | ("Col", c_ubyte), #列,从1开始
|
| | | ("State", c_ubyte), #状态:0-未点击;1-已开启;2-裂纹
|
| | | ("Multi", c_ubyte), #奖励倍值: 默认1倍;2-双倍;...
|
| | | ("EventID", c_ushort), #事件ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x07
|
| | | self.TodayAssistMoney = 0
|
| | | self.SocialMoney = 0
|
| | | self.Row = 0
|
| | | self.Col = 0
|
| | | self.State = 0
|
| | | self.Multi = 0
|
| | | self.EventID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTodayAssistMoneyInfo)
|
| | | return sizeof(tagSCTravelGrid)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TodayAssistMoney:%d,
|
| | | SocialMoney:%d
|
| | | DumpString = '''// B0 40 游历信息 //tagSCTravelInfo:
|
| | | Row:%d,
|
| | | Col:%d,
|
| | | State:%d,
|
| | | Multi:%d,
|
| | | EventID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TodayAssistMoney,
|
| | | self.SocialMoney
|
| | | self.Row,
|
| | | self.Col,
|
| | | self.State,
|
| | | self.Multi,
|
| | | self.EventID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
|
| | |
|
| | | class tagGCAssistPlayerInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCUseAssistThanksGiftPreview(Structure):
|
| | | class tagSCTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | ItemID = 0 #(DWORD ItemID)//礼盒ID
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | AssistPlayerCount = 0 #(BYTE AssistPlayerCount)
|
| | | AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
|
| | | Energy = 0 #(BYTE Energy)//剩余体力
|
| | | EnergyTime = 0 #(DWORD EnergyTime)//上次恢复体力时间戳
|
| | | TravelCnt = 0 #(DWORD TravelCnt)//累计游历次数
|
| | | SceneryType = 0 #(BYTE SceneryType)//景观类型
|
| | | SceneryRow = 0 #(BYTE SceneryRow)//景观左上角所在行,从1开始
|
| | | SceneryCol = 0 #(BYTE SceneryCol)//景观左上角所在列,从1开始
|
| | | SceneryLVInfo = 0 #(DWORD SceneryLVInfo)//景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
|
| | | Result = 0 #(BYTE Result)//后端处理:0-无;1-常规;2-马车炸弹;3-传送门;4-景观;5-重置开始
|
| | | GridCnt = 0 #(BYTE GridCnt)
|
| | | GridList = list() #(vector<tagSCTravelGrid> GridList)//格子信息列表,只同步变化的
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.Head.SubCmd = 0x40
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AssistPlayerCount):
|
| | | temAssistPlayerList = tagGCAssistPlayerInfo()
|
| | | _pos = temAssistPlayerList.ReadData(_lpData, _pos)
|
| | | self.AssistPlayerList.append(temAssistPlayerList)
|
| | | self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryRow,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryCol,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryLVInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GridCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GridCnt):
|
| | | temGridList = tagSCTravelGrid()
|
| | | _pos = temGridList.ReadData(_lpData, _pos)
|
| | | self.GridList.append(temGridList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ItemID = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | self.AssistPlayerCount = 0
|
| | | self.AssistPlayerList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | | length += 1
|
| | | for i in range(self.AssistPlayerCount):
|
| | | length += self.AssistPlayerList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
|
| | | for i in range(self.AssistPlayerCount):
|
| | | data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemID:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s,
|
| | | AssistPlayerCount:%d,
|
| | | AssistPlayerList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemID,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData,
|
| | | self.AssistPlayerCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 20 膜拜信息列表 #tagGCWorshipInfoList
|
| | |
|
| | | class tagGCWorshipInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)// 目标玩家ID
|
| | | WorshipType = 0 #(BYTE WorshipType)// 膜拜类型
|
| | | WorshipValue = 0 #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | InfoLen = 0 #(WORD InfoLen)
|
| | | PlayerInfo = "" #(String PlayerInfo)// 玩家信息{k:v, ...}
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.InfoLen = 0
|
| | | self.PlayerInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.PlayerInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipType)
|
| | | data = CommFunc.WriteDWORD(data, self.WorshipValue)
|
| | | data = CommFunc.WriteWORD(data, self.InfoLen)
|
| | | data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | InfoLen:%d,
|
| | | PlayerInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.InfoLen,
|
| | | self.PlayerInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCWorshipInfoList(Structure):
|
| | | Head = tagHead()
|
| | | WorshipCount = 0 #(BYTE WorshipCount)
|
| | | WorshipInfoList = list() #(vector<tagGCWorshipInfo> WorshipInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WorshipCount):
|
| | | temWorshipInfoList = tagGCWorshipInfo()
|
| | | _pos = temWorshipInfoList.ReadData(_lpData, _pos)
|
| | | self.WorshipInfoList.append(temWorshipInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | self.WorshipCount = 0
|
| | | self.WorshipInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.WorshipCount):
|
| | | length += self.WorshipInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipCount)
|
| | | for i in range(self.WorshipCount):
|
| | | data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WorshipCount:%d,
|
| | | WorshipInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WorshipCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 21 膜拜结果 #tagGCWorshipResult
|
| | |
|
| | | class tagGCWorshipResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), # 目标玩家ID
|
| | | ("WorshipType", c_ubyte), # 膜拜类型
|
| | | ("WorshipValue", c_int), # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | ("Result", c_ubyte), # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
|
| | | ("MoneyType", c_ubyte), # 货币类型
|
| | | ("MoneyValue", c_int), # 货币奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.Head.SubCmd = 0x40
|
| | | self.Energy = 0
|
| | | self.EnergyTime = 0
|
| | | self.TravelCnt = 0
|
| | | self.SceneryType = 0
|
| | | self.SceneryRow = 0
|
| | | self.SceneryCol = 0
|
| | | self.SceneryLVInfo = 0
|
| | | self.Result = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.GridCnt = 0
|
| | | self.GridList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCWorshipResult)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.GridCnt):
|
| | | length += self.GridList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Energy)
|
| | | data = CommFunc.WriteDWORD(data, self.EnergyTime)
|
| | | data = CommFunc.WriteDWORD(data, self.TravelCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryType)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryRow)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryCol)
|
| | | data = CommFunc.WriteDWORD(data, self.SceneryLVInfo)
|
| | | data = CommFunc.WriteBYTE(data, self.Result)
|
| | | data = CommFunc.WriteBYTE(data, self.GridCnt)
|
| | | for i in range(self.GridCnt):
|
| | | data = CommFunc.WriteString(data, self.GridList[i].GetLength(), self.GridList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Energy:%d,
|
| | | EnergyTime:%d,
|
| | | TravelCnt:%d,
|
| | | SceneryType:%d,
|
| | | SceneryRow:%d,
|
| | | SceneryCol:%d,
|
| | | SceneryLVInfo:%d,
|
| | | Result:%d,
|
| | | GridCnt:%d,
|
| | | GridList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Energy,
|
| | | self.EnergyTime,
|
| | | self.TravelCnt,
|
| | | self.SceneryType,
|
| | | self.SceneryRow,
|
| | | self.SceneryCol,
|
| | | self.SceneryLVInfo,
|
| | | self.Result,
|
| | | self.GridCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCTravelInfo=tagSCTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 30 红颜信息 #tagSCBeautyInfo
|
| | |
|
| | | class tagSCBeautySkin(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("SkinID", c_ushort), #ʱװID
|
| | | ("State", c_ubyte), #是否已激活
|
| | | ("Used", c_ubyte), #是否已穿戴该时装,某个红颜的所有时装穿戴可能都为0,则前端取默认时装进行展示,如果有同步已穿戴的则以后端为准
|
| | | ("Star", c_ubyte), #时装星级,激活时为0星
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.SkinID = 0
|
| | | self.State = 0
|
| | | self.Used = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCBeautySkin)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | Result:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d
|
| | | DumpString = '''// B1 30 红颜信息 //tagSCBeautyInfo:
|
| | | SkinID:%d,
|
| | | State:%d,
|
| | | Used:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.Result,
|
| | | self.MoneyType,
|
| | | self.MoneyValue
|
| | | self.SkinID,
|
| | | self.State,
|
| | | self.Used,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipResult=tagGCWorshipResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
|
| | | class tagSCBeauty(Structure):
|
| | | BeautyID = 0 #(WORD BeautyID)//红颜ID
|
| | | State = 0 #(BYTE State)//是否已激活
|
| | | LV = 0 #(WORD LV)//红颜好感等级,激活时为0级
|
| | | Exp = 0 #(WORD Exp)//当前等级经验
|
| | | AwardLV = 0 #(WORD AwardLV)//已经领取到的奖励等级记录
|
| | | SkinCnt = 0 #(BYTE SkinCnt)
|
| | | SkinList = list() #(vector<tagSCBeautySkin> SkinList)//时装皮肤列表,默认解锁的不通知,有变化的才会同步
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.BeautyID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Exp,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.SkinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SkinCnt):
|
| | | temSkinList = tagSCBeautySkin()
|
| | | _pos = temSkinList.ReadData(_lpData, _pos)
|
| | | self.SkinList.append(temSkinList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.BeautyID = 0
|
| | | self.State = 0
|
| | | self.LV = 0
|
| | | self.Exp = 0
|
| | | self.AwardLV = 0
|
| | | self.SkinCnt = 0
|
| | | self.SkinList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.SkinCnt):
|
| | | length += self.SkinList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.BeautyID)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.Exp)
|
| | | data = CommFunc.WriteWORD(data, self.AwardLV)
|
| | | data = CommFunc.WriteBYTE(data, self.SkinCnt)
|
| | | for i in range(self.SkinCnt):
|
| | | data = CommFunc.WriteString(data, self.SkinList[i].GetLength(), self.SkinList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | BeautyID:%d,
|
| | | State:%d,
|
| | | LV:%d,
|
| | | Exp:%d,
|
| | | AwardLV:%d,
|
| | | SkinCnt:%d,
|
| | | SkinList:%s
|
| | | '''\
|
| | | %(
|
| | | self.BeautyID,
|
| | | self.State,
|
| | | self.LV,
|
| | | self.Exp,
|
| | | self.AwardLV,
|
| | | self.SkinCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCBeautyInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | BeautyList = list() #(vector<tagSCBeauty> BeautyList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x30
|
| | | 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):
|
| | | temBeautyList = tagSCBeauty()
|
| | | _pos = temBeautyList.ReadData(_lpData, _pos)
|
| | | self.BeautyList.append(temBeautyList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x30
|
| | | self.Count = 0
|
| | | self.BeautyList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BeautyList[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.BeautyList[i].GetLength(), self.BeautyList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | BeautyList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCBeautyInfo=tagSCBeautyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCBeautyInfo.Head.Cmd,m_NAtagSCBeautyInfo.Head.SubCmd))] = m_NAtagSCBeautyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 31 宿缘信息 #tagSCHeroFatesInfo
|
| | |
|
| | | class tagSCHeroFates(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FatesID", c_ubyte), # 宿缘ID
|
| | | ("State", c_ubyte), # 宿缘状态:0-未激活;1-已激活已领奖
|
| | | ("FatesLV", c_ubyte), # 宿缘等级,激活时为0级,升级后有升级属性
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.FatesID = 0
|
| | | self.State = 0
|
| | | self.FatesLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCHeroFates)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 31 宿缘信息 //tagSCHeroFatesInfo:
|
| | | FatesID:%d,
|
| | | State:%d,
|
| | | FatesLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.FatesID,
|
| | | self.State,
|
| | | self.FatesLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCHeroFatesInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | FatesList = list() #(vector<tagSCHeroFates> FatesList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x31
|
| | | 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):
|
| | | temFatesList = tagSCHeroFates()
|
| | | _pos = temFatesList.ReadData(_lpData, _pos)
|
| | | self.FatesList.append(temFatesList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x31
|
| | | self.Count = 0
|
| | | self.FatesList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.FatesList[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.FatesList[i].GetLength(), self.FatesList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | FatesList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCHeroFatesInfo=tagSCHeroFatesInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroFatesInfo.Head.Cmd,m_NAtagSCHeroFatesInfo.Head.SubCmd))] = m_NAtagSCHeroFatesInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 22 武将信息 #tagSCHeroInfo
|
| | |
|
| | | class tagSCHero(Structure):
|
| | |
| | |
|
| | | m_NAtagSCLineupInfo=tagSCLineupInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupInfo.Head.Cmd,m_NAtagSCLineupInfo.Head.SubCmd))] = m_NAtagSCLineupInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 29 阵容推荐信息 #tagSCLineupRecommendInfo
|
| | |
|
| | | class tagSCLineupRecommend(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RecommendID", c_ubyte), #推荐阵容表ID
|
| | | ("AwardState", 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.RecommendID = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCLineupRecommend)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 29 阵容推荐信息 //tagSCLineupRecommendInfo:
|
| | | RecommendID:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecommendID,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCLineupRecommendInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | RecommendList = list() #(vector<tagSCLineupRecommend> RecommendList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x29
|
| | | 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):
|
| | | temRecommendList = tagSCLineupRecommend()
|
| | | _pos = temRecommendList.ReadData(_lpData, _pos)
|
| | | self.RecommendList.append(temRecommendList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x29
|
| | | self.Count = 0
|
| | | self.RecommendList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.RecommendList[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.RecommendList[i].GetLength(), self.RecommendList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | RecommendList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCLineupRecommendInfo=tagSCLineupRecommendInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupRecommendInfo.Head.Cmd,m_NAtagSCLineupRecommendInfo.Head.SubCmd))] = m_NAtagSCLineupRecommendInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 28 历练秘笈信息 #tagSCLLMJInfo
|
| | |
|
| | | class tagSCLLMJInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MJLV", c_ubyte), # 秘笈等级,激活后从1开始
|
| | | ("Zhanchui", c_int), # 秘笈累计消耗战锤
|
| | | ("ExpEx", c_int), # 秘笈今日已额外获得经验
|
| | | ("DecomposeEx", c_int), # 秘笈今日已额外获得分解货币
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x28
|
| | | 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 = 0x28
|
| | | self.MJLV = 0
|
| | | self.Zhanchui = 0
|
| | | self.ExpEx = 0
|
| | | self.DecomposeEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCLLMJInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 28 历练秘笈信息 //tagSCLLMJInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MJLV:%d,
|
| | | Zhanchui:%d,
|
| | | ExpEx:%d,
|
| | | DecomposeEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MJLV,
|
| | | self.Zhanchui,
|
| | | self.ExpEx,
|
| | | self.DecomposeEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCLLMJInfo=tagSCLLMJInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("TreeLV", c_ubyte), # 当前仙树等级
|
| | | ("LVUPState", c_ubyte), # 0-非升级中;1-升级中
|
| | | ("LVUPRemainTime", c_int), # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
|
| | | ("FreeTimeCnt", c_ubyte), # 今日已免费减时次数
|
| | | ("FreeTimeLast", c_int), # 上次免费减时时间戳
|
| | | ("Energy", c_ubyte), # 当前累计充能次数
|
| | | ("EnergyTimeLast", c_int), # 上次获得充能次数时间戳
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.TreeLV = 0
|
| | | self.LVUPState = 0
|
| | | self.LVUPRemainTime = 0
|
| | | self.FreeTimeCnt = 0
|
| | | self.FreeTimeLast = 0
|
| | | self.Energy = 0
|
| | | self.EnergyTimeLast = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | TreeLV:%d,
|
| | | LVUPState:%d,
|
| | | LVUPRemainTime:%d,
|
| | | FreeTimeCnt:%d,
|
| | | FreeTimeLast:%d
|
| | | Energy:%d,
|
| | | EnergyTimeLast:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | |
| | | self.TreeLV,
|
| | | self.LVUPState,
|
| | | self.LVUPRemainTime,
|
| | | self.FreeTimeCnt,
|
| | | self.FreeTimeLast
|
| | | self.Energy,
|
| | | self.EnergyTimeLast
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | TitleID = 0 #(DWORD TitleID)//佩戴的称号
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | data = None
|
| | |
|
| | |
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | |
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.TitleID = 0
|
| | | self.ServerID = 0
|
| | | return
|
| | |
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.TitleID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | return data
|
| | |
|
| | |
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | TitleID:%d,
|
| | | ServerID:%d
|
| | | '''\
|
| | | %(
|
| | |
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.TitleID,
|
| | | self.ServerID
|
| | | )
|
| | | return DumpString
|
| | |
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | TitleID = 0 #(DWORD TitleID)//佩戴的称号
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | TalkTime = 0 #(DWORD TalkTime)//该聊天发送时间戳
|
| | | data = None
|
| | |
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.TitleID = 0
|
| | | self.ServerID = 0
|
| | | self.TalkTime = 0
|
| | | return
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.TitleID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.TalkTime)
|
| | | return data
|
| | |
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | TitleID:%d,
|
| | | ServerID:%d,
|
| | | TalkTime:%d
|
| | | '''\
|
| | |
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.TitleID,
|
| | | self.ServerID,
|
| | | self.TalkTime
|
| | | )
|
| | |
| | |
|
| | | m_NAtagMCNPCSkillWarn=tagMCNPCSkillWarn()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCSkillWarn.Head.Cmd,m_NAtagMCNPCSkillWarn.Head.SubCmd))] = m_NAtagMCNPCSkillWarn
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 19 对象最新生命刷新 #tagSCObjHPRefresh
|
| | |
|
| | | class tagSCObjHPRefresh(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("HP", c_int), # 当前血量,求余亿部分
|
| | | ("HPEx", c_int), # 当前血量,整除亿部分
|
| | | ("MaxHP", c_int), # 最大血量,求余亿部分
|
| | | ("MaxHPEx", c_int), # 最大血量,整除亿部分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x19
|
| | | 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 = 0xB4
|
| | | self.SubCmd = 0x19
|
| | | self.ObjID = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | self.MaxHP = 0
|
| | | self.MaxHPEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCObjHPRefresh)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B4 19 对象最新生命刷新 //tagSCObjHPRefresh:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ObjID:%d,
|
| | | HP:%d,
|
| | | HPEx:%d,
|
| | | MaxHP:%d,
|
| | | MaxHPEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ObjID,
|
| | | self.HP,
|
| | | self.HPEx,
|
| | | self.MaxHP,
|
| | | self.MaxHPEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCObjHPRefresh=tagSCObjHPRefresh()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCObjHPRefresh.Cmd,m_NAtagSCObjHPRefresh.SubCmd))] = m_NAtagSCObjHPRefresh
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("NPCID", c_int), # 战斗NPCID,不同的实例ID对应的NPCID可能一样
|
| | | ("HeroID", c_int), # 武将ID,玩家或NPC均可能有,如果有值则外观相关以该武将为准,否则以NPCID为准
|
| | | ("SkinID", c_int), # 武将皮肤ID,玩家或NPC均可能有,如果有值则皮肤以该值为准,否则取NPCID对应的皮肤ID
|
| | | ("HP", c_int), # 当前血量,求余20亿部分
|
| | | ("HPEx", c_int), # 当前血量,整除20亿部分
|
| | | ("MaxHP", c_int), # 最大血量,求余20亿部分
|
| | | ("MaxHPEx", c_int), # 最大血量,整除20亿部分
|
| | | ("HP", c_int), # 当前血量,求余亿部分
|
| | | ("HPEx", c_int), # 当前血量,整除亿部分
|
| | | ("MaxHP", c_int), # 最大血量,求余亿部分
|
| | | ("MaxHPEx", c_int), # 最大血量,整除亿部分
|
| | | ("LV", c_ushort), # 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
|
| | | ("PosNum", c_ubyte), # 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
|
| | | ("AngreXP", c_ushort), # 当前怒气值
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 31 战斗战报结果 #tagSCTurnFightRet
|
| | |
|
| | | class tagSCTurnFightRet(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
|
| | | FuncLineID = 0 #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
|
| | | TagType = 0 #(BYTE TagType)// 目标类型,0-NPC阵容,1-玩家
|
| | | TagID = 0 #(DWORD TagID)// 目标类型对应的ID,如玩家ID
|
| | | ValueCount = 0 #(BYTE ValueCount)
|
| | | ValueList = list() #(vector<DWORD> ValueList)// 附加值列表,可选,具体含义由MapID决定
|
| | | IsWin = 0 #(BYTE IsWin)//是否获胜
|
| | | AwardLen = 0 #(WORD AwardLen)
|
| | | AwardMsg = "" #(String AwardMsg)//功能结算奖励信息,不含战斗相关统计信息
|
| | | BatLen = 0 #(WORD BatLen)
|
| | | BatStatMsg = "" #(String BatStatMsg)//战斗相关统计信息
|
| | | PathDate = "" #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
|
| | | GUID = "" #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x31
|
| | | 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.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ValueList.append(value)
|
| | | self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
|
| | | self.BatLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BatStatMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.BatLen)
|
| | | self.PathDate,_pos = CommFunc.ReadString(_lpData, _pos,8)
|
| | | self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x31
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.TagType = 0
|
| | | self.TagID = 0
|
| | | self.ValueCount = 0
|
| | | self.ValueList = list()
|
| | | self.IsWin = 0
|
| | | self.AwardLen = 0
|
| | | self.AwardMsg = ""
|
| | | self.BatLen = 0
|
| | | self.BatStatMsg = ""
|
| | | self.PathDate = ""
|
| | | self.GUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.ValueCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += len(self.AwardMsg)
|
| | | length += 2
|
| | | length += len(self.BatStatMsg)
|
| | | length += 8
|
| | | length += 40
|
| | |
|
| | | 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.WriteBYTE(data, self.TagType)
|
| | | data = CommFunc.WriteDWORD(data, self.TagID)
|
| | | data = CommFunc.WriteBYTE(data, self.ValueCount)
|
| | | for i in range(self.ValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ValueList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsWin)
|
| | | data = CommFunc.WriteWORD(data, self.AwardLen)
|
| | | data = CommFunc.WriteString(data, self.AwardLen, self.AwardMsg)
|
| | | data = CommFunc.WriteWORD(data, self.BatLen)
|
| | | data = CommFunc.WriteString(data, self.BatLen, self.BatStatMsg)
|
| | | data = CommFunc.WriteString(data, 8, self.PathDate)
|
| | | data = CommFunc.WriteString(data, 40, self.GUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | TagType:%d,
|
| | | TagID:%d,
|
| | | ValueCount:%d,
|
| | | ValueList:%s,
|
| | | IsWin:%d,
|
| | | AwardLen:%d,
|
| | | AwardMsg:%s,
|
| | | BatLen:%d,
|
| | | BatStatMsg:%s,
|
| | | PathDate:%s,
|
| | | GUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.TagType,
|
| | | self.TagID,
|
| | | self.ValueCount,
|
| | | "...",
|
| | | self.IsWin,
|
| | | self.AwardLen,
|
| | | self.AwardMsg,
|
| | | self.BatLen,
|
| | | self.BatStatMsg,
|
| | | self.PathDate,
|
| | | self.GUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCTurnFightRet=tagSCTurnFightRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightRet.Head.Cmd,m_NAtagSCTurnFightRet.Head.SubCmd))] = m_NAtagSCTurnFightRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 20 回合制战斗状态 #tagMCTurnFightState
|
| | |
|
| | | class tagMCTurnFightState(Structure):
|
| | |
| | | #------------------------------------------------------
|
| | | # B4 27 使用技能 #tagSCUseSkill
|
| | |
|
| | | class tagSCUseSkillHurt(Structure):
|
| | | class tagSCUseSkillHurtEx(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ObjID", c_int), |
| | | ("AttackTypes", c_int), # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
|
| | | ("ObjID", c_int), # 额外目标,如溅射伤害、平摊伤害目标,非技能自身的主要目标
|
| | | ("AttackTypes", c_int), # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
|
| | | ("HurtHP", c_int), # 飘血值,求余亿部分
|
| | | ("HurtHPEx", c_int), # 飘血值,整除亿部分
|
| | | ("CurHP", c_int), # 更新剩余血量,求余亿部分
|
| | | ("CurHPEx", c_int), # 更新剩余血量,整除亿部分
|
| | | ("SuckHP", c_int), # 本次伤害转化的吸血量
|
| | | ("BounceHP", c_int), # 本次伤害反弹的伤害量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.CurHP = 0
|
| | | self.CurHPEx = 0
|
| | | self.SuckHP = 0
|
| | | self.BounceHP = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCUseSkillHurt)
|
| | | return sizeof(tagSCUseSkillHurtEx)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
| | | HurtHPEx:%d,
|
| | | CurHP:%d,
|
| | | CurHPEx:%d,
|
| | | SuckHP:%d
|
| | | '''\
|
| | | %(
|
| | | self.ObjID,
|
| | | self.AttackTypes,
|
| | | self.HurtHP,
|
| | | self.HurtHPEx,
|
| | | self.CurHP,
|
| | | self.CurHPEx,
|
| | | self.SuckHP
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCUseSkillHurt(Structure):
|
| | | ObjID = 0 #(DWORD ObjID)// 技能自身目标ID
|
| | | AttackTypes = 0 #(DWORD AttackTypes)// 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
|
| | | HurtHP = 0 #(DWORD HurtHP)// 飘血值,求余亿部分
|
| | | HurtHPEx = 0 #(DWORD HurtHPEx)// 飘血值,整除亿部分
|
| | | CurHP = 0 #(DWORD CurHP)// 更新剩余血量,求余亿部分
|
| | | CurHPEx = 0 #(DWORD CurHPEx)// 更新剩余血量,整除亿部分
|
| | | SuckHP = 0 #(DWORD SuckHP)// 本次伤害转化的吸血量
|
| | | BounceHP = 0 #(DWORD BounceHP)// 本次伤害反弹的伤害量
|
| | | HurtCountEx = 0 #(BYTE HurtCountEx)
|
| | | HurtListEx = list() #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端多次伤害的有效,如弹射的平摊伤害
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AttackTypes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HurtHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HurtHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SuckHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BounceHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.HurtCountEx):
|
| | | temHurtListEx = tagSCUseSkillHurtEx()
|
| | | _pos = temHurtListEx.ReadData(_lpData, _pos)
|
| | | self.HurtListEx.append(temHurtListEx)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ObjID = 0
|
| | | self.AttackTypes = 0
|
| | | self.HurtHP = 0
|
| | | self.HurtHPEx = 0
|
| | | self.CurHP = 0
|
| | | self.CurHPEx = 0
|
| | | self.SuckHP = 0
|
| | | self.BounceHP = 0
|
| | | self.HurtCountEx = 0
|
| | | self.HurtListEx = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.HurtCountEx):
|
| | | length += self.HurtListEx[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ObjID)
|
| | | data = CommFunc.WriteDWORD(data, self.AttackTypes)
|
| | | data = CommFunc.WriteDWORD(data, self.HurtHP)
|
| | | data = CommFunc.WriteDWORD(data, self.HurtHPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.CurHP)
|
| | | data = CommFunc.WriteDWORD(data, self.CurHPEx)
|
| | | data = CommFunc.WriteDWORD(data, self.SuckHP)
|
| | | data = CommFunc.WriteDWORD(data, self.BounceHP)
|
| | | data = CommFunc.WriteBYTE(data, self.HurtCountEx)
|
| | | for i in range(self.HurtCountEx):
|
| | | data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ObjID:%d,
|
| | | AttackTypes:%d,
|
| | | HurtHP:%d,
|
| | | HurtHPEx:%d,
|
| | | CurHP:%d,
|
| | | CurHPEx:%d,
|
| | | SuckHP:%d,
|
| | | BounceHP:%d
|
| | | BounceHP:%d,
|
| | | HurtCountEx:%d,
|
| | | HurtListEx:%s
|
| | | '''\
|
| | | %(
|
| | | self.ObjID,
|
| | |
| | | self.CurHP,
|
| | | self.CurHPEx,
|
| | | self.SuckHP,
|
| | | self.BounceHP
|
| | | self.BounceHP,
|
| | | self.HurtCountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | Head = tagHead()
|
| | | ObjID = 0 #(DWORD ObjID)
|
| | | PMType = 0 #(BYTE PMType)// 物法类型 0或1-物理;2-法术
|
| | | BattleType = 0 #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的
|
| | | BattleType = 0 #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的;6-dot结算;7-持续治疗结算
|
| | | CurHP = 0 #(DWORD CurHP)// 释放技能后剩余血量,吸血、反弹可能引起变化,求余亿部分
|
| | | CurHPEx = 0 #(DWORD CurHPEx)// 释放技能后剩余血量,吸血、反弹可能引起变化,整除亿部分
|
| | | SkillID = 0 #(DWORD SkillID)
|
| | | RelatedSkillID = 0 #(DWORD RelatedSkillID)// 关联的技能ID,一般是主技能ID或由于某个技能释放引起的
|
| | | HurtCount = 0 #(BYTE HurtCount)//伤害数目
|
| | | HurtList = list() #(vector<tagSCUseSkillHurt> HurtList)//size = HurtCount
|
| | | HurtCount = 0 #(BYTE HurtCount)
|
| | | HurtList = list() #(vector<tagSCUseSkillHurt> HurtList)// 主要伤害目标列表
|
| | | HurtCountEx = 0 #(BYTE HurtCountEx)
|
| | | HurtListEx = list() #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端单次伤害的有效,如平摊或溅射伤害
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temHurtList = tagSCUseSkillHurt()
|
| | | _pos = temHurtList.ReadData(_lpData, _pos)
|
| | | self.HurtList.append(temHurtList)
|
| | | self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.HurtCountEx):
|
| | | temHurtListEx = tagSCUseSkillHurtEx()
|
| | | _pos = temHurtListEx.ReadData(_lpData, _pos)
|
| | | self.HurtListEx.append(temHurtListEx)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.RelatedSkillID = 0
|
| | | self.HurtCount = 0
|
| | | self.HurtList = list()
|
| | | self.HurtCountEx = 0
|
| | | self.HurtListEx = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.HurtCount):
|
| | | length += self.HurtList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.HurtCountEx):
|
| | | length += self.HurtListEx[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.HurtCount)
|
| | | for i in range(self.HurtCount):
|
| | | data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.HurtCountEx)
|
| | | for i in range(self.HurtCountEx):
|
| | | data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | SkillID:%d,
|
| | | RelatedSkillID:%d,
|
| | | HurtCount:%d,
|
| | | HurtList:%s
|
| | | HurtList:%s,
|
| | | HurtCountEx:%d,
|
| | | HurtListEx:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | self.SkillID,
|
| | | self.RelatedSkillID,
|
| | | self.HurtCount,
|
| | | "...",
|
| | | self.HurtCountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 02 跨服通用信息包 #tagSSCommMsg
|
| | |
|
| | | class tagSSCommMsg(Structure):
|
| | | Head = tagHead()
|
| | | FromServerID = 0 #(DWORD FromServerID)//哪个服发的
|
| | | ServerTime = 0 #(DWORD ServerTime)//来源服务器时间戳
|
| | | TypeLen = 0 #(BYTE TypeLen)
|
| | | MsgType = "" #(String MsgType)
|
| | | Len = 0 #(DWORD Len)
|
| | | Data = "" #(String Data)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | 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.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
|
| | | self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | self.FromServerID = 0
|
| | | self.ServerTime = 0
|
| | | self.TypeLen = 0
|
| | | self.MsgType = ""
|
| | | self.Len = 0
|
| | | self.Data = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.MsgType)
|
| | | length += 4
|
| | | length += len(self.Data)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | 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.TypeLen)
|
| | | data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
|
| | | data = CommFunc.WriteDWORD(data, self.Len)
|
| | | data = CommFunc.WriteString(data, self.Len, self.Data)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromServerID:%d,
|
| | | ServerTime:%d,
|
| | | TypeLen:%d,
|
| | | MsgType:%s,
|
| | | Len:%d,
|
| | | Data:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromServerID,
|
| | | self.ServerTime,
|
| | | self.TypeLen,
|
| | | self.MsgType,
|
| | | self.Len,
|
| | | self.Data
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSCommMsg=tagSSCommMsg()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 01 跨服服务器间的测试包 #tagSSTest
|
| | |
|
| | | class tagSSTest(Structure):
|