| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B4 10 脱机挂被杀后离线找回 # tagMCTJGDeadPay
|
| | |
|
| | | class tagMCTJGDeadPay(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Times", c_int), # 可找回时间
|
| | | ("DeadTime", c_int), # 死亡时间
|
| | | ("Exp", c_int), # 经验
|
| | | ("Exp1", c_int), # 经验 亿
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x10
|
| | | self.Times = 0
|
| | | self.DeadTime = 0
|
| | | self.Exp = 0
|
| | | self.Exp1 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTJGDeadPay)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B4 10 脱机挂被杀后离线找回 // tagMCTJGDeadPay:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Times:%d,
|
| | | DeadTime:%d,
|
| | | Exp:%d,
|
| | | Exp1:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Times,
|
| | | self.DeadTime,
|
| | | self.Exp,
|
| | | self.Exp1
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTJGDeadPay=tagMCTJGDeadPay()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGDeadPay.Cmd,m_NAtagMCTJGDeadPay.SubCmd))] = m_NAtagMCTJGDeadPay
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B4 09 通知脱机挂结果 #tagMCTJGInfo
|
| | |
|
| | | class tagMCTJGItems(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("Count", 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.Count = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTJGItems)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B4 09 通知脱机挂结果 //tagMCTJGInfo:
|
| | | ItemID:%d,
|
| | | Count:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.Count
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTJGInfo(Structure):
|
| | | Head = tagHead()
|
| | | Exp1 = 0 #(DWORD Exp1)// 经验
|
| | | Exp2 = 0 #(DWORD Exp2)// 超亿经验
|
| | | Times = 0 #(DWORD Times)// 使用时间秒
|
| | | PurpleEquip = 0 #(WORD PurpleEquip)// 产出紫装数量
|
| | | OrangeEquip = 0 #(WORD OrangeEquip)// 产出橙装数量
|
| | | EatPurpleEquip = 0 #(WORD EatPurpleEquip)// 吞噬紫装数量
|
| | | BeforeLV = 0 #(WORD BeforeLV)//脱机前记录的等级
|
| | | GiveCnt = 0 #(WORD GiveCnt)//获得炼丹材料数量
|
| | | Cnt = 0 #(BYTE Cnt)//物品类别数量
|
| | | Items = list() #(vector<tagMCTJGItems> Items)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x09
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Exp1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Exp2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Times,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OrangeEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.EatPurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BeforeLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GiveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temItems = tagMCTJGItems()
|
| | | _pos = temItems.ReadData(_lpData, _pos)
|
| | | self.Items.append(temItems)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x09
|
| | | self.Exp1 = 0
|
| | | self.Exp2 = 0
|
| | | self.Times = 0
|
| | | self.PurpleEquip = 0
|
| | | self.OrangeEquip = 0
|
| | | self.EatPurpleEquip = 0
|
| | | self.BeforeLV = 0
|
| | | self.GiveCnt = 0
|
| | | self.Cnt = 0
|
| | | self.Items = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.Items[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Exp1)
|
| | | data = CommFunc.WriteDWORD(data, self.Exp2)
|
| | | data = CommFunc.WriteDWORD(data, self.Times)
|
| | | data = CommFunc.WriteWORD(data, self.PurpleEquip)
|
| | | data = CommFunc.WriteWORD(data, self.OrangeEquip)
|
| | | data = CommFunc.WriteWORD(data, self.EatPurpleEquip)
|
| | | data = CommFunc.WriteWORD(data, self.BeforeLV)
|
| | | data = CommFunc.WriteWORD(data, self.GiveCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Exp1:%d,
|
| | | Exp2:%d,
|
| | | Times:%d,
|
| | | PurpleEquip:%d,
|
| | | OrangeEquip:%d,
|
| | | EatPurpleEquip:%d,
|
| | | BeforeLV:%d,
|
| | | GiveCnt:%d,
|
| | | Cnt:%d,
|
| | | Items:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Exp1,
|
| | | self.Exp2,
|
| | | self.Times,
|
| | | self.PurpleEquip,
|
| | | self.OrangeEquip,
|
| | | self.EatPurpleEquip,
|
| | | self.BeforeLV,
|
| | | self.GiveCnt,
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTJGInfo=tagMCTJGInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGInfo.Head.Cmd,m_NAtagMCTJGInfo.Head.SubCmd))] = m_NAtagMCTJGInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 20 回合制战斗状态 #tagMCTurnFightState
|
| | |
|
| | | class tagMCTurnFightState(Structure):
|