|  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
 | 
 |  |  | 
 | 
 |  |  | class  tagCGCallupFamilyMemberToBoss(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("NPCID", c_int),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAC
 | 
 |  |  |         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 = 0xAC
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         self.NPCID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCGCallupFamilyMemberToBoss)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 NPCID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.NPCID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AC 02 仙魔之争战斗结束 #tagCGXMZZOver
 | 
 |  |  | 
 | 
 |  |  | class  tagCGXMZZOver(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCGJoinXMZZ=tagCGJoinXMZZ()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinXMZZ.Cmd,m_NAtagCGJoinXMZZ.SubCmd))] = m_NAtagCGJoinXMZZ
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
 | 
 |  |  | 
 | 
 |  |  | class  tagCGQueryAllFamilyBossHurt(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAC
 | 
 |  |  |         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 = 0xAC
 | 
 |  |  |         self.SubCmd = 0x04
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCGQueryAllFamilyBossHurt)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AC 04 查询仙盟抢Boss所有Boss当前进度 //tagCGQueryAllFamilyBossHurt:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCGQueryAllFamilyBossHurt=tagCGQueryAllFamilyBossHurt()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAllFamilyBossHurt.Cmd,m_NAtagCGQueryAllFamilyBossHurt.SubCmd))] = m_NAtagCGQueryAllFamilyBossHurt
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 28 查询仙盟抢Boss伤血列表 #tagCMQueryFamilyBossHurt
 | 
 |  |  | 
 | 
 |  |  | class  tagCMQueryFamilyBossHurt(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ObjID", c_int),     | 
 |  |  |                   ("NPCID", c_int),     | 
 |  |  |                   ("QueryType", c_ubyte),    # 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA2
 | 
 |  |  |         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 = 0xA2
 | 
 |  |  |         self.SubCmd = 0x28
 | 
 |  |  |         self.ObjID = 0
 | 
 |  |  |         self.NPCID = 0
 | 
 |  |  |         self.QueryType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMQueryFamilyBossHurt)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A2 28 查询仙盟抢Boss伤血列表 //tagCMQueryFamilyBossHurt:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ObjID:%d,
 | 
 |  |  |                                 NPCID:%d,
 | 
 |  |  |                                 QueryType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ObjID,
 | 
 |  |  |                                 self.NPCID,
 | 
 |  |  |                                 self.QueryType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMQueryFamilyBossHurt=tagCMQueryFamilyBossHurt()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryFamilyBossHurt.Cmd,m_NAtagCMQueryFamilyBossHurt.SubCmd))] = m_NAtagCMQueryFamilyBossHurt
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagCMQueryNPCCntInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     MapID = 0    #(DWORD MapID)// 目标地图ID
 | 
 |  |  |     LineID = 0    #(WORD LineID)// 线路ID
 | 
 |  |  |     IsNoTimeLimit = 0    #(BYTE IsNoTimeLimit)//是否没有查询时间限制,默认有限制
 | 
 |  |  |     NPCIDListLen = 0    #(BYTE NPCIDListLen)
 | 
 |  |  |     NPCIDList = ""    #(String NPCIDList)// 需要查询的NPCID列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA2
 | 
 |  |  |         self.Head.SubCmd = 0x27
 | 
 |  |  |         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.LineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.IsNoTimeLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.NPCIDListLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.NPCIDList,_pos = CommFunc.ReadString(_lpData, _pos,self.NPCIDListLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA2
 | 
 |  |  |         self.Head.SubCmd = 0x27
 | 
 |  |  |         self.MapID = 0
 | 
 |  |  |         self.LineID = 0
 | 
 |  |  |         self.IsNoTimeLimit = 0
 | 
 |  |  |         self.NPCIDListLen = 0
 | 
 |  |  |         self.NPCIDList = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += len(self.NPCIDList)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.MapID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LineID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsNoTimeLimit)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.NPCIDListLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.NPCIDListLen, self.NPCIDList)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 MapID:%d,
 | 
 |  |  |                                 LineID:%d,
 | 
 |  |  |                                 IsNoTimeLimit:%d,
 | 
 |  |  |                                 NPCIDListLen:%d,
 | 
 |  |  |                                 NPCIDList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.MapID,
 | 
 |  |  |                                 self.LineID,
 | 
 |  |  |                                 self.IsNoTimeLimit,
 | 
 |  |  |                                 self.NPCIDListLen,
 | 
 |  |  |                                 self.NPCIDList
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMQueryNPCCntInfo=tagCMQueryNPCCntInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryNPCCntInfo.Head.Cmd,m_NAtagCMQueryNPCCntInfo.Head.SubCmd))] = m_NAtagCMQueryNPCCntInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 13 查询地图NPC信息 #tagCMQueryNPCInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagCMQueryNPCInfo(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 12 激活法宝之魂 #tagCMActiveMWSoul
 | 
 |  |  | 
 | 
 |  |  | class  tagCMActiveMWSoul(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ID", c_ubyte),    #编号
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0x12
 | 
 |  |  |         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 = 0x12
 | 
 |  |  |         self.ID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMActiveMWSoul)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 49 大师天赋技能加点 #tagCMAddMasterSkillPoint
 | 
 |  |  | 
 | 
 |  |  | class  tagCMMasterSkillPoint(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzBattleStateChange(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DogzID", c_ubyte),    # 神兽ID
 | 
 |  |  |                   ("BatteState", c_ubyte),    #助战状态,0-召回,1-助战
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC2
 | 
 |  |  |         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 = 0xC2
 | 
 |  |  |         self.DogzID = 0
 | 
 |  |  |         self.BatteState = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMDogzBattleStateChange)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 DogzID:%d,
 | 
 |  |  |                                 BatteState:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.DogzID,
 | 
 |  |  |                                 self.BatteState
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzBuyBatteCount(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC3
 | 
 |  |  |         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 = 0xC3
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMDogzBuyBatteCount)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzEquipItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DogzID", c_ubyte),    # 神兽ID
 | 
 |  |  |                   ("EquipIndex", c_ubyte),    #神兽装备所在神兽背包索引
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC0
 | 
 |  |  |         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 = 0xC0
 | 
 |  |  |         self.DogzID = 0
 | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMDogzEquipItem)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 C0 神兽穿戴装备 //tagCMDogzEquipItem:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 DogzID:%d,
 | 
 |  |  |                                 EquipIndex:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.DogzID,
 | 
 |  |  |                                 self.EquipIndex
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Cmd,m_NAtagCMDogzEquipItem.SubCmd))] = m_NAtagCMDogzEquipItem
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 C4 神兽装备强化 #tagCMDogzEquipPlus
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzEquipPlus(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
 | 
 |  |  |     IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
 | 
 |  |  |     IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
 | 
 |  |  |     IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA5
 | 
 |  |  |         self.Head.SubCmd = 0xC4
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.EquipIndex,_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)
 | 
 |  |  |         self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA5
 | 
 |  |  |         self.Head.SubCmd = 0xC4
 | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.IndexCount = 0
 | 
 |  |  |         self.IndexList = list()
 | 
 |  |  |         self.IsDouble = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.IndexCount
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.EquipIndex)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IndexCount)
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.IndexList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsDouble)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 IndexCount:%d,
 | 
 |  |  |                                 IndexList:%s,
 | 
 |  |  |                                 IsDouble:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.IndexCount,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.IsDouble
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzUnEquipItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DogzID", c_ubyte),    # 神兽ID
 | 
 |  |  |                   ("EquipPlace", c_ubyte),    #卸下的装备位, 0代表卸下全部
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC1
 | 
 |  |  |         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 = 0xC1
 | 
 |  |  |         self.DogzID = 0
 | 
 |  |  |         self.EquipPlace = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMDogzUnEquipItem)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 DogzID:%d,
 | 
 |  |  |                                 EquipPlace:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.DogzID,
 | 
 |  |  |                                 self.EquipPlace
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
 | 
 |  |  | 
 | 
 |  |  | class  tagCMExchangeMasterEXP(Structure):
 |