hxp
2020-09-08 92b3290923b12d9beb46f3fcefd38f84e159ffab
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -2329,6 +2329,325 @@
#------------------------------------------------------
# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList
class  tagGCArenaBattleRecord(Structure):
    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
    FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
    AddScoreLen = 0    #(BYTE AddScoreLen)
    AddScore = ""    #(String AddScore)//本次对战增加的积分,有正负
    IsWin = 0    #(BYTE IsWin)//是否获胜
    Time = 0    #(DWORD Time)//时间戳
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.FightPower = 0
        self.AddScoreLen = 0
        self.AddScore = ""
        self.IsWin = 0
        self.Time = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 2
        length += 4
        length += 1
        length += len(self.AddScore)
        length += 1
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteBYTE(data, self.AddScoreLen)
        data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
        data = CommFunc.WriteBYTE(data, self.IsWin)
        data = CommFunc.WriteDWORD(data, self.Time)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                FightPower:%d,
                                AddScoreLen:%d,
                                AddScore:%s,
                                IsWin:%d,
                                Time:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.FightPower,
                                self.AddScoreLen,
                                self.AddScore,
                                self.IsWin,
                                self.Time
                                )
        return DumpString
class  tagGCArenaBattleRecordList(Structure):
    Head = tagHead()
    RecordCount = 0    #(BYTE RecordCount)
    BattleRecordList = list()    #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RecordCount):
            temBattleRecordList = tagGCArenaBattleRecord()
            _pos = temBattleRecordList.ReadData(_lpData, _pos)
            self.BattleRecordList.append(temBattleRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x23
        self.RecordCount = 0
        self.BattleRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RecordCount):
            length += self.BattleRecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RecordCount)
        for i in range(self.RecordCount):
            data = CommFunc.WriteString(data, self.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordCount:%d,
                                BattleRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordCount,
                                "..."
                                )
        return DumpString
m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList
#------------------------------------------------------
# A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList
class  tagGCArenaMatchInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
    FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
    Score = 0    #(DWORD Score)//积分
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.FightPower = 0
        self.Score = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 2
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.Score)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                FightPower:%d,
                                Score:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.FightPower,
                                self.Score
                                )
        return DumpString
class  tagGCArenaMatchList(Structure):
    Head = tagHead()
    MatchCount = 0    #(BYTE MatchCount)
    MatchList = list()    #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x22
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MatchCount):
            temMatchList = tagGCArenaMatchInfo()
            _pos = temMatchList.ReadData(_lpData, _pos)
            self.MatchList.append(temMatchList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x22
        self.MatchCount = 0
        self.MatchList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.MatchCount):
            length += self.MatchList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.MatchCount)
        for i in range(self.MatchCount):
            data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MatchCount:%d,
                                MatchList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MatchCount,
                                "..."
                                )
        return DumpString
m_NAtagGCArenaMatchList=tagGCArenaMatchList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList
#------------------------------------------------------
# A9 09 通知BOSS关注记录 #tagGCBossAttentionInfo
class  tagGCBossAttention(Structure):
@@ -4693,7 +5012,8 @@
                  ("SubCmd", c_ubyte),
                  ("Point", c_int),    # 复活点数
                  ("TotalPoint", c_int),    # 复活总点数
                  ("RebornCnt", c_ushort),    # 复活次数
                  ("RebornCnt", c_ushort),    # 今日已复活次数
                  ("TotalRebornCnt", c_ushort),    # 每日可复活总次数,0为不限制
                  ]
    def __init__(self):
@@ -4713,6 +5033,7 @@
        self.Point = 0
        self.TotalPoint = 0
        self.RebornCnt = 0
        self.TotalRebornCnt = 0
        return
    def GetLength(self):
@@ -4727,14 +5048,16 @@
                                SubCmd:%s,
                                Point:%d,
                                TotalPoint:%d,
                                RebornCnt:%d
                                RebornCnt:%d,
                                TotalRebornCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Point,
                                self.TotalPoint,
                                self.RebornCnt
                                self.RebornCnt,
                                self.TotalRebornCnt
                                )
        return DumpString
@@ -4826,6 +5149,58 @@
m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
#------------------------------------------------------
# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
class  tagGCFamilyWarInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WorldLV", c_ushort),    # 当前进行中的联赛世界等级
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAC
        self.SubCmd = 0x01
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAC
        self.SubCmd = 0x01
        self.WorldLV = 0
        return
    def GetLength(self):
        return sizeof(tagGCFamilyWarInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                WorldLV:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WorldLV
                                )
        return DumpString
m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
#------------------------------------------------------
@@ -5726,6 +6101,427 @@
#------------------------------------------------------
# B0 01 新增协助 #tagGCAssistInfoList
class  tagGCAssistInfo(Structure):
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(BYTE RealmLV)//境界
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        return _pos
    def Clear(self):
        self.AssistGUID = ""
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        return data
    def OutputString(self):
        DumpString = '''
                                AssistGUID:%s,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s
                                '''\
                                %(
                                self.AssistGUID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData
                                )
        return DumpString
class  tagGCAssistInfoList(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    AssistInfoList = list()    #(vector<tagGCAssistInfo> AssistInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAssistInfoList = tagGCAssistInfo()
            _pos = temAssistInfoList.ReadData(_lpData, _pos)
            self.AssistInfoList.append(temAssistInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        self.Count = 0
        self.AssistInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.AssistInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                AssistInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCAssistInfoList=tagGCAssistInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
#------------------------------------------------------
# B0 03 正在进行中的协助 #tagGCAssistingInfo
class  tagGCAssistingInfo(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistingInfo=tagGCAssistingInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
#------------------------------------------------------
# B0 08 协助结束 #tagGCAssistOver
class  tagGCAssistOver(Structure):
    Head = tagHead()
    IsTagPlayerReason = 0    #(BYTE IsTagPlayerReason)//是否发布方原因
    ReasonLen = 0    #(BYTE ReasonLen)
    Reason = ""    #(String Reason)//原因
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        self.IsTagPlayerReason = 0
        self.ReasonLen = 0
        self.Reason = ""
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += len(self.Reason)
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
        data = CommFunc.WriteBYTE(data, self.ReasonLen)
        data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsTagPlayerReason:%d,
                                ReasonLen:%d,
                                Reason:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsTagPlayerReason,
                                self.ReasonLen,
                                self.Reason,
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistOver=tagGCAssistOver()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
#------------------------------------------------------
# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
class  tagGCCanGetAssistThanksGiftCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CanGetCount", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x06
        self.CanGetCount = 0
        return
    def GetLength(self):
        return sizeof(tagGCCanGetAssistThanksGiftCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
                                Cmd:%s,
                                SubCmd:%s,
                                CanGetCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CanGetCount
                                )
        return DumpString
m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
#------------------------------------------------------
# B0 02 删除协助 #tagGCClearAssist
class  tagGCClearAssist(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCClearAssist=tagGCClearAssist()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
#------------------------------------------------------
#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
class  tagFamilyArrestOverState(Structure):
@@ -5851,6 +6647,324 @@
m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
#------------------------------------------------------
# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
class  tagGCGetAssistThanksGiftPreview(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    PlayerID = 0    #(DWORD PlayerID)//发起玩家ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    TimeStr = ""    #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
    ExtraAward = 0    #(BYTE ExtraAward)//是否有额外奖励
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        self.ItemID = 0
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.TimeStr = ""
        self.ExtraAward = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 19
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteString(data, 19, self.TimeStr)
        data = CommFunc.WriteBYTE(data, self.ExtraAward)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                TimeStr:%s,
                                ExtraAward:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.TimeStr,
                                self.ExtraAward
                                )
        return DumpString
m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
#------------------------------------------------------
# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
class  tagGCAssistPlayerInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV
                                )
        return DumpString
class  tagGCUseAssistThanksGiftPreview(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    AssistPlayerCount = 0    #(BYTE AssistPlayerCount)
    AssistPlayerList = list()    #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AssistPlayerCount):
            temAssistPlayerList = tagGCAssistPlayerInfo()
            _pos = temAssistPlayerList.ReadData(_lpData, _pos)
            self.AssistPlayerList.append(temAssistPlayerList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        self.ItemID = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.AssistPlayerCount = 0
        self.AssistPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 1
        for i in range(self.AssistPlayerCount):
            length += self.AssistPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
        for i in range(self.AssistPlayerCount):
            data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                AssistPlayerCount:%d,
                                AssistPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.AssistPlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
#------------------------------------------------------
@@ -6721,6 +7835,162 @@
#------------------------------------------------------
# B3 11 聊天缓存通知 #tagGCTalkCache
class  tagGCTalkCacheInfo(Structure):
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)//size = SrcNameLen
    PlayerID = 0    #(DWORD PlayerID)
    Time = 0    #(DWORD Time)
    Len = 0    #(WORD Len)
    Content = ""    #(String Content)//size = Len
    Extras = ""    #(char Extras[256])//附加值列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
        return _pos
    def Clear(self):
        self.ChannelType = 0
        self.NameLen = 0
        self.Name = ""
        self.PlayerID = 0
        self.Time = 0
        self.Len = 0
        self.Content = ""
        self.Extras = ""
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += len(self.Name)
        length += 4
        length += 4
        length += 2
        length += len(self.Content)
        length += 256
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ChannelType)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteDWORD(data, self.Time)
        data = CommFunc.WriteWORD(data, self.Len)
        data = CommFunc.WriteString(data, self.Len, self.Content)
        data = CommFunc.WriteString(data, 256, self.Extras)
        return data
    def OutputString(self):
        DumpString = '''
                                ChannelType:%d,
                                NameLen:%d,
                                Name:%s,
                                PlayerID:%d,
                                Time:%d,
                                Len:%d,
                                Content:%s,
                                Extras:%s
                                '''\
                                %(
                                self.ChannelType,
                                self.NameLen,
                                self.Name,
                                self.PlayerID,
                                self.Time,
                                self.Len,
                                self.Content,
                                self.Extras
                                )
        return DumpString
class  tagGCTalkCache(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    InfoList = list()    #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x11
        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):
            temInfoList = tagGCTalkCacheInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x11
        self.Count = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.InfoList[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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCTalkCache=tagGCTalkCache()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
#------------------------------------------------------
# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
class  tagGCAddAuctionItem(Structure):
@@ -7578,6 +8848,74 @@
m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo
#------------------------------------------------------
# B5 11 部位升星自动购买拍品消耗信息 #tagGCEquipStarAutoBuyCostInfo
class  tagGCEquipStarAutoBuyCostInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ClassLV", c_ubyte),    # 当前要升星的境界阶
                  ("EquipPlace", c_ubyte),    #当前要升星的装备位
                  ("CurStar", c_ubyte),    #当前星级
                  ("CurRate", c_ubyte),    #当前自动购买后的总概率,不满100则代表拍品库存不足
                  ("AutoBuyCostMoney", c_int),    #自动购买所需总消耗
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB5
        self.SubCmd = 0x11
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB5
        self.SubCmd = 0x11
        self.ClassLV = 0
        self.EquipPlace = 0
        self.CurStar = 0
        self.CurRate = 0
        self.AutoBuyCostMoney = 0
        return
    def GetLength(self):
        return sizeof(tagGCEquipStarAutoBuyCostInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B5 11 部位升星自动购买拍品消耗信息 //tagGCEquipStarAutoBuyCostInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ClassLV:%d,
                                EquipPlace:%d,
                                CurStar:%d,
                                CurRate:%d,
                                AutoBuyCostMoney:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ClassLV,
                                self.EquipPlace,
                                self.CurStar,
                                self.CurRate,
                                self.AutoBuyCostMoney
                                )
        return DumpString
m_NAtagGCEquipStarAutoBuyCostInfo=tagGCEquipStarAutoBuyCostInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEquipStarAutoBuyCostInfo.Cmd,m_NAtagGCEquipStarAutoBuyCostInfo.SubCmd))] = m_NAtagGCEquipStarAutoBuyCostInfo
#------------------------------------------------------
@@ -10477,6 +11815,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsRobot", c_ubyte),    # 是否匹配机器人
                  ]
    def __init__(self):
@@ -10493,6 +11832,7 @@
    def Clear(self):
        self.Cmd = 0xC0
        self.SubCmd = 0x02
        self.IsRobot = 0
        return
    def GetLength(self):
@@ -10504,11 +11844,13 @@
    def OutputString(self):
        DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
                                Cmd:%s,
                                SubCmd:%s
                                SubCmd:%s,
                                IsRobot:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                self.SubCmd,
                                self.IsRobot
                                )
        return DumpString
@@ -12530,6 +13872,74 @@
#------------------------------------------------------
# A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo
class  tagMCArenaPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsReset", c_ubyte),    #是否是重置的
                  ("Score", c_int),    #当前积分
                  ("BattleCountToday", c_ubyte),    #今日已挑战次数
                  ("MatchRefreshCount", c_ubyte),    #当前已刷新匹配列表次数,每次挑战后会重置
                  ("ItemAddBattleCountToday", c_ubyte),    #今日已使用物品增加的挑战次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC3
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0xC3
        self.IsReset = 0
        self.Score = 0
        self.BattleCountToday = 0
        self.MatchRefreshCount = 0
        self.ItemAddBattleCountToday = 0
        return
    def GetLength(self):
        return sizeof(tagMCArenaPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsReset:%d,
                                Score:%d,
                                BattleCountToday:%d,
                                MatchRefreshCount:%d,
                                ItemAddBattleCountToday:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsReset,
                                self.Score,
                                self.BattleCountToday,
                                self.MatchRefreshCount,
                                self.ItemAddBattleCountToday
                                )
        return DumpString
m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo
#------------------------------------------------------
# A3 0F 通知玩家悬赏任务信息 #tagMCArrestTaskInfo
class  tagMCArrestTaskInfo(Structure):
@@ -12798,6 +14208,7 @@
                  ("BossType", c_ubyte),    #编号类型0-世界boss 1-boss之家
                  ("KillCnt", c_int),    #击杀次数
                  ("ItemAddCnt", c_int),    #物品增加次数
                  ("BuyCnt", c_ubyte),    #购买次数
                  ]
    def __init__(self):
@@ -12813,6 +14224,7 @@
        self.BossType = 0
        self.KillCnt = 0
        self.ItemAddCnt = 0
        self.BuyCnt = 0
        return
    def GetLength(self):
@@ -12825,12 +14237,14 @@
        DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
                                BossType:%d,
                                KillCnt:%d,
                                ItemAddCnt:%d
                                ItemAddCnt:%d,
                                BuyCnt:%d
                                '''\
                                %(
                                self.BossType,
                                self.KillCnt,
                                self.ItemAddCnt
                                self.ItemAddCnt,
                                self.BuyCnt
                                )
        return DumpString
@@ -13817,6 +15231,73 @@
m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
#------------------------------------------------------
# A3 B2 装备部位星级套装激活信息 #tagMCEquipPartSuiteActivateInfo
class  tagMCEquipPartSuiteActivateInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SuiteActivateStateInfo = list()    #(vector<DWORD> SuiteActivateStateInfo)//激活状态值列表,每个数按位存31个激活索引,每个位代表对应的激活索引是否已激活
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xB2
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SuiteActivateStateInfo.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xB2
        self.Count = 0
        self.SuiteActivateStateInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SuiteActivateStateInfo[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SuiteActivateStateInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCEquipPartSuiteActivateInfo=tagMCEquipPartSuiteActivateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteActivateInfo.Head.Cmd,m_NAtagMCEquipPartSuiteActivateInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteActivateInfo
#------------------------------------------------------
@@ -15233,6 +16714,178 @@
#------------------------------------------------------
# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
class  tagMCHistoryReChargeAwardRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AwardGetRecord", c_int),    # 按二进制位标示领取记录 配置奖励ID代表第几位
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x28
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x28
        self.AwardGetRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCHistoryReChargeAwardRecord)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
                                Cmd:%s,
                                SubCmd:%s,
                                AwardGetRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AwardGetRecord
                                )
        return DumpString
m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
#------------------------------------------------------
# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
class  tagMCHorsePetSkinInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Type", c_ubyte),    # 1-坐骑 2-灵宠
                  ("ID", c_int),    # 对应坐骑表灵宠表ID
                  ("Exp", c_int),    #经验
                  ("SkinLV", c_ubyte),    #觉醒等级
                  ("SkinIndex", 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.Type = 0
        self.ID = 0
        self.Exp = 0
        self.SkinLV = 0
        self.SkinIndex = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorsePetSkinInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
                                Type:%d,
                                ID:%d,
                                Exp:%d,
                                SkinLV:%d,
                                SkinIndex:%d
                                '''\
                                %(
                                self.Type,
                                self.ID,
                                self.Exp,
                                self.SkinLV,
                                self.SkinIndex
                                )
        return DumpString
class  tagMCHorsePetSkinData(Structure):
    Head = tagHead()
    Num = 0    #(BYTE Num)//个数
    InfoList = list()    #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Num):
            temInfoList = tagMCHorsePetSkinInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        self.Num = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Num):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Num)
        for i in range(self.Num):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Num:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Num,
                                "..."
                                )
        return DumpString
m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class  tagMCMagicWeaponInfo(Structure):
@@ -15406,6 +17059,114 @@
m_NAtagMCGreatMasterExp=tagMCGreatMasterExp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGreatMasterExp.Cmd,m_NAtagMCGreatMasterExp.SubCmd))] = m_NAtagMCGreatMasterExp
#------------------------------------------------------
# A3 C2 大师强化等级激活信息 #tagMCMasterPlusLVInfo
class  tagMCMasterPlusLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ClassLV", c_ubyte),
                  ("MasterPlusLV", 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.ClassLV = 0
        self.MasterPlusLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCMasterPlusLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C2 大师强化等级激活信息 //tagMCMasterPlusLVInfo:
                                ClassLV:%d,
                                MasterPlusLV:%d
                                '''\
                                %(
                                self.ClassLV,
                                self.MasterPlusLV
                                )
        return DumpString
class  tagMCMasterPlusLVInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 信息个数
    MasterPlusLVInfoList = list()    #(vector<tagMCMasterPlusLV> MasterPlusLVInfoList)// 信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC2
        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):
            temMasterPlusLVInfoList = tagMCMasterPlusLV()
            _pos = temMasterPlusLVInfoList.ReadData(_lpData, _pos)
            self.MasterPlusLVInfoList.append(temMasterPlusLVInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC2
        self.Count = 0
        self.MasterPlusLVInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.MasterPlusLVInfoList[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.MasterPlusLVInfoList[i].GetLength(), self.MasterPlusLVInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                MasterPlusLVInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMasterPlusLVInfo=tagMCMasterPlusLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMasterPlusLVInfo.Head.Cmd,m_NAtagMCMasterPlusLVInfo.Head.SubCmd))] = m_NAtagMCMasterPlusLVInfo
#------------------------------------------------------
@@ -16560,7 +18321,7 @@
    StoveLV = 0    #(BYTE StoveLV)// 炼丹炉等级
    StoveExp = 0    #(DWORD StoveExp)// 炼丹炉经验
    ItemID = 0    #(DWORD ItemID)// 合成物品id
    ItemCnt = 0    #(BYTE ItemCnt)// 丹药数量
    ItemCnt = 0    #(WORD ItemCnt)// 丹药数量
    StoveCnt = 0    #(WORD StoveCnt)// 丹药数量
    InfoList = list()    #(vector<tagMCPlayerStoveInfo> InfoList)
    data = None
@@ -16577,7 +18338,7 @@
        self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.StoveCnt):
            temInfoList = tagMCPlayerStoveInfo()
@@ -16604,7 +18365,7 @@
        length += 1
        length += 4
        length += 4
        length += 1
        length += 2
        length += 2
        for i in range(self.StoveCnt):
            length += self.InfoList[i].GetLength()
@@ -16617,7 +18378,7 @@
        data = CommFunc.WriteBYTE(data, self.StoveLV)
        data = CommFunc.WriteDWORD(data, self.StoveExp)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteBYTE(data, self.ItemCnt)
        data = CommFunc.WriteWORD(data, self.ItemCnt)
        data = CommFunc.WriteWORD(data, self.StoveCnt)
        for i in range(self.StoveCnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
@@ -16784,6 +18545,7 @@
                  ("ExtraCnt", c_ubyte),    # VIP额外次数
                  ("ExtraData", c_ubyte),    # 额外参数1
                  ("ExtraData2", c_ubyte),    # 额外参数2
                  ("HaveRecover", c_ubyte),    # 已找回 1-全部已找回 2-非VIP已找回
                  ]
    def __init__(self):
@@ -16801,6 +18563,7 @@
        self.ExtraCnt = 0
        self.ExtraData = 0
        self.ExtraData2 = 0
        self.HaveRecover = 0
        return
    def GetLength(self):
@@ -16815,14 +18578,16 @@
                                RecoverCnt:%d,
                                ExtraCnt:%d,
                                ExtraData:%d,
                                ExtraData2:%d
                                ExtraData2:%d,
                                HaveRecover:%d
                                '''\
                                %(
                                self.Index,
                                self.RecoverCnt,
                                self.ExtraCnt,
                                self.ExtraData,
                                self.ExtraData2
                                self.ExtraData2,
                                self.HaveRecover
                                )
        return DumpString
@@ -17389,6 +19154,7 @@
    _fields_ = [
                  ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个succid   0-30为0, 31-61为1..
                  ("Record", c_int),    #对应是否领取值
                  ("PassportRecord", c_int),    #通行证奖励是否领取值
                  ]
    def __init__(self):
@@ -17403,6 +19169,7 @@
    def Clear(self):
        self.RecordIndex = 0
        self.Record = 0
        self.PassportRecord = 0
        return
    def GetLength(self):
@@ -17414,11 +19181,13 @@
    def OutputString(self):
        DumpString = '''//A3 42  成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
                                RecordIndex:%d,
                                Record:%d
                                Record:%d,
                                PassportRecord:%d
                                '''\
                                %(
                                self.RecordIndex,
                                self.Record
                                self.Record,
                                self.PassportRecord
                                )
        return DumpString
@@ -17854,16 +19623,20 @@
#------------------------------------------------------
#A3 01 坐骑培养信息 #tagTrainHorseData
class  tagMCHorseInfo(Structure):
class  tagTrainHorseData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("HorseID", c_int),    #ID
                  ("LV", c_ubyte),    #等级
                  ("Exp", c_int),    #经验
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LV", c_ubyte),    #等阶
                  ("EatItemCount", c_int),    #当前阶已吃丹个数
                  ("SkinPlusState", c_int),    #幻化激活状态,按位存储是否激活,幻化编号ID对应位
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x01
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -17872,102 +19645,39 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.HorseID = 0
        self.Cmd = 0xA3
        self.SubCmd = 0x01
        self.LV = 0
        self.Exp = 0
        self.EatItemCount = 0
        self.SkinPlusState = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorseInfo)
        return sizeof(tagTrainHorseData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData:
                                HorseID:%d,
                                Cmd:%s,
                                SubCmd:%s,
                                LV:%d,
                                Exp:%d
                                EatItemCount:%d,
                                SkinPlusState:%d
                                '''\
                                %(
                                self.HorseID,
                                self.Cmd,
                                self.SubCmd,
                                self.LV,
                                self.Exp
                                )
        return DumpString
class  tagTrainHorseData(Structure):
    Head = tagHead()
    Multiple = 0    #(BYTE Multiple)//下次暴击倍数
    Num = 0    #(BYTE Num)//个数
    InfoList = list()    #(vector<tagMCHorseInfo> InfoList)// 坐骑数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Num):
            temInfoList = tagMCHorseInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x01
        self.Multiple = 0
        self.Num = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.Num):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Multiple)
        data = CommFunc.WriteBYTE(data, self.Num)
        for i in range(self.Num):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Multiple:%d,
                                Num:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Multiple,
                                self.Num,
                                "..."
                                self.EatItemCount,
                                self.SkinPlusState
                                )
        return DumpString
m_NAtagTrainHorseData=tagTrainHorseData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Cmd,m_NAtagTrainHorseData.SubCmd))] = m_NAtagTrainHorseData
#------------------------------------------------------
@@ -19659,6 +21369,58 @@
m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
class  tagMCCreateRoleAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GetState", c_ubyte),    # 是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        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 = 0xA7
        self.SubCmd = 0x20
        self.GetState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCreateRoleAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
                                Cmd:%s,
                                SubCmd:%s,
                                GetState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GetState
                                )
        return DumpString
m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
#------------------------------------------------------
@@ -21446,6 +23208,58 @@
#------------------------------------------------------
# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
class  tagMCLingQiEquipBreakResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MakeItemID", c_int),    #突破后的物品ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA8
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA8
        self.SubCmd = 0x15
        self.MakeItemID = 0
        return
    def GetLength(self):
        return sizeof(tagMCLingQiEquipBreakResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
                                Cmd:%s,
                                SubCmd:%s,
                                MakeItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MakeItemID
                                )
        return DumpString
m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
#------------------------------------------------------
# A8 14 合成结果通知 #tagMCMakeItemAnswer
class  tagMCMakeItemAnswer(Structure):
@@ -22070,14 +23884,14 @@
#------------------------------------------------------
# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
# AA 40 集字活动信息 #tagMCActCollectWordsInfo
class  tagMCZhuXianDecomposeItem(Structure):
class  tagMCActCollectWordsNeedItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    #物品ID
                  ("ItemCnt", c_ubyte),    #物品数量
                  ("IsBind", c_ubyte),    #是否绑定
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
@@ -22091,94 +23905,329 @@
    def Clear(self):
        self.ItemID = 0
        self.ItemCnt = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianDecomposeItem)
        return sizeof(tagMCActCollectWordsNeedItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
        DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo:
                                ItemID:%d,
                                ItemCnt:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCnt,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCZhuXianDecomposeResult(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//数量
    ItemList = list()    #(vector<tagMCZhuXianDecomposeItem> ItemList)
class  tagMCActCollectWordsExchangeItem(Structure):
    ExchangeNum = 0    #(BYTE ExchangeNum)//兑换编号
    ExchangeCountMax = 0    #(BYTE ExchangeCountMax)//最大兑换次数,0不限制
    ItemID = 0    #(DWORD ItemID)//目标物品
    ItemCount = 0    #(WORD ItemCount)
    IsBind = 0    #(BYTE IsBind)
    NeedItemCount = 0    #(BYTE NeedItemCount)
    NeedItemList = list()    #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表
    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()
        self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedItemCount):
            temNeedItemList = tagMCActCollectWordsNeedItem()
            _pos = temNeedItemList.ReadData(_lpData, _pos)
            self.NeedItemList.append(temNeedItemList)
        return _pos
    def Clear(self):
        self.ExchangeNum = 0
        self.ExchangeCountMax = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        self.NeedItemCount = 0
        self.NeedItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 4
        length += 2
        length += 1
        length += 1
        for i in range(self.NeedItemCount):
            length += self.NeedItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ExchangeNum)
        data = CommFunc.WriteBYTE(data, self.ExchangeCountMax)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteBYTE(data, self.IsBind)
        data = CommFunc.WriteBYTE(data, self.NeedItemCount)
        for i in range(self.NeedItemCount):
            data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ExchangeNum:%d,
                                ExchangeCountMax:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d,
                                NeedItemCount:%d,
                                NeedItemList:%s
                                '''\
                                %(
                                self.ExchangeNum,
                                self.ExchangeCountMax,
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind,
                                self.NeedItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActCollectWordsInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    LastDayOnlyExchange = 0    #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换
    ExchangeCount = 0    #(BYTE ExchangeCount)
    ExchangeItemList = list()    #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x40
        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)
        self.ActNum,_pos = CommFunc.ReadBYTE(_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.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ExchangeCount):
            temExchangeItemList = tagMCActCollectWordsExchangeItem()
            _pos = temExchangeItemList.ReadData(_lpData, _pos)
            self.ExchangeItemList.append(temExchangeItemList)
        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()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x40
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.LimitLV = 0
        self.LastDayOnlyExchange = 0
        self.ExchangeCount = 0
        self.ExchangeItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.ItemList[i].GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        for i in range(self.ExchangeCount):
            length += self.ExchangeItemList[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())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        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.LastDayOnlyExchange)
        data = CommFunc.WriteBYTE(data, self.ExchangeCount)
        for i in range(self.ExchangeCount):
            data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                ItemList:%s
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                LimitLV:%d,
                                LastDayOnlyExchange:%d,
                                ExchangeCount:%d,
                                ExchangeItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.LimitLV,
                                self.LastDayOnlyExchange,
                                self.ExchangeCount,
                                "..."
                                )
        return DumpString
m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo
#------------------------------------------------------
# AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo
class  tagMCActCollectWordsExchangeInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ExchangeNum", c_ubyte),    #兑换编号
                  ("ExchangeCount", 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.ExchangeNum = 0
        self.ExchangeCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCActCollectWordsExchangeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo:
                                ExchangeNum:%d,
                                ExchangeCount:%d
                                '''\
                                %(
                                self.ExchangeNum,
                                self.ExchangeCount
                                )
        return DumpString
class  tagMCActCollectWordsPlayerInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
    ExchangeCount = 0    #(BYTE ExchangeCount)
    ExchangeInfoList = list()    #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x41
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ExchangeCount):
            temExchangeInfoList = tagMCActCollectWordsExchangeInfo()
            _pos = temExchangeInfoList.ReadData(_lpData, _pos)
            self.ExchangeInfoList.append(temExchangeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x41
        self.ActNum = 0
        self.ExchangeCount = 0
        self.ExchangeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.ExchangeCount):
            length += self.ExchangeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.ExchangeCount)
        for i in range(self.ExchangeCount):
            data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                ExchangeCount:%d,
                                ExchangeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.ExchangeCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo
#------------------------------------------------------
@@ -22606,6 +24655,189 @@
m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
#------------------------------------------------------
# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
class  tagMCActRechargePrize(Structure):
    _pack_ = 1
    _fields_ = [
                  ("CTGID", c_ushort),    # 对应充值表充值ID
                  ("GoldPrize", c_int),    #返利仙玉数
                  ("PrizeCountLimit", c_ubyte),    #限制最大返利次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.CTGID = 0
        self.GoldPrize = 0
        self.PrizeCountLimit = 0
        return
    def GetLength(self):
        return sizeof(tagMCActRechargePrize)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
                                CTGID:%d,
                                GoldPrize:%d,
                                PrizeCountLimit:%d
                                '''\
                                %(
                                self.CTGID,
                                self.GoldPrize,
                                self.PrizeCountLimit
                                )
        return DumpString
class  tagMCActRechargePrizeDay(Structure):
    Prizes = 0    #(BYTE Prizes)// 返利档数
    PrizeInfo = list()    #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Prizes):
            temPrizeInfo = tagMCActRechargePrize()
            _pos = temPrizeInfo.ReadData(_lpData, _pos)
            self.PrizeInfo.append(temPrizeInfo)
        return _pos
    def Clear(self):
        self.Prizes = 0
        self.PrizeInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        for i in range(self.Prizes):
            length += self.PrizeInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.Prizes)
        for i in range(self.Prizes):
            data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Prizes:%d,
                                PrizeInfo:%s
                                '''\
                                %(
                                self.Prizes,
                                "..."
                                )
        return DumpString
class  tagMCActRechargePrizeInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    PrizeDays = 0    #(BYTE PrizeDays)
    PrizeDayInfo = list()    #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x27
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PrizeDays):
            temPrizeDayInfo = tagMCActRechargePrizeDay()
            _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
            self.PrizeDayInfo.append(temPrizeDayInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x27
        self.StartDate = ""
        self.EndtDate = ""
        self.IsDayReset = 0
        self.PrizeDays = 0
        self.PrizeDayInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 1
        for i in range(self.PrizeDays):
            length += self.PrizeDayInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.PrizeDays)
        for i in range(self.PrizeDays):
            data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                IsDayReset:%d,
                                PrizeDays:%d,
                                PrizeDayInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.IsDayReset,
                                self.PrizeDays,
                                "..."
                                )
        return DumpString
m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
#------------------------------------------------------
@@ -23438,7 +25670,7 @@
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    
                  ("ItemCount", c_ushort),
                  ("ItemCount", c_int),
                  ("IsBind", c_ubyte),    
                  ]
@@ -23739,6 +25971,359 @@
m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
#------------------------------------------------------
# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
class  tagMCDailyGiftbagItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCDailyGiftbagItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo:
                                ItemID:%d,
                                ItemCount:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount
                                )
        return DumpString
class  tagMCDailyGiftbag(Structure):
    GiftID = 0    #(DWORD GiftID)//礼包ID,0为免费
    OrderInfoLen = 0    #(BYTE OrderInfoLen)
    OrderInfo = ""    #(String OrderInfo)//商品编号
    BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数
    RMB = 0    #(DWORD RMB)//所需RMB,元
    GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数
    ItemInfo = list()    #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
        self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftItemCount):
            temItemInfo = tagMCDailyGiftbagItem()
            _pos = temItemInfo.ReadData(_lpData, _pos)
            self.ItemInfo.append(temItemInfo)
        return _pos
    def Clear(self):
        self.GiftID = 0
        self.OrderInfoLen = 0
        self.OrderInfo = ""
        self.BuyCountLimit = 0
        self.RMB = 0
        self.GiftItemCount = 0
        self.ItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += len(self.OrderInfo)
        length += 1
        length += 4
        length += 1
        for i in range(self.GiftItemCount):
            length += self.ItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.GiftID)
        data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
        data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
        data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
        data = CommFunc.WriteDWORD(data, self.RMB)
        data = CommFunc.WriteBYTE(data, self.GiftItemCount)
        for i in range(self.GiftItemCount):
            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                GiftID:%d,
                                OrderInfoLen:%d,
                                OrderInfo:%s,
                                BuyCountLimit:%d,
                                RMB:%d,
                                GiftItemCount:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.GiftID,
                                self.OrderInfoLen,
                                self.OrderInfo,
                                self.BuyCountLimit,
                                self.RMB,
                                self.GiftItemCount,
                                "..."
                                )
        return DumpString
class  tagMCDailyGiftbagInfo(Structure):
    Head = tagHead()
    GiftbagCount = 0    #(BYTE GiftbagCount)// 礼包数
    GiftbagInfo = list()    #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x25
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftbagCount):
            temGiftbagInfo = tagMCDailyGiftbag()
            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
            self.GiftbagInfo.append(temGiftbagInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x25
        self.GiftbagCount = 0
        self.GiftbagInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.GiftbagCount):
            length += self.GiftbagInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
        for i in range(self.GiftbagCount):
            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                GiftbagCount:%d,
                                GiftbagInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.GiftbagCount,
                                "..."
                                )
        return DumpString
m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo
#------------------------------------------------------
# AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo
class  tagMCDailyGiftbagBuyCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GiftbagID", c_int),    #礼包ID
                  ("BuyCount", 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.GiftbagID = 0
        self.BuyCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCDailyGiftbagBuyCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo:
                                GiftbagID:%d,
                                BuyCount:%d
                                '''\
                                %(
                                self.GiftbagID,
                                self.BuyCount
                                )
        return DumpString
class  tagMCDailyGiftbagPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    BuyCountList = list()    #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x26
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temBuyCountList = tagMCDailyGiftbagBuyCount()
            _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 = 0x26
        self.Count = 0
        self.BuyCountList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        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.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,
                                Count:%d,
                                BuyCountList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo
#------------------------------------------------------
# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
class  tagMCDayFreeGoldGiftState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DayFreeGoldGiftState", c_ubyte),    #每日免费直购礼包是否已领奖 0-未领 1-已领
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x24
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x24
        self.DayFreeGoldGiftState = 0
        return
    def GetLength(self):
        return sizeof(tagMCDayFreeGoldGiftState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
                                Cmd:%s,
                                SubCmd:%s,
                                DayFreeGoldGiftState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DayFreeGoldGiftState
                                )
        return DumpString
m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
#------------------------------------------------------
@@ -24261,8 +26846,9 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FirstGoldRewardState", c_ubyte),    #首充奖励是否已领奖
                  ("FirstGoldRewardState", c_ubyte),    #首充奖励领奖记录,按位记录首充第X天是否已领取,第1天为第0索引位
                  ("FirstGoldTry", c_ubyte),    #首充试用状态0-不可试用 1-可试用 2-已试用
                  ("FirstGoldServerDay", c_ushort),    #首充时是开服第几天,从1开始,0代表未记录充值
                  ]
    def __init__(self):
@@ -24281,6 +26867,7 @@
        self.SubCmd = 0x02
        self.FirstGoldRewardState = 0
        self.FirstGoldTry = 0
        self.FirstGoldServerDay = 0
        return
    def GetLength(self):
@@ -24294,13 +26881,15 @@
                                Cmd:%s,
                                SubCmd:%s,
                                FirstGoldRewardState:%d,
                                FirstGoldTry:%d
                                FirstGoldTry:%d,
                                FirstGoldServerDay:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FirstGoldRewardState,
                                self.FirstGoldTry
                                self.FirstGoldTry,
                                self.FirstGoldServerDay
                                )
        return DumpString
@@ -25630,6 +28219,114 @@
#------------------------------------------------------
# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
class  tagMCRechargePrizeInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("CTGID", c_ushort),    # 对应充值表充值ID
                  ("PrizeCount", c_ubyte),    # 已返利次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.CTGID = 0
        self.PrizeCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCRechargePrizeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
                                CTGID:%d,
                                PrizeCount:%d
                                '''\
                                %(
                                self.CTGID,
                                self.PrizeCount
                                )
        return DumpString
class  tagMCRechargePrizePlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    PlayerInfoList = list()    #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x28
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temPlayerInfoList = tagMCRechargePrizeInfo()
            _pos = temPlayerInfoList.ReadData(_lpData, _pos)
            self.PlayerInfoList.append(temPlayerInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x28
        self.Count = 0
        self.PlayerInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.PlayerInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                PlayerInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class  tagMCSpringSaleItem(Structure):
@@ -26664,6 +29361,9 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
                  ("CTGTotal", c_int),    #本次活动已累计充值,单位元
                  ("FireworksBuyCount", c_ushort),    #已购买高级烟花数
                  ("FirewordsScore", c_int),    #当前累计所有烟花总积分
                  ]
    def __init__(self):
@@ -26681,6 +29381,9 @@
        self.Cmd = 0xAA
        self.SubCmd = 0x14
        self.State = 0
        self.CTGTotal = 0
        self.FireworksBuyCount = 0
        self.FirewordsScore = 0
        return
    def GetLength(self):
@@ -26693,18 +29396,132 @@
        DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
                                Cmd:%s,
                                SubCmd:%s,
                                State:%d
                                State:%d,
                                CTGTotal:%d,
                                FireworksBuyCount:%d,
                                FirewordsScore:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.State
                                self.State,
                                self.CTGTotal,
                                self.FireworksBuyCount,
                                self.FirewordsScore
                                )
        return DumpString
m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
#------------------------------------------------------
# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
class  tagMCBossFirstKillState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("FKState", c_int),    # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.NPCID = 0
        self.FKState = 0
        return
    def GetLength(self):
        return sizeof(tagMCBossFirstKillState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
                                NPCID:%d,
                                FKState:%d
                                '''\
                                %(
                                self.NPCID,
                                self.FKState
                                )
        return DumpString
class  tagMCBossFirstKillStateInfo(Structure):
    Head = tagHead()
    BossCount = 0    #(BYTE BossCount)
    FirstKillStateList = list()    #(vector<tagMCBossFirstKillState> FirstKillStateList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BossCount):
            temFirstKillStateList = tagMCBossFirstKillState()
            _pos = temFirstKillStateList.ReadData(_lpData, _pos)
            self.FirstKillStateList.append(temFirstKillStateList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x01
        self.BossCount = 0
        self.FirstKillStateList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.BossCount):
            length += self.FirstKillStateList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.BossCount)
        for i in range(self.BossCount):
            data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                BossCount:%d,
                                FirstKillStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.BossCount,
                                "..."
                                )
        return DumpString
m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
#------------------------------------------------------
@@ -27855,6 +30672,119 @@
#------------------------------------------------------
# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
class  tagMCActivityPlaceInfo(Structure):
    Head = tagHead()
    StartTime = 0    #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
    PlaceCount = 0    #(BYTE PlaceCount)// 剩余未完成探索次数
    RewardCount = 0    #(BYTE RewardCount)// 累计未领取探索奖励次数
    RewardLen = 0    #(BYTE RewardLen)
    RewardInfo = ""    #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
    TodayExp = 0    #(DWORD TodayExp)
    TodayExpPoint = 0    #(DWORD TodayExpPoint)
    YestordayExp = 0    #(DWORD YestordayExp)
    YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
        self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        self.StartTime = 0
        self.PlaceCount = 0
        self.RewardCount = 0
        self.RewardLen = 0
        self.RewardInfo = ""
        self.TodayExp = 0
        self.TodayExpPoint = 0
        self.YestordayExp = 0
        self.YestordayExpPoint = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1
        length += 1
        length += len(self.RewardInfo)
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.StartTime)
        data = CommFunc.WriteBYTE(data, self.PlaceCount)
        data = CommFunc.WriteBYTE(data, self.RewardCount)
        data = CommFunc.WriteBYTE(data, self.RewardLen)
        data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
        data = CommFunc.WriteDWORD(data, self.TodayExp)
        data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
        data = CommFunc.WriteDWORD(data, self.YestordayExp)
        data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartTime:%d,
                                PlaceCount:%d,
                                RewardCount:%d,
                                RewardLen:%d,
                                RewardInfo:%s,
                                TodayExp:%d,
                                TodayExpPoint:%d,
                                YestordayExp:%d,
                                YestordayExpPoint:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartTime,
                                self.PlaceCount,
                                self.RewardCount,
                                self.RewardLen,
                                self.RewardInfo,
                                self.TodayExp,
                                self.TodayExpPoint,
                                self.YestordayExp,
                                self.YestordayExpPoint
                                )
        return DumpString
m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
#------------------------------------------------------
#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
class  tagFamilyArrestAwardReceiveState(Structure):
@@ -27952,6 +30882,62 @@
m_NAtagMCFishResult=tagMCFishResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFishResult.Cmd,m_NAtagMCFishResult.SubCmd))] = m_NAtagMCFishResult
#------------------------------------------------------
# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
class  tagMCTodayAssistMoneyInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TodayAssistMoney", c_ushort),    #今日已获得活跃令,不含社交加成
                  ("SocialMoney", c_ushort),    #社交额外加成
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        self.TodayAssistMoney = 0
        self.SocialMoney = 0
        return
    def GetLength(self):
        return sizeof(tagMCTodayAssistMoneyInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TodayAssistMoney:%d,
                                SocialMoney:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TodayAssistMoney,
                                self.SocialMoney
                                )
        return DumpString
m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
#------------------------------------------------------
@@ -28195,7 +31181,7 @@
    Head = tagHead()
    PointAttrIDCount = 0    #(BYTE PointAttrIDCount)// 点类型个数
    PointAttrIDList = list()    #(vector<BYTE> PointAttrIDList)// 点类型列表
    PointValueList = list()    #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
    PointValueList = list()    #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
    data = None
    def __init__(self):
@@ -28212,7 +31198,7 @@
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.PointAttrIDList.append(value)
        for i in range(self.PointAttrIDCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.PointValueList.append(value)
        return _pos
@@ -28231,7 +31217,7 @@
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.PointAttrIDCount
        length += 2 * self.PointAttrIDCount
        length += 4 * self.PointAttrIDCount
        return length
@@ -28242,7 +31228,7 @@
        for i in range(self.PointAttrIDCount):
            data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
        for i in range(self.PointAttrIDCount):
            data = CommFunc.WriteWORD(data, self.PointValueList[i])
            data = CommFunc.WriteDWORD(data, self.PointValueList[i])
        return data
    def OutputString(self):
@@ -28957,6 +31943,7 @@
    _fields_ = [
                  ("DataMapID", c_int),    # 地图ID
                  ("RemainTime", c_int),    # 剩余时间秒
                  ("RegainCnt", c_ubyte),    # 今日已恢复次数
                  ]
    def __init__(self):
@@ -28971,6 +31958,7 @@
    def Clear(self):
        self.DataMapID = 0
        self.RemainTime = 0
        self.RegainCnt = 0
        return
    def GetLength(self):
@@ -28982,11 +31970,13 @@
    def OutputString(self):
        DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime:
                                DataMapID:%d,
                                RemainTime:%d
                                RemainTime:%d,
                                RegainCnt:%d
                                '''\
                                %(
                                self.DataMapID,
                                self.RemainTime
                                self.RemainTime,
                                self.RegainCnt
                                )
        return DumpString
@@ -29796,6 +32786,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Floor", c_int),    # 已通关层
                  ("ServerRewardRecord", c_int),    #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
                  ]
    def __init__(self):
@@ -29813,6 +32804,7 @@
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        self.Floor = 0
        self.ServerRewardRecord = 0
        return
    def GetLength(self):
@@ -29825,12 +32817,14 @@
        DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Floor:%d
                                Floor:%d,
                                ServerRewardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Floor
                                self.Floor,
                                self.ServerRewardRecord
                                )
        return DumpString
@@ -30072,6 +33066,226 @@
m_NAtagMCAddMaliciousAtkPlayer=tagMCAddMaliciousAtkPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddMaliciousAtkPlayer.Cmd,m_NAtagMCAddMaliciousAtkPlayer.SubCmd))] = m_NAtagMCAddMaliciousAtkPlayer
#------------------------------------------------------
# B4 15 Boss伤血排行榜信息 #tagMCBossHurtValueRankInfo
class  tagMCBossHurtValueAssist(Structure):
    PlayerID = 0    #(DWORD PlayerID)// 助战玩家ID
    PlayerName = ""    #(char PlayerName[33])
    HurtValue = 0    #(DWORD HurtValue)//不超过亿部分
    HurtValueEx = 0    #(DWORD HurtValueEx)//支持超过20亿
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.HurtValue = 0
        self.HurtValueEx = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteDWORD(data, self.HurtValue)
        data = CommFunc.WriteDWORD(data, self.HurtValueEx)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                HurtValue:%d,
                                HurtValueEx:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.HurtValue,
                                self.HurtValueEx
                                )
        return DumpString
class  tagMCBossHurtValue(Structure):
    HurtType = 0    #(BYTE HurtType)// 伤血类型 1-玩家,2-队伍
    HurtID = 0    #(DWORD HurtID)//玩家时为玩家ID,队伍时为队伍ID
    HurtName = ""    #(char HurtName[33])// 名称
    HurtValue = 0    #(DWORD HurtValue)//不超过亿部分
    HurtValueEx = 0    #(DWORD HurtValueEx)//支持超过20亿
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.HurtType = 0
        self.HurtID = 0
        self.HurtName = ""
        self.HurtValue = 0
        self.HurtValueEx = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 4
        length += 33
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.HurtType)
        data = CommFunc.WriteDWORD(data, self.HurtID)
        data = CommFunc.WriteString(data, 33, self.HurtName)
        data = CommFunc.WriteDWORD(data, self.HurtValue)
        data = CommFunc.WriteDWORD(data, self.HurtValueEx)
        return data
    def OutputString(self):
        DumpString = '''
                                HurtType:%d,
                                HurtID:%d,
                                HurtName:%s,
                                HurtValue:%d,
                                HurtValueEx:%d
                                '''\
                                %(
                                self.HurtType,
                                self.HurtID,
                                self.HurtName,
                                self.HurtValue,
                                self.HurtValueEx
                                )
        return DumpString
class  tagMCBossHurtValueRankInfo(Structure):
    Head = tagHead()
    ObjID = 0    #(DWORD ObjID)//NPC实例ID
    HurtCount = 0    #(BYTE HurtCount)//伤血数目
    HurtValueList = list()    #(vector<tagMCBossHurtValue> HurtValueList)
    AssistHurtCount = 0    #(BYTE AssistHurtCount)//助战伤血数目
    AssistHurtValueList = list()    #(vector<tagMCBossHurtValueAssist> AssistHurtValueList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.HurtCount):
            temHurtValueList = tagMCBossHurtValue()
            _pos = temHurtValueList.ReadData(_lpData, _pos)
            self.HurtValueList.append(temHurtValueList)
        self.AssistHurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AssistHurtCount):
            temAssistHurtValueList = tagMCBossHurtValueAssist()
            _pos = temAssistHurtValueList.ReadData(_lpData, _pos)
            self.AssistHurtValueList.append(temAssistHurtValueList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x15
        self.ObjID = 0
        self.HurtCount = 0
        self.HurtValueList = list()
        self.AssistHurtCount = 0
        self.AssistHurtValueList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.HurtCount):
            length += self.HurtValueList[i].GetLength()
        length += 1
        for i in range(self.AssistHurtCount):
            length += self.AssistHurtValueList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ObjID)
        data = CommFunc.WriteBYTE(data, self.HurtCount)
        for i in range(self.HurtCount):
            data = CommFunc.WriteString(data, self.HurtValueList[i].GetLength(), self.HurtValueList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AssistHurtCount)
        for i in range(self.AssistHurtCount):
            data = CommFunc.WriteString(data, self.AssistHurtValueList[i].GetLength(), self.AssistHurtValueList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ObjID:%d,
                                HurtCount:%d,
                                HurtValueList:%s,
                                AssistHurtCount:%d,
                                AssistHurtValueList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ObjID,
                                self.HurtCount,
                                "...",
                                self.AssistHurtCount,
                                "..."
                                )
        return DumpString
m_NAtagMCBossHurtValueRankInfo=tagMCBossHurtValueRankInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossHurtValueRankInfo.Head.Cmd,m_NAtagMCBossHurtValueRankInfo.Head.SubCmd))] = m_NAtagMCBossHurtValueRankInfo
#------------------------------------------------------
@@ -31001,6 +34215,7 @@
    PosY = 0    #(WORD PosY)
    HurtCount = 0    #(WORD HurtCount)//伤害数目
    HurtList = list()    #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
    SkillElementID = 0    #(WORD SkillElementID)//专精技能ID
    data = None
    def __init__(self):
@@ -31022,6 +34237,7 @@
            temHurtList = tagSkillPosHurtObj()
            _pos = temHurtList.ReadData(_lpData, _pos)
            self.HurtList.append(temHurtList)
        self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -31036,6 +34252,7 @@
        self.PosY = 0
        self.HurtCount = 0
        self.HurtList = list()
        self.SkillElementID = 0
        return
    def GetLength(self):
@@ -31049,6 +34266,7 @@
        length += 2
        for i in range(self.HurtCount):
            length += self.HurtList[i].GetLength()
        length += 2
        return length
@@ -31063,6 +34281,7 @@
        data = CommFunc.WriteWORD(data, self.HurtCount)
        for i in range(self.HurtCount):
            data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
        data = CommFunc.WriteWORD(data, self.SkillElementID)
        return data
    def OutputString(self):
@@ -31074,7 +34293,8 @@
                                PosX:%d,
                                PosY:%d,
                                HurtCount:%d,
                                HurtList:%s
                                HurtList:%s,
                                SkillElementID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -31084,7 +34304,8 @@
                                self.PosX,
                                self.PosY,
                                self.HurtCount,
                                "..."
                                "...",
                                self.SkillElementID
                                )
        return DumpString