|  |  | 
 |  |  | # A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
 | 
 |  |  | 
 | 
 |  |  | class  tagGCFBLineInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("FBLineID", c_ubyte),    # 功能线路ID
 | 
 |  |  |                   ("PlayerCnt", c_ushort),    # 线路当前玩家数
 | 
 |  |  |                   ]
 | 
 |  |  |     FBLineID = 0    #(BYTE FBLineID)// 功能线路ID
 | 
 |  |  |     PlayerCnt = 0    #(WORD PlayerCnt)// 线路当前玩家数
 | 
 |  |  |     ExtraStrLen = 0    #(WORD ExtraStrLen)// 长度
 | 
 |  |  |     ExtraStr = ""    #(String ExtraStr)// 额外信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  |         self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.FBLineID = 0
 | 
 |  |  |         self.PlayerCnt = 0
 | 
 |  |  |         self.ExtraStrLen = 0
 | 
 |  |  |         self.ExtraStr = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagGCFBLineInfo)
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.ExtraStr)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.FBLineID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.PlayerCnt)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ExtraStrLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt:
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 FBLineID:%d,
 | 
 |  |  |                                 PlayerCnt:%d
 | 
 |  |  |                                 PlayerCnt:%d,
 | 
 |  |  |                                 ExtraStrLen:%d,
 | 
 |  |  |                                 ExtraStr:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.FBLineID,
 | 
 |  |  |                                 self.PlayerCnt
 | 
 |  |  |                                 self.PlayerCnt,
 | 
 |  |  |                                 self.ExtraStrLen,
 | 
 |  |  |                                 self.ExtraStr
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # 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 02 通知仙魔之争信息 #tagGCXMZZInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCXMZZInfo(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AC 0B 新仙界盛典活动信息 #tagGCNewFairyCeremonyInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCNewFairyCeremonyInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
 | 
 |  |  |     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
 | 
 |  |  |     WorldLV = 0    #(WORD WorldLV)// 世界等级
 | 
 |  |  |     LimitLV = 0    #(WORD LimitLV)// 限制等级
 | 
 |  |  |     ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAC
 | 
 |  |  |         self.Head.SubCmd = 0x0B
 | 
 |  |  |         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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAC
 | 
 |  |  |         self.Head.SubCmd = 0x0B
 | 
 |  |  |         self.StartDate = ""
 | 
 |  |  |         self.EndtDate = ""
 | 
 |  |  |         self.WorldLV = 0
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  |         self.ResetType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         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.WorldLV)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LimitLV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ResetType)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 StartDate:%s,
 | 
 |  |  |                                 EndtDate:%s,
 | 
 |  |  |                                 WorldLV:%d,
 | 
 |  |  |                                 LimitLV:%d,
 | 
 |  |  |                                 ResetType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndtDate,
 | 
 |  |  |                                 self.WorldLV,
 | 
 |  |  |                                 self.LimitLV,
 | 
 |  |  |                                 self.ResetType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCNewFairyCeremonyInfo=tagGCNewFairyCeremonyInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNewFairyCeremonyInfo.Head.Cmd,m_NAtagGCNewFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCNewFairyCeremonyInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |     RealmLV = 0    #(WORD RealmLV)//境界
 | 
 |  |  |     OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
 | 
 |  |  |     IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
 | 
 |  |  |     ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.RealmLV = 0
 | 
 |  |  |         self.OnlineType = 0
 | 
 |  |  |         self.IsInTeam = 0
 | 
 |  |  |         self.ServerGroupID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteWORD(data, self.RealmLV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.OnlineType)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsInTeam)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ServerGroupID)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  | 
 |  |  |                                 LV:%d,
 | 
 |  |  |                                 RealmLV:%d,
 | 
 |  |  |                                 OnlineType:%d,
 | 
 |  |  |                                 IsInTeam:%d
 | 
 |  |  |                                 IsInTeam:%d,
 | 
 |  |  |                                 ServerGroupID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  | 
 |  |  |                                 self.LV,
 | 
 |  |  |                                 self.RealmLV,
 | 
 |  |  |                                 self.OnlineType,
 | 
 |  |  |                                 self.IsInTeam
 | 
 |  |  |                                 self.IsInTeam,
 | 
 |  |  |                                 self.ServerGroupID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagGCVoiceChat=tagGCVoiceChat()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAddAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 ItemID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.ItemID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAddAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AddCount = 0    #(BYTE AddCount)
 | 
 |  |  |     AddAuctionItemList = list()    #(vector<tagGCAddAuctionItem> AddAuctionItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AddCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AddCount):
 | 
 |  |  |             temAddAuctionItemList = tagGCAddAuctionItem()
 | 
 |  |  |             _pos = temAddAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AddAuctionItemList.append(temAddAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         self.AddCount = 0
 | 
 |  |  |         self.AddAuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AddCount):
 | 
 |  |  |             length += self.AddAuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AddCount)
 | 
 |  |  |         for i in range(self.AddCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AddAuctionItemList[i].GetLength(), self.AddAuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AddCount:%d,
 | 
 |  |  |                                 AddAuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AddCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCAddAuctionItemInfo=tagGCAddAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItemInfo.Head.Cmd,m_NAtagGCAddAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAddAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 07 拍卖行关注的物品ID #tagGCAttentionAuctionItemID
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAttentionAuctionItemID(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AttentionCount = 0    #(BYTE AttentionCount)
 | 
 |  |  |     AttentionItemIDList = list()    #(vector<DWORD> AttentionItemIDList)// 关注的物品ID列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x07
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AttentionCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AttentionCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.AttentionItemIDList.append(value)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x07
 | 
 |  |  |         self.AttentionCount = 0
 | 
 |  |  |         self.AttentionItemIDList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.AttentionCount
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AttentionCount)
 | 
 |  |  |         for i in range(self.AttentionCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.AttentionItemIDList[i])
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AttentionCount:%d,
 | 
 |  |  |                                 AttentionItemIDList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AttentionCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCAttentionAuctionItemID=tagGCAttentionAuctionItemID()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemID.Head.Cmd,m_NAtagGCAttentionAuctionItemID.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemID
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 06 拍卖行关注中的拍品信息 #tagGCAttentionAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAttentionAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAttentionAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCAttentionAuctionItem> AuctionItemList)//拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x06
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCAttentionAuctionItem()
 | 
 |  |  |             _pos = temAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionItemList.append(temAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x06
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             length += self.AuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCAttentionAuctionItemInfo=tagGCAttentionAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemInfo.Head.Cmd,m_NAtagGCAttentionAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Job = 0    #(BYTE Job)//过滤职业,0为不限制
 | 
 |  |  |     ItemTypeCount = 0    #(BYTE ItemTypeCount)
 | 
 |  |  |     ItemTypeList = list()    #(vector<DWORD> ItemTypeList)//指定的物品类型
 | 
 |  |  |     ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
 | 
 |  |  |     SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
 | 
 |  |  |     SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
 | 
 |  |  |     FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
 | 
 |  |  |     QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
 | 
 |  |  |     QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
 | 
 |  |  |     QueryRemainlCount = 0    #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//返回拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x01
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ItemTypeCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.ItemTypeList.append(value)
 | 
 |  |  |         self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.SpecItemIDCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.SpecItemIDList.append(value)
 | 
 |  |  |         self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCAuctionItem()
 | 
 |  |  |             _pos = temAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionItemList.append(temAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x01
 | 
 |  |  |         self.Job = 0
 | 
 |  |  |         self.ItemTypeCount = 0
 | 
 |  |  |         self.ItemTypeList = list()
 | 
 |  |  |         self.ClassLV = 0
 | 
 |  |  |         self.SpecItemIDCount = 0
 | 
 |  |  |         self.SpecItemIDList = list()
 | 
 |  |  |         self.FromItemGUID = ""
 | 
 |  |  |         self.QueryDir = 0
 | 
 |  |  |         self.QueryCount = 0
 | 
 |  |  |         self.QueryRemainlCount = 0
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.ItemTypeCount
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.SpecItemIDCount
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             length += self.AuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Job)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
 | 
 |  |  |         for i in range(self.ItemTypeCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ClassLV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
 | 
 |  |  |         for i in range(self.SpecItemIDCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.FromItemGUID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.QueryDir)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.QueryCount)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Job:%d,
 | 
 |  |  |                                 ItemTypeCount:%d,
 | 
 |  |  |                                 ItemTypeList:%s,
 | 
 |  |  |                                 ClassLV:%d,
 | 
 |  |  |                                 SpecItemIDCount:%d,
 | 
 |  |  |                                 SpecItemIDList:%s,
 | 
 |  |  |                                 FromItemGUID:%s,
 | 
 |  |  |                                 QueryDir:%d,
 | 
 |  |  |                                 QueryCount:%d,
 | 
 |  |  |                                 QueryRemainlCount:%d,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Job,
 | 
 |  |  |                                 self.ItemTypeCount,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.ClassLV,
 | 
 |  |  |                                 self.SpecItemIDCount,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.FromItemGUID,
 | 
 |  |  |                                 self.QueryDir,
 | 
 |  |  |                                 self.QueryCount,
 | 
 |  |  |                                 self.QueryRemainlCount,
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 10 拍卖行玩家竞价中的物品信息 #tagGCBiddingItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCBiddingItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderID = 0    #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderID = 0
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderID:%d,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderID,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCBiddingItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCBiddingItem> AuctionItemList)//拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x10
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCBiddingItem()
 | 
 |  |  |             _pos = temAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionItemList.append(temAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x10
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             length += self.AuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCBiddingItemInfo=tagGCBiddingItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBiddingItemInfo.Head.Cmd,m_NAtagGCBiddingItemInfo.Head.SubCmd))] = m_NAtagGCBiddingItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 09 拍卖行清除拍品 #tagGCClearAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCClearAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCClearAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ClearCount = 0    #(BYTE ClearCount)
 | 
 |  |  |     ClearAuctionItemList = list()    #(vector<tagGCClearAuctionItem> ClearAuctionItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ClearCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ClearCount):
 | 
 |  |  |             temClearAuctionItemList = tagGCClearAuctionItem()
 | 
 |  |  |             _pos = temClearAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ClearAuctionItemList.append(temClearAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         self.ClearCount = 0
 | 
 |  |  |         self.ClearAuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.ClearCount):
 | 
 |  |  |             length += self.ClearAuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ClearCount)
 | 
 |  |  |         for i in range(self.ClearCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ClearAuctionItemList[i].GetLength(), self.ClearAuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ClearCount:%d,
 | 
 |  |  |                                 ClearAuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ClearCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCFamilyAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     FamilyPlayerIDLen = 0    #(WORD FamilyPlayerIDLen)
 | 
 |  |  |     FamilyPlayerIDInfo = ""    #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
 | 
 |  |  |     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
 | 
 |  |  |         self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         self.FamilyPlayerIDLen = 0
 | 
 |  |  |         self.FamilyPlayerIDInfo = ""
 | 
 |  |  |         self.AuctionType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.FamilyPlayerIDInfo)
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionType)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s,
 | 
 |  |  |                                 FamilyPlayerIDLen:%d,
 | 
 |  |  |                                 FamilyPlayerIDInfo:%s,
 | 
 |  |  |                                 AuctionType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData,
 | 
 |  |  |                                 self.FamilyPlayerIDLen,
 | 
 |  |  |                                 self.FamilyPlayerIDInfo,
 | 
 |  |  |                                 self.AuctionType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCFamilyAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCFamilyAuctionItem> AuctionItemList)//拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x05
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCFamilyAuctionItem()
 | 
 |  |  |             _pos = temAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionItemList.append(temAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x05
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             length += self.AuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCFamilyAuctionItemInfo=tagGCFamilyAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyAuctionItemInfo.Head.Cmd,m_NAtagGCFamilyAuctionItemInfo.Head.SubCmd))] = m_NAtagGCFamilyAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCPlayerAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCPlayerAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x02
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCPlayerAuctionItem()
 | 
 |  |  |             _pos = temAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionItemList.append(temAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x02
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             length += self.AuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCPlayerAuctionRecord(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     RecordType = 0    #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
 | 
 |  |  |     RecordResult = 0    #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
 | 
 |  |  |     RecordTime = ""    #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(DWORD BidderPrice)//成交价格
 | 
 |  |  |     BidderName = ""    #(char BidderName[33])//成交玩家名
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.RecordType = 0
 | 
 |  |  |         self.RecordResult = 0
 | 
 |  |  |         self.RecordTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.BidderName = ""
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 33
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RecordType)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RecordResult)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.RecordTime)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteString(data, 33, self.BidderName)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 RecordType:%d,
 | 
 |  |  |                                 RecordResult:%d,
 | 
 |  |  |                                 RecordTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 BidderName:%s,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.RecordType,
 | 
 |  |  |                                 self.RecordResult,
 | 
 |  |  |                                 self.RecordTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.BidderName,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCPlayerAuctionRecordInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     AuctionRecordList = list()    #(vector<tagGCPlayerAuctionRecord> AuctionRecordList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         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):
 | 
 |  |  |             temAuctionRecordList = tagGCPlayerAuctionRecord()
 | 
 |  |  |             _pos = temAuctionRecordList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionRecordList.append(temAuctionRecordList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x03
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.AuctionRecordList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.AuctionRecordList[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.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 AuctionRecordList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCRefreshAuctionItem(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间
 | 
 |  |  |     BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID     | 
 |  |  |     BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.AuctionType = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderID = 0
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionType)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderPrice)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 AuctionType:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderID:%d,
 | 
 |  |  |                                 BidderPrice:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.AuctionType,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderID,
 | 
 |  |  |                                 self.BidderPrice
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCRefreshAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     RefreshCount = 0    #(BYTE RefreshCount)
 | 
 |  |  |     RefreshAuctionItemList = list()    #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x08
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             temRefreshAuctionItemList = tagGCRefreshAuctionItem()
 | 
 |  |  |             _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x08
 | 
 |  |  |         self.RefreshCount = 0
 | 
 |  |  |         self.RefreshAuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             length += self.RefreshAuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RefreshCount)
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 RefreshCount:%d,
 | 
 |  |  |                                 RefreshAuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.RefreshCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |     RoundCount = 0    #(BYTE RoundCount)// PK回合数
 | 
 |  |  |     RoundWinnerID = list()    #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
 | 
 |  |  |     AddScore = 0    #(WORD AddScore)// 本场加分
 | 
 |  |  |     Score = 0    #(WORD Score)// 当前积分
 | 
 |  |  |     Score = 0    #(DWORD Score)// 当前积分
 | 
 |  |  |     DanLV = 0    #(BYTE DanLV)// 当前段位
 | 
 |  |  |     CWinCnt = 0    #(WORD CWinCnt)// 当前连胜数
 | 
 |  |  |     TagNameLen = 0    #(BYTE TagNameLen)
 | 
 |  |  | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.RoundWinnerID.append(value)
 | 
 |  |  |         self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.RoundCount
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 |  |  |         for i in range(self.RoundCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.AddScore)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Score)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.Score)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.DanLV)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.CWinCnt)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.TagNameLen)
 | 
 |  |  | 
 |  |  | # C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
 | 
 |  |  | 
 | 
 |  |  | class  tagGCCrossRealmPKSeasonState(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ZoneID", c_ubyte),    # 所属赛区ID
 | 
 |  |  |                   ("SeasonID", c_ushort),    # 当前赛季ID
 | 
 |  |  |                   ("SeasonState", c_ubyte),    # 赛季状态;0-未开启,1-开启中,2-已结束
 | 
 |  |  |                   ("MatchState", c_ubyte),    # 匹配状态;0-未开启;1-开启中
 | 
 |  |  |                   ]
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ZoneID = 0    #(BYTE ZoneID)// 所属赛区ID
 | 
 |  |  |     SeasonID = 0    #(WORD SeasonID)// 当前赛季ID
 | 
 |  |  |     SeasonState = 0    #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束
 | 
 |  |  |     MatchState = 0    #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中
 | 
 |  |  |     CrossZoneNameLen = 0    #(BYTE CrossZoneNameLen)
 | 
 |  |  |     CrossZoneName = ""    #(String CrossZoneName)// 跨服分区名
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xC0
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         self.Head.Cmd = 0xC0
 | 
 |  |  |         self.Head.SubCmd = 0x06
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Cmd = 0xC0
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xC0
 | 
 |  |  |         self.Head.SubCmd = 0x06
 | 
 |  |  |         self.ZoneID = 0
 | 
 |  |  |         self.SeasonID = 0
 | 
 |  |  |         self.SeasonState = 0
 | 
 |  |  |         self.MatchState = 0
 | 
 |  |  |         self.CrossZoneNameLen = 0
 | 
 |  |  |         self.CrossZoneName = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagGCCrossRealmPKSeasonState)
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += len(self.CrossZoneName)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ZoneID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.SeasonID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.SeasonState)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.MatchState)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ZoneID:%d,
 | 
 |  |  |                                 SeasonID:%d,
 | 
 |  |  |                                 SeasonState:%d,
 | 
 |  |  |                                 MatchState:%d
 | 
 |  |  |                                 MatchState:%d,
 | 
 |  |  |                                 CrossZoneNameLen:%d,
 | 
 |  |  |                                 CrossZoneName:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ZoneID,
 | 
 |  |  |                                 self.SeasonID,
 | 
 |  |  |                                 self.SeasonState,
 | 
 |  |  |                                 self.MatchState
 | 
 |  |  |                                 self.MatchState,
 | 
 |  |  |                                 self.CrossZoneNameLen,
 | 
 |  |  |                                 self.CrossZoneName
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
 | 
 |  |  | # A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartSuiteLV(Structure):
 | 
 |  |  |     EquipIndex = 0    #(BYTE EquipIndex)
 | 
 |  |  |     Len = 0    #(WORD Len)//长度
 | 
 |  |  |     SuiteLVInfo = ""    #(String SuiteLVInfo)//{套装类型:等级}
 | 
 |  |  |     data = None
 | 
 |  |  | class  tagMCEquipPartStar(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("EquipPackIndex", c_ushort),     | 
 |  |  |                   ("Star", c_ubyte),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.SuiteLVInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
 | 
 |  |  |         return _pos
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.Len = 0
 | 
 |  |  |         self.SuiteLVInfo = ""
 | 
 |  |  |         self.EquipPackIndex = 0
 | 
 |  |  |         self.Star = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.SuiteLVInfo)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  |         return sizeof(tagMCEquipPartStar)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.EquipIndex)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Len)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Len, self.SuiteLVInfo)
 | 
 |  |  |         return data
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 Len:%d,
 | 
 |  |  |                                 SuiteLVInfo:%s
 | 
 |  |  |         DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
 | 
 |  |  |                                 EquipPackIndex:%d,
 | 
 |  |  |                                 Star:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.Len,
 | 
 |  |  |                                 self.SuiteLVInfo
 | 
 |  |  |                                 self.EquipPackIndex,
 | 
 |  |  |                                 self.Star
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartSuiteLVInfo(Structure):
 | 
 |  |  | class  tagMCEquipPartStarInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartSuiteLV> InfoList)// 信息列表
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartStar> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         self.Head.SubCmd = 0xB1
 | 
 |  |  |         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):
 | 
 |  |  |             temInfoList = tagMCEquipPartSuiteLV()
 | 
 |  |  |             temInfoList = tagMCEquipPartStar()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         self.Head.SubCmd = 0xB1
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.InfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCEquipPartSuiteLVInfo=tagMCEquipPartSuiteLVInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteLVInfo.Head.Cmd,m_NAtagMCEquipPartSuiteLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteLVInfo
 | 
 |  |  | m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMagicWeaponLV(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("MWID", c_int),    # 法宝ID
 | 
 |  |  |                   ("MWLV", 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.MWID = 0
 | 
 |  |  |         self.MWLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCMagicWeaponLV)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg:
 | 
 |  |  |                                 MWID:%d,
 | 
 |  |  |                                 MWLV:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.MWID,
 | 
 |  |  |                                 self.MWLV
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMagicWeaponMsg(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 法宝个数
 | 
 |  |  |     MWInfo = list()    #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0xBE
 | 
 |  |  |         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):
 | 
 |  |  |             temMWInfo = tagMCMagicWeaponLV()
 | 
 |  |  |             _pos = temMWInfo.ReadData(_lpData, _pos)
 | 
 |  |  |             self.MWInfo.append(temMWInfo)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0xBE
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.MWInfo = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.MWInfo[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.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 MWInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 46 大师经验信息 #tagMCGreatMasterExp
 | 
 |  |  | 
 | 
 |  |  | class  tagMCGreatMasterExp(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
 | 
 |  |  | # A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartStarLV(Structure):
 | 
 |  |  | class  tagMCEquipPartPlusLV(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("PackType", c_ubyte),    
 | 
 |  |  |                   ("EquipIndex", c_ubyte),    
 | 
 |  |  |                   ("EquipPartStarLV", c_ushort),    
 | 
 |  |  |                   ("Proficiency", c_int),    
 | 
 |  |  |                   ("EvolveLV", c_ubyte),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.EquipPartStarLV = 0
 | 
 |  |  |         self.Proficiency = 0
 | 
 |  |  |         self.EvolveLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCEquipPartStarLV)
 | 
 |  |  |         return sizeof(tagMCEquipPartPlusLV)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
 | 
 |  |  |         DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
 | 
 |  |  |                                 PackType:%d,
 | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 EquipPartStarLV:%d,
 | 
 |  |  |                                 Proficiency:%d
 | 
 |  |  |                                 Proficiency:%d,
 | 
 |  |  |                                 EvolveLV:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.PackType,
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.EquipPartStarLV,
 | 
 |  |  |                                 self.Proficiency
 | 
 |  |  |                                 self.Proficiency,
 | 
 |  |  |                                 self.EvolveLV
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartStarLVInfo(Structure):
 | 
 |  |  | class  tagMCEquipPartPlusInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temInfoList = tagMCEquipPartStarLV()
 | 
 |  |  |             temInfoList = tagMCEquipPartPlusLV()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
 | 
 |  |  | m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |     ItemData = ""    #(String ItemData)//物品记录
 | 
 |  |  |     PlusDataSize = 0    #(DWORD PlusDataSize)
 | 
 |  |  |     PlusData = ""    #(String PlusData)//扩展记录    
 | 
 |  |  |     CrossPlayer = 0    #(BYTE CrossPlayer)//是否跨服玩家
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
 | 
 |  |  |         self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
 | 
 |  |  |         self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.ItemData = ""
 | 
 |  |  |         self.PlusDataSize = 0
 | 
 |  |  |         self.PlusData = ""
 | 
 |  |  |         self.CrossPlayer = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += len(self.ItemData)
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += len(self.PlusData)
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.PlusDataSize)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.CrossPlayer)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  | 
 |  |  |                                 ItemDataSize:%d,
 | 
 |  |  |                                 ItemData:%s,
 | 
 |  |  |                                 PlusDataSize:%d,
 | 
 |  |  |                                 PlusData:%s,
 | 
 |  |  |                                 CrossPlayer:%d
 | 
 |  |  |                                 PlusData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  | 
 |  |  |                                 self.ItemDataSize,
 | 
 |  |  |                                 self.ItemData,
 | 
 |  |  |                                 self.PlusDataSize,
 | 
 |  |  |                                 self.PlusData,
 | 
 |  |  |                                 self.CrossPlayer
 | 
 |  |  |                                 self.PlusData
 | 
 |  |  |                                 )
 | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
 | 
 |  |  | 
 | 
 |  |  | class  tagMCZhuXianDecomposeItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("ItemID", c_int),    #物品ID
 | 
 |  |  |                   ("ItemCnt", c_ubyte),    #物品数量
 | 
 |  |  |                   ("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.ItemCnt = 0
 | 
 |  |  |         self.IsBind = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCZhuXianDecomposeItem)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCnt:%d,
 | 
 |  |  |                                 IsBind:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCnt,
 | 
 |  |  |                                 self.IsBind
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCZhuXianDecomposeResult(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Cnt = 0    #(BYTE Cnt)//数量
 | 
 |  |  |     ItemList = list()    #(vector<tagMCZhuXianDecomposeItem> ItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x15
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Cnt):
 | 
 |  |  |             temItemList = tagMCZhuXianDecomposeItem()
 | 
 |  |  |             _pos = temItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ItemList.append(temItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x15
 | 
 |  |  |         self.Cnt = 0
 | 
 |  |  |         self.ItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Cnt):
 | 
 |  |  |             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.Cnt)
 | 
 |  |  |         for i in range(self.Cnt):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Cnt:%d,
 | 
 |  |  |                                 ItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Cnt,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardAction(Structure):
 | 
 |  |  |     TemplateID = 0    #(DWORD TemplateID)// 模板ID
 | 
 |  |  |     ActionType = 0    #(WORD ActionType)// 活动类别
 | 
 |  |  |     TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
 | 
 |  |  |     SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
 | 
 |  |  |     Count = 0    #(WORD Count)// 物品配置长度
 | 
 |  |  |     ItemInfo = ""    #(String ItemInfo)// 物品信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.TemplateID = 0
 | 
 |  |  |         self.ActionType = 0
 | 
 |  |  |         self.TotalTimes = 0
 | 
 |  |  |         self.SingleTimes = 0
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.ItemInfo = ""
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.ItemInfo)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TemplateID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ActionType)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TotalTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.SingleTimes)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Count)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 TemplateID:%d,
 | 
 |  |  |                                 ActionType:%d,
 | 
 |  |  |                                 TotalTimes:%d,
 | 
 |  |  |                                 SingleTimes:%d,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 ItemInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.TemplateID,
 | 
 |  |  |                                 self.ActionType,
 | 
 |  |  |                                 self.TotalTimes,
 | 
 |  |  |                                 self.SingleTimes,
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 self.ItemInfo
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardDayInfo(Structure):
 | 
 |  |  |     ActCnt = 0    #(BYTE ActCnt)// 数量
 | 
 |  |  |     TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
 | 
 |  |  |     WorldLV = 0    #(WORD WorldLV)// 世界等级
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ActCnt):
 | 
 |  |  |             value,_pos=CommFunc.ReadWORD(_lpData,_pos)
 | 
 |  |  |             self.TemplateList.append(value)
 | 
 |  |  |         self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ActCnt = 0
 | 
 |  |  |         self.TemplateList = list()
 | 
 |  |  |         self.WorldLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2 * self.ActCnt
 | 
 |  |  |         length += 2
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ActCnt)
 | 
 |  |  |         for i in range(self.ActCnt):
 | 
 |  |  |             data = CommFunc.WriteWORD(data, self.TemplateList[i])
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.WorldLV)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ActCnt:%d,
 | 
 |  |  |                                 TemplateList:%s,
 | 
 |  |  |                                 WorldLV:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ActCnt,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.WorldLV
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
 | 
 |  |  |     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
 | 
 |  |  |     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
 | 
 |  |  |     IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
 | 
 |  |  |     ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
 | 
 |  |  |     LimitLV = 0    #(WORD LimitLV)// 限制等级
 | 
 |  |  |     DayCnt = 0    #(BYTE DayCnt)// 天数
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
 | 
 |  |  |     TCount = 0    #(BYTE TCount)// 模板数
 | 
 |  |  |     ActionInfo = list()    #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x0C
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             temDayInfoList = tagMCActLoginAwardDayInfo()
 | 
 |  |  |             _pos = temDayInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.DayInfoList.append(temDayInfoList)
 | 
 |  |  |         self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             temActionInfo = tagMCActLoginAwardAction()
 | 
 |  |  |             _pos = temActionInfo.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ActionInfo.append(temActionInfo)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x0C
 | 
 |  |  |         self.StartDate = ""
 | 
 |  |  |         self.EndtDate = ""
 | 
 |  |  |         self.AdvanceMinutes = 0
 | 
 |  |  |         self.IsDayReset = 0
 | 
 |  |  |         self.ResetType = 0
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  |         self.DayCnt = 0
 | 
 |  |  |         self.DayInfoList = list()
 | 
 |  |  |         self.TCount = 0
 | 
 |  |  |         self.ActionInfo = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             length += self.DayInfoList[i].GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             length += self.ActionInfo[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.StartDate)
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.EndtDate)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsDayReset)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ResetType)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LimitLV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.DayCnt)
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.TCount)
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 StartDate:%s,
 | 
 |  |  |                                 EndtDate:%s,
 | 
 |  |  |                                 AdvanceMinutes:%d,
 | 
 |  |  |                                 IsDayReset:%d,
 | 
 |  |  |                                 ResetType:%d,
 | 
 |  |  |                                 LimitLV:%d,
 | 
 |  |  |                                 DayCnt:%d,
 | 
 |  |  |                                 DayInfoList:%s,
 | 
 |  |  |                                 TCount:%d,
 | 
 |  |  |                                 ActionInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndtDate,
 | 
 |  |  |                                 self.AdvanceMinutes,
 | 
 |  |  |                                 self.IsDayReset,
 | 
 |  |  |                                 self.ResetType,
 | 
 |  |  |                                 self.LimitLV,
 | 
 |  |  |                                 self.DayCnt,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.TCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardTaskInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("TemplateID", c_ushort),    # 模板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.TemplateID = 0
 | 
 |  |  |         self.CurTimes = 0
 | 
 |  |  |         self.GotTimes = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCActLoginAwardTaskInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
 | 
 |  |  |                                 TemplateID:%d,
 | 
 |  |  |                                 CurTimes:%d,
 | 
 |  |  |                                 GotTimes:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.TemplateID,
 | 
 |  |  |                                 self.CurTimes,
 | 
 |  |  |                                 self.GotTimes
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardDayPlayerInfo(Structure):
 | 
 |  |  |     DayIndex = 0    #(DWORD DayIndex)//第X天
 | 
 |  |  |     ACount = 0    #(DWORD ACount)//任务条目数
 | 
 |  |  |     TaskList = list()    #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             temTaskList = tagMCActLoginAwardTaskInfo()
 | 
 |  |  |             _pos = temTaskList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.TaskList.append(temTaskList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.DayIndex = 0
 | 
 |  |  |         self.ACount = 0
 | 
 |  |  |         self.TaskList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             length += self.TaskList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.DayIndex)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ACount)
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 DayIndex:%d,
 | 
 |  |  |                                 ACount:%d,
 | 
 |  |  |                                 TaskList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.DayIndex,
 | 
 |  |  |                                 self.ACount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCActLoginAwardPlayerInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x0D
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
 | 
 |  |  |             _pos = temDayInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.DayInfoList.append(temDayInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x0D
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.DayInfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.DayInfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 DayInfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("NeedPoint", c_ushort),    # 领奖需要积分
 | 
 |  |  |                   ("ItemID", c_int),    # 物品ID
 | 
 |  |  |                   ("ItemCnt", c_ushort),    # 物品数量
 | 
 |  |  |                   ("IsBind", c_ubyte),    # 是否绑定
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.NeedPoint = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCnt = 0
 | 
 |  |  |         self.IsBind = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCFeastWeekPartyItem)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
 | 
 |  |  |                                 NeedPoint:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCnt:%d,
 | 
 |  |  |                                 IsBind:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.NeedPoint,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCnt,
 | 
 |  |  |                                 self.IsBind
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyAction(Structure):
 | 
 |  |  |     TemplateID = 0    #(DWORD TemplateID)// 模板ID
 | 
 |  |  |     ActionType = 0    #(WORD ActionType)// 活动类别
 | 
 |  |  |     TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
 | 
 |  |  |     SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
 | 
 |  |  |     Point = 0    #(DWORD Point)// 单次领奖积分
 | 
 |  |  |     Count = 0    #(BYTE Count)// 物品数
 | 
 |  |  |     ItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temItemInfo = tagMCFeastWeekPartyItem()
 | 
 |  |  |             _pos = temItemInfo.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ItemInfo.append(temItemInfo)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.TemplateID = 0
 | 
 |  |  |         self.ActionType = 0
 | 
 |  |  |         self.TotalTimes = 0
 | 
 |  |  |         self.SingleTimes = 0
 | 
 |  |  |         self.Point = 0
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.ItemInfo = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.ItemInfo[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TemplateID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ActionType)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TotalTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.SingleTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.Point)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 TemplateID:%d,
 | 
 |  |  |                                 ActionType:%d,
 | 
 |  |  |                                 TotalTimes:%d,
 | 
 |  |  |                                 SingleTimes:%d,
 | 
 |  |  |                                 Point:%d,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 ItemInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.TemplateID,
 | 
 |  |  |                                 self.ActionType,
 | 
 |  |  |                                 self.TotalTimes,
 | 
 |  |  |                                 self.SingleTimes,
 | 
 |  |  |                                 self.Point,
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyDayInfo(Structure):
 | 
 |  |  |     ActCnt = 0    #(BYTE ActCnt)// 数量
 | 
 |  |  |     TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
 | 
 |  |  |     PCount = 0    #(BYTE PCount)// 物品数
 | 
 |  |  |     PItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ActCnt):
 | 
 |  |  |             value,_pos=CommFunc.ReadWORD(_lpData,_pos)
 | 
 |  |  |             self.TemplateList.append(value)
 | 
 |  |  |         self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.PCount):
 | 
 |  |  |             temPItemInfo = tagMCFeastWeekPartyItem()
 | 
 |  |  |             _pos = temPItemInfo.ReadData(_lpData, _pos)
 | 
 |  |  |             self.PItemInfo.append(temPItemInfo)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ActCnt = 0
 | 
 |  |  |         self.TemplateList = list()
 | 
 |  |  |         self.PCount = 0
 | 
 |  |  |         self.PItemInfo = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2 * self.ActCnt
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.PCount):
 | 
 |  |  |             length += self.PItemInfo[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ActCnt)
 | 
 |  |  |         for i in range(self.ActCnt):
 | 
 |  |  |             data = CommFunc.WriteWORD(data, self.TemplateList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.PCount)
 | 
 |  |  |         for i in range(self.PCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ActCnt:%d,
 | 
 |  |  |                                 TemplateList:%s,
 | 
 |  |  |                                 PCount:%d,
 | 
 |  |  |                                 PItemInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ActCnt,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.PCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
 | 
 |  |  |     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
 | 
 |  |  |     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
 | 
 |  |  |     IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
 | 
 |  |  |     ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
 | 
 |  |  |     LimitLV = 0    #(WORD LimitLV)// 限制等级
 | 
 |  |  |     DayCnt = 0    #(BYTE DayCnt)// 天数
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
 | 
 |  |  |     TCount = 0    #(BYTE TCount)// 模板数
 | 
 |  |  |     ActionInfo = list()    #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x20
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             temDayInfoList = tagMCFeastWeekPartyDayInfo()
 | 
 |  |  |             _pos = temDayInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.DayInfoList.append(temDayInfoList)
 | 
 |  |  |         self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             temActionInfo = tagMCFeastWeekPartyAction()
 | 
 |  |  |             _pos = temActionInfo.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ActionInfo.append(temActionInfo)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x20
 | 
 |  |  |         self.StartDate = ""
 | 
 |  |  |         self.EndtDate = ""
 | 
 |  |  |         self.AdvanceMinutes = 0
 | 
 |  |  |         self.IsDayReset = 0
 | 
 |  |  |         self.ResetType = 0
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  |         self.DayCnt = 0
 | 
 |  |  |         self.DayInfoList = list()
 | 
 |  |  |         self.TCount = 0
 | 
 |  |  |         self.ActionInfo = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             length += self.DayInfoList[i].GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             length += self.ActionInfo[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.StartDate)
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.EndtDate)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsDayReset)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ResetType)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LimitLV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.DayCnt)
 | 
 |  |  |         for i in range(self.DayCnt):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.TCount)
 | 
 |  |  |         for i in range(self.TCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 StartDate:%s,
 | 
 |  |  |                                 EndtDate:%s,
 | 
 |  |  |                                 AdvanceMinutes:%d,
 | 
 |  |  |                                 IsDayReset:%d,
 | 
 |  |  |                                 ResetType:%d,
 | 
 |  |  |                                 LimitLV:%d,
 | 
 |  |  |                                 DayCnt:%d,
 | 
 |  |  |                                 DayInfoList:%s,
 | 
 |  |  |                                 TCount:%d,
 | 
 |  |  |                                 ActionInfo:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndtDate,
 | 
 |  |  |                                 self.AdvanceMinutes,
 | 
 |  |  |                                 self.IsDayReset,
 | 
 |  |  |                                 self.ResetType,
 | 
 |  |  |                                 self.LimitLV,
 | 
 |  |  |                                 self.DayCnt,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.TCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyTaskInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("TemplateID", c_ushort),    # 模板ID
 | 
 |  |  |                   ("CurTimes", c_int),    #已完成次数
 | 
 |  |  |                   ("GotTimes", c_int),    #已领取次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.TemplateID = 0
 | 
 |  |  |         self.CurTimes = 0
 | 
 |  |  |         self.GotTimes = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCFeastWeekPartyTaskInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
 | 
 |  |  |                                 TemplateID:%d,
 | 
 |  |  |                                 CurTimes:%d,
 | 
 |  |  |                                 GotTimes:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.TemplateID,
 | 
 |  |  |                                 self.CurTimes,
 | 
 |  |  |                                 self.GotTimes
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyDayPlayerInfo(Structure):
 | 
 |  |  |     DayIndex = 0    #(DWORD DayIndex)//第X天
 | 
 |  |  |     Point = 0    #(DWORD Point)//积分
 | 
 |  |  |     AwardRecord = 0    #(DWORD AwardRecord)//积分领奖记录
 | 
 |  |  |     ACount = 0    #(DWORD ACount)//任务条目数
 | 
 |  |  |     TaskList = list()    #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             temTaskList = tagMCFeastWeekPartyTaskInfo()
 | 
 |  |  |             _pos = temTaskList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.TaskList.append(temTaskList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.DayIndex = 0
 | 
 |  |  |         self.Point = 0
 | 
 |  |  |         self.AwardRecord = 0
 | 
 |  |  |         self.ACount = 0
 | 
 |  |  |         self.TaskList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             length += self.TaskList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.DayIndex)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.Point)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.AwardRecord)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ACount)
 | 
 |  |  |         for i in range(self.ACount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 DayIndex:%d,
 | 
 |  |  |                                 Point:%d,
 | 
 |  |  |                                 AwardRecord:%d,
 | 
 |  |  |                                 ACount:%d,
 | 
 |  |  |                                 TaskList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.DayIndex,
 | 
 |  |  |                                 self.Point,
 | 
 |  |  |                                 self.AwardRecord,
 | 
 |  |  |                                 self.ACount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastWeekPartyPlayerInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x21
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
 | 
 |  |  |             _pos = temDayInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.DayInfoList.append(temDayInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x21
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.DayInfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.DayInfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 DayInfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 02 首充信息 #tagMCFirstGoldInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFirstGoldInfo(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCLuckyTreasureItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("ItemID", c_int),    # 物品ID
 | 
 |  |  |                   ("ItemCnt", c_ushort),    # 物品数量
 | 
 |  |  |                   ("IsBind", c_ubyte),    # 是否绑定
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCnt = 0
 | 
 |  |  |         self.IsBind = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCLuckyTreasureItem)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCnt:%d,
 | 
 |  |  |                                 IsBind:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCnt,
 | 
 |  |  |                                 self.IsBind
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCLuckyTreasureInfo(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)// 限制等级
 | 
 |  |  |     LuckyPoint = 0    #(WORD LuckyPoint)// 总幸运值
 | 
 |  |  |     Count = 0    #(WORD Count)// 物品数
 | 
 |  |  |     ItemList = list()    #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x1F
 | 
 |  |  |         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.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temItemList = tagMCLuckyTreasureItem()
 | 
 |  |  |             _pos = temItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ItemList.append(temItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x1F
 | 
 |  |  |         self.StartDate = ""
 | 
 |  |  |         self.EndtDate = ""
 | 
 |  |  |         self.ResetType = 0
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  |         self.LuckyPoint = 0
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.ItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.ItemList[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.WriteWORD(data, self.LuckyPoint)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 StartDate:%s,
 | 
 |  |  |                                 EndtDate:%s,
 | 
 |  |  |                                 ResetType:%d,
 | 
 |  |  |                                 LimitLV:%d,
 | 
 |  |  |                                 LuckyPoint:%d,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 ItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndtDate,
 | 
 |  |  |                                 self.ResetType,
 | 
 |  |  |                                 self.LimitLV,
 | 
 |  |  |                                 self.LuckyPoint,
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCLuckyTreasureResultInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("LuckyPoint", c_ushort),    # 当前幸运点
 | 
 |  |  |                   ("HasFree", c_ubyte),    # 是否免费过
 | 
 |  |  |                   ("ItemID", c_int),    # 物品ID
 | 
 |  |  |                   ("ItemCnt", c_ushort),    #物品数量
 | 
 |  |  |                   ("IsBind", c_ubyte),    # 是否绑定
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x1E
 | 
 |  |  |         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 = 0x1E
 | 
 |  |  |         self.LuckyPoint = 0
 | 
 |  |  |         self.HasFree = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCnt = 0
 | 
 |  |  |         self.IsBind = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCLuckyTreasureResultInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 LuckyPoint:%d,
 | 
 |  |  |                                 HasFree:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCnt:%d,
 | 
 |  |  |                                 IsBind:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.LuckyPoint,
 | 
 |  |  |                                 self.HasFree,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCnt,
 | 
 |  |  |                                 self.IsBind
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCNewAllPeoplePartyCount(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("ActID", c_int),    #活动ID
 | 
 |  |  |                   ("CurTimes", 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
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCNewAllPeoplePartyCount)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
 | 
 |  |  |                                 ActID:%d,
 | 
 |  |  |                                 CurTimes:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ActID,
 | 
 |  |  |                                 self.CurTimes
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCNewAllPeoplePartyInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     CurPoint = 0    #(DWORD CurPoint)//当前总点数
 | 
 |  |  |     AwardRecord = 0    #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     BuyCountList = list()    #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x23
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temBuyCountList = tagMCNewAllPeoplePartyCount()
 | 
 |  |  |             _pos = temBuyCountList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.BuyCountList.append(temBuyCountList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x23
 | 
 |  |  |         self.CurPoint = 0
 | 
 |  |  |         self.AwardRecord = 0
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.BuyCountList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.BuyCountList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.CurPoint)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.AwardRecord)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 CurPoint:%d,
 | 
 |  |  |                                 AwardRecord:%d,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 BuyCountList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.CurPoint,
 | 
 |  |  |                                 self.AwardRecord,
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
 | 
 |  |  | 
 | 
 |  |  | class  tagMCNewXJSDRecharge(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x22
 | 
 |  |  |         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 = 0x22
 | 
 |  |  |         self.State = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCNewXJSDRecharge)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 State:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.State
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCRechargeRankTeHuiInfo(Structure):
 | 
 |  |  | 
 |  |  | class  tagMCWeekPartyAction(Structure):
 | 
 |  |  |     TemplateID = 0    #(DWORD TemplateID)// 模板ID
 | 
 |  |  |     ActionType = 0    #(WORD ActionType)// 活动类别
 | 
 |  |  |     TotalTimes = 0    #(BYTE TotalTimes)// 可完成的总次数,0表示不限次数
 | 
 |  |  |     TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
 | 
 |  |  |     SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
 | 
 |  |  |     Point = 0    #(DWORD Point)// 单次领奖积分
 | 
 |  |  |     Count = 0    #(BYTE Count)// 物品数
 | 
 |  |  | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TemplateID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ActionType)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.TotalTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TotalTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.SingleTimes)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.Point)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
 | 
 |  |  |     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
 | 
 |  |  |     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
 | 
 |  |  |     IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
 | 
 |  |  |     ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
 | 
 |  |  |     LimitLV = 0    #(WORD LimitLV)// 限制等级
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
 | 
 |  |  |         self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  | 
 |  |  |         self.Head.SubCmd = 0x0A
 | 
 |  |  |         self.StartDate = ""
 | 
 |  |  |         self.EndtDate = ""
 | 
 |  |  |         self.AdvanceMinutes = 0
 | 
 |  |  |         self.IsDayReset = 0
 | 
 |  |  |         self.ResetType = 0
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 10
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.StartDate)
 | 
 |  |  |         data = CommFunc.WriteString(data, 10, self.EndtDate)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsDayReset)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ResetType)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LimitLV)
 | 
 |  |  | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 StartDate:%s,
 | 
 |  |  |                                 EndtDate:%s,
 | 
 |  |  |                                 AdvanceMinutes:%d,
 | 
 |  |  |                                 IsDayReset:%d,
 | 
 |  |  |                                 ResetType:%d,
 | 
 |  |  |                                 LimitLV:%d,
 | 
 |  |  | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndtDate,
 | 
 |  |  |                                 self.AdvanceMinutes,
 | 
 |  |  |                                 self.IsDayReset,
 | 
 |  |  |                                 self.ResetType,
 | 
 |  |  |                                 self.LimitLV,
 | 
 |  |  | 
 |  |  | class  tagMCWeekPartyTaskInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("ActionType", c_ushort),    # 活动类别
 | 
 |  |  |                   ("CurTimes", c_ushort),    #已完成次数
 | 
 |  |  |                   ("GotTimes", c_ushort),    #已领取次数
 | 
 |  |  |                   ("TemplateID", c_ushort),    # 模板ID
 | 
 |  |  |                   ("CurTimes", c_int),    #已完成次数
 | 
 |  |  |                   ("GotTimes", c_int),    #已领取次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ActionType = 0
 | 
 |  |  |         self.TemplateID = 0
 | 
 |  |  |         self.CurTimes = 0
 | 
 |  |  |         self.GotTimes = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
 | 
 |  |  |                                 ActionType:%d,
 | 
 |  |  |                                 TemplateID:%d,
 | 
 |  |  |                                 CurTimes:%d,
 | 
 |  |  |                                 GotTimes:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ActionType,
 | 
 |  |  |                                 self.TemplateID,
 | 
 |  |  |                                 self.CurTimes,
 | 
 |  |  |                                 self.GotTimes
 | 
 |  |  |                                 )
 | 
 |  |  | 
 |  |  | class  tagMCWeekPartyPlayerInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCWeekPartyDayInfo> DayInfoList)//活动完成次数信息
 | 
 |  |  |     DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temDayInfoList = tagMCWeekPartyDayInfo()
 | 
 |  |  |             temDayInfoList = tagMCWeekPartyDayPlayerInfo()
 | 
 |  |  |             _pos = temDayInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.DayInfoList.append(temDayInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCDiceAward=tagMCDiceAward()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceAward.Cmd,m_NAtagMCDiceAward.SubCmd))] = m_NAtagMCDiceAward
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AB 25 节日红包信息 #tagMCFeastRedPackInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCFeastRedPackInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("MoneyNum", c_int),    # 累积抢到多少钱
 | 
 |  |  |                   ("GrabCnt", c_ushort),    # 已抢红包次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAB
 | 
 |  |  |         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 = 0xAB
 | 
 |  |  |         self.SubCmd = 0x25
 | 
 |  |  |         self.MoneyNum = 0
 | 
 |  |  |         self.GrabCnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCFeastRedPackInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 MoneyNum:%d,
 | 
 |  |  |                                 GrabCnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.MoneyNum,
 | 
 |  |  |                                 self.GrabCnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | class  tagMCClothesCoatLVInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("CoatIndex", c_int),    #时装索引
 | 
 |  |  |                   ("CoatLV", c_ubyte),    #时装等级
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x02
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x02
 | 
 |  |  |         self.CoatIndex = 0
 | 
 |  |  |         self.CoatLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 CoatIndex:%d,
 | 
 |  |  |                                 CoatLV:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.CoatIndex,
 | 
 |  |  |                                 self.CoatLV
 | 
 |  |  |                                 )
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
 | 
 |  |  | 
 | 
 |  |  | class  tagMCZhuXianBossCnt(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("Cnt", c_ubyte),    # 剩余可协助次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB2
 | 
 |  |  |         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 = 0xB2
 | 
 |  |  |         self.SubCmd = 0x12
 | 
 |  |  |         self.Cnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCZhuXianBossCnt)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 Cnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.Cnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCZhuXianTowerInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("Floor", c_int),    # 已通关层
 | 
 |  |  |                   ("LastFloor", c_int),    # 上次挑战层
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB2
 | 
 |  |  |         self.SubCmd = 0x13
 | 
 |  |  |         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 = 0xB2
 | 
 |  |  |         self.SubCmd = 0x13
 | 
 |  |  |         self.Floor = 0
 | 
 |  |  |         self.LastFloor = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCZhuXianTowerInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 Floor:%d,
 | 
 |  |  |                                 LastFloor:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.Floor,
 | 
 |  |  |                                 self.LastFloor
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer
 | 
 |  |  | 
 | 
 |  |  | class  tagMCAddMaliciousAtkPlayer(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #B4 14 根据类型来决定移动的方式 #tagMCMoveByType
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMoveByType(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ID", c_int),    #玩家ID
 | 
 |  |  |                   ("PosX", c_ushort),    # 目标X
 | 
 |  |  |                   ("PosY", c_ushort),    # 目标Y
 | 
 |  |  |                   ("MoveType", c_ubyte),    #移动方式
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB4
 | 
 |  |  |         self.SubCmd = 0x14
 | 
 |  |  |         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 = 0x14
 | 
 |  |  |         self.ID = 0
 | 
 |  |  |         self.PosX = 0
 | 
 |  |  |         self.PosY = 0
 | 
 |  |  |         self.MoveType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCMoveByType)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ID:%d,
 | 
 |  |  |                                 PosX:%d,
 | 
 |  |  |                                 PosY:%d,
 | 
 |  |  |                                 MoveType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ID,
 | 
 |  |  |                                 self.PosX,
 | 
 |  |  |                                 self.PosY,
 | 
 |  |  |                                 self.MoveType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCMoveByType=tagMCMoveByType()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #B4 07 被动技能页选择(功法) # tagMCPassivePage
 | 
 |  |  | 
 | 
 |  |  | class  tagMCPassivePage(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
 | 
 |  |  | 
 | 
 |  |  | class  tagPlayerSkill(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("SkillID", c_int),    #技能ID
 | 
 |  |  |                   ("RemainTime", c_int),    #剩余时间
 | 
 |  |  |                   ("Proficiency", 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.SkillID = 0
 | 
 |  |  |         self.RemainTime = 0
 | 
 |  |  |         self.Proficiency = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagPlayerSkill)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B4 13 通知玩家所有已学技能 //tagMCPlayerSkills:
 | 
 |  |  |                                 SkillID:%d,
 | 
 |  |  |                                 RemainTime:%d,
 | 
 |  |  |                                 Proficiency:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.SkillID,
 | 
 |  |  |                                 self.RemainTime,
 | 
 |  |  |                                 self.Proficiency
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCPlayerSkills(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(WORD Count)//技能个数
 | 
 |  |  |     Skills = list()    #(vector<tagPlayerSkill> Skills)// 技能数据
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB4
 | 
 |  |  |         self.Head.SubCmd = 0x13
 | 
 |  |  |         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):
 | 
 |  |  |             temSkills = tagPlayerSkill()
 | 
 |  |  |             _pos = temSkills.ReadData(_lpData, _pos)
 | 
 |  |  |             self.Skills.append(temSkills)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB4
 | 
 |  |  |         self.Head.SubCmd = 0x13
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.Skills = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 2
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.Skills[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.Skills[i].GetLength(), self.Skills[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 Skills:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCPlayerSkills=tagMCPlayerSkills()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSkills.Head.Cmd,m_NAtagMCPlayerSkills.Head.SubCmd))] = m_NAtagMCPlayerSkills
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |                   ("DayPKCount", c_ubyte),    # 当日已PK次数
 | 
 |  |  |                   ("DayWinCount", c_ubyte),    # 当日已胜利次数
 | 
 |  |  |                   ("DayBuyCount", c_ubyte),    # 当日已购买次数
 | 
 |  |  |                   ("DayItemAddCount", c_ubyte),    # 当日物品增加次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.DayPKCount = 0
 | 
 |  |  |         self.DayWinCount = 0
 | 
 |  |  |         self.DayBuyCount = 0
 | 
 |  |  |         self.DayItemAddCount = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |                                 CWinCount:%d,
 | 
 |  |  |                                 DayPKCount:%d,
 | 
 |  |  |                                 DayWinCount:%d,
 | 
 |  |  |                                 DayBuyCount:%d
 | 
 |  |  |                                 DayBuyCount:%d,
 | 
 |  |  |                                 DayItemAddCount:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  | 
 |  |  |                                 self.CWinCount,
 | 
 |  |  |                                 self.DayPKCount,
 | 
 |  |  |                                 self.DayWinCount,
 | 
 |  |  |                                 self.DayBuyCount
 | 
 |  |  |                                 self.DayBuyCount,
 | 
 |  |  |                                 self.DayItemAddCount
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 |