hxp
2019-06-22 d0f5f9922f17f5bff4288173f18a9ed827d95db8
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -196,40 +196,60 @@
# A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
class  tagGCFBLineInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("FBLineID", c_ubyte),    # 功能线路ID
                  ("PlayerCnt", c_ushort),    # 线路当前玩家数
                  ]
    FBLineID = 0    #(BYTE FBLineID)// 功能线路ID
    PlayerCnt = 0    #(WORD PlayerCnt)// 线路当前玩家数
    ExtraStrLen = 0    #(WORD ExtraStrLen)// 长度
    ExtraStr = ""    #(String ExtraStr)// 额外信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen)
        return _pos
    def Clear(self):
        self.FBLineID = 0
        self.PlayerCnt = 0
        self.ExtraStrLen = 0
        self.ExtraStr = ""
        return
    def GetLength(self):
        return sizeof(tagGCFBLineInfo)
        length = 0
        length += 1
        length += 2
        length += 2
        length += len(self.ExtraStr)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteBYTE(data, self.FBLineID)
        data = CommFunc.WriteWORD(data, self.PlayerCnt)
        data = CommFunc.WriteWORD(data, self.ExtraStrLen)
        data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr)
        return data
    def OutputString(self):
        DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt:
        DumpString = '''
                                FBLineID:%d,
                                PlayerCnt:%d
                                PlayerCnt:%d,
                                ExtraStrLen:%d,
                                ExtraStr:%s
                                '''\
                                %(
                                self.FBLineID,
                                self.PlayerCnt
                                self.PlayerCnt,
                                self.ExtraStrLen,
                                self.ExtraStr
                                )
        return DumpString
@@ -876,6 +896,58 @@
m_NAtagUniversalGameRecInfo=tagUniversalGameRecInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUniversalGameRecInfo.Head.Cmd,m_NAtagUniversalGameRecInfo.Head.SubCmd))] = m_NAtagUniversalGameRecInfo
#------------------------------------------------------
# A4 0C 多仙盟boss活动信息 #tagGCAllFamilyBossInfo
class  tagGCAllFamilyBossInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsEnd", c_ubyte),    # 是否已结束
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x0C
        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 = 0xA4
        self.SubCmd = 0x0C
        self.IsEnd = 0
        return
    def GetLength(self):
        return sizeof(tagGCAllFamilyBossInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 0C 多仙盟boss活动信息 //tagGCAllFamilyBossInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsEnd:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsEnd
                                )
        return DumpString
m_NAtagGCAllFamilyBossInfo=tagGCAllFamilyBossInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossInfo.Cmd,m_NAtagGCAllFamilyBossInfo.SubCmd))] = m_NAtagGCAllFamilyBossInfo
#------------------------------------------------------
@@ -2046,6 +2118,58 @@
m_NAtagGCPyAllFamilyView=tagGCPyAllFamilyView()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPyAllFamilyView.Head.Cmd,m_NAtagGCPyAllFamilyView.Head.SubCmd))] = m_NAtagGCPyAllFamilyView
#------------------------------------------------------
# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
class  tagGCServerCreatFamilyTimes(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Times", c_int),    #建盟次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x0D
        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 = 0xA4
        self.SubCmd = 0x0D
        self.Times = 0
        return
    def GetLength(self):
        return sizeof(tagGCServerCreatFamilyTimes)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
                                Cmd:%s,
                                SubCmd:%s,
                                Times:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Times
                                )
        return DumpString
m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
#------------------------------------------------------
@@ -3299,21 +3423,17 @@
#------------------------------------------------------
#A9 05 天梯竞技场每日奖励信息#tagGCHighLadderRewardInfo
# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
class  tagGCHighLadderRewardInfo(Structure):
class  tagGCNotifyEquipClassEquip(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("hadGot", c_ubyte),    #是否已领取
                  ("Order", c_ushort),    #奖励排名
                  ("ItemID", c_int),
                  ("Star", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -3322,36 +3442,168 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA9
        self.SubCmd = 0x05
        self.hadGot = 0
        self.Order = 0
        self.ItemID = 0
        self.Star = 0
        return
    def GetLength(self):
        return sizeof(tagGCHighLadderRewardInfo)
        return sizeof(tagGCNotifyEquipClassEquip)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A9 05 天梯竞技场每日奖励信息//tagGCHighLadderRewardInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                hadGot:%d,
                                Order:%d
        DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
                                ItemID:%d,
                                Star:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.hadGot,
                                self.Order
                                self.ItemID,
                                self.Star
                                )
        return DumpString
m_NAtagGCHighLadderRewardInfo=tagGCHighLadderRewardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHighLadderRewardInfo.Cmd,m_NAtagGCHighLadderRewardInfo.SubCmd))] = m_NAtagGCHighLadderRewardInfo
class  tagGCNotifyEquipDetailInfo(Structure):
    Head = tagHead()
    ItemGUID = ""    #(char ItemGUID[40])
    ItemID = 0    #(DWORD ItemID)
    Star = 0    #(BYTE Star)//星级
    PlusLV = 0    #(WORD PlusLV)//强化等级
    EvolveLV = 0    #(BYTE EvolveLV)//进化等级
    WashLV = 0    #(BYTE WashLV)//洗练等级
    WashValueCount = 0    #(BYTE WashValueCount)
    WashValueList = list()    #(vector<WORD> WashValueList)//洗练值
    StoneIDCount = 0    #(BYTE StoneIDCount)
    StoneIDList = list()    #(vector<DWORD> StoneIDList)//宝石
    ClassEquipCount = 0    #(BYTE ClassEquipCount)
    ClassEquipList = list()    #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WashValueCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.WashValueList.append(value)
        self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.StoneIDCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.StoneIDList.append(value)
        self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ClassEquipCount):
            temClassEquipList = tagGCNotifyEquipClassEquip()
            _pos = temClassEquipList.ReadData(_lpData, _pos)
            self.ClassEquipList.append(temClassEquipList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x05
        self.ItemGUID = ""
        self.ItemID = 0
        self.Star = 0
        self.PlusLV = 0
        self.EvolveLV = 0
        self.WashLV = 0
        self.WashValueCount = 0
        self.WashValueList = list()
        self.StoneIDCount = 0
        self.StoneIDList = list()
        self.ClassEquipCount = 0
        self.ClassEquipList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        length += 4
        length += 1
        length += 2
        length += 1
        length += 1
        length += 1
        length += 2 * self.WashValueCount
        length += 1
        length += 4 * self.StoneIDCount
        length += 1
        for i in range(self.ClassEquipCount):
            length += self.ClassEquipList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteBYTE(data, self.Star)
        data = CommFunc.WriteWORD(data, self.PlusLV)
        data = CommFunc.WriteBYTE(data, self.EvolveLV)
        data = CommFunc.WriteBYTE(data, self.WashLV)
        data = CommFunc.WriteBYTE(data, self.WashValueCount)
        for i in range(self.WashValueCount):
            data = CommFunc.WriteWORD(data, self.WashValueList[i])
        data = CommFunc.WriteBYTE(data, self.StoneIDCount)
        for i in range(self.StoneIDCount):
            data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
        data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
        for i in range(self.ClassEquipCount):
            data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemGUID:%s,
                                ItemID:%d,
                                Star:%d,
                                PlusLV:%d,
                                EvolveLV:%d,
                                WashLV:%d,
                                WashValueCount:%d,
                                WashValueList:%s,
                                StoneIDCount:%d,
                                StoneIDList:%s,
                                ClassEquipCount:%d,
                                ClassEquipList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemGUID,
                                self.ItemID,
                                self.Star,
                                self.PlusLV,
                                self.EvolveLV,
                                self.WashLV,
                                self.WashValueCount,
                                "...",
                                self.StoneIDCount,
                                "...",
                                self.ClassEquipCount,
                                "..."
                                )
        return DumpString
m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
#------------------------------------------------------
@@ -4116,124 +4368,6 @@
#------------------------------------------------------
# A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
class  tagGCShopRefreshTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ShopID", c_int),    # 商店ID
                  ("RemainSecond", c_int),    # 多少秒后刷新
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        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 = 0xA9
        self.SubCmd = 0x07
        self.ShopID = 0
        self.RemainSecond = 0
        return
    def GetLength(self):
        return sizeof(tagGCShopRefreshTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
                                Cmd:%s,
                                SubCmd:%s,
                                ShopID:%d,
                                RemainSecond:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ShopID,
                                self.RemainSecond
                                )
        return DumpString
class  tagGCShopRefreshTimeList(Structure):
    Head = tagHead()
    ShopCnt = 0    #(BYTE ShopCnt)//商店信息个数
    ShopTimeInfoList = list()    #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x07
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ShopCnt):
            temShopTimeInfoList = tagGCShopRefreshTime()
            _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
            self.ShopTimeInfoList.append(temShopTimeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x07
        self.ShopCnt = 0
        self.ShopTimeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.ShopCnt):
            length += self.ShopTimeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ShopCnt)
        for i in range(self.ShopCnt):
            data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ShopCnt:%d,
                                ShopTimeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ShopCnt,
                                "..."
                                )
        return DumpString
m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
#------------------------------------------------------
# A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
class  tagGCStoreServerBuyCnt(Structure):
@@ -4695,6 +4829,203 @@
#------------------------------------------------------
# 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
#------------------------------------------------------
# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
class  tagGCFeastRedPacketDay(Structure):
    RedPacketCount = 0    #(BYTE RedPacketCount)
    RedPacketIDList = list()    #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RedPacketCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.RedPacketIDList.append(value)
        return _pos
    def Clear(self):
        self.RedPacketCount = 0
        self.RedPacketIDList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.RedPacketCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.RedPacketCount)
        for i in range(self.RedPacketCount):
            data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                RedPacketCount:%d,
                                RedPacketIDList:%s
                                '''\
                                %(
                                self.RedPacketCount,
                                "..."
                                )
        return DumpString
class  tagGCFeastRedPacketInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
    RedPacketDays = 0    #(BYTE RedPacketDays)
    RedPacketDayList = list()    #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RedPacketDays):
            temRedPacketDayList = tagGCFeastRedPacketDay()
            _pos = temRedPacketDayList.ReadData(_lpData, _pos)
            self.RedPacketDayList.append(temRedPacketDayList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x11
        self.StartDate = ""
        self.EndtDate = ""
        self.LimitLV = 0
        self.ResetType = 0
        self.RedPacketDays = 0
        self.RedPacketDayList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        for i in range(self.RedPacketDays):
            length += self.RedPacketDayList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteBYTE(data, self.RedPacketDays)
        for i in range(self.RedPacketDays):
            data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                LimitLV:%d,
                                ResetType:%d,
                                RedPacketDays:%d,
                                RedPacketDayList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.LimitLV,
                                self.ResetType,
                                self.RedPacketDays,
                                "..."
                                )
        return DumpString
m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
#------------------------------------------------------
# AC 02 通知仙魔之争信息 #tagGCXMZZInfo
class  tagGCXMZZInfo(Structure):
@@ -4879,171 +5210,55 @@
#------------------------------------------------------
# AC 01 通知领地争夺占领情况 #tagGCManorWarInfo
# AC 07 骑宠Boss信息 #tagGCHorsePetBossInfo
class  tagGCManorInfo(Structure):
    Head = tagHead()
    MapID = 0    #(DWORD MapID)// 领地地图id
    FamilyID = 0    #(DWORD FamilyID)// 占领战盟id
    FNameLen = 0    #(BYTE FNameLen)// 战盟名字长度
    FamilyName = ""    #(String FamilyName)// 战盟名 size = FNameLen
    LNameLen = 0    #(BYTE LNameLen)// 盟主名字长度
    LeaderName = ""    #(String LeaderName)// 盟主名 size = LNameLen
    OccupyDays = 0    #(WORD OccupyDays)// 连续占领天数
    LastFamilyID = 0    #(DWORD LastFamilyID)// 上次占领的战盟id
    data = None
class  tagGCHorsePetBossInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsEnd", c_int),    # 是否已结束(按位代表对应线路是否结束)
                  ]
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x01
        self.Cmd = 0xAC
        self.SubCmd = 0x07
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FNameLen)
        self.LNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LNameLen)
        self.OccupyDays,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LastFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x01
        self.MapID = 0
        self.FamilyID = 0
        self.FNameLen = 0
        self.FamilyName = ""
        self.LNameLen = 0
        self.LeaderName = ""
        self.OccupyDays = 0
        self.LastFamilyID = 0
        self.Cmd = 0xAC
        self.SubCmd = 0x07
        self.IsEnd = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 1
        length += len(self.FamilyName)
        length += 1
        length += len(self.LeaderName)
        length += 2
        length += 4
        return length
        return sizeof(tagGCHorsePetBossInfo)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteBYTE(data, self.FNameLen)
        data = CommFunc.WriteString(data, self.FNameLen, self.FamilyName)
        data = CommFunc.WriteBYTE(data, self.LNameLen)
        data = CommFunc.WriteString(data, self.LNameLen, self.LeaderName)
        data = CommFunc.WriteWORD(data, self.OccupyDays)
        data = CommFunc.WriteDWORD(data, self.LastFamilyID)
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MapID:%d,
                                FamilyID:%d,
                                FNameLen:%d,
                                FamilyName:%s,
                                LNameLen:%d,
                                LeaderName:%s,
                                OccupyDays:%d,
                                LastFamilyID:%d
        DumpString = '''// AC 07 骑宠Boss信息 //tagGCHorsePetBossInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsEnd:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MapID,
                                self.FamilyID,
                                self.FNameLen,
                                self.FamilyName,
                                self.LNameLen,
                                self.LeaderName,
                                self.OccupyDays,
                                self.LastFamilyID
                                self.Cmd,
                                self.SubCmd,
                                self.IsEnd
                                )
        return DumpString
class  tagGCManorWarInfo(Structure):
    Head = tagHead()
    ManorCnt = 0    #(BYTE ManorCnt)//领地个数
    ManorInfoList = list()    #(vector<tagGCManorInfo> ManorInfoList)//领地信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ManorCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ManorCnt):
            temManorInfoList = tagGCManorInfo()
            _pos = temManorInfoList.ReadData(_lpData, _pos)
            self.ManorInfoList.append(temManorInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x01
        self.ManorCnt = 0
        self.ManorInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.ManorCnt):
            length += self.ManorInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ManorCnt)
        for i in range(self.ManorCnt):
            data = CommFunc.WriteString(data, self.ManorInfoList[i].GetLength(), self.ManorInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ManorCnt:%d,
                                ManorInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ManorCnt,
                                "..."
                                )
        return DumpString
m_NAtagGCManorWarInfo=tagGCManorWarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo
m_NAtagGCHorsePetBossInfo=tagGCHorsePetBossInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHorsePetBossInfo.Cmd,m_NAtagGCHorsePetBossInfo.SubCmd))] = m_NAtagGCHorsePetBossInfo
#------------------------------------------------------
@@ -5274,6 +5489,91 @@
#------------------------------------------------------
# AC 0B 新仙界盛典活动信息 #tagGCNewFairyCeremonyInfo
class  tagGCNewFairyCeremonyInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x0B
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x0B
        self.StartDate = ""
        self.EndtDate = ""
        self.WorldLV = 0
        self.LimitLV = 0
        self.ResetType = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 2
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.WorldLV)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                WorldLV:%d,
                                LimitLV:%d,
                                ResetType:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.WorldLV,
                                self.LimitLV,
                                self.ResetType
                                )
        return DumpString
m_NAtagGCNewFairyCeremonyInfo=tagGCNewFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNewFairyCeremonyInfo.Head.Cmd,m_NAtagGCNewFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCNewFairyCeremonyInfo
#------------------------------------------------------
# AC 05 红包删除 #tagGCRedPacketDel
class  tagGCRedPacketDel(Structure):
@@ -5423,132 +5723,6 @@
m_NAtagGCXMZZFightInfo=tagGCXMZZFightInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXMZZFightInfo.Head.Cmd,m_NAtagGCXMZZFightInfo.Head.SubCmd))] = m_NAtagGCXMZZFightInfo
#------------------------------------------------------
# AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
class  tagGCTeHuiActivityInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActivityType", c_ubyte),    # 活动类型
                  ("ActivityValue", c_int),    # 活动值
                  ("StartDate", c_int),    # 开始时间time
                  ("EndDate", c_int),    # 结束时间time
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAD
        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 = 0xAD
        self.SubCmd = 0x01
        self.ActivityType = 0
        self.ActivityValue = 0
        self.StartDate = 0
        self.EndDate = 0
        return
    def GetLength(self):
        return sizeof(tagGCTeHuiActivityInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
                                Cmd:%s,
                                SubCmd:%s,
                                ActivityType:%d,
                                ActivityValue:%d,
                                StartDate:%d,
                                EndDate:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActivityType,
                                self.ActivityValue,
                                self.StartDate,
                                self.EndDate
                                )
        return DumpString
class  tagGCTeHuiActivityInfoList(Structure):
    Head = tagHead()
    ActivityCount = 0    #(BYTE ActivityCount)//活动信息个数
    ActivityInfoList = list()    #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAD
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivityCount):
            temActivityInfoList = tagGCTeHuiActivityInfo()
            _pos = temActivityInfoList.ReadData(_lpData, _pos)
            self.ActivityInfoList.append(temActivityInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAD
        self.Head.SubCmd = 0x01
        self.ActivityCount = 0
        self.ActivityInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.ActivityCount):
            length += self.ActivityInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActivityCount)
        for i in range(self.ActivityCount):
            data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActivityCount:%d,
                                ActivityInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActivityCount,
                                "..."
                                )
        return DumpString
m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
#------------------------------------------------------
@@ -5881,6 +6055,7 @@
    RealmLV = 0    #(WORD RealmLV)//境界
    OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
    IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
    ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
    data = None
    def __init__(self):
@@ -5899,6 +6074,7 @@
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -5913,6 +6089,7 @@
        self.RealmLV = 0
        self.OnlineType = 0
        self.IsInTeam = 0
        self.ServerGroupID = 0
        return
    def GetLength(self):
@@ -5925,6 +6102,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        return length
@@ -5938,6 +6116,7 @@
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteBYTE(data, self.IsInTeam)
        data = CommFunc.WriteDWORD(data, self.ServerGroupID)
        return data
    def OutputString(self):
@@ -5949,7 +6128,8 @@
                                LV:%d,
                                RealmLV:%d,
                                OnlineType:%d,
                                IsInTeam:%d
                                IsInTeam:%d,
                                ServerGroupID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -5959,7 +6139,8 @@
                                self.LV,
                                self.RealmLV,
                                self.OnlineType,
                                self.IsInTeam
                                self.IsInTeam,
                                self.ServerGroupID
                                )
        return DumpString
@@ -6589,6 +6770,1532 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
#------------------------------------------------------
# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
class  tagGCAddAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    ItemID = 0    #(DWORD ItemID)
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.ItemID = 0
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                ItemID:%d
                                '''\
                                %(
                                self.ItemGUID,
                                self.ItemID
                                )
        return DumpString
class  tagGCAddAuctionItemInfo(Structure):
    Head = tagHead()
    AddCount = 0    #(BYTE AddCount)
    AddAuctionItemList = list()    #(vector<tagGCAddAuctionItem> AddAuctionItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AddCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AddCount):
            temAddAuctionItemList = tagGCAddAuctionItem()
            _pos = temAddAuctionItemList.ReadData(_lpData, _pos)
            self.AddAuctionItemList.append(temAddAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x04
        self.AddCount = 0
        self.AddAuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.AddCount):
            length += self.AddAuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AddCount)
        for i in range(self.AddCount):
            data = CommFunc.WriteString(data, self.AddAuctionItemList[i].GetLength(), self.AddAuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AddCount:%d,
                                AddAuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AddCount,
                                "..."
                                )
        return DumpString
m_NAtagGCAddAuctionItemInfo=tagGCAddAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItemInfo.Head.Cmd,m_NAtagGCAddAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAddAuctionItemInfo
#------------------------------------------------------
# B5 07 拍卖行关注的物品ID #tagGCAttentionAuctionItemID
class  tagGCAttentionAuctionItemID(Structure):
    Head = tagHead()
    AttentionCount = 0    #(BYTE AttentionCount)
    AttentionItemIDList = list()    #(vector<DWORD> AttentionItemIDList)// 关注的物品ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x07
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AttentionCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AttentionCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.AttentionItemIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x07
        self.AttentionCount = 0
        self.AttentionItemIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.AttentionCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AttentionCount)
        for i in range(self.AttentionCount):
            data = CommFunc.WriteDWORD(data, self.AttentionItemIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AttentionCount:%d,
                                AttentionItemIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AttentionCount,
                                "..."
                                )
        return DumpString
m_NAtagGCAttentionAuctionItemID=tagGCAttentionAuctionItemID()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemID.Head.Cmd,m_NAtagGCAttentionAuctionItemID.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemID
#------------------------------------------------------
# B5 06 拍卖行关注中的拍品信息 #tagGCAttentionAuctionItemInfo
class  tagGCAttentionAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.BiddingTime = ""
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 19
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                BiddingTime:%s,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.BiddingTime,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCAttentionAuctionItemInfo(Structure):
    Head = tagHead()
    AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCAttentionAuctionItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x06
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCAttentionAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x06
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCAttentionAuctionItemInfo=tagGCAttentionAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemInfo.Head.Cmd,m_NAtagGCAttentionAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemInfo
#------------------------------------------------------
# B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo
class  tagGCAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.BiddingTime = ""
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 19
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                BiddingTime:%s,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.BiddingTime,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCAuctionItemInfo(Structure):
    Head = tagHead()
    Job = 0    #(BYTE Job)//过滤职业,0为不限制
    ItemTypeCount = 0    #(BYTE ItemTypeCount)
    ItemTypeList = list()    #(vector<DWORD> ItemTypeList)//指定的物品类型
    ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
    SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
    SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
    FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
    QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
    QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
    QueryRemainlCount = 0    #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
    AuctionItemCount = 0    #(BYTE AuctionItemCount)//返回拍品数量
    AuctionItemList = list()    #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemTypeCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.ItemTypeList.append(value)
        self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SpecItemIDCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SpecItemIDList.append(value)
        self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x01
        self.Job = 0
        self.ItemTypeCount = 0
        self.ItemTypeList = list()
        self.ClassLV = 0
        self.SpecItemIDCount = 0
        self.SpecItemIDList = list()
        self.FromItemGUID = ""
        self.QueryDir = 0
        self.QueryCount = 0
        self.QueryRemainlCount = 0
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.ItemTypeCount
        length += 1
        length += 1
        length += 4 * self.SpecItemIDCount
        length += 40
        length += 1
        length += 1
        length += 2
        length += 1
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
        for i in range(self.ItemTypeCount):
            data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
        data = CommFunc.WriteBYTE(data, self.ClassLV)
        data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
        for i in range(self.SpecItemIDCount):
            data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
        data = CommFunc.WriteString(data, 40, self.FromItemGUID)
        data = CommFunc.WriteBYTE(data, self.QueryDir)
        data = CommFunc.WriteBYTE(data, self.QueryCount)
        data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
        data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Job:%d,
                                ItemTypeCount:%d,
                                ItemTypeList:%s,
                                ClassLV:%d,
                                SpecItemIDCount:%d,
                                SpecItemIDList:%s,
                                FromItemGUID:%s,
                                QueryDir:%d,
                                QueryCount:%d,
                                QueryRemainlCount:%d,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Job,
                                self.ItemTypeCount,
                                "...",
                                self.ClassLV,
                                self.SpecItemIDCount,
                                "...",
                                self.FromItemGUID,
                                self.QueryDir,
                                self.QueryCount,
                                self.QueryRemainlCount,
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo
#------------------------------------------------------
# B5 10 拍卖行玩家竞价中的物品信息 #tagGCBiddingItemInfo
class  tagGCBiddingItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderID = 0    #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderID = 0
        self.BidderPrice = 0
        self.BiddingTime = ""
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 4
        length += 2
        length += 19
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteDWORD(data, self.BidderID)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderID:%d,
                                BidderPrice:%d,
                                BiddingTime:%s,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderID,
                                self.BidderPrice,
                                self.BiddingTime,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCBiddingItemInfo(Structure):
    Head = tagHead()
    AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCBiddingItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCBiddingItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x10
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCBiddingItemInfo=tagGCBiddingItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBiddingItemInfo.Head.Cmd,m_NAtagGCBiddingItemInfo.Head.SubCmd))] = m_NAtagGCBiddingItemInfo
#------------------------------------------------------
# B5 09 拍卖行清除拍品 #tagGCClearAuctionItemInfo
class  tagGCClearAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s
                                '''\
                                %(
                                self.ItemGUID
                                )
        return DumpString
class  tagGCClearAuctionItemInfo(Structure):
    Head = tagHead()
    ClearCount = 0    #(BYTE ClearCount)
    ClearAuctionItemList = list()    #(vector<tagGCClearAuctionItem> ClearAuctionItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x09
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ClearCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ClearCount):
            temClearAuctionItemList = tagGCClearAuctionItem()
            _pos = temClearAuctionItemList.ReadData(_lpData, _pos)
            self.ClearAuctionItemList.append(temClearAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x09
        self.ClearCount = 0
        self.ClearAuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.ClearCount):
            length += self.ClearAuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ClearCount)
        for i in range(self.ClearCount):
            data = CommFunc.WriteString(data, self.ClearAuctionItemList[i].GetLength(), self.ClearAuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ClearCount:%d,
                                ClearAuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ClearCount,
                                "..."
                                )
        return DumpString
m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo
#------------------------------------------------------
# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
class  tagGCFamilyAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    FamilyPlayerIDLen = 0    #(WORD FamilyPlayerIDLen)
    FamilyPlayerIDInfo = ""    #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
    AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
        self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.BiddingTime = ""
        self.UserDataLen = 0
        self.UserData = ""
        self.FamilyPlayerIDLen = 0
        self.FamilyPlayerIDInfo = ""
        self.AuctionType = 0
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 19
        length += 2
        length += len(self.UserData)
        length += 2
        length += len(self.FamilyPlayerIDInfo)
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
        data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
        data = CommFunc.WriteBYTE(data, self.AuctionType)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                BiddingTime:%s,
                                UserDataLen:%d,
                                UserData:%s,
                                FamilyPlayerIDLen:%d,
                                FamilyPlayerIDInfo:%s,
                                AuctionType:%d
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.BiddingTime,
                                self.UserDataLen,
                                self.UserData,
                                self.FamilyPlayerIDLen,
                                self.FamilyPlayerIDInfo,
                                self.AuctionType
                                )
        return DumpString
class  tagGCFamilyAuctionItemInfo(Structure):
    Head = tagHead()
    AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCFamilyAuctionItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCFamilyAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x05
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCFamilyAuctionItemInfo=tagGCFamilyAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyAuctionItemInfo.Head.Cmd,m_NAtagGCFamilyAuctionItemInfo.Head.SubCmd))] = m_NAtagGCFamilyAuctionItemInfo
#------------------------------------------------------
# B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo
class  tagGCPlayerAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.BiddingTime = ""
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 19
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                BiddingTime:%s,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.BiddingTime,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCPlayerAuctionItemInfo(Structure):
    Head = tagHead()
    AuctionItemCount = 0    #(BYTE AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCPlayerAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x02
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo
#------------------------------------------------------
# B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
class  tagGCPlayerAuctionRecord(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    RecordType = 0    #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
    RecordResult = 0    #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
    RecordTime = ""    #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(DWORD BidderPrice)//成交价格
    BidderName = ""    #(char BidderName[33])//成交玩家名
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.RecordType = 0
        self.RecordResult = 0
        self.RecordTime = ""
        self.BidderPrice = 0
        self.BidderName = ""
        self.ItemID = 0
        self.ItemCount = 0
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 1
        length += 1
        length += 19
        length += 4
        length += 33
        length += 4
        length += 2
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteBYTE(data, self.RecordType)
        data = CommFunc.WriteBYTE(data, self.RecordResult)
        data = CommFunc.WriteString(data, 19, self.RecordTime)
        data = CommFunc.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 33, self.BidderName)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                RecordType:%d,
                                RecordResult:%d,
                                RecordTime:%s,
                                BidderPrice:%d,
                                BidderName:%s,
                                ItemID:%d,
                                ItemCount:%d,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.RecordType,
                                self.RecordResult,
                                self.RecordTime,
                                self.BidderPrice,
                                self.BidderName,
                                self.ItemID,
                                self.ItemCount,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCPlayerAuctionRecordInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    AuctionRecordList = list()    #(vector<tagGCPlayerAuctionRecord> AuctionRecordList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAuctionRecordList = tagGCPlayerAuctionRecord()
            _pos = temAuctionRecordList.ReadData(_lpData, _pos)
            self.AuctionRecordList.append(temAuctionRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x03
        self.Count = 0
        self.AuctionRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.AuctionRecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                AuctionRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo
#------------------------------------------------------
# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
class  tagGCRefreshAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
    AddTime = ""    #(char AddTime[19])//上架时间
    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
    BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.AuctionType = 0
        self.AddTime = ""
        self.BidderID = 0
        self.BidderPrice = 0
        self.BiddingTime = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 1
        length += 19
        length += 4
        length += 4
        length += 19
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteBYTE(data, self.AuctionType)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteDWORD(data, self.BidderID)
        data = CommFunc.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                AuctionType:%d,
                                AddTime:%s,
                                BidderID:%d,
                                BidderPrice:%d,
                                BiddingTime:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.AuctionType,
                                self.AddTime,
                                self.BidderID,
                                self.BidderPrice,
                                self.BiddingTime
                                )
        return DumpString
class  tagGCRefreshAuctionItemInfo(Structure):
    Head = tagHead()
    RefreshCount = 0    #(BYTE RefreshCount)
    RefreshAuctionItemList = list()    #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x08
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RefreshCount):
            temRefreshAuctionItemList = tagGCRefreshAuctionItem()
            _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
            self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x08
        self.RefreshCount = 0
        self.RefreshAuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RefreshCount):
            length += self.RefreshAuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RefreshCount)
        for i in range(self.RefreshCount):
            data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RefreshCount:%d,
                                RefreshAuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RefreshCount,
                                "..."
                                )
        return DumpString
m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
#------------------------------------------------------
@@ -8404,7 +10111,7 @@
    RoundCount = 0    #(BYTE RoundCount)// PK回合数
    RoundWinnerID = list()    #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
    AddScore = 0    #(WORD AddScore)// 本场加分
    Score = 0    #(WORD Score)// 当前积分
    Score = 0    #(DWORD Score)// 当前积分
    DanLV = 0    #(BYTE DanLV)// 当前段位
    CWinCnt = 0    #(WORD CWinCnt)// 当前连胜数
    TagNameLen = 0    #(BYTE TagNameLen)
@@ -8428,7 +10135,7 @@
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.RoundWinnerID.append(value)
        self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8462,7 +10169,7 @@
        length += 1
        length += 4 * self.RoundCount
        length += 2
        length += 2
        length += 4
        length += 1
        length += 2
        length += 1
@@ -8480,7 +10187,7 @@
        for i in range(self.RoundCount):
            data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
        data = CommFunc.WriteWORD(data, self.AddScore)
        data = CommFunc.WriteWORD(data, self.Score)
        data = CommFunc.WriteDWORD(data, self.Score)
        data = CommFunc.WriteBYTE(data, self.DanLV)
        data = CommFunc.WriteWORD(data, self.CWinCnt)
        data = CommFunc.WriteBYTE(data, self.TagNameLen)
@@ -8726,64 +10433,92 @@
# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
class  tagGCCrossRealmPKSeasonState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    # 所属赛区ID
                  ("SeasonID", c_ushort),    # 当前赛季ID
                  ("SeasonState", c_ubyte),    # 赛季状态;0-未开启,1-开启中,2-已结束
                  ("MatchState", c_ubyte),    # 匹配状态;0-未开启;1-开启中
                  ]
    Head = tagHead()
    ZoneID = 0    #(BYTE ZoneID)// 所属赛区ID
    SeasonID = 0    #(WORD SeasonID)// 当前赛季ID
    SeasonState = 0    #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束
    MatchState = 0    #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中
    CrossZoneNameLen = 0    #(BYTE CrossZoneNameLen)
    CrossZoneName = ""    #(String CrossZoneName)// 跨服分区名
    data = None
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        self.SubCmd = 0x06
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen)
        return _pos
    def Clear(self):
        self.Cmd = 0xC0
        self.SubCmd = 0x06
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x06
        self.ZoneID = 0
        self.SeasonID = 0
        self.SeasonState = 0
        self.MatchState = 0
        self.CrossZoneNameLen = 0
        self.CrossZoneName = ""
        return
    def GetLength(self):
        return sizeof(tagGCCrossRealmPKSeasonState)
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        length += 1
        length += 1
        length += 1
        length += len(self.CrossZoneName)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ZoneID)
        data = CommFunc.WriteWORD(data, self.SeasonID)
        data = CommFunc.WriteBYTE(data, self.SeasonState)
        data = CommFunc.WriteBYTE(data, self.MatchState)
        data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen)
        data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName)
        return data
    def OutputString(self):
        DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
                                Cmd:%s,
                                SubCmd:%s,
        DumpString = '''
                                Head:%s,
                                ZoneID:%d,
                                SeasonID:%d,
                                SeasonState:%d,
                                MatchState:%d
                                MatchState:%d,
                                CrossZoneNameLen:%d,
                                CrossZoneName:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Head.OutputString(),
                                self.ZoneID,
                                self.SeasonID,
                                self.SeasonState,
                                self.MatchState
                                self.MatchState,
                                self.CrossZoneNameLen,
                                self.CrossZoneName
                                )
        return DumpString
m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
#------------------------------------------------------
@@ -10942,6 +12677,8 @@
    _fields_ = [
                  ("ItemID", c_int),    #果实物品ID
                  ("EatCnt", c_ushort),    #已使用个数
                  ("ItemAddCnt", c_int),    #增幅丹增加上限
                  ("ItemBreakCnt", c_int),    #增幅丹突破次数
                  ]
    def __init__(self):
@@ -10956,6 +12693,8 @@
    def Clear(self):
        self.ItemID = 0
        self.EatCnt = 0
        self.ItemAddCnt = 0
        self.ItemBreakCnt = 0
        return
    def GetLength(self):
@@ -10967,11 +12706,15 @@
    def OutputString(self):
        DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
                                ItemID:%d,
                                EatCnt:%d
                                EatCnt:%d,
                                ItemAddCnt:%d,
                                ItemBreakCnt:%d
                                '''\
                                %(
                                self.ItemID,
                                self.EatCnt
                                self.EatCnt,
                                self.ItemAddCnt,
                                self.ItemBreakCnt
                                )
        return DumpString
@@ -11572,6 +13315,8 @@
    _fields_ = [
                  ("ActionID", c_int),    # ID
                  ("DayFinishCnt", c_ushort),    # 今日已完成次数
                  ("DayBuyTimes", c_ubyte),    # 今日购买次数
                  ("DayItemTimes", c_ubyte),    # 今日物品增加次数
                  ("WeekFinishCnt", c_int),    # 本周已完成次数
                  ]
@@ -11587,6 +13332,8 @@
    def Clear(self):
        self.ActionID = 0
        self.DayFinishCnt = 0
        self.DayBuyTimes = 0
        self.DayItemTimes = 0
        self.WeekFinishCnt = 0
        return
@@ -11600,11 +13347,15 @@
        DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
                                ActionID:%d,
                                DayFinishCnt:%d,
                                DayBuyTimes:%d,
                                DayItemTimes:%d,
                                WeekFinishCnt:%d
                                '''\
                                %(
                                self.ActionID,
                                self.DayFinishCnt,
                                self.DayBuyTimes,
                                self.DayItemTimes,
                                self.WeekFinishCnt
                                )
        return DumpString
@@ -12013,70 +13764,57 @@
#------------------------------------------------------
# A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
class  tagMCEquipPartSuiteLV(Structure):
    EquipIndex = 0    #(BYTE EquipIndex)
    Len = 0    #(WORD Len)//长度
    SuiteLVInfo = ""    #(String SuiteLVInfo)//{套装类型:等级}
    data = None
class  tagMCEquipPartStar(Structure):
    _pack_ = 1
    _fields_ = [
                  ("EquipPackIndex", c_ushort),
                  ("Star", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.SuiteLVInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
        return _pos
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.EquipIndex = 0
        self.Len = 0
        self.SuiteLVInfo = ""
        self.EquipPackIndex = 0
        self.Star = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += len(self.SuiteLVInfo)
        return length
        return sizeof(tagMCEquipPartStar)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.EquipIndex)
        data = CommFunc.WriteWORD(data, self.Len)
        data = CommFunc.WriteString(data, self.Len, self.SuiteLVInfo)
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                EquipIndex:%d,
                                Len:%d,
                                SuiteLVInfo:%s
        DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
                                EquipPackIndex:%d,
                                Star:%d
                                '''\
                                %(
                                self.EquipIndex,
                                self.Len,
                                self.SuiteLVInfo
                                self.EquipPackIndex,
                                self.Star
                                )
        return DumpString
class  tagMCEquipPartSuiteLVInfo(Structure):
class  tagMCEquipPartStarInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 信息个数
    InfoList = list()    #(vector<tagMCEquipPartSuiteLV> InfoList)// 信息列表
    InfoList = list()    #(vector<tagMCEquipPartStar> InfoList)// 信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x09
        self.Head.SubCmd = 0xB1
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -12084,7 +13822,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temInfoList = tagMCEquipPartSuiteLV()
            temInfoList = tagMCEquipPartStar()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
@@ -12093,7 +13831,7 @@
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x09
        self.Head.SubCmd = 0xB1
        self.Count = 0
        self.InfoList = list()
        return
@@ -12129,8 +13867,8 @@
        return DumpString
m_NAtagMCEquipPartSuiteLVInfo=tagMCEquipPartSuiteLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteLVInfo.Head.Cmd,m_NAtagMCEquipPartSuiteLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteLVInfo
m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
#------------------------------------------------------
@@ -12303,6 +14041,254 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
#------------------------------------------------------
# A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo
class  tagMCFairyAdventuresData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("EventID", c_ubyte),
                  ("Gear", c_ubyte),    #第几档
                  ("Condition", c_int),    #条件
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.EventID = 0
        self.Gear = 0
        self.Condition = 0
        return
    def GetLength(self):
        return sizeof(tagMCFairyAdventuresData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo:
                                EventID:%d,
                                Gear:%d,
                                Condition:%d
                                '''\
                                %(
                                self.EventID,
                                self.Gear,
                                self.Condition
                                )
        return DumpString
class  tagMCFairyAdventuresInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)
    InfoList = list()    #(vector<tagMCFairyAdventuresData> InfoList)// 信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x07
        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):
            temInfoList = tagMCFairyAdventuresData()
            _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 = 0x07
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            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.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo
#------------------------------------------------------
# A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
class  tagMCFairyDomainEvent(Structure):
    _pack_ = 1
    _fields_ = [
                  ("EventID", c_ushort),    #事件ID
                  ("EventState", c_ubyte),    #事件状态 1-可拜访 2-拜访中 3-已拜访
                  ]
    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.EventID = 0
        self.EventState = 0
        return
    def GetLength(self):
        return sizeof(tagMCFairyDomainEvent)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo:
                                EventID:%d,
                                EventState:%d
                                '''\
                                %(
                                self.EventID,
                                self.EventState
                                )
        return DumpString
class  tagMCFairyDomainInfo(Structure):
    Head = tagHead()
    IsAll = 0    #(BYTE IsAll)//是否全部
    State = 0    #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访
    VisitCnt = 0    #(DWORD VisitCnt)//寻访次数
    Energy = 0    #(WORD Energy)//体力
    Count = 0    #(BYTE Count)// 信息个数
    InfoList = list()    #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x06
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temInfoList = tagMCFairyDomainEvent()
            _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 = 0x06
        self.IsAll = 0
        self.State = 0
        self.VisitCnt = 0
        self.Energy = 0
        self.Count = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4
        length += 2
        length += 1
        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.WriteBYTE(data, self.IsAll)
        data = CommFunc.WriteBYTE(data, self.State)
        data = CommFunc.WriteDWORD(data, self.VisitCnt)
        data = CommFunc.WriteWORD(data, self.Energy)
        data = CommFunc.WriteBYTE(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,
                                IsAll:%d,
                                State:%d,
                                VisitCnt:%d,
                                Energy:%d,
                                Count:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsAll,
                                self.State,
                                self.VisitCnt,
                                self.Energy,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo
#------------------------------------------------------
@@ -13299,73 +15285,6 @@
#------------------------------------------------------
# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
class  tagMCMagicWeaponData(Structure):
    Head = tagHead()
    Num = 0    #(BYTE Num)//个数
    MagicWeaponID = list()    #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
    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):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.MagicWeaponID.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        self.Num = 0
        self.MagicWeaponID = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Num
        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.WriteDWORD(data, self.MagicWeaponID[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Num:%d,
                                MagicWeaponID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Num,
                                "..."
                                )
        return DumpString
m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class  tagMCMagicWeaponInfo(Structure):
@@ -13374,7 +15293,6 @@
                  ("MWID", c_int),    
                  ("LV", c_ubyte),    
                  ("Exp", c_int),    
                  ("State", c_ubyte),    #是否点击法宝认主
                  ("FBPassLV", c_ubyte),    #副本关卡
                  ("IsWear", c_ubyte),    #是否佩戴(仅适用王者法宝)
                  ]
@@ -13392,7 +15310,6 @@
        self.MWID = 0
        self.LV = 0
        self.Exp = 0
        self.State = 0
        self.FBPassLV = 0
        self.IsWear = 0
        return
@@ -13408,7 +15325,6 @@
                                MWID:%d,
                                LV:%d,
                                Exp:%d,
                                State:%d,
                                FBPassLV:%d,
                                IsWear:%d
                                '''\
@@ -13416,7 +15332,6 @@
                                self.MWID,
                                self.LV,
                                self.Exp,
                                self.State,
                                self.FBPassLV,
                                self.IsWear
                                )
@@ -13487,114 +15402,6 @@
m_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo
#------------------------------------------------------
# A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg
class  tagMCMagicWeaponLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MWID", c_int),    # 法宝ID
                  ("MWLV", c_ubyte),    # 精炼等级
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.MWID = 0
        self.MWLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCMagicWeaponLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg:
                                MWID:%d,
                                MWLV:%d
                                '''\
                                %(
                                self.MWID,
                                self.MWLV
                                )
        return DumpString
class  tagMCMagicWeaponMsg(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 法宝个数
    MWInfo = list()    #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBE
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temMWInfo = tagMCMagicWeaponLV()
            _pos = temMWInfo.ReadData(_lpData, _pos)
            self.MWInfo.append(temMWInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBE
        self.Count = 0
        self.MWInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.MWInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                MWInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg
#------------------------------------------------------
@@ -13718,15 +15525,16 @@
#------------------------------------------------------
# A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
# A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
class  tagMCEquipPartStarLV(Structure):
class  tagMCEquipPartPlusLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("PackType", c_ubyte),    
                  ("EquipIndex", c_ubyte),    
                  ("EquipPartStarLV", c_ushort),    
                  ("Proficiency", c_int),    
                  ("EvolveLV", c_ubyte),
                  ]
    def __init__(self):
@@ -13743,34 +15551,37 @@
        self.EquipIndex = 0
        self.EquipPartStarLV = 0
        self.Proficiency = 0
        self.EvolveLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCEquipPartStarLV)
        return sizeof(tagMCEquipPartPlusLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
        DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
                                PackType:%d,
                                EquipIndex:%d,
                                EquipPartStarLV:%d,
                                Proficiency:%d
                                Proficiency:%d,
                                EvolveLV:%d
                                '''\
                                %(
                                self.PackType,
                                self.EquipIndex,
                                self.EquipPartStarLV,
                                self.Proficiency
                                self.Proficiency,
                                self.EvolveLV
                                )
        return DumpString
class  tagMCEquipPartStarLVInfo(Structure):
class  tagMCEquipPartPlusInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 信息个数
    InfoList = list()    #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
    InfoList = list()    #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
    data = None
    def __init__(self):
@@ -13784,7 +15595,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temInfoList = tagMCEquipPartStarLV()
            temInfoList = tagMCEquipPartPlusLV()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
@@ -13829,8 +15640,8 @@
        return DumpString
m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
#------------------------------------------------------
@@ -14013,16 +15824,13 @@
#------------------------------------------------------
# A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
class  tagMCMWPrivilegeData(Structure):
class  tagMCNPCAttackCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("PriID", c_int),    # 特权ID
                  ("State", c_ubyte),    #激活状态
                  ("CurValue", c_int),    #当前总进度
                  ("GotValue", c_int),    #已领取进度
                  ("ItemAwardState", c_ubyte),    #物品奖励是否已领取
                  ("NPCID", c_int),
                  ("AttackCount", c_ubyte),    #已攻击次数
                  ]
    def __init__(self):
@@ -14035,47 +15843,38 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.PriID = 0
        self.State = 0
        self.CurValue = 0
        self.GotValue = 0
        self.ItemAwardState = 0
        self.NPCID = 0
        self.AttackCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCMWPrivilegeData)
        return sizeof(tagMCNPCAttackCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
                                PriID:%d,
                                State:%d,
                                CurValue:%d,
                                GotValue:%d,
                                ItemAwardState:%d
        DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
                                NPCID:%d,
                                AttackCount:%d
                                '''\
                                %(
                                self.PriID,
                                self.State,
                                self.CurValue,
                                self.GotValue,
                                self.ItemAwardState
                                self.NPCID,
                                self.AttackCount
                                )
        return DumpString
class  tagMCMWPrivilegeDataInfo(Structure):
class  tagMCNPCAttackCountInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 信息个数
    InfoList = list()    #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
    Count = 0    #(BYTE Count)
    NPCAttackCountList = list()    #(vector<tagMCNPCAttackCount> NPCAttackCountList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x53
        self.Head.SubCmd = 0x25
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -14083,18 +15882,18 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temInfoList = tagMCMWPrivilegeData()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
            temNPCAttackCountList = tagMCNPCAttackCount()
            _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
            self.NPCAttackCountList.append(temNPCAttackCountList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x53
        self.Head.SubCmd = 0x25
        self.Count = 0
        self.InfoList = list()
        self.NPCAttackCountList = list()
        return
    def GetLength(self):
@@ -14102,7 +15901,7 @@
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.InfoList[i].GetLength()
            length += self.NPCAttackCountList[i].GetLength()
        return length
@@ -14111,14 +15910,14 @@
        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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
            data = CommFunc.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                InfoList:%s
                                NPCAttackCountList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -14128,8 +15927,8 @@
        return DumpString
m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
#------------------------------------------------------
@@ -14765,20 +16564,16 @@
#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
class  tagMCPlayerStoveMsg(Structure):
class  tagMCPlayerStoveInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("StoveLV", c_ubyte),    # 炼丹炉等级
                  ("StoveExp", c_int),    # 炼丹炉经验
                  ("ItemID", c_int),    # 合成物品id
                  ("AlchemyID", c_int),    # 丹 ID
                  ("StartTime", c_int),    # 开始炼的时间
                  ("AlchemyTimes", c_ushort),    # 炼的次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xBF
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -14787,39 +16582,123 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0xBF
        self.StoveLV = 0
        self.StoveExp = 0
        self.ItemID = 0
        self.AlchemyID = 0
        self.StartTime = 0
        self.AlchemyTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCPlayerStoveMsg)
        return sizeof(tagMCPlayerStoveInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                Cmd:%s,
                                SubCmd:%s,
                                StoveLV:%d,
                                StoveExp:%d,
                                ItemID:%d
                                AlchemyID:%d,
                                StartTime:%d,
                                AlchemyTimes:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AlchemyID,
                                self.StartTime,
                                self.AlchemyTimes
                                )
        return DumpString
class  tagMCPlayerStoveMsg(Structure):
    Head = tagHead()
    StoveLV = 0    #(BYTE StoveLV)// 炼丹炉等级
    StoveExp = 0    #(DWORD StoveExp)// 炼丹炉经验
    ItemID = 0    #(DWORD ItemID)// 合成物品id
    ItemCnt = 0    #(BYTE ItemCnt)// 丹药数量
    StoveCnt = 0    #(WORD StoveCnt)// 丹药数量
    InfoList = list()    #(vector<tagMCPlayerStoveInfo> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBF
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        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.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.StoveCnt):
            temInfoList = tagMCPlayerStoveInfo()
            _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 = 0xBF
        self.StoveLV = 0
        self.StoveExp = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.StoveCnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        length += 2
        for i in range(self.StoveCnt):
            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.StoveLV)
        data = CommFunc.WriteDWORD(data, self.StoveExp)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteBYTE(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())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StoveLV:%d,
                                StoveExp:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                StoveCnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StoveLV,
                                self.StoveExp,
                                self.ItemID
                                self.ItemID,
                                self.ItemCnt,
                                self.StoveCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
#------------------------------------------------------
@@ -14876,6 +16755,74 @@
m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
#------------------------------------------------------
# A3 27 境界修为池信息 #tagMCRealmExpInfo
class  tagMCRealmExpInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BeginTime", c_int),    #开始计时时间
                  ("BuffTime", c_int),    #buff剩余时间
                  ("BuffAddRate", c_int),    #buff加成万分率
                  ("CurExp", c_int),    #当前总经验
                  ("CurExpPoint", c_int),    #当前总经验点
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x27
        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 = 0x27
        self.BeginTime = 0
        self.BuffTime = 0
        self.BuffAddRate = 0
        self.CurExp = 0
        self.CurExpPoint = 0
        return
    def GetLength(self):
        return sizeof(tagMCRealmExpInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 27 境界修为池信息 //tagMCRealmExpInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                BeginTime:%d,
                                BuffTime:%d,
                                BuffAddRate:%d,
                                CurExp:%d,
                                CurExpPoint:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BeginTime,
                                self.BuffTime,
                                self.BuffAddRate,
                                self.CurExp,
                                self.CurExpPoint
                                )
        return DumpString
m_NAtagMCRealmExpInfo=tagMCRealmExpInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRealmExpInfo.Cmd,m_NAtagMCRealmExpInfo.SubCmd))] = m_NAtagMCRealmExpInfo
#------------------------------------------------------
@@ -15126,6 +17073,178 @@
m_NAtagMCSingleGoldGift=tagMCSingleGoldGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift
#------------------------------------------------------
# A3 09 技能五行专精信息 #tagMCSkillElementInfo
class  tagMCSkillElementActiveData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("SkillID", c_int),    # 技能ID
                  ("ActiveLV", 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.SkillID = 0
        self.ActiveLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCSkillElementActiveData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
                                SkillID:%d,
                                ActiveLV:%d
                                '''\
                                %(
                                self.SkillID,
                                self.ActiveLV
                                )
        return DumpString
class  tagMCSkillElementData(Structure):
    MainSkillID = 0    #(DWORD MainSkillID)// 主技能ID
    ElementSkillID = 0    #(DWORD ElementSkillID)// 选择的专精技能ID
    SkillCnt = 0    #(BYTE SkillCnt)// 数量
    ActiveSkill = list()    #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SkillCnt):
            temActiveSkill = tagMCSkillElementActiveData()
            _pos = temActiveSkill.ReadData(_lpData, _pos)
            self.ActiveSkill.append(temActiveSkill)
        return _pos
    def Clear(self):
        self.MainSkillID = 0
        self.ElementSkillID = 0
        self.SkillCnt = 0
        self.ActiveSkill = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 1
        for i in range(self.SkillCnt):
            length += self.ActiveSkill[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.MainSkillID)
        data = CommFunc.WriteDWORD(data, self.ElementSkillID)
        data = CommFunc.WriteBYTE(data, self.SkillCnt)
        for i in range(self.SkillCnt):
            data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                MainSkillID:%d,
                                ElementSkillID:%d,
                                SkillCnt:%d,
                                ActiveSkill:%s
                                '''\
                                %(
                                self.MainSkillID,
                                self.ElementSkillID,
                                self.SkillCnt,
                                "..."
                                )
        return DumpString
class  tagMCSkillElementInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)// 数量
    InfoList = list()    #(vector<tagMCSkillElementData> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x09
        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):
            temInfoList = tagMCSkillElementData()
            _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 = 0x09
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            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.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
#------------------------------------------------------
@@ -15733,18 +17852,14 @@
#------------------------------------------------------
# A3 11 通知玩家境界渡劫是否开启 #tagMCSyncRealmFBIsOpen
# A3 11 通知玩家境界信息 #tagMCSyncRealmInfo
class  tagMCSyncRealmFBIsOpen(Structure):
class  tagMCSyncRealmInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsOpen", c_ubyte),    #是否开启
                  ("SitAllTime", c_ushort),    #打坐总时间秒
                  ("SitRemainTime", c_int),    #开始打坐前剩余时间秒
                  ("SitStartTime", c_int),    #开始打坐时间
                  ("LastEnterTime", c_int),    #上次进入渡劫副本时间
                  ("IsPass", c_ubyte),    #是否通关副本
                  ]
    def __init__(self):
@@ -15761,43 +17876,31 @@
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x11
        self.IsOpen = 0
        self.SitAllTime = 0
        self.SitRemainTime = 0
        self.SitStartTime = 0
        self.LastEnterTime = 0
        self.IsPass = 0
        return
    def GetLength(self):
        return sizeof(tagMCSyncRealmFBIsOpen)
        return sizeof(tagMCSyncRealmInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 11 通知玩家境界渡劫是否开启 //tagMCSyncRealmFBIsOpen:
        DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsOpen:%d,
                                SitAllTime:%d,
                                SitRemainTime:%d,
                                SitStartTime:%d,
                                LastEnterTime:%d
                                IsPass:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsOpen,
                                self.SitAllTime,
                                self.SitRemainTime,
                                self.SitStartTime,
                                self.LastEnterTime
                                self.IsPass
                                )
        return DumpString
m_NAtagMCSyncRealmFBIsOpen=tagMCSyncRealmFBIsOpen()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmFBIsOpen.Cmd,m_NAtagMCSyncRealmFBIsOpen.SubCmd))] = m_NAtagMCSyncRealmFBIsOpen
m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
@@ -16547,6 +18650,58 @@
#------------------------------------------------------
# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
class  tagMCFamilyActivityExchangeResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Point", c_int),    # 活跃令
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x02
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x02
        self.Point = 0
        return
    def GetLength(self):
        return sizeof(tagMCFamilyActivityExchangeResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
                                Cmd:%s,
                                SubCmd:%s,
                                Point:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Point
                                )
        return DumpString
m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
#------------------------------------------------------
# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
class  tagMCFamilyDayAward(Structure):
@@ -16700,74 +18855,6 @@
m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
#------------------------------------------------------
#A5 34 天梯竞技场状态#tagMCHighLadderState
class  tagMCHighLadderState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Count", c_ubyte),    #已挑战次数
                  ("MaxCount", c_ubyte),    #最大次数
                  ("CDTime", c_int),    #累计冷却时间
                  ("IsRelCD", c_ubyte),    #是否正在真实冷却状态
                  ("Currency", c_int),    #积分
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x34
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x34
        self.Count = 0
        self.MaxCount = 0
        self.CDTime = 0
        self.IsRelCD = 0
        self.Currency = 0
        return
    def GetLength(self):
        return sizeof(tagMCHighLadderState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A5 34 天梯竞技场状态//tagMCHighLadderState:
                                Cmd:%s,
                                SubCmd:%s,
                                Count:%d,
                                MaxCount:%d,
                                CDTime:%d,
                                IsRelCD:%d,
                                Currency:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Count,
                                self.MaxCount,
                                self.CDTime,
                                self.IsRelCD,
                                self.Currency
                                )
        return DumpString
m_NAtagMCHighLadderState=tagMCHighLadderState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHighLadderState.Cmd,m_NAtagMCHighLadderState.SubCmd))] = m_NAtagMCHighLadderState
#------------------------------------------------------
@@ -17505,6 +19592,125 @@
m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
#------------------------------------------------------
# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
class  tagMCCollectAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("Count", c_ubyte),
                  ("IsAuctionItem", c_ubyte),    #是否拍品
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.Count = 0
        self.IsAuctionItem = 0
        return
    def GetLength(self):
        return sizeof(tagMCCollectAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
                                ItemID:%d,
                                Count:%d,
                                IsAuctionItem:%d
                                '''\
                                %(
                                self.ItemID,
                                self.Count,
                                self.IsAuctionItem
                                )
        return DumpString
class  tagMCCollectAwardItemInfo(Structure):
    Head = tagHead()
    CollectNPCID = 0    #(DWORD CollectNPCID)//采集的NPCID
    Count = 0    #(BYTE Count)
    AwardItemList = list()    #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x18
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAwardItemList = tagMCCollectAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x18
        self.CollectNPCID = 0
        self.Count = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.CollectNPCID)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                CollectNPCID:%d,
                                Count:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.CollectNPCID,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
@@ -18548,6 +20754,84 @@
#------------------------------------------------------
# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
class  tagSCPlayerEquipCacheResult(Structure):
    Head = tagHead()
    PlayerID = 0    #(DWORD PlayerID)//玩家ID
    EquipClassLV = 0    #(BYTE EquipClassLV)
    ItemDataSize = 0    #(WORD ItemDataSize)
    ItemData = ""    #(String ItemData)//物品记录
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x19
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x19
        self.PlayerID = 0
        self.EquipClassLV = 0
        self.ItemDataSize = 0
        self.ItemData = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 2
        length += len(self.ItemData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.EquipClassLV)
        data = CommFunc.WriteWORD(data, self.ItemDataSize)
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerID:%d,
                                EquipClassLV:%d,
                                ItemDataSize:%d,
                                ItemData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerID,
                                self.EquipClassLV,
                                self.ItemDataSize,
                                self.ItemData
                                )
        return DumpString
m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
#------------------------------------------------------
# A7 07 通知玩家自定义聊天 #tagMCPyTalk
class  tagMCPyTalk(Structure):
@@ -18777,7 +21061,6 @@
    ItemData = ""    #(String ItemData)//物品记录
    PlusDataSize = 0    #(DWORD PlusDataSize)
    PlusData = ""    #(String PlusData)//扩展记录    
    CrossPlayer = 0    #(BYTE CrossPlayer)//是否跨服玩家
    data = None
    def __init__(self):
@@ -18796,7 +21079,6 @@
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
        self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -18811,7 +21093,6 @@
        self.ItemData = ""
        self.PlusDataSize = 0
        self.PlusData = ""
        self.CrossPlayer = 0
        return
    def GetLength(self):
@@ -18824,7 +21105,6 @@
        length += len(self.ItemData)
        length += 4
        length += len(self.PlusData)
        length += 1
        return length
@@ -18838,7 +21118,6 @@
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        data = CommFunc.WriteDWORD(data, self.PlusDataSize)
        data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
        data = CommFunc.WriteBYTE(data, self.CrossPlayer)
        return data
    def OutputString(self):
@@ -18850,8 +21129,7 @@
                                ItemDataSize:%d,
                                ItemData:%s,
                                PlusDataSize:%d,
                                PlusData:%s,
                                CrossPlayer:%d
                                PlusData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -18861,8 +21139,7 @@
                                self.ItemDataSize,
                                self.ItemData,
                                self.PlusDataSize,
                                self.PlusData,
                                self.CrossPlayer
                                self.PlusData
                                )
        return DumpString
@@ -19337,6 +21614,117 @@
#------------------------------------------------------
# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
class  tagMCMysticalShopGoods(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GoodsID", c_int),    # 商品ID
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.GoodsID = 0
        return
    def GetLength(self):
        return sizeof(tagMCMysticalShopGoods)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
                                GoodsID:%d
                                '''\
                                %(
                                self.GoodsID
                                )
        return DumpString
class  tagMCMysticalShopInfo(Structure):
    Head = tagHead()
    RefreshCnt = 0    #(WORD RefreshCnt)// 刷新次数
    Count = 0    #(BYTE Count)// 商品数
    GoodsList = list()    #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x16
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temGoodsList = tagMCMysticalShopGoods()
            _pos = temGoodsList.ReadData(_lpData, _pos)
            self.GoodsList.append(temGoodsList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x16
        self.RefreshCnt = 0
        self.Count = 0
        self.GoodsList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        for i in range(self.Count):
            length += self.GoodsList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.RefreshCnt)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RefreshCnt:%d,
                                Count:%d,
                                GoodsList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RefreshCnt,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
#------------------------------------------------------
# A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
class  tagMCMysticalShopTime(Structure):
@@ -19537,126 +21925,6 @@
#------------------------------------------------------
# A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
class  tagMCShopItemBuyCntInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ShopID", c_int),
                  ("ItemShopIndex", c_ushort),
                  ("ItemID", c_int),
                  ("BuyCnt", c_int),    # 个人已购买数
                  ("ServerBuyCnt", c_int),    # 全服已购买数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ShopID = 0
        self.ItemShopIndex = 0
        self.ItemID = 0
        self.BuyCnt = 0
        self.ServerBuyCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCShopItemBuyCntInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
                                ShopID:%d,
                                ItemShopIndex:%d,
                                ItemID:%d,
                                BuyCnt:%d,
                                ServerBuyCnt:%d
                                '''\
                                %(
                                self.ShopID,
                                self.ItemShopIndex,
                                self.ItemID,
                                self.BuyCnt,
                                self.ServerBuyCnt
                                )
        return DumpString
class  tagMCShopItemBuyCntInfoList(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//通知个数
    BuyCntList = list()    #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x04
        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):
            temBuyCntList = tagMCShopItemBuyCntInfo()
            _pos = temBuyCntList.ReadData(_lpData, _pos)
            self.BuyCntList.append(temBuyCntList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x04
        self.Count = 0
        self.BuyCntList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.BuyCntList[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.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                BuyCntList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
#------------------------------------------------------
# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
class  tagMCShopItemDayBuyCnt(Structure):
@@ -19769,239 +22037,6 @@
#------------------------------------------------------
# A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
class  tagMCShopItemInfo(Structure):
    ShopID = 0    #(DWORD ShopID)
    ItemShopIndex = 0    #(WORD ItemShopIndex)
    DataSize = 0    #(DWORD DataSize)
    ItemList = ""    #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
    PriceType = 0    #(BYTE PriceType)
    Price = 0    #(DWORD Price)
    OriginalPrice = 0    #(DWORD OriginalPrice)// 原价
    PlayerLVLimit = 0    #(WORD PlayerLVLimit)// 购买等级限制
    FamilyLVLimit = 0    #(BYTE FamilyLVLimit)// 购买战盟等级限制
    MaxBuyCnt = 0    #(DWORD MaxBuyCnt)// 个人限购数
    ServerMaxBuyCnt = 0    #(DWORD ServerMaxBuyCnt)// 全服限购数
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
        self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ShopID = 0
        self.ItemShopIndex = 0
        self.DataSize = 0
        self.ItemList = ""
        self.PriceType = 0
        self.Price = 0
        self.OriginalPrice = 0
        self.PlayerLVLimit = 0
        self.FamilyLVLimit = 0
        self.MaxBuyCnt = 0
        self.ServerMaxBuyCnt = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += 4
        length += len(self.ItemList)
        length += 1
        length += 4
        length += 4
        length += 2
        length += 1
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ShopID)
        data = CommFunc.WriteWORD(data, self.ItemShopIndex)
        data = CommFunc.WriteDWORD(data, self.DataSize)
        data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
        data = CommFunc.WriteBYTE(data, self.PriceType)
        data = CommFunc.WriteDWORD(data, self.Price)
        data = CommFunc.WriteDWORD(data, self.OriginalPrice)
        data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
        data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
        data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
        data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
        return data
    def OutputString(self):
        DumpString = '''
                                ShopID:%d,
                                ItemShopIndex:%d,
                                DataSize:%d,
                                ItemList:%s,
                                PriceType:%d,
                                Price:%d,
                                OriginalPrice:%d,
                                PlayerLVLimit:%d,
                                FamilyLVLimit:%d,
                                MaxBuyCnt:%d,
                                ServerMaxBuyCnt:%d
                                '''\
                                %(
                                self.ShopID,
                                self.ItemShopIndex,
                                self.DataSize,
                                self.ItemList,
                                self.PriceType,
                                self.Price,
                                self.OriginalPrice,
                                self.PlayerLVLimit,
                                self.FamilyLVLimit,
                                self.MaxBuyCnt,
                                self.ServerMaxBuyCnt
                                )
        return DumpString
class  tagMCShopItemInfoList(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//通知个数
    ShopItemList = list()    #(vector<tagMCShopItemInfo> ShopItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temShopItemList = tagMCShopItemInfo()
            _pos = temShopItemList.ReadData(_lpData, _pos)
            self.ShopItemList.append(temShopItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x03
        self.Count = 0
        self.ShopItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.ShopItemList[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.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ShopItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
#------------------------------------------------------
# A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
class  tagMCShopRefreshCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ShopID", c_int),    #商店ID
                  ("RefreshCnt", c_ushort),    #已手动刷新次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA8
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA8
        self.SubCmd = 0x05
        self.ShopID = 0
        self.RefreshCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCShopRefreshCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
                                Cmd:%s,
                                SubCmd:%s,
                                ShopID:%d,
                                RefreshCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ShopID,
                                self.RefreshCnt
                                )
        return DumpString
m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
#------------------------------------------------------
# A8 13 虚拟掉落物品 #tagMCVirtualItemDrop
class  tagMCVirtualItemDrop(Structure):
@@ -20084,6 +22119,433 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
#------------------------------------------------------
# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
class  tagMCActLoginAwardAction(Structure):
    TemplateID = 0    #(DWORD TemplateID)// 模板ID
    ActionType = 0    #(WORD ActionType)// 活动类别
    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
    Count = 0    #(WORD Count)// 物品配置长度
    ItemInfo = ""    #(String ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
        return _pos
    def Clear(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Count = 0
        self.ItemInfo = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += 4
        length += 4
        length += 2
        length += len(self.ItemInfo)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.TemplateID)
        data = CommFunc.WriteWORD(data, self.ActionType)
        data = CommFunc.WriteDWORD(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.SingleTimes)
        data = CommFunc.WriteWORD(data, self.Count)
        data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
        return data
    def OutputString(self):
        DumpString = '''
                                TemplateID:%d,
                                ActionType:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                Count:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.TemplateID,
                                self.ActionType,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.Count,
                                self.ItemInfo
                                )
        return DumpString
class  tagMCActLoginAwardDayInfo(Structure):
    ActCnt = 0    #(BYTE ActCnt)// 数量
    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.TemplateList.append(value)
        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ActCnt = 0
        self.TemplateList = list()
        self.WorldLV = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.ActCnt
        length += 2
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ActCnt)
        for i in range(self.ActCnt):
            data = CommFunc.WriteWORD(data, self.TemplateList[i])
        data = CommFunc.WriteWORD(data, self.WorldLV)
        return data
    def OutputString(self):
        DumpString = '''
                                ActCnt:%d,
                                TemplateList:%s,
                                WorldLV:%d
                                '''\
                                %(
                                self.ActCnt,
                                "...",
                                self.WorldLV
                                )
        return DumpString
class  tagMCActLoginAwardInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    DayCnt = 0    #(BYTE DayCnt)// 天数
    DayInfoList = list()    #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
    TCount = 0    #(BYTE TCount)// 模板数
    ActionInfo = list()    #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0C
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCnt):
            temDayInfoList = tagMCActLoginAwardDayInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TCount):
            temActionInfo = tagMCActLoginAwardAction()
            _pos = temActionInfo.ReadData(_lpData, _pos)
            self.ActionInfo.append(temActionInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0C
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LimitLV = 0
        self.DayCnt = 0
        self.DayInfoList = list()
        self.TCount = 0
        self.ActionInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        length += 2
        length += 1
        for i in range(self.DayCnt):
            length += self.DayInfoList[i].GetLength()
        length += 1
        for i in range(self.TCount):
            length += self.ActionInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.DayCnt)
        for i in range(self.DayCnt):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TCount)
        for i in range(self.TCount):
            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                IsDayReset:%d,
                                ResetType:%d,
                                LimitLV:%d,
                                DayCnt:%d,
                                DayInfoList:%s,
                                TCount:%d,
                                ActionInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.IsDayReset,
                                self.ResetType,
                                self.LimitLV,
                                self.DayCnt,
                                "...",
                                self.TCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
#------------------------------------------------------
# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
class  tagMCActLoginAwardTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ("GotTimes", c_ushort),    #已领取次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.TemplateID = 0
        self.CurTimes = 0
        self.GotTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCActLoginAwardTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
                                TemplateID:%d,
                                CurTimes:%d,
                                GotTimes:%d
                                '''\
                                %(
                                self.TemplateID,
                                self.CurTimes,
                                self.GotTimes
                                )
        return DumpString
class  tagMCActLoginAwardDayPlayerInfo(Structure):
    DayIndex = 0    #(DWORD DayIndex)//第X天
    ACount = 0    #(DWORD ACount)//任务条目数
    TaskList = list()    #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        for i in range(self.ACount):
            temTaskList = tagMCActLoginAwardTaskInfo()
            _pos = temTaskList.ReadData(_lpData, _pos)
            self.TaskList.append(temTaskList)
        return _pos
    def Clear(self):
        self.DayIndex = 0
        self.ACount = 0
        self.TaskList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        for i in range(self.ACount):
            length += self.TaskList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.DayIndex)
        data = CommFunc.WriteDWORD(data, self.ACount)
        for i in range(self.ACount):
            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayIndex:%d,
                                ACount:%d,
                                TaskList:%s
                                '''\
                                %(
                                self.DayIndex,
                                self.ACount,
                                "..."
                                )
        return DumpString
class  tagMCActLoginAwardPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0D
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0D
        self.Count = 0
        self.DayInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.DayInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                DayInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
#------------------------------------------------------
@@ -20910,240 +23372,6 @@
#------------------------------------------------------
# AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
class  tagMCClassUPDayAwardRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DayType", c_ubyte),    # 奖励日类型
                  ("Record", c_int),    # 奖励记录
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x03
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x03
        self.DayType = 0
        self.Record = 0
        return
    def GetLength(self):
        return sizeof(tagMCClassUPDayAwardRecord)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
                                Cmd:%s,
                                SubCmd:%s,
                                DayType:%d,
                                Record:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DayType,
                                self.Record
                                )
        return DumpString
class  tagMCClassUPDayAwardRecordList(Structure):
    Head = tagHead()
    RecordCount = 0    #(BYTE RecordCount)//记录个数
    RecordInfoList = list()    #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x03
        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):
            temRecordInfoList = tagMCClassUPDayAwardRecord()
            _pos = temRecordInfoList.ReadData(_lpData, _pos)
            self.RecordInfoList.append(temRecordInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x03
        self.RecordCount = 0
        self.RecordInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RecordCount):
            length += self.RecordInfoList[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.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordCount:%d,
                                RecordInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordCount,
                                "..."
                                )
        return DumpString
m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
#------------------------------------------------------
# AA 06 消费奖励信息 #tagMCCostProfitInfo
class  tagMCCostProfitInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActionID", c_int),    # 活动ID
                  ("TotalCost", c_int),    # 总消费
                  ("AwardState", c_int),    # 奖励领取状态
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x06
        self.ActionID = 0
        self.TotalCost = 0
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCostProfitInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActionID:%d,
                                TotalCost:%d,
                                AwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActionID,
                                self.TotalCost,
                                self.AwardState
                                )
        return DumpString
m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
#------------------------------------------------------
# AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
class  tagMCCostRankTeHuiInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActionID", c_int),    # 活动ID
                  ("TotalCost", c_int),    # 总累计消费钻石
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x07
        self.ActionID = 0
        self.TotalCost = 0
        return
    def GetLength(self):
        return sizeof(tagMCCostRankTeHuiInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActionID:%d,
                                TotalCost:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActionID,
                                self.TotalCost
                                )
        return DumpString
m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
#------------------------------------------------------
# AA 09 消费返利活动信息 #tagMCCostRebateInfo
class  tagMCCostRebateAwardItem(Structure):
@@ -21451,6 +23679,518 @@
m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class  tagMCFeastWeekPartyItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NeedPoint", c_ushort),    # 领奖需要积分
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", c_ushort),    # 物品数量
                  ("IsBind", c_ubyte),    # 是否绑定
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.NeedPoint = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWeekPartyItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
                                NeedPoint:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.NeedPoint,
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastWeekPartyAction(Structure):
    TemplateID = 0    #(DWORD TemplateID)// 模板ID
    ActionType = 0    #(WORD ActionType)// 活动类别
    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
    Point = 0    #(DWORD Point)// 单次领奖积分
    Count = 0    #(BYTE Count)// 物品数
    ItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temItemInfo = tagMCFeastWeekPartyItem()
            _pos = temItemInfo.ReadData(_lpData, _pos)
            self.ItemInfo.append(temItemInfo)
        return _pos
    def Clear(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Point = 0
        self.Count = 0
        self.ItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += 4
        length += 4
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.ItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.TemplateID)
        data = CommFunc.WriteWORD(data, self.ActionType)
        data = CommFunc.WriteDWORD(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.SingleTimes)
        data = CommFunc.WriteDWORD(data, self.Point)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                TemplateID:%d,
                                ActionType:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                Point:%d,
                                Count:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.TemplateID,
                                self.ActionType,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.Point,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyDayInfo(Structure):
    ActCnt = 0    #(BYTE ActCnt)// 数量
    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
    PCount = 0    #(BYTE PCount)// 物品数
    PItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.TemplateList.append(value)
        self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PCount):
            temPItemInfo = tagMCFeastWeekPartyItem()
            _pos = temPItemInfo.ReadData(_lpData, _pos)
            self.PItemInfo.append(temPItemInfo)
        return _pos
    def Clear(self):
        self.ActCnt = 0
        self.TemplateList = list()
        self.PCount = 0
        self.PItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.ActCnt
        length += 1
        for i in range(self.PCount):
            length += self.PItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ActCnt)
        for i in range(self.ActCnt):
            data = CommFunc.WriteWORD(data, self.TemplateList[i])
        data = CommFunc.WriteBYTE(data, self.PCount)
        for i in range(self.PCount):
            data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ActCnt:%d,
                                TemplateList:%s,
                                PCount:%d,
                                PItemInfo:%s
                                '''\
                                %(
                                self.ActCnt,
                                "...",
                                self.PCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    DayCnt = 0    #(BYTE DayCnt)// 天数
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
    TCount = 0    #(BYTE TCount)// 模板数
    ActionInfo = list()    #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCnt):
            temDayInfoList = tagMCFeastWeekPartyDayInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TCount):
            temActionInfo = tagMCFeastWeekPartyAction()
            _pos = temActionInfo.ReadData(_lpData, _pos)
            self.ActionInfo.append(temActionInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LimitLV = 0
        self.DayCnt = 0
        self.DayInfoList = list()
        self.TCount = 0
        self.ActionInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        length += 2
        length += 1
        for i in range(self.DayCnt):
            length += self.DayInfoList[i].GetLength()
        length += 1
        for i in range(self.TCount):
            length += self.ActionInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.DayCnt)
        for i in range(self.DayCnt):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TCount)
        for i in range(self.TCount):
            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                IsDayReset:%d,
                                ResetType:%d,
                                LimitLV:%d,
                                DayCnt:%d,
                                DayInfoList:%s,
                                TCount:%d,
                                ActionInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.IsDayReset,
                                self.ResetType,
                                self.LimitLV,
                                self.DayCnt,
                                "...",
                                self.TCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
#------------------------------------------------------
# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
class  tagMCFeastWeekPartyTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_int),    #已完成次数
                  ("GotTimes", c_int),    #已领取次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.TemplateID = 0
        self.CurTimes = 0
        self.GotTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWeekPartyTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
                                TemplateID:%d,
                                CurTimes:%d,
                                GotTimes:%d
                                '''\
                                %(
                                self.TemplateID,
                                self.CurTimes,
                                self.GotTimes
                                )
        return DumpString
class  tagMCFeastWeekPartyDayPlayerInfo(Structure):
    DayIndex = 0    #(DWORD DayIndex)//第X天
    Point = 0    #(DWORD Point)//积分
    AwardRecord = 0    #(DWORD AwardRecord)//积分领奖记录
    ACount = 0    #(DWORD ACount)//任务条目数
    TaskList = list()    #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        for i in range(self.ACount):
            temTaskList = tagMCFeastWeekPartyTaskInfo()
            _pos = temTaskList.ReadData(_lpData, _pos)
            self.TaskList.append(temTaskList)
        return _pos
    def Clear(self):
        self.DayIndex = 0
        self.Point = 0
        self.AwardRecord = 0
        self.ACount = 0
        self.TaskList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 4
        for i in range(self.ACount):
            length += self.TaskList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.DayIndex)
        data = CommFunc.WriteDWORD(data, self.Point)
        data = CommFunc.WriteDWORD(data, self.AwardRecord)
        data = CommFunc.WriteDWORD(data, self.ACount)
        for i in range(self.ACount):
            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayIndex:%d,
                                Point:%d,
                                AwardRecord:%d,
                                ACount:%d,
                                TaskList:%s
                                '''\
                                %(
                                self.DayIndex,
                                self.Point,
                                self.AwardRecord,
                                self.ACount,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x21
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x21
        self.Count = 0
        self.DayInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.DayInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                DayInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
@@ -22441,21 +25181,18 @@
#------------------------------------------------------
# AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
class  tagMCRechargeRankTeHuiInfo(Structure):
class  tagMCLuckyTreasureItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActionID", c_int),    # 活动ID
                  ("TotalGold", c_int),    # 总累计充值元宝
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", c_ushort),    # 物品数量
                  ("IsBind", c_ubyte),    # 是否绑定
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -22464,129 +25201,277 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x05
        self.ActionID = 0
        self.TotalGold = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCRechargeRankTeHuiInfo)
        return sizeof(tagMCLuckyTreasureItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActionID:%d,
                                TotalGold:%d
        DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActionID,
                                self.TotalGold
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
#------------------------------------------------------
# AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
class  tagMCRechargeTeHuiInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GotCnt", c_ubyte),    # 已领取次数
                  ("CanGetCnt", c_ubyte),    # 当前可领取次数
                  ("CurTotalGold", c_int),    # 当前规则累计充值元宝-仅针对累充规则
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x04
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x04
        self.GotCnt = 0
        self.CanGetCnt = 0
        self.CurTotalGold = 0
        return
    def GetLength(self):
        return sizeof(tagMCRechargeTeHuiInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
                                Cmd:%s,
                                SubCmd:%s,
                                GotCnt:%d,
                                CanGetCnt:%d,
                                CurTotalGold:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GotCnt,
                                self.CanGetCnt,
                                self.CurTotalGold
                                )
        return DumpString
class  tagMCRechargeTeHuiInfoList(Structure):
class  tagMCLuckyTreasureInfo(Structure):
    Head = tagHead()
    ActionID = 0    #(DWORD ActionID)// 活动ID
    TotalGold = 0    #(DWORD TotalGold)// 总累计充值元宝
    InfoCnt = 0    #(BYTE InfoCnt)// 信息个数
    InfoList = list()    #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    LuckyPoint = 0    #(WORD LuckyPoint)// 总幸运值
    Count = 0    #(WORD Count)// 物品数
    ItemList = list()    #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x04
        self.Head.SubCmd = 0x1F
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.InfoCnt):
            temInfoList = tagMCRechargeTeHuiInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temItemList = tagMCLuckyTreasureItem()
            _pos = temItemList.ReadData(_lpData, _pos)
            self.ItemList.append(temItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x04
        self.ActionID = 0
        self.TotalGold = 0
        self.InfoCnt = 0
        self.InfoList = list()
        self.Head.SubCmd = 0x1F
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.LimitLV = 0
        self.LuckyPoint = 0
        self.Count = 0
        self.ItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 2
        length += 2
        length += 2
        for i in range(self.Count):
            length += self.ItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteWORD(data, self.LuckyPoint)
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                LimitLV:%d,
                                LuckyPoint:%d,
                                Count:%d,
                                ItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.LimitLV,
                                self.LuckyPoint,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
#------------------------------------------------------
# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
class  tagMCLuckyTreasureResultInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LuckyPoint", c_ushort),    # 当前幸运点
                  ("HasFree", c_ubyte),    # 是否免费过
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", c_ushort),    #物品数量
                  ("IsBind", c_ubyte),    # 是否绑定
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x1E
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x1E
        self.LuckyPoint = 0
        self.HasFree = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCLuckyTreasureResultInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                LuckyPoint:%d,
                                HasFree:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LuckyPoint,
                                self.HasFree,
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
#------------------------------------------------------
# AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
class  tagMCNewAllPeoplePartyCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ActID", c_int),    #活动ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ActID = 0
        self.CurTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCNewAllPeoplePartyCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
                                ActID:%d,
                                CurTimes:%d
                                '''\
                                %(
                                self.ActID,
                                self.CurTimes
                                )
        return DumpString
class  tagMCNewAllPeoplePartyInfo(Structure):
    Head = tagHead()
    CurPoint = 0    #(DWORD CurPoint)//当前总点数
    AwardRecord = 0    #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
    Count = 0    #(BYTE Count)
    BuyCountList = list()    #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temBuyCountList = tagMCNewAllPeoplePartyCount()
            _pos = temBuyCountList.ReadData(_lpData, _pos)
            self.BuyCountList.append(temBuyCountList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x23
        self.CurPoint = 0
        self.AwardRecord = 0
        self.Count = 0
        self.BuyCountList = list()
        return
    def GetLength(self):
@@ -22595,41 +25480,93 @@
        length += 4
        length += 4
        length += 1
        for i in range(self.InfoCnt):
            length += self.InfoList[i].GetLength()
        for i in range(self.Count):
            length += self.BuyCountList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ActionID)
        data = CommFunc.WriteDWORD(data, self.TotalGold)
        data = CommFunc.WriteBYTE(data, self.InfoCnt)
        for i in range(self.InfoCnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        data = CommFunc.WriteDWORD(data, self.CurPoint)
        data = CommFunc.WriteDWORD(data, self.AwardRecord)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActionID:%d,
                                TotalGold:%d,
                                InfoCnt:%d,
                                InfoList:%s
                                CurPoint:%d,
                                AwardRecord:%d,
                                Count:%d,
                                BuyCountList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActionID,
                                self.TotalGold,
                                self.InfoCnt,
                                self.CurPoint,
                                self.AwardRecord,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
#------------------------------------------------------
# AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
class  tagMCNewXJSDRecharge(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x22
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x22
        self.State = 0
        return
    def GetLength(self):
        return sizeof(tagMCNewXJSDRecharge)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
                                Cmd:%s,
                                SubCmd:%s,
                                State:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.State
                                )
        return DumpString
m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
#------------------------------------------------------
@@ -23482,8 +26419,8 @@
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ("GotTimes", c_ushort),    #已领取次数
                  ("CurTimes", c_int),    #已完成次数
                  ("GotTimes", c_int),    #已领取次数
                  ]
    def __init__(self):
@@ -23823,310 +26760,6 @@
#------------------------------------------------------
# AB 06 活动物品兑换次数记录 #tagMCExchangeActionItemCntRecord
class  tagMCExchangeActionItemCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),
                  ("ExcCnt", c_int),    # 已兑换次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        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 = 0xAB
        self.SubCmd = 0x06
        self.ItemID = 0
        self.ExcCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCExchangeActionItemCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 06 活动物品兑换次数记录 //tagMCExchangeActionItemCntRecord:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d,
                                ExcCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID,
                                self.ExcCnt
                                )
        return DumpString
class  tagMCExchangeActionItemCntRecord(Structure):
    Head = tagHead()
    ActionKeyLen = 0    #(BYTE ActionKeyLen)
    ActionKey = ""    #(String ActionKey)
    RecordCnt = 0    #(BYTE RecordCnt)
    RecordList = list()    #(vector<tagMCExchangeActionItemCnt> RecordList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x06
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
        self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RecordCnt):
            temRecordList = tagMCExchangeActionItemCnt()
            _pos = temRecordList.ReadData(_lpData, _pos)
            self.RecordList.append(temRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x06
        self.ActionKeyLen = 0
        self.ActionKey = ""
        self.RecordCnt = 0
        self.RecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.ActionKey)
        length += 1
        for i in range(self.RecordCnt):
            length += self.RecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
        data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
        data = CommFunc.WriteBYTE(data, self.RecordCnt)
        for i in range(self.RecordCnt):
            data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActionKeyLen:%d,
                                ActionKey:%s,
                                RecordCnt:%d,
                                RecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActionKeyLen,
                                self.ActionKey,
                                self.RecordCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord
#------------------------------------------------------
# AB 07 节日活动奖励状态 #tagMCFestivalLoginAwardState
class  tagMCFestivalLoginAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FestivalType", c_ubyte),    # 节日类型
                  ("State", c_int),    # 领取状态 <按位取值,0-未领取 1-可领取 2-已领取>
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        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 = 0xAB
        self.SubCmd = 0x07
        self.FestivalType = 0
        self.State = 0
        return
    def GetLength(self):
        return sizeof(tagMCFestivalLoginAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 07 节日活动奖励状态 //tagMCFestivalLoginAwardState:
                                Cmd:%s,
                                SubCmd:%s,
                                FestivalType:%d,
                                State:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FestivalType,
                                self.State
                                )
        return DumpString
m_NAtagMCFestivalLoginAwardState=tagMCFestivalLoginAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFestivalLoginAwardState.Cmd,m_NAtagMCFestivalLoginAwardState.SubCmd))] = m_NAtagMCFestivalLoginAwardState
#------------------------------------------------------
# AB 02  领地占领每日奖励领奖情况 #tagMCManorDailyAward
class  tagMCManorDailyAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AwardRecord", c_int),    # 按位表示每个领地领取情况;0-未领,1-已领
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x02
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAB
        self.SubCmd = 0x02
        self.AwardRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCManorDailyAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 02  领地占领每日奖励领奖情况 //tagMCManorDailyAward:
                                Cmd:%s,
                                SubCmd:%s,
                                AwardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AwardRecord
                                )
        return DumpString
m_NAtagMCManorDailyAward=tagMCManorDailyAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorDailyAward.Cmd,m_NAtagMCManorDailyAward.SubCmd))] = m_NAtagMCManorDailyAward
#------------------------------------------------------
# AB 01  通知领地战结果 #tagMCManorWarResult
class  tagMCManorWarResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),    # 0-普通信息;1-活动结果总结
                  ("Result", c_ubyte),    # 战盟胜负情况;0-未知,1-胜利,2-失败
                  ("JoinTime", c_int),    # 活动时总参与时间,毫秒
                  ("JoinAward", c_ubyte),    # 参与奖状态;0-不可领,1-可领,2-已领
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        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 = 0xAB
        self.SubCmd = 0x01
        self.Type = 0
        self.Result = 0
        self.JoinTime = 0
        self.JoinAward = 0
        return
    def GetLength(self):
        return sizeof(tagMCManorWarResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 01  通知领地战结果 //tagMCManorWarResult:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d,
                                Result:%d,
                                JoinTime:%d,
                                JoinAward:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type,
                                self.Result,
                                self.JoinTime,
                                self.JoinAward
                                )
        return DumpString
m_NAtagMCManorWarResult=tagMCManorWarResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
#------------------------------------------------------
# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
class  tagMCBossRebornAwardItem(Structure):
@@ -24387,6 +27020,62 @@
m_NAtagMCDiceAward=tagMCDiceAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceAward.Cmd,m_NAtagMCDiceAward.SubCmd))] = m_NAtagMCDiceAward
#------------------------------------------------------
# AB 25 节日红包信息 #tagMCFeastRedPackInfo
class  tagMCFeastRedPackInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MoneyNum", c_int),    # 累积抢到多少钱
                  ("GrabCnt", c_ushort),    # 已抢红包次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x25
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAB
        self.SubCmd = 0x25
        self.MoneyNum = 0
        self.GrabCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastRedPackInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                MoneyNum:%d,
                                GrabCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MoneyNum,
                                self.GrabCnt
                                )
        return DumpString
m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
#------------------------------------------------------
@@ -25440,6 +28129,83 @@
#------------------------------------------------------
# B1 07 玩家点数信息 #tagMCRolePointInfo
class  tagMCRolePointInfo(Structure):
    Head = tagHead()
    PointAttrIDCount = 0    #(BYTE PointAttrIDCount)// 点类型个数
    PointAttrIDList = list()    #(vector<BYTE> PointAttrIDList)// 点类型列表
    PointValueList = list()    #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x07
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PointAttrIDCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.PointAttrIDList.append(value)
        for i in range(self.PointAttrIDCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.PointValueList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x07
        self.PointAttrIDCount = 0
        self.PointAttrIDList = list()
        self.PointValueList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.PointAttrIDCount
        length += 2 * self.PointAttrIDCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
        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])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PointAttrIDCount:%d,
                                PointAttrIDList:%s,
                                PointValueList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PointAttrIDCount,
                                "...",
                                "..."
                                )
        return DumpString
m_NAtagMCRolePointInfo=tagMCRolePointInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRolePointInfo.Head.Cmd,m_NAtagMCRolePointInfo.Head.SubCmd))] = m_NAtagMCRolePointInfo
#------------------------------------------------------
# B1 01 玩家技能连击通知 #tagMCSkillCombo
class  tagMCSkillCombo(Structure):
@@ -25657,6 +28423,54 @@
m_NAtagMCPlayerWallow=tagMCPlayerWallow()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerWallow.Cmd,m_NAtagMCPlayerWallow.SubCmd))] = m_NAtagMCPlayerWallow
#------------------------------------------------------
#B1 08 开始印记流失时间 #tagMCYinjiStartTime
class  tagMCYinjiStartTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x08
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB1
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagMCYinjiStartTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
#------------------------------------------------------
@@ -25961,6 +28775,118 @@
m_NAtagMCFamilyWarBillboard=tagMCFamilyWarBillboard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyWarBillboard.Head.Cmd,m_NAtagMCFamilyWarBillboard.Head.SubCmd))] = m_NAtagMCFamilyWarBillboard
#------------------------------------------------------
# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
class  tagMCFBBuyBuffTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MapID", c_int),
                  ("MoneyCnt", c_ushort),
                  ("BuyTime", c_int),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.MapID = 0
        self.MoneyCnt = 0
        self.BuyTime = 0
        return
    def GetLength(self):
        return sizeof(tagMCFBBuyBuffTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
                                MapID:%d,
                                MoneyCnt:%d,
                                BuyTime:%d
                                '''\
                                %(
                                self.MapID,
                                self.MoneyCnt,
                                self.BuyTime
                                )
        return DumpString
class  tagMCFBBuyBuffInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)
    InfoList = list()    #(vector<tagMCFBBuyBuffTime> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagMCFBBuyBuffTime()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x15
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            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.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
#------------------------------------------------------
@@ -26802,6 +29728,118 @@
#------------------------------------------------------
# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
class  tagMCSkyTowerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Floor", c_int),    # 已通关层
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        self.Floor = 0
        return
    def GetLength(self):
        return sizeof(tagMCSkyTowerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Floor:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Floor
                                )
        return DumpString
m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
#------------------------------------------------------
# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
class  tagMCStartCustomSceneResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("FuncLineID", c_ushort),
                  ("Result", c_ubyte),    #是否允许
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x16
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x16
        self.MapID = 0
        self.FuncLineID = 0
        self.Result = 0
        return
    def GetLength(self):
        return sizeof(tagMCStartCustomSceneResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d,
                                Result:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID,
                                self.Result
                                )
        return DumpString
m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
#------------------------------------------------------
#B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
class  tagMCPushNotificationsSetting(Structure):
@@ -26870,6 +29908,58 @@
m_NAtagMCPushNotificationsSetting=tagMCPushNotificationsSetting()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPushNotificationsSetting.Head.Cmd,m_NAtagMCPushNotificationsSetting.Head.SubCmd))] = m_NAtagMCPushNotificationsSetting
#------------------------------------------------------
# B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
class  tagMCZhuXianBossCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Cnt", c_ubyte),    # 剩余可协助次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.Cnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianBossCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt:
                                Cmd:%s,
                                SubCmd:%s,
                                Cnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Cnt
                                )
        return DumpString
m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
#------------------------------------------------------
@@ -27236,6 +30326,70 @@
#------------------------------------------------------
#B4 14 根据类型来决定移动的方式 #tagMCMoveByType
class  tagMCMoveByType(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ID", c_int),    #玩家ID
                  ("PosX", c_ushort),    # 目标X
                  ("PosY", c_ushort),    # 目标Y
                  ("MoveType", c_ubyte),    #移动方式
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x14
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB4
        self.SubCmd = 0x14
        self.ID = 0
        self.PosX = 0
        self.PosY = 0
        self.MoveType = 0
        return
    def GetLength(self):
        return sizeof(tagMCMoveByType)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
                                Cmd:%s,
                                SubCmd:%s,
                                ID:%d,
                                PosX:%d,
                                PosY:%d,
                                MoveType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ID,
                                self.PosX,
                                self.PosY,
                                self.MoveType
                                )
        return DumpString
m_NAtagMCMoveByType=tagMCMoveByType()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
#------------------------------------------------------
#B4 07 被动技能页选择(功法) # tagMCPassivePage
class  tagMCPassivePage(Structure):
@@ -27462,6 +30616,118 @@
m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
#------------------------------------------------------
# B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
class  tagPlayerSkill(Structure):
    _pack_ = 1
    _fields_ = [
                  ("SkillID", c_int),    #技能ID
                  ("RemainTime", c_int),    #剩余时间
                  ("Proficiency", c_int),    #熟练度
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.SkillID = 0
        self.RemainTime = 0
        self.Proficiency = 0
        return
    def GetLength(self):
        return sizeof(tagPlayerSkill)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 13 通知玩家所有已学技能 //tagMCPlayerSkills:
                                SkillID:%d,
                                RemainTime:%d,
                                Proficiency:%d
                                '''\
                                %(
                                self.SkillID,
                                self.RemainTime,
                                self.Proficiency
                                )
        return DumpString
class  tagMCPlayerSkills(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)//技能个数
    Skills = list()    #(vector<tagPlayerSkill> Skills)// 技能数据
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x13
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temSkills = tagPlayerSkill()
            _pos = temSkills.ReadData(_lpData, _pos)
            self.Skills.append(temSkills)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x13
        self.Count = 0
        self.Skills = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.Skills[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.Skills[i].GetLength(), self.Skills[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                Skills:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCPlayerSkills=tagMCPlayerSkills()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSkills.Head.Cmd,m_NAtagMCPlayerSkills.Head.SubCmd))] = m_NAtagMCPlayerSkills
#------------------------------------------------------
@@ -28195,6 +31461,7 @@
                  ("DayPKCount", c_ubyte),    # 当日已PK次数
                  ("DayWinCount", c_ubyte),    # 当日已胜利次数
                  ("DayBuyCount", c_ubyte),    # 当日已购买次数
                  ("DayItemAddCount", c_ubyte),    # 当日物品增加次数
                  ]
    def __init__(self):
@@ -28219,6 +31486,7 @@
        self.DayPKCount = 0
        self.DayWinCount = 0
        self.DayBuyCount = 0
        self.DayItemAddCount = 0
        return
    def GetLength(self):
@@ -28238,7 +31506,8 @@
                                CWinCount:%d,
                                DayPKCount:%d,
                                DayWinCount:%d,
                                DayBuyCount:%d
                                DayBuyCount:%d,
                                DayItemAddCount:%d
                                '''\
                                %(
                                self.Cmd,
@@ -28250,7 +31519,8 @@
                                self.CWinCount,
                                self.DayPKCount,
                                self.DayWinCount,
                                self.DayBuyCount
                                self.DayBuyCount,
                                self.DayItemAddCount
                                )
        return DumpString