ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -331,58 +331,6 @@
#------------------------------------------------------
# A1 21 תְҵ #tagCMChangeJob
class  tagCMChangeJob(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagJob", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x21
        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 = 0xA1
        self.SubCmd = 0x21
        self.TagJob = 0
        return
    def GetLength(self):
        return sizeof(tagCMChangeJob)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 21 תְҵ //tagCMChangeJob:
                                Cmd:%s,
                                SubCmd:%s,
                                TagJob:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagJob
                                )
        return DumpString
m_NAtagCMChangeJob=tagCMChangeJob()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
#------------------------------------------------------
# A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo
class  tagCMCoinBuyOrderInfo(Structure):
@@ -461,66 +409,6 @@
#------------------------------------------------------
# A1 20 货币兑换 #tagCMMoneyExchange
class  tagCMMoneyExchange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SrcMoneyType", c_ubyte),    # 源货币类型
                  ("TagMoneyType", c_ubyte),    # 目标货币类型
                  ("ExchangeValue", c_int),    # 兑换数量(消耗源货币的数量)
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        self.SrcMoneyType = 0
        self.TagMoneyType = 0
        self.ExchangeValue = 0
        return
    def GetLength(self):
        return sizeof(tagCMMoneyExchange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
                                Cmd:%s,
                                SubCmd:%s,
                                SrcMoneyType:%d,
                                TagMoneyType:%d,
                                ExchangeValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SrcMoneyType,
                                self.TagMoneyType,
                                self.ExchangeValue
                                )
        return DumpString
m_NAtagCMMoneyExchange=tagCMMoneyExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
#------------------------------------------------------
# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
class  tagCMQueryCoinToGoldCount(Structure):
@@ -570,54 +458,6 @@
m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
#------------------------------------------------------
# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
class  tagCMRefreshMainServerRole(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        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 = 0xA1
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagCMRefreshMainServerRole)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
#------------------------------------------------------
@@ -674,6 +514,77 @@
m_NAtagCMSelectCTGItem=tagCMSelectCTGItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectCTGItem.Cmd,m_NAtagCMSelectCTGItem.SubCmd))] = m_NAtagCMSelectCTGItem
#------------------------------------------------------
# A1 31 前端自定义保存设置内容 #tagCSSettingData
class  tagCSSettingData(Structure):
    Head = tagHead()
    KeyNum = 0    #(BYTE KeyNum)// 自定义key编号,后端使用数字key存储,前端自行进行转换定义,限制100个
    DataLen = 0    #(BYTE DataLen)
    SetData = ""    #(String SetData)//自定义保存的内容
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA1
        self.Head.SubCmd = 0x31
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.KeyNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.DataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SetData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA1
        self.Head.SubCmd = 0x31
        self.KeyNum = 0
        self.DataLen = 0
        self.SetData = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += len(self.SetData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.KeyNum)
        data = CommFunc.WriteBYTE(data, self.DataLen)
        data = CommFunc.WriteString(data, self.DataLen, self.SetData)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                KeyNum:%d,
                                DataLen:%d,
                                SetData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.KeyNum,
                                self.DataLen,
                                self.SetData
                                )
        return DumpString
m_NAtagCSSettingData=tagCSSettingData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSSettingData.Head.Cmd,m_NAtagCSSettingData.Head.SubCmd))] = m_NAtagCSSettingData
#------------------------------------------------------
@@ -2165,7 +2076,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    
                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                  ("ServerID", c_int),    #玩家服务器ID,发0默认本服玩家
                  ]
    def __init__(self):
@@ -2183,7 +2094,7 @@
        self.Cmd = 0xA2
        self.SubCmd = 0x12
        self.PlayerID = 0
        self.EquipClassLV = 0
        self.ServerID = 0
        return
    def GetLength(self):
@@ -2197,13 +2108,13 @@
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                EquipClassLV:%d
                                ServerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.EquipClassLV
                                self.ServerID
                                )
        return DumpString
@@ -3961,73 +3872,6 @@
#------------------------------------------------------
#A3 2E 羽翼精炼 #tagCMWingUp
class  tagCMWingUp(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//索引个数
    WingIndexList = list()    #(vector<BYTE> WingIndexList)//材料翅膀在背包中的索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x2E
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.WingIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x2E
        self.Count = 0
        self.WingIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteBYTE(data, self.WingIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                WingIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMWingUp=tagCMWingUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
#------------------------------------------------------
#A4 06 变更家族成员加入审核方式#tagCGChangeFamilyAcceptJoinType
class  tagCGChangeFamilyAcceptJoinType(Structure):
@@ -4233,73 +4077,6 @@
m_NAtagCGFamilyLVUp=tagCGFamilyLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyLVUp.Cmd,m_NAtagCGFamilyLVUp.SubCmd))] = m_NAtagCGFamilyLVUp
#------------------------------------------------------
# A4 09 家族仓库删除物品 #tagCGFamilyStoreDel
class  tagCGFamilyStoreDel(Structure):
    Head = tagHead()
    IndexCount = 0    #(BYTE IndexCount)
    StoreItemIndex = list()    #(vector<BYTE> StoreItemIndex)// 仓库物品索引,1代表索引0的物品,与兑换一致
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA4
        self.Head.SubCmd = 0x09
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.IndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.StoreItemIndex.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA4
        self.Head.SubCmd = 0x09
        self.IndexCount = 0
        self.StoreItemIndex = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.IndexCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IndexCount)
        for i in range(self.IndexCount):
            data = CommFunc.WriteBYTE(data, self.StoreItemIndex[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IndexCount:%d,
                                StoreItemIndex:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IndexCount,
                                "..."
                                )
        return DumpString
m_NAtagCGFamilyStoreDel=tagCGFamilyStoreDel()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyStoreDel.Head.Cmd,m_NAtagCGFamilyStoreDel.Head.SubCmd))] = m_NAtagCGFamilyStoreDel
#------------------------------------------------------
@@ -4727,58 +4504,6 @@
#------------------------------------------------------
#A5 01 坐骑激活 #tagPlayerActivateHorse
class  tagPlayerActivateHorse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HorseID", c_int),    #坐骑幻化ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x01
        self.HorseID = 0
        return
    def GetLength(self):
        return sizeof(tagPlayerActivateHorse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A5 01 坐骑激活 //tagPlayerActivateHorse:
                                Cmd:%s,
                                SubCmd:%s,
                                HorseID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HorseID
                                )
        return DumpString
m_NAtagPlayerActivateHorse=tagPlayerActivateHorse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerActivateHorse.Cmd,m_NAtagPlayerActivateHorse.SubCmd))] = m_NAtagPlayerActivateHorse
#------------------------------------------------------
# A5 C7 激活大师强化等级 #tagCMActivateMasterPlusLV
class  tagCMActivateMasterPlusLV(Structure):
@@ -4955,227 +4680,6 @@
#------------------------------------------------------
# A5 71 命格分解 #tagCMBirthChartDecompose
class  tagCMBirthChartDecompose(Structure):
    Head = tagHead()
    IsAll = 0    #(BYTE IsAll)// 是否全部分解,优先级最高,锁定除外
    QualityCnt = 0    #(BYTE QualityCnt)// 按全部分解品质数
    QualityList = list()    #(vector<BYTE> QualityList)// 全部分解的品质列表,发送的品质会全部分解,锁定除外
    Count = 0    #(BYTE Count)// 指定批量分解数,最大不超过50个
    PlaceIndexList = list()    #(vector<WORD> PlaceIndexList)// 批量分解位置索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x71
        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.QualityCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.QualityCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.QualityList.append(value)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.PlaceIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x71
        self.IsAll = 0
        self.QualityCnt = 0
        self.QualityList = list()
        self.Count = 0
        self.PlaceIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.QualityCnt
        length += 1
        length += 2 * self.Count
        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.QualityCnt)
        for i in range(self.QualityCnt):
            data = CommFunc.WriteBYTE(data, self.QualityList[i])
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsAll:%d,
                                QualityCnt:%d,
                                QualityList:%s,
                                Count:%d,
                                PlaceIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsAll,
                                self.QualityCnt,
                                "...",
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMBirthChartDecompose=tagCMBirthChartDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBirthChartDecompose.Head.Cmd,m_NAtagCMBirthChartDecompose.Head.SubCmd))] = m_NAtagCMBirthChartDecompose
#------------------------------------------------------
# A5 72 命格锁定状态变更 #tagCMBirthChartLock
class  tagCMBirthChartLock(Structure):
    Head = tagHead()
    LockState = 0    #(BYTE LockState)// 锁定状态, 0-锁定,1-解锁
    Count = 0    #(BYTE Count)// 批量操作数,最大不超过50个
    PlaceIndexList = list()    #(vector<WORD> PlaceIndexList)// 批量操作位置索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x72
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.LockState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.PlaceIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x72
        self.LockState = 0
        self.Count = 0
        self.PlaceIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 2 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.LockState)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                LockState:%d,
                                Count:%d,
                                PlaceIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.LockState,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMBirthChartLock=tagCMBirthChartLock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBirthChartLock.Head.Cmd,m_NAtagCMBirthChartLock.Head.SubCmd))] = m_NAtagCMBirthChartLock
#------------------------------------------------------
# A5 70 命格升级 #tagCMBirthChartUp
class  tagCMBirthChartUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlaceType", c_ubyte),    # 位置类型;0-命格背包,1-命格孔
                  ("PlaceIndex", c_ushort),    # 位置索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x70
        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 = 0x70
        self.PlaceType = 0
        self.PlaceIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMBirthChartUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 70 命格升级 //tagCMBirthChartUp:
                                Cmd:%s,
                                SubCmd:%s,
                                PlaceType:%d,
                                PlaceIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlaceType,
                                self.PlaceIndex
                                )
        return DumpString
m_NAtagCMBirthChartUp=tagCMBirthChartUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBirthChartUp.Cmd,m_NAtagCMBirthChartUp.SubCmd))] = m_NAtagCMBirthChartUp
#------------------------------------------------------
# A5 52 购买功能NPC采集次数 #tagCMBuyCollectionCnt
class  tagCMBuyCollectionCnt(Structure):
@@ -5336,54 +4840,6 @@
#------------------------------------------------------
# A5 46 购买通天令 #tagCMBuyTongTianLing
class  tagCMBuyTongTianLing(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x46
        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 = 0x46
        return
    def GetLength(self):
        return sizeof(tagCMBuyTongTianLing)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 46 购买通天令 //tagCMBuyTongTianLing:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMBuyTongTianLing=tagCMBuyTongTianLing()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyTongTianLing.Cmd,m_NAtagCMBuyTongTianLing.SubCmd))] = m_NAtagCMBuyTongTianLing
#------------------------------------------------------
#A5 3B 请求领取补偿#tagCMRequestCompensation
class  tagCMRequestCompensation(Structure):
@@ -5438,90 +4894,6 @@
m_NAtagCMRequestCompensation=tagCMRequestCompensation()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestCompensation.Head.Cmd,m_NAtagCMRequestCompensation.Head.SubCmd))] = m_NAtagCMRequestCompensation
#------------------------------------------------------
# A5 78 符印合成 #tagCMRuneCompound
class  tagCMRuneCompound(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)
    PackList = list()    #(vector<BYTE> PackList)//所在位置 0-背包 1-符印孔
    IndexList = list()    #(vector<BYTE> IndexList)//物品索引
    TagItemID = 0    #(DWORD TagItemID)//合成目标物品ID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x78
        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):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.PackList.append(value)
        for i in range(self.Cnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.IndexList.append(value)
        self.TagItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x78
        self.Cnt = 0
        self.PackList = list()
        self.IndexList = list()
        self.TagItemID = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.Cnt
        length += 1 * self.Cnt
        length += 4
        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.WriteBYTE(data, self.PackList[i])
        for i in range(self.Cnt):
            data = CommFunc.WriteBYTE(data, self.IndexList[i])
        data = CommFunc.WriteDWORD(data, self.TagItemID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                PackList:%s,
                                IndexList:%s,
                                TagItemID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "...",
                                "...",
                                self.TagItemID
                                )
        return DumpString
m_NAtagCMRuneCompound=tagCMRuneCompound()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneCompound.Head.Cmd,m_NAtagCMRuneCompound.Head.SubCmd))] = m_NAtagCMRuneCompound
#------------------------------------------------------
@@ -5882,331 +5254,6 @@
#------------------------------------------------------
# A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
class  tagCMDogzBattleStateChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("BatteState", c_ubyte),    #助战状态,0-召回,1-助战
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC2
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC2
        self.DogzID = 0
        self.BatteState = 0
        return
    def GetLength(self):
        return sizeof(tagCMDogzBattleStateChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                BatteState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.BatteState
                                )
        return DumpString
m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
#------------------------------------------------------
# A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
class  tagCMDogzBuyBatteCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC3
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC3
        return
    def GetLength(self):
        return sizeof(tagCMDogzBuyBatteCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
#------------------------------------------------------
# A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
class  tagCMDogzEquipItem(Structure):
    Head = tagHead()
    DogzID = 0    #(BYTE DogzID)// 神兽ID
    EquipIndexCount = 0    #(BYTE EquipIndexCount)
    EquipIndexList = list()    #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC0
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.EquipIndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.EquipIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC0
        self.DogzID = 0
        self.EquipIndexCount = 0
        self.EquipIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.EquipIndexCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.DogzID)
        data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
        for i in range(self.EquipIndexCount):
            data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                DogzID:%d,
                                EquipIndexCount:%d,
                                EquipIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.DogzID,
                                self.EquipIndexCount,
                                "..."
                                )
        return DumpString
m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
#------------------------------------------------------
# A5 C4 神兽装备强化 #tagCMDogzEquipPlus
class  tagCMDogzEquipPlus(Structure):
    Head = tagHead()
    EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
    IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
    IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
    IndexUseCountList = list()    #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
    IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC4
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.IndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.IndexList.append(value)
        for i in range(self.IndexCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.IndexUseCountList.append(value)
        self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC4
        self.EquipIndex = 0
        self.IndexCount = 0
        self.IndexList = list()
        self.IndexUseCountList = list()
        self.IsDouble = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.IndexCount
        length += 4 * self.IndexCount
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.EquipIndex)
        data = CommFunc.WriteBYTE(data, self.IndexCount)
        for i in range(self.IndexCount):
            data = CommFunc.WriteBYTE(data, self.IndexList[i])
        for i in range(self.IndexCount):
            data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
        data = CommFunc.WriteBYTE(data, self.IsDouble)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EquipIndex:%d,
                                IndexCount:%d,
                                IndexList:%s,
                                IndexUseCountList:%s,
                                IsDouble:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EquipIndex,
                                self.IndexCount,
                                "...",
                                "...",
                                self.IsDouble
                                )
        return DumpString
m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
#------------------------------------------------------
# A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
class  tagCMDogzUnEquipItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("EquipPlace", c_ubyte),    #卸下的装备位, 0代表卸下全部
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC1
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC1
        self.DogzID = 0
        self.EquipPlace = 0
        return
    def GetLength(self):
        return sizeof(tagCMDogzUnEquipItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                EquipPlace:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.EquipPlace
                                )
        return DumpString
m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
#------------------------------------------------------
# A5 C5 装备部位升星 #tagCMEquipPartStarUp
class  tagCMEquipPartStarUp(Structure):
@@ -6362,114 +5409,6 @@
#------------------------------------------------------
# A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint
class  tagCMExchangeTongTianLVPoint(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ExchangePoint", c_int),    # 兑换点数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x45
        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 = 0x45
        self.ExchangePoint = 0
        return
    def GetLength(self):
        return sizeof(tagCMExchangeTongTianLVPoint)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 45 兑换通天令等级经验积分点 //tagCMExchangeTongTianLVPoint:
                                Cmd:%s,
                                SubCmd:%s,
                                ExchangePoint:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ExchangePoint
                                )
        return DumpString
m_NAtagCMExchangeTongTianLVPoint=tagCMExchangeTongTianLVPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeTongTianLVPoint.Cmd,m_NAtagCMExchangeTongTianLVPoint.SubCmd))] = m_NAtagCMExchangeTongTianLVPoint
#------------------------------------------------------
# A5 32 法器升级 #tagCMFaQiLVUp
class  tagCMFaQiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        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 = 0x32
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaQiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
#------------------------------------------------------
# A5 41 领取投资理财回报 #tagCMGetInvestReward
class  tagCMGetInvestReward(Structure):
@@ -6523,230 +5462,6 @@
m_NAtagCMGetInvestReward=tagCMGetInvestReward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetInvestReward.Cmd,m_NAtagCMGetInvestReward.SubCmd))] = m_NAtagCMGetInvestReward
#------------------------------------------------------
# A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward
class  tagCMGetTongTianLVAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TTLV", c_ubyte),    # 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励
                  ("IsXian", c_ubyte),    # 是否领取仙品奖励,仅指定等级奖励有效
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x44
        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 = 0x44
        self.TTLV = 0
        self.IsXian = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetTongTianLVAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 44 通天令领取等级奖励 //tagCMGetTongTianLVAward:
                                Cmd:%s,
                                SubCmd:%s,
                                TTLV:%d,
                                IsXian:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TTLV,
                                self.IsXian
                                )
        return DumpString
m_NAtagCMGetTongTianLVAward=tagCMGetTongTianLVAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianLVAward.Cmd,m_NAtagCMGetTongTianLVAward.SubCmd))] = m_NAtagCMGetTongTianLVAward
#------------------------------------------------------
# A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward
class  tagCMGetTongTianTaskAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TaskID", c_ubyte),    # 任务ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x43
        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 = 0x43
        self.TaskID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetTongTianTaskAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 43 通天令领取任务奖励 //tagCMGetTongTianTaskAward:
                                Cmd:%s,
                                SubCmd:%s,
                                TaskID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TaskID
                                )
        return DumpString
m_NAtagCMGetTongTianTaskAward=tagCMGetTongTianTaskAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianTaskAward.Cmd,m_NAtagCMGetTongTianTaskAward.SubCmd))] = m_NAtagCMGetTongTianTaskAward
#------------------------------------------------------
# A5 56 神兵激活 #tagCMGodWeaponActivate
class  tagCMGodWeaponActivate(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WeaponType", c_int),    # 神兵类型
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x56
        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 = 0x56
        self.WeaponType = 0
        return
    def GetLength(self):
        return sizeof(tagCMGodWeaponActivate)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 56 神兵激活 //tagCMGodWeaponActivate:
                                Cmd:%s,
                                SubCmd:%s,
                                WeaponType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WeaponType
                                )
        return DumpString
m_NAtagCMGodWeaponActivate=tagCMGodWeaponActivate()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGodWeaponActivate.Cmd,m_NAtagCMGodWeaponActivate.SubCmd))] = m_NAtagCMGodWeaponActivate
#------------------------------------------------------
# A5 55 神兵升级 #tagCMGodWeaponPlus
class  tagCMGodWeaponPlus(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WeaponType", c_int),    # 神兵类型
                  ("ItemID", c_int),    #消耗的物品ID
                  ("ItemCount", c_ubyte),    #消耗个数,默认1
                  ("IsAutoBuy", c_ubyte),    #是否自动购买,默认0
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x55
        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 = 0x55
        self.WeaponType = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMGodWeaponPlus)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 55 神兵升级 //tagCMGodWeaponPlus:
                                Cmd:%s,
                                SubCmd:%s,
                                WeaponType:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WeaponType,
                                self.ItemID,
                                self.ItemCount,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMGodWeaponPlus=tagCMGodWeaponPlus()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGodWeaponPlus.Cmd,m_NAtagCMGodWeaponPlus.SubCmd))] = m_NAtagCMGodWeaponPlus
#------------------------------------------------------
@@ -6806,394 +5521,6 @@
#------------------------------------------------------
# A5 29 骑宠觉醒 #tagCMHorsePetAwake
class  tagCMHorsePetAwake(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ushort),    # 1-坐骑 2-灵宠
                  ("ID", c_int),    # 对应坐骑表灵宠表ID
                  ("EatItemID", c_int),    # 吞噬的物品ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x29
        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 = 0x29
        self.Type = 0
        self.ID = 0
        self.EatItemID = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorsePetAwake)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d,
                                ID:%d,
                                EatItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type,
                                self.ID,
                                self.EatItemID
                                )
        return DumpString
m_NAtagCMHorsePetAwake=tagCMHorsePetAwake()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake
#------------------------------------------------------
# A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect
class  tagCMHorsePetSkinSelect(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ushort),    # 1-坐骑 2-灵宠
                  ("ID", c_int),    # 对应坐骑表灵宠表ID
                  ("SkinIndex", c_ubyte),    # 外观索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x30
        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 = 0x30
        self.Type = 0
        self.ID = 0
        self.SkinIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorsePetSkinSelect)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d,
                                ID:%d,
                                SkinIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type,
                                self.ID,
                                self.SkinIndex
                                )
        return DumpString
m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect
#------------------------------------------------------
# A5 35 坐骑升星 #tagCMHorseStarUp
class  tagCMHorseStarUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HorseID", c_int),    #坐骑ID,对应坐骑表ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x35
        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 = 0x35
        self.HorseID = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorseStarUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 35 坐骑升星 //tagCMHorseStarUp:
                                Cmd:%s,
                                SubCmd:%s,
                                HorseID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HorseID
                                )
        return DumpString
m_NAtagCMHorseStarUp=tagCMHorseStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseStarUp.Cmd,m_NAtagCMHorseStarUp.SubCmd))] = m_NAtagCMHorseStarUp
#------------------------------------------------------
# A5 31 坐骑培养 #tagCMHorseTrain
class  tagCMHorseTrain(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TrainType", c_ubyte),    #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x31
        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 = 0x31
        self.TrainType = 0
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorseTrain)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 31 坐骑培养 //tagCMHorseTrain:
                                Cmd:%s,
                                SubCmd:%s,
                                TrainType:%d,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TrainType,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMHorseTrain=tagCMHorseTrain()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseTrain.Cmd,m_NAtagCMHorseTrain.SubCmd))] = m_NAtagCMHorseTrain
#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class  tagCMHorseUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x27
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorseUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMHorseUp=tagCMHorseUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
#------------------------------------------------------
# A5 34 炼体突破 #tagCMLianTiLVUp
class  tagCMLianTiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    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
        return
    def GetLength(self):
        return sizeof(tagCMLianTiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
#------------------------------------------------------
# A5 33 炼体提升 #tagCMLianTiUp
class  tagCMLianTiUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x33
        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 = 0x33
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMLianTiUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMLianTiUp=tagCMLianTiUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
#------------------------------------------------------
# A5 24 开启渡劫 #tagCMOpenRealmFB
class  tagCMOpenRealmFB(Structure):
@@ -7239,62 +5566,6 @@
m_NAtagCMOpenRealmFB=tagCMOpenRealmFB()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMOpenRealmFB.Cmd,m_NAtagCMOpenRealmFB.SubCmd))] = m_NAtagCMOpenRealmFB
#------------------------------------------------------
#A5 02 坐骑选择 #tagPlayerChooseHorse
class  tagPlayerChooseHorse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ChooseType", c_ubyte),    # 1-按等阶,2-按幻化
                  ("LVID", c_ubyte),    # 阶等级或幻化ID
                  ]
    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.ChooseType = 0
        self.LVID = 0
        return
    def GetLength(self):
        return sizeof(tagPlayerChooseHorse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse:
                                Cmd:%s,
                                SubCmd:%s,
                                ChooseType:%d,
                                LVID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ChooseType,
                                self.LVID
                                )
        return DumpString
m_NAtagPlayerChooseHorse=tagPlayerChooseHorse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerChooseHorse.Cmd,m_NAtagPlayerChooseHorse.SubCmd))] = m_NAtagPlayerChooseHorse
#------------------------------------------------------
@@ -7476,54 +5747,6 @@
#------------------------------------------------------
# A5 69 刷新寻宝免费次数 #tagCMRefreshTreasureFreeCnt
class  tagCMRefreshTreasureFreeCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x69
        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 = 0x69
        return
    def GetLength(self):
        return sizeof(tagCMRefreshTreasureFreeCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 69 刷新寻宝免费次数 //tagCMRefreshTreasureFreeCnt:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
#------------------------------------------------------
# A5 37 请求邮件操作 #tagCMRequestMail
class  tagCMRequestMail(Structure):
@@ -7648,227 +5871,6 @@
#------------------------------------------------------
# A5 66 符印分解 #tagCMRuneDecompose
class  tagCMRuneDecompose(Structure):
    Head = tagHead()
    IsAll = 0    #(BYTE IsAll)// 是否全部分解,优先级最高,锁定除外
    QualityCnt = 0    #(BYTE QualityCnt)// 按全部分解品质数
    QualityList = list()    #(vector<BYTE> QualityList)// 全部分解的品质列表,发送的品质会全部分解,锁定除外
    Count = 0    #(BYTE Count)// 指定批量分解数,最大不超过50个
    PlaceIndexList = list()    #(vector<WORD> PlaceIndexList)// 批量分解位置索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x66
        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.QualityCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.QualityCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.QualityList.append(value)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.PlaceIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x66
        self.IsAll = 0
        self.QualityCnt = 0
        self.QualityList = list()
        self.Count = 0
        self.PlaceIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.QualityCnt
        length += 1
        length += 2 * self.Count
        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.QualityCnt)
        for i in range(self.QualityCnt):
            data = CommFunc.WriteBYTE(data, self.QualityList[i])
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsAll:%d,
                                QualityCnt:%d,
                                QualityList:%s,
                                Count:%d,
                                PlaceIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsAll,
                                self.QualityCnt,
                                "...",
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMRuneDecompose=tagCMRuneDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneDecompose.Head.Cmd,m_NAtagCMRuneDecompose.Head.SubCmd))] = m_NAtagCMRuneDecompose
#------------------------------------------------------
# A5 67 符印锁定状态变更 #tagCMRuneLock
class  tagCMRuneLock(Structure):
    Head = tagHead()
    LockState = 0    #(BYTE LockState)// 锁定状态, 0-锁定,1-解锁
    Count = 0    #(BYTE Count)// 批量操作数,最大不超过50个
    PlaceIndexList = list()    #(vector<WORD> PlaceIndexList)// 批量操作位置索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x67
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.LockState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.PlaceIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x67
        self.LockState = 0
        self.Count = 0
        self.PlaceIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 2 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.LockState)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                LockState:%d,
                                Count:%d,
                                PlaceIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.LockState,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMRuneLock=tagCMRuneLock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneLock.Head.Cmd,m_NAtagCMRuneLock.Head.SubCmd))] = m_NAtagCMRuneLock
#------------------------------------------------------
# A5 65 符印升级 #tagCMRuneUp
class  tagCMRuneUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlaceType", c_ubyte),    # 位置类型;0-符印背包,1-符印孔
                  ("PlaceIndex", c_ushort),    # 位置索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x65
        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 = 0x65
        self.PlaceType = 0
        self.PlaceIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMRuneUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 65 符印升级 //tagCMRuneUp:
                                Cmd:%s,
                                SubCmd:%s,
                                PlaceType:%d,
                                PlaceIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlaceType,
                                self.PlaceIndex
                                )
        return DumpString
m_NAtagCMRuneUp=tagCMRuneUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneUp.Cmd,m_NAtagCMRuneUp.SubCmd))] = m_NAtagCMRuneUp
#------------------------------------------------------
# A5 16 选择技能五行专精 #tagCMSelectSkillElement
class  tagCMSelectSkillElement(Structure):
@@ -7973,107 +5975,94 @@
#------------------------------------------------------
# A5 73 解锁命格孔 #tagCMUnLockBirthChartHole
# A5 69 寻宝心愿物品选择 #tagCSTreasureWishSelect
class  tagCMUnLockBirthChartHole(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BirthChartIndex", c_ubyte),    # 孔索引
                  ]
class  tagCSTreasureWishSelect(Structure):
    Head = tagHead()
    TreasureType = 0    #(BYTE TreasureType)//寻宝类型
    WishCnt = 0    #(BYTE WishCnt)
    WishIDList = list()    #(vector<DWORD> WishIDList)// 选择的寻宝物品库中的数据ID,注意不是库ID
    WishCardUseCnt = 0    #(BYTE WishCardUseCnt)
    WishCardUseLibIDList = list()    #(vector<WORD> WishCardUseLibIDList)// 使用心愿卡的库ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x73
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x69
        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.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WishCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WishCnt):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.WishIDList.append(value)
        self.WishCardUseCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WishCardUseCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.WishCardUseLibIDList.append(value)
        return _pos
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x73
        self.BirthChartIndex = 0
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x69
        self.TreasureType = 0
        self.WishCnt = 0
        self.WishIDList = list()
        self.WishCardUseCnt = 0
        self.WishCardUseLibIDList = list()
        return
    def GetLength(self):
        return sizeof(tagCMUnLockBirthChartHole)
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.WishCnt
        length += 1
        length += 2 * self.WishCardUseCnt
        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.TreasureType)
        data = CommFunc.WriteBYTE(data, self.WishCnt)
        for i in range(self.WishCnt):
            data = CommFunc.WriteDWORD(data, self.WishIDList[i])
        data = CommFunc.WriteBYTE(data, self.WishCardUseCnt)
        for i in range(self.WishCardUseCnt):
            data = CommFunc.WriteWORD(data, self.WishCardUseLibIDList[i])
        return data
    def OutputString(self):
        DumpString = '''// A5 73 解锁命格孔 //tagCMUnLockBirthChartHole:
                                Cmd:%s,
                                SubCmd:%s,
                                BirthChartIndex:%d
        DumpString = '''
                                Head:%s,
                                TreasureType:%d,
                                WishCnt:%d,
                                WishIDList:%s,
                                WishCardUseCnt:%d,
                                WishCardUseLibIDList:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BirthChartIndex
                                self.Head.OutputString(),
                                self.TreasureType,
                                self.WishCnt,
                                "...",
                                self.WishCardUseCnt,
                                "..."
                                )
        return DumpString
m_NAtagCMUnLockBirthChartHole=tagCMUnLockBirthChartHole()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnLockBirthChartHole.Cmd,m_NAtagCMUnLockBirthChartHole.SubCmd))] = m_NAtagCMUnLockBirthChartHole
#------------------------------------------------------
# A5 13 解锁符印孔 #tagCMUnlockRuneHole
class  tagCMUnlockRuneHole(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HoleIndex", c_ubyte),    # 孔索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x13
        self.HoleIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMUnlockRuneHole)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 13 解锁符印孔 //tagCMUnlockRuneHole:
                                Cmd:%s,
                                SubCmd:%s,
                                HoleIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HoleIndex
                                )
        return DumpString
m_NAtagCMUnlockRuneHole=tagCMUnlockRuneHole()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnlockRuneHole.Cmd,m_NAtagCMUnlockRuneHole.SubCmd))] = m_NAtagCMUnlockRuneHole
m_NAtagCSTreasureWishSelect=tagCSTreasureWishSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTreasureWishSelect.Head.Cmd,m_NAtagCSTreasureWishSelect.Head.SubCmd))] = m_NAtagCSTreasureWishSelect
#------------------------------------------------------
@@ -8307,66 +6296,6 @@
m_NAtagCMChangeFamilyMemLV=tagCMChangeFamilyMemLV()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeFamilyMemLV.Cmd,m_NAtagCMChangeFamilyMemLV.SubCmd))] = m_NAtagCMChangeFamilyMemLV
#------------------------------------------------------
# A6 15 传功操作 #tagCMChuangongOP
class  tagCMChuangongOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OPType", c_ubyte),    # 操作类型:1-邀请;2-回应;3-领奖;
                  ("PlayerID", c_int),    # 目标玩家ID;回应时为邀请方玩家ID
                  ("OPData", c_ubyte),    # 操作数据,可选:回应时为是否同意
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA6
        self.SubCmd = 0x15
        self.OPType = 0
        self.PlayerID = 0
        self.OPData = 0
        return
    def GetLength(self):
        return sizeof(tagCMChuangongOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 15 传功操作 //tagCMChuangongOP:
                                Cmd:%s,
                                SubCmd:%s,
                                OPType:%d,
                                PlayerID:%d,
                                OPData:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OPType,
                                self.PlayerID,
                                self.OPData
                                )
        return DumpString
m_NAtagCMChuangongOP=tagCMChuangongOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChuangongOP.Cmd,m_NAtagCMChuangongOP.SubCmd))] = m_NAtagCMChuangongOP
#------------------------------------------------------
@@ -8616,20 +6545,20 @@
#------------------------------------------------------
# A6 09  家族仓库捐赠物品 #tagCMFamilyStoreDonate
# A6 13 公会讨伐 #tagCSFamilyTaofaOP
class  tagCMFamilyStoreDonate(Structure):
class  tagCSFamilyTaofaOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ubyte),    # 捐赠物品在背包中的索引
                  ("OpType", c_ubyte),    # 操作:0-斩杀攻击;1-布阵
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        self.SubCmd = 0x09
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -8639,152 +6568,32 @@
    def Clear(self):
        self.Cmd = 0xA6
        self.SubCmd = 0x09
        self.ItemIndex = 0
        self.SubCmd = 0x13
        self.OpType = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyStoreDonate)
        return sizeof(tagCSFamilyTaofaOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 09  家族仓库捐赠物品 //tagCMFamilyStoreDonate:
        DumpString = '''// A6 13 公会讨伐 //tagCSFamilyTaofaOP:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d
                                OpType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemIndex
                                self.OpType
                                )
        return DumpString
m_NAtagCMFamilyStoreDonate=tagCMFamilyStoreDonate()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyStoreDonate.Cmd,m_NAtagCMFamilyStoreDonate.SubCmd))] = m_NAtagCMFamilyStoreDonate
#------------------------------------------------------
# A6 10  家族仓库兑换物品 #tagCMFamilyStoreExchange
class  tagCMFamilyStoreExchange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("StoreItemIndex", c_ubyte),    # 0-兑换口粮;>0-兑换仓库物品,1代表索引0的物品
                  ("ItemID", c_int),    # 兑换的物品ID
                  ("ExcangeCount", c_ushort),    # 兑换个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA6
        self.SubCmd = 0x10
        self.StoreItemIndex = 0
        self.ItemID = 0
        self.ExcangeCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyStoreExchange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 10  家族仓库兑换物品 //tagCMFamilyStoreExchange:
                                Cmd:%s,
                                SubCmd:%s,
                                StoreItemIndex:%d,
                                ItemID:%d,
                                ExcangeCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.StoreItemIndex,
                                self.ItemID,
                                self.ExcangeCount
                                )
        return DumpString
m_NAtagCMFamilyStoreExchange=tagCMFamilyStoreExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyStoreExchange.Cmd,m_NAtagCMFamilyStoreExchange.SubCmd))] = m_NAtagCMFamilyStoreExchange
#------------------------------------------------------
# A6 14 家族阵法升级 #tagCMFamilyZhenfaLVUP
class  tagCMFamilyZhenfaLVUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZhenfaType", c_ubyte),    # 阵法类型
                  ("ItemID", c_int),    # 消耗的物品ID
                  ("ItemCount", c_ushort),    # 消耗个数,默认1
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        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 = 0xA6
        self.SubCmd = 0x14
        self.ZhenfaType = 0
        self.ItemID = 0
        self.ItemCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyZhenfaLVUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 14 家族阵法升级 //tagCMFamilyZhenfaLVUP:
                                Cmd:%s,
                                SubCmd:%s,
                                ZhenfaType:%d,
                                ItemID:%d,
                                ItemCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZhenfaType,
                                self.ItemID,
                                self.ItemCount
                                )
        return DumpString
m_NAtagCMFamilyZhenfaLVUP=tagCMFamilyZhenfaLVUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyZhenfaLVUP.Cmd,m_NAtagCMFamilyZhenfaLVUP.SubCmd))] = m_NAtagCMFamilyZhenfaLVUP
m_NAtagCSFamilyTaofaOP=tagCSFamilyTaofaOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFamilyTaofaOP.Cmd,m_NAtagCSFamilyTaofaOP.SubCmd))] = m_NAtagCSFamilyTaofaOP
#------------------------------------------------------
@@ -9179,6 +6988,62 @@
m_NAtagCMViewFamilyPage=tagCMViewFamilyPage()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewFamilyPage.Head.Cmd,m_NAtagCMViewFamilyPage.Head.SubCmd))] = m_NAtagCMViewFamilyPage
#------------------------------------------------------
# A6 19 查看目标公会 #tagCSViewTagFamily
class  tagCSViewTagFamily(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FamilyID", c_int),
                  ("DataServerID", c_int),    #数据所在服务器ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        self.SubCmd = 0x19
        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 = 0xA6
        self.SubCmd = 0x19
        self.FamilyID = 0
        self.DataServerID = 0
        return
    def GetLength(self):
        return sizeof(tagCSViewTagFamily)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 19 查看目标公会 //tagCSViewTagFamily:
                                Cmd:%s,
                                SubCmd:%s,
                                FamilyID:%d,
                                DataServerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FamilyID,
                                self.DataServerID
                                )
        return DumpString
m_NAtagCSViewTagFamily=tagCSViewTagFamily()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSViewTagFamily.Cmd,m_NAtagCSViewTagFamily.SubCmd))] = m_NAtagCSViewTagFamily
#------------------------------------------------------
@@ -9783,114 +7648,6 @@
#------------------------------------------------------
# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward
class  tagCGGetBossFirstKillAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ("AwardType", c_ubyte),    # 0-首杀红包奖励;1-个人首杀奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        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 = 0xA9
        self.SubCmd = 0x01
        self.NPCID = 0
        self.AwardType = 0
        return
    def GetLength(self):
        return sizeof(tagCGGetBossFirstKillAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d,
                                AwardType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID,
                                self.AwardType
                                )
        return DumpString
m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward
#------------------------------------------------------
# A9 07 点赞仙宫 #tagCGLikeXiangong
class  tagCGLikeXiangong(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID,为0时代表每日的仙宫点赞
                  ]
    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.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGLikeXiangong)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGLikeXiangong=tagCGLikeXiangong()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
#------------------------------------------------------
# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
class  tagCGQueryArenaBattlePlayer(Structure):
@@ -10211,58 +7968,6 @@
#------------------------------------------------------
# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
class  tagCGQueryXiangongRecPlayers(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        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 = 0xA9
        self.SubCmd = 0x06
        self.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGQueryXiangongRecPlayers)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
#------------------------------------------------------
#A9 A6 设置邮件(补偿)已读状态 #tagCGReadCompensation
class  tagCGReadCompensation(Structure):
@@ -10433,151 +8138,77 @@
#------------------------------------------------------
# AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
# AA 02 武将登场招募武将选择 #tagCSActHeroAppearCallHeroSelect
class  tagCMActGodGiftChooseItemInfo(Structure):
    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
    Count = 0    #(BYTE Count)//选择个数
    ItemNumList = list()    #(vector<BYTE> ItemNumList)//选择物品编号列表
    data = None
class  tagCSActHeroAppearCallHeroSelect(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ("CallHeroIndex", c_ubyte),    # 招募选择的武将ID索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ItemNumList.append(value)
        return _pos
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemLibType = 0
        self.Count = 0
        self.ItemNumList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ItemLibType)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteBYTE(data, self.ItemNumList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                ItemLibType:%d,
                                Count:%d,
                                ItemNumList:%s
                                '''\
                                %(
                                self.ItemLibType,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagCMActGodGiftChooseItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    ChooseLibCount = 0    #(BYTE ChooseLibCount)//选择库个数
    ChooseItemList = list()    #(vector<tagCMActGodGiftChooseItemInfo> ChooseItemList)//选择库物品信息列表
    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.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ChooseLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ChooseLibCount):
            temChooseItemList = tagCMActGodGiftChooseItemInfo()
            _pos = temChooseItemList.ReadData(_lpData, _pos)
            self.ChooseItemList.append(temChooseItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        self.Cmd = 0xAA
        self.SubCmd = 0x02
        self.ActNum = 0
        self.ChooseLibCount = 0
        self.ChooseItemList = list()
        self.CallHeroIndex = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.ChooseLibCount):
            length += self.ChooseItemList[i].GetLength()
        return length
        return sizeof(tagCSActHeroAppearCallHeroSelect)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.ChooseLibCount)
        for i in range(self.ChooseLibCount):
            data = CommFunc.WriteString(data, self.ChooseItemList[i].GetLength(), self.ChooseItemList[i].GetBuffer())
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                Head:%s,
        DumpString = '''// AA 02 武将登场招募武将选择 //tagCSActHeroAppearCallHeroSelect:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                ChooseLibCount:%d,
                                ChooseItemList:%s
                                CallHeroIndex:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.ChooseLibCount,
                                "..."
                                self.CallHeroIndex
                                )
        return DumpString
m_NAtagCMActGodGiftChooseItem=tagCMActGodGiftChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftChooseItem.Head.Cmd,m_NAtagCMActGodGiftChooseItem.Head.SubCmd))] = m_NAtagCMActGodGiftChooseItem
m_NAtagCSActHeroAppearCallHeroSelect=tagCSActHeroAppearCallHeroSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearCallHeroSelect.Cmd,m_NAtagCSActHeroAppearCallHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearCallHeroSelect
#------------------------------------------------------
# AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
# AA 01 武将登场升星武将选择 #tagCSActHeroAppearStarHeroSelect
class  tagCMActGodGiftlottery(Structure):
class  tagCSActHeroAppearStarHeroSelect(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("ActNum", c_ubyte),    # 活动编号
                  ("StarHeroIndex", c_ubyte),    # 升星计划选择的武将ID索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x21
        self.SubCmd = 0x01
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -10587,84 +8218,35 @@
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x21
        self.SubCmd = 0x01
        self.ActNum = 0
        self.StarHeroIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGodGiftlottery)
        return sizeof(tagCSActHeroAppearStarHeroSelect)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 21 天帝礼包抽奖 //tagCMActGodGiftlottery:
        DumpString = '''// AA 01 武将登场升星武将选择 //tagCSActHeroAppearStarHeroSelect:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                ActNum:%d,
                                StarHeroIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                self.ActNum,
                                self.StarHeroIndex
                                )
        return DumpString
m_NAtagCMActGodGiftlottery=tagCMActGodGiftlottery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftlottery.Cmd,m_NAtagCMActGodGiftlottery.SubCmd))] = m_NAtagCMActGodGiftlottery
#------------------------------------------------------
# AA 22 天帝礼包重置 #tagCMActGodGiftReset
class  tagCMActGodGiftReset(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ]
    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.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGodGiftReset)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 22 天帝礼包重置 //tagCMActGodGiftReset:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActGodGiftReset=tagCMActGodGiftReset()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset
m_NAtagCSActHeroAppearStarHeroSelect=tagCSActHeroAppearStarHeroSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearStarHeroSelect.Cmd,m_NAtagCSActHeroAppearStarHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearStarHeroSelect
#------------------------------------------------------
@@ -10729,593 +8311,6 @@
m_NAtagCMActLianqiOP=tagCMActLianqiOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActLianqiOP.Cmd,m_NAtagCMActLianqiOP.SubCmd))] = m_NAtagCMActLianqiOP
#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class  tagCMActTurntableChooseItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    GoodItemNumCount = 0    #(BYTE GoodItemNumCount)
    GoodItemNumList = list()    #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
    SuperItemNumCount = 0    #(BYTE SuperItemNumCount)
    SuperItemNumList = list()    #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GoodItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.GoodItemNumList.append(value)
        self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SuperItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.SuperItemNumList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        self.ActNum = 0
        self.GoodItemNumCount = 0
        self.GoodItemNumList = list()
        self.SuperItemNumCount = 0
        self.SuperItemNumList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.GoodItemNumCount
        length += 1
        length += 1 * self.SuperItemNumCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
        for i in range(self.GoodItemNumCount):
            data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
        data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
        for i in range(self.SuperItemNumCount):
            data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                GoodItemNumCount:%d,
                                GoodItemNumList:%s,
                                SuperItemNumCount:%d,
                                SuperItemNumList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.GoodItemNumCount,
                                "...",
                                self.SuperItemNumCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
#------------------------------------------------------
# AA 13 启动转盘 #tagCMActTurntableStart
class  tagCMActTurntableStart(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x13
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActTurntableStart)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActTurntableStart=tagCMActTurntableStart()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
#------------------------------------------------------
# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
class  tagCMActWishingRefresh(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsFree", c_ubyte),    # 是否免费刷新
                  ]
    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.IsFree = 0
        return
    def GetLength(self):
        return sizeof(tagCMActWishingRefresh)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 07 许愿池活动刷新奖池 //tagCMActWishingRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                IsFree:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsFree
                                )
        return DumpString
m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
#------------------------------------------------------
# AA 06 许愿池活动许愿 #tagCMActWishing
class  tagCMActWishing(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SrcWellType", c_ubyte),    # 来源库 0-可选库 1-结果库
                  ("SrcIndex", c_ubyte),    # 来源索引
                  ("DesWellType", c_ubyte),    # 目标库 0-可选库 1-结果库
                  ("DesIndex", c_ubyte),    # 目标索引
                  ]
    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.SrcWellType = 0
        self.SrcIndex = 0
        self.DesWellType = 0
        self.DesIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMActWishing)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 06 许愿池活动许愿 //tagCMActWishing:
                                Cmd:%s,
                                SubCmd:%s,
                                SrcWellType:%d,
                                SrcIndex:%d,
                                DesWellType:%d,
                                DesIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SrcWellType,
                                self.SrcIndex,
                                self.DesWellType,
                                self.DesIndex
                                )
        return DumpString
m_NAtagCMActWishing=tagCMActWishing()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing
#------------------------------------------------------
# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
class  tagCMFeastWishBottleChooseItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BottleNum", c_ubyte),    #瓶子编号
                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x10
        self.BottleNum = 0
        self.RecordIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMFeastWishBottleChooseItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
                                Cmd:%s,
                                SubCmd:%s,
                                BottleNum:%d,
                                RecordIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BottleNum,
                                self.RecordIndex
                                )
        return DumpString
m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
#------------------------------------------------------
# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
class  tagCMFeastWishPoolWish(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WishCount", c_ubyte),    #祝福次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x11
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x11
        self.WishCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMFeastWishPoolWish)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
                                Cmd:%s,
                                SubCmd:%s,
                                WishCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WishCount
                                )
        return DumpString
m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
#------------------------------------------------------
# AA 05 限时抢购预约 #tagCMFlashSaleAppointment
class  tagCMFlashSaleAppointment(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("GoodsID", c_int),    # 抢购商品标识
                  ("State", c_ubyte),    # 1-预约 0-取消
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x05
        self.ActNum = 0
        self.GoodsID = 0
        self.State = 0
        return
    def GetLength(self):
        return sizeof(tagCMFlashSaleAppointment)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                GoodsID:%d,
                                State:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.GoodsID,
                                self.State
                                )
        return DumpString
m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
#------------------------------------------------------
#AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward
class  tagCMGetTotalLoginDayAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Index", c_ubyte),    # 领取礼物
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x01
        self.Index = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetTotalLoginDayAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//AA 01 领取累计登陆礼 // tagCMGetTotalLoginDayAward:
                                Cmd:%s,
                                SubCmd:%s,
                                Index:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Index
                                )
        return DumpString
m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward
#------------------------------------------------------
# AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
class  tagCMStartLuckyTreasure(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagCMStartLuckyTreasure)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
#------------------------------------------------------
# AB 11 开服活动奖励 #tagCMOpenServerCampaignAward
class  tagCMOpenServerCampaignAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CampaignType", c_int),    #活动类型
                  ("AwardType", c_ubyte),    #奖励类型,1-排行,2-目标
                  ("AwardIndex", c_ubyte),    #目标奖励索引,领取目标奖励时用,目标条件在目标奖励列表中索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x11
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAB
        self.SubCmd = 0x11
        self.CampaignType = 0
        self.AwardType = 0
        self.AwardIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMOpenServerCampaignAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 11 开服活动奖励 //tagCMOpenServerCampaignAward:
                                Cmd:%s,
                                SubCmd:%s,
                                CampaignType:%d,
                                AwardType:%d,
                                AwardIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CampaignType,
                                self.AwardType,
                                self.AwardIndex
                                )
        return DumpString
m_NAtagCMOpenServerCampaignAward=tagCMOpenServerCampaignAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMOpenServerCampaignAward.Cmd,m_NAtagCMOpenServerCampaignAward.SubCmd))] = m_NAtagCMOpenServerCampaignAward
#------------------------------------------------------
@@ -11480,115 +8475,6 @@
m_NAtagCMMixCampaignAward=tagCMMixCampaignAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMixCampaignAward.Cmd,m_NAtagCMMixCampaignAward.SubCmd))] = m_NAtagCMMixCampaignAward
#------------------------------------------------------
# B0 13 取消协助Boss #tagCGCancelAssistBoss
class  tagCGCancelAssistBoss(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x13
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x13
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagCGCancelAssistBoss=tagCGCancelAssistBoss()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelAssistBoss.Head.Cmd,m_NAtagCGCancelAssistBoss.Head.SubCmd))] = m_NAtagCGCancelAssistBoss
#------------------------------------------------------
# B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift
class  tagCGGetAssistThanksGift(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsPreview", c_ubyte),    #是否预览,非预览即确认领取,无额外奖励确认时也需要回复领取包代表已读
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x15
        self.IsPreview = 0
        return
    def GetLength(self):
        return sizeof(tagCGGetAssistThanksGift)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 15 接收协助感谢礼物 //tagCGGetAssistThanksGift:
                                Cmd:%s,
                                SubCmd:%s,
                                IsPreview:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsPreview
                                )
        return DumpString
m_NAtagCGGetAssistThanksGift=tagCGGetAssistThanksGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetAssistThanksGift.Cmd,m_NAtagCGGetAssistThanksGift.SubCmd))] = m_NAtagCGGetAssistThanksGift
#------------------------------------------------------
@@ -11812,19 +8698,21 @@
#------------------------------------------------------
#B0 26 请求家族悬赏奖励领取情况 #tagQueryFamilyArrestAwardReceiveState
# B0 40 游历点击 #tagCSTravelClick
class  tagQueryFamilyArrestAwardReceiveState(Structure):
class  tagCSTravelClick(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Row", c_ubyte),    #行,从1开始
                  ("Col", c_ubyte),    #列,从1开始
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x26
        self.SubCmd = 0x40
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -11834,17 +8722,71 @@
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x26
        self.SubCmd = 0x40
        self.Row = 0
        self.Col = 0
        return
    def GetLength(self):
        return sizeof(tagQueryFamilyArrestAwardReceiveState)
        return sizeof(tagCSTravelClick)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B0 26 请求家族悬赏奖励领取情况 //tagQueryFamilyArrestAwardReceiveState:
        DumpString = '''// B0 40 游历点击 //tagCSTravelClick:
                                Cmd:%s,
                                SubCmd:%s,
                                Row:%d,
                                Col:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Row,
                                self.Col
                                )
        return DumpString
m_NAtagCSTravelClick=tagCSTravelClick()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTravelClick.Cmd,m_NAtagCSTravelClick.SubCmd))] = m_NAtagCSTravelClick
#------------------------------------------------------
# B0 41 游历景观升级 #tagCSTravelSceneryUP
class  tagCSTravelSceneryUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x41
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x41
        return
    def GetLength(self):
        return sizeof(tagCSTravelSceneryUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 41 游历景观升级 //tagCSTravelSceneryUP:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
@@ -11855,221 +8797,8 @@
        return DumpString
m_NAtagQueryFamilyArrestAwardReceiveState=tagQueryFamilyArrestAwardReceiveState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestAwardReceiveState.Cmd,m_NAtagQueryFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagQueryFamilyArrestAwardReceiveState
#------------------------------------------------------
#B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState
class  tagQueryFamilyArrestOverState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x25
        return
    def GetLength(self):
        return sizeof(tagQueryFamilyArrestOverState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B0 25 请求家族悬赏任务完成情况 //tagQueryFamilyArrestOverState:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagQueryFamilyArrestOverState=tagQueryFamilyArrestOverState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestOverState.Cmd,m_NAtagQueryFamilyArrestOverState.SubCmd))] = m_NAtagQueryFamilyArrestOverState
#------------------------------------------------------
#B0 24 领取家族悬赏奖励 #tagReceiveFamilyArrestAward
class  tagReceiveFamilyArrestAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ArrestID", c_int),    #悬赏任务ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x24
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x24
        self.ArrestID = 0
        return
    def GetLength(self):
        return sizeof(tagReceiveFamilyArrestAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B0 24 领取家族悬赏奖励 //tagReceiveFamilyArrestAward:
                                Cmd:%s,
                                SubCmd:%s,
                                ArrestID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ArrestID
                                )
        return DumpString
m_NAtagReceiveFamilyArrestAward=tagReceiveFamilyArrestAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagReceiveFamilyArrestAward.Cmd,m_NAtagReceiveFamilyArrestAward.SubCmd))] = m_NAtagReceiveFamilyArrestAward
#------------------------------------------------------
# B0 12 开始协助Boss #tagCGStartAssistBoss
class  tagCGStartAssistBoss(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x12
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagCGStartAssistBoss=tagCGStartAssistBoss()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGStartAssistBoss.Head.Cmd,m_NAtagCGStartAssistBoss.Head.SubCmd))] = m_NAtagCGStartAssistBoss
#------------------------------------------------------
# B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift
class  tagCGUseAssistThanksGift(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),
                  ("IsPreview", c_ubyte),    #是否预览,非预览即确认使用
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x14
        self.ItemID = 0
        self.IsPreview = 0
        return
    def GetLength(self):
        return sizeof(tagCGUseAssistThanksGift)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 14 使用协助感谢礼盒 //tagCGUseAssistThanksGift:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d,
                                IsPreview:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID,
                                self.IsPreview
                                )
        return DumpString
m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift
m_NAtagCSTravelSceneryUP=tagCSTravelSceneryUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTravelSceneryUP.Cmd,m_NAtagCSTravelSceneryUP.SubCmd))] = m_NAtagCSTravelSceneryUP
#------------------------------------------------------
@@ -12145,22 +8874,22 @@
#------------------------------------------------------
# B0 20 请求膜拜玩家 #tagCGWorship
# B1 02 定军阁效果选择 #tagCSDingjungeEffSelect
class  tagCGWorship(Structure):
class  tagCSDingjungeEffSelect(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 目标玩家ID
                  ("WorshipType", c_ubyte),    # 膜拜类型
                  ("WorshipValue", c_int),    # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
                  ("SelectType", c_ubyte),    #0-手动选择,1-放弃本次选择,2-一键选择(仅开启了自动选择时有效)
                  ("SelectIndex", c_ubyte),    #手动选择索引 0~n
                  ("ReplaceHole", c_ubyte),    #手动选择替换槽位 1~n,槽位=槽索引+1,升级时可直接发0
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x20
        self.Cmd = 0xB1
        self.SubCmd = 0x02
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -12169,39 +8898,113 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x20
        self.PlayerID = 0
        self.WorshipType = 0
        self.WorshipValue = 0
        self.Cmd = 0xB1
        self.SubCmd = 0x02
        self.SelectType = 0
        self.SelectIndex = 0
        self.ReplaceHole = 0
        return
    def GetLength(self):
        return sizeof(tagCGWorship)
        return sizeof(tagCSDingjungeEffSelect)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 20 请求膜拜玩家 //tagCGWorship:
        DumpString = '''// B1 02 定军阁效果选择 //tagCSDingjungeEffSelect:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                WorshipType:%d,
                                WorshipValue:%d
                                SelectType:%d,
                                SelectIndex:%d,
                                ReplaceHole:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.WorshipType,
                                self.WorshipValue
                                self.SelectType,
                                self.SelectIndex,
                                self.ReplaceHole
                                )
        return DumpString
m_NAtagCGWorship=tagCGWorship()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGWorship.Cmd,m_NAtagCGWorship.SubCmd))] = m_NAtagCGWorship
m_NAtagCSDingjungeEffSelect=tagCSDingjungeEffSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSDingjungeEffSelect.Cmd,m_NAtagCSDingjungeEffSelect.SubCmd))] = m_NAtagCSDingjungeEffSelect
#------------------------------------------------------
# B1 01 定军阁效果预设 #tagCSDingjungeEffSet
class  tagCSDingjungeEffSet(Structure):
    Head = tagHead()
    SelectAuto = 0    #(BYTE SelectAuto)//是否启用自动选择
    SelectSetCnt = 0    #(BYTE SelectSetCnt)
    SelectSetAttrIDList = list()    #(vector<WORD> SelectSetAttrIDList)//预设优先选择属性ID列表 [优先级1属性ID, ...]
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.SelectAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SelectSetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SelectSetCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.SelectSetAttrIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x01
        self.SelectAuto = 0
        self.SelectSetCnt = 0
        self.SelectSetAttrIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 2 * self.SelectSetCnt
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.SelectAuto)
        data = CommFunc.WriteBYTE(data, self.SelectSetCnt)
        for i in range(self.SelectSetCnt):
            data = CommFunc.WriteWORD(data, self.SelectSetAttrIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                SelectAuto:%d,
                                SelectSetCnt:%d,
                                SelectSetAttrIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.SelectAuto,
                                self.SelectSetCnt,
                                "..."
                                )
        return DumpString
m_NAtagCSDingjungeEffSet=tagCSDingjungeEffSet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSDingjungeEffSet.Head.Cmd,m_NAtagCSDingjungeEffSet.Head.SubCmd))] = m_NAtagCSDingjungeEffSet
#------------------------------------------------------
@@ -12258,73 +9061,6 @@
m_NAtagCMFBQuickPass=tagCMFBQuickPass()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass
#------------------------------------------------------
# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
class  tagCMActivateFuncSysPrivilege(Structure):
    Head = tagHead()
    ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
    ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivateCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ActivateFuncSysIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        self.ActivateCount = 0
        self.ActivateFuncSysIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.ActivateCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActivateCount)
        for i in range(self.ActivateCount):
            data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActivateCount:%d,
                                ActivateFuncSysIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActivateCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
#------------------------------------------------------
@@ -12457,21 +9193,21 @@
#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
# B2 63 战斗预设切换 #tagCSBatPresetSwitch
class  tagCMGetFuncSysPrivilegeAward(Structure):
class  tagCSBatPresetSwitch(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FuncSysID", c_ubyte),    # 功能系统ID
                  ("DayNum", c_ubyte),    # 第X天,1为第1天
                  ("BatPresetType", c_ubyte),    #战斗预设类型:1-主线战斗;2-演武场防守;
                  ("BatPresetID", c_ubyte),    #切换至目标战斗预设ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.SubCmd = 0x63
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -12481,35 +9217,401 @@
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.FuncSysID = 0
        self.DayNum = 0
        self.SubCmd = 0x63
        self.BatPresetType = 0
        self.BatPresetID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetFuncSysPrivilegeAward)
        return sizeof(tagCSBatPresetSwitch)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
        DumpString = '''// B2 63 战斗预设切换 //tagCSBatPresetSwitch:
                                Cmd:%s,
                                SubCmd:%s,
                                FuncSysID:%d,
                                DayNum:%d
                                BatPresetType:%d,
                                BatPresetID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FuncSysID,
                                self.DayNum
                                self.BatPresetType,
                                self.BatPresetID
                                )
        return DumpString
m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
m_NAtagCSBatPresetSwitch=tagCSBatPresetSwitch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSBatPresetSwitch.Cmd,m_NAtagCSBatPresetSwitch.SubCmd))] = m_NAtagCSBatPresetSwitch
#------------------------------------------------------
# B2 19 红颜激活 #tagCSBeautyActivate
class  tagCSBeautyActivate(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BeautyID", c_ushort),    #红颜ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x19
        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 = 0x19
        self.BeautyID = 0
        return
    def GetLength(self):
        return sizeof(tagCSBeautyActivate)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 19 红颜激活 //tagCSBeautyActivate:
                                Cmd:%s,
                                SubCmd:%s,
                                BeautyID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BeautyID
                                )
        return DumpString
m_NAtagCSBeautyActivate=tagCSBeautyActivate()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSBeautyActivate.Cmd,m_NAtagCSBeautyActivate.SubCmd))] = m_NAtagCSBeautyActivate
#------------------------------------------------------
# B2 20 红颜好感度升级 #tagCSBeautyLVUP
class  tagCSBeautyLVUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BeautyID", c_ushort),    #红颜ID
                  ("ItemID", c_int),    #使用物品ID
                  ("IsQuick", c_ubyte),    # 是否快速升级,0-只消耗1个道具;1-消耗升1级的道具
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x20
        self.BeautyID = 0
        self.ItemID = 0
        self.IsQuick = 0
        return
    def GetLength(self):
        return sizeof(tagCSBeautyLVUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 20 红颜好感度升级 //tagCSBeautyLVUP:
                                Cmd:%s,
                                SubCmd:%s,
                                BeautyID:%d,
                                ItemID:%d,
                                IsQuick:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BeautyID,
                                self.ItemID,
                                self.IsQuick
                                )
        return DumpString
m_NAtagCSBeautyLVUP=tagCSBeautyLVUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSBeautyLVUP.Cmd,m_NAtagCSBeautyLVUP.SubCmd))] = m_NAtagCSBeautyLVUP
#------------------------------------------------------
# B2 21 红颜时装操作 #tagCSBeautySkinOP
class  tagCSBeautySkinOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BeautyID", c_ushort),    #红颜ID
                  ("SkinID", c_ushort),    #ʱװID
                  ("OPType", c_ubyte),    #操作 1-激活;2-佩戴;3-升星
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x21
        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 = 0x21
        self.BeautyID = 0
        self.SkinID = 0
        self.OPType = 0
        return
    def GetLength(self):
        return sizeof(tagCSBeautySkinOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 21 红颜时装操作 //tagCSBeautySkinOP:
                                Cmd:%s,
                                SubCmd:%s,
                                BeautyID:%d,
                                SkinID:%d,
                                OPType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BeautyID,
                                self.SkinID,
                                self.OPType
                                )
        return DumpString
m_NAtagCSBeautySkinOP=tagCSBeautySkinOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSBeautySkinOP.Cmd,m_NAtagCSBeautySkinOP.SubCmd))] = m_NAtagCSBeautySkinOP
#------------------------------------------------------
# B2 62 功能预设切换 #tagCSFuncPresetSwitch
class  tagCSFuncPresetSwitch(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BatPresetID", c_ubyte),    #所属战斗预设ID
                  ("FuncPresetType", c_ubyte),    #预设类型,2-阵容;3-命格;
                  ("PresetID", c_ubyte),    #本功能切换至目标预设ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x62
        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 = 0x62
        self.BatPresetID = 0
        self.FuncPresetType = 0
        self.PresetID = 0
        return
    def GetLength(self):
        return sizeof(tagCSFuncPresetSwitch)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 62 功能预设切换 //tagCSFuncPresetSwitch:
                                Cmd:%s,
                                SubCmd:%s,
                                BatPresetID:%d,
                                FuncPresetType:%d,
                                PresetID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BatPresetID,
                                self.FuncPresetType,
                                self.PresetID
                                )
        return DumpString
m_NAtagCSFuncPresetSwitch=tagCSFuncPresetSwitch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetSwitch.Cmd,m_NAtagCSFuncPresetSwitch.SubCmd))] = m_NAtagCSFuncPresetSwitch
#------------------------------------------------------
# B2 60 功能预设解锁 #tagCSFuncPresetUnlock
class  tagCSFuncPresetUnlock(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FuncPresetType", c_ubyte),    #预设类型,1-全局;2-阵容;3-命格;
                  ("PresetID", c_ubyte),    #预设ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x60
        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 = 0x60
        self.FuncPresetType = 0
        self.PresetID = 0
        return
    def GetLength(self):
        return sizeof(tagCSFuncPresetUnlock)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 60 功能预设解锁 //tagCSFuncPresetUnlock:
                                Cmd:%s,
                                SubCmd:%s,
                                FuncPresetType:%d,
                                PresetID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FuncPresetType,
                                self.PresetID
                                )
        return DumpString
m_NAtagCSFuncPresetUnlock=tagCSFuncPresetUnlock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetUnlock.Cmd,m_NAtagCSFuncPresetUnlock.SubCmd))] = m_NAtagCSFuncPresetUnlock
#------------------------------------------------------
# B2 61 功能预设改名 #tagCSFuncPresetUpdName
class  tagCSFuncPresetUpdName(Structure):
    Head = tagHead()
    FuncPresetType = 0    #(BYTE FuncPresetType)//预设类型,1-全局;2-阵容;3-命格;
    PresetID = 0    #(BYTE PresetID)//预设ID
    NameLen = 0    #(BYTE NameLen)
    PresetName = ""    #(String PresetName)//预设名称
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x61
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FuncPresetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PresetName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x61
        self.FuncPresetType = 0
        self.PresetID = 0
        self.NameLen = 0
        self.PresetName = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += len(self.PresetName)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.FuncPresetType)
        data = CommFunc.WriteBYTE(data, self.PresetID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.PresetName)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FuncPresetType:%d,
                                PresetID:%d,
                                NameLen:%d,
                                PresetName:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FuncPresetType,
                                self.PresetID,
                                self.NameLen,
                                self.PresetName
                                )
        return DumpString
m_NAtagCSFuncPresetUpdName=tagCSFuncPresetUpdName()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetUpdName.Head.Cmd,m_NAtagCSFuncPresetUpdName.Head.SubCmd))] = m_NAtagCSFuncPresetUpdName
#------------------------------------------------------
@@ -12952,6 +10054,87 @@
#------------------------------------------------------
# B2 41 武将宿缘 #tagCSHeroFates
class  tagCSHeroFates(Structure):
    Head = tagHead()
    FatesID = 0    #(BYTE FatesID)// 宿缘ID
    OPType = 0    #(BYTE OPType)// 0-激活领奖;1-升级
    IndexCnt = 0    #(BYTE IndexCnt)
    ItemIndexList = list()    #(vector<WORD> ItemIndexList)// 升级时消耗的材料卡在武将背包索引列表,升级时才发
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x41
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FatesID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.OPType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.IndexCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.ItemIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x41
        self.FatesID = 0
        self.OPType = 0
        self.IndexCnt = 0
        self.ItemIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 2 * self.IndexCnt
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.FatesID)
        data = CommFunc.WriteBYTE(data, self.OPType)
        data = CommFunc.WriteBYTE(data, self.IndexCnt)
        for i in range(self.IndexCnt):
            data = CommFunc.WriteWORD(data, self.ItemIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FatesID:%d,
                                OPType:%d,
                                IndexCnt:%d,
                                ItemIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FatesID,
                                self.OPType,
                                self.IndexCnt,
                                "..."
                                )
        return DumpString
m_NAtagCSHeroFates=tagCSHeroFates()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroFates.Head.Cmd,m_NAtagCSHeroFates.Head.SubCmd))] = m_NAtagCSHeroFates
#------------------------------------------------------
# B2 38 武将锁定 #tagCSHeroLock
class  tagCSHeroLock(Structure):
@@ -13068,6 +10251,9 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
                  ("LVReset", c_ubyte),    #重置等级
                  ("BreakReset", c_ubyte),    #重置突破
                  ("AwakeReset", c_ubyte),    #重置觉醒
                  ]
    def __init__(self):
@@ -13085,6 +10271,9 @@
        self.Cmd = 0xB2
        self.SubCmd = 0x39
        self.ItemIndex = 0
        self.LVReset = 0
        self.BreakReset = 0
        self.AwakeReset = 0
        return
    def GetLength(self):
@@ -13097,18 +10286,88 @@
        DumpString = '''// B2 39 武将重生 //tagCSHeroRebirth:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d
                                ItemIndex:%d,
                                LVReset:%d,
                                BreakReset:%d,
                                AwakeReset:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemIndex
                                self.ItemIndex,
                                self.LVReset,
                                self.BreakReset,
                                self.AwakeReset
                                )
        return DumpString
m_NAtagCSHeroRebirth=tagCSHeroRebirth()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroRebirth.Cmd,m_NAtagCSHeroRebirth.SubCmd))] = m_NAtagCSHeroRebirth
#------------------------------------------------------
# B2 36 武将皮肤操作 #tagCSHeroSkinOP
class  tagCSHeroSkinOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HeroID", c_int),    #武将ID
                  ("SkinID", c_int),    #ʱװID
                  ("OPType", c_ubyte),    #操作 1-激活;2-选择形象;3-升星;4-选择属性
                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引,仅佩戴时有效
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x36
        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 = 0x36
        self.HeroID = 0
        self.SkinID = 0
        self.OPType = 0
        self.ItemIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCSHeroSkinOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 36 武将皮肤操作 //tagCSHeroSkinOP:
                                Cmd:%s,
                                SubCmd:%s,
                                HeroID:%d,
                                SkinID:%d,
                                OPType:%d,
                                ItemIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HeroID,
                                self.SkinID,
                                self.OPType,
                                self.ItemIndex
                                )
        return DumpString
m_NAtagCSHeroSkinOP=tagCSHeroSkinOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroSkinOP.Cmd,m_NAtagCSHeroSkinOP.SubCmd))] = m_NAtagCSHeroSkinOP
#------------------------------------------------------
@@ -13249,62 +10508,6 @@
#------------------------------------------------------
# B2 36 武将换肤 #tagCSHeroWearSkin
class  tagCSHeroWearSkin(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
                  ("SkinIndex", c_ubyte),    #皮肤索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x36
        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 = 0x36
        self.ItemIndex = 0
        self.SkinIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCSHeroWearSkin)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 36 武将换肤 //tagCSHeroWearSkin:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d,
                                SkinIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemIndex,
                                self.SkinIndex
                                )
        return DumpString
m_NAtagCSHeroWearSkin=tagCSHeroWearSkin()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroWearSkin.Cmd,m_NAtagCSHeroWearSkin.SubCmd))] = m_NAtagCSHeroWearSkin
#------------------------------------------------------
# B2 25 幻境阁操作 #tagCSHJGOP
class  tagCSHJGOP(Structure):
@@ -13365,6 +10568,445 @@
#------------------------------------------------------
# B2 02 坐骑进阶 #tagCSHorseClassUP
class  tagCSHorseClassUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x02
        return
    def GetLength(self):
        return sizeof(tagCSHorseClassUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 02 坐骑进阶 //tagCSHorseClassUP:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCSHorseClassUP=tagCSHorseClassUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHorseClassUP.Cmd,m_NAtagCSHorseClassUP.SubCmd))] = m_NAtagCSHorseClassUP
#------------------------------------------------------
# B2 03 坐骑外观操作 #tagCSHorseSkinOP
class  tagCSHorseSkinOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OPType", c_ubyte),    # 操作 1-激活;2-佩戴;3-升星
                  ("SkinID", c_ushort),    # 外观ID,佩戴时发0即为卸下
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x03
        self.OPType = 0
        self.SkinID = 0
        return
    def GetLength(self):
        return sizeof(tagCSHorseSkinOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 03 坐骑外观操作 //tagCSHorseSkinOP:
                                Cmd:%s,
                                SubCmd:%s,
                                OPType:%d,
                                SkinID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OPType,
                                self.SkinID
                                )
        return DumpString
m_NAtagCSHorseSkinOP=tagCSHorseSkinOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHorseSkinOP.Cmd,m_NAtagCSHorseSkinOP.SubCmd))] = m_NAtagCSHorseSkinOP
#------------------------------------------------------
# B2 01 坐骑升级 #tagCSHorseLVUP
class  tagCSHorseLVUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsQuick", c_ubyte),    # 是否快速升级,0-只消耗1个道具;1-消耗升1级的道具
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x01
        self.IsQuick = 0
        return
    def GetLength(self):
        return sizeof(tagCSHorseLVUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 01 坐骑升级 //tagCSHorseLVUP:
                                Cmd:%s,
                                SubCmd:%s,
                                IsQuick:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsQuick
                                )
        return DumpString
m_NAtagCSHorseLVUP=tagCSHorseLVUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHorseLVUP.Cmd,m_NAtagCSHorseLVUP.SubCmd))] = m_NAtagCSHorseLVUP
#------------------------------------------------------
# B2 51 命格分解 #tagCSMinggeDecompose
class  tagCSMinggeDecompose(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    IndexList = list()    #(vector<BYTE> IndexList)// 推演背包中的物品格子索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x51
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.IndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x51
        self.Count = 0
        self.IndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteBYTE(data, self.IndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                IndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCSMinggeDecompose=tagCSMinggeDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSMinggeDecompose.Head.Cmd,m_NAtagCSMinggeDecompose.Head.SubCmd))] = m_NAtagCSMinggeDecompose
#------------------------------------------------------
# B2 52 命格装备替换 #tagCSMinggeEquip
class  tagCSMinggeEquip(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MGNum", c_ubyte),    # 装到哪一套命格,目前支持3套,从1开始
                  ("Index", c_ubyte),    # 推演背包中的物品格子索引
                  ("AutoDec", c_ubyte),    # 是否自动分解
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x52
        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 = 0x52
        self.MGNum = 0
        self.Index = 0
        self.AutoDec = 0
        return
    def GetLength(self):
        return sizeof(tagCSMinggeEquip)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 52 命格装备替换 //tagCSMinggeEquip:
                                Cmd:%s,
                                SubCmd:%s,
                                MGNum:%d,
                                Index:%d,
                                AutoDec:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MGNum,
                                self.Index,
                                self.AutoDec
                                )
        return DumpString
m_NAtagCSMinggeEquip=tagCSMinggeEquip()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSMinggeEquip.Cmd,m_NAtagCSMinggeEquip.SubCmd))] = m_NAtagCSMinggeEquip
#------------------------------------------------------
# B2 53 命格祈灵#tagCSMinggeQiling
class  tagCSMinggeQiling(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseCount", c_int),    #使用个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x53
        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 = 0x53
        self.UseCount = 0
        return
    def GetLength(self):
        return sizeof(tagCSMinggeQiling)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 53 命格祈灵//tagCSMinggeQiling:
                                Cmd:%s,
                                SubCmd:%s,
                                UseCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseCount
                                )
        return DumpString
m_NAtagCSMinggeQiling=tagCSMinggeQiling()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSMinggeQiling.Cmd,m_NAtagCSMinggeQiling.SubCmd))] = m_NAtagCSMinggeQiling
#------------------------------------------------------
# B2 50 命格推演 #tagCSMinggeTuiyan
class  tagCSMinggeTuiyan(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Count", c_ubyte),    #推演个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x50
        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 = 0x50
        self.Count = 0
        return
    def GetLength(self):
        return sizeof(tagCSMinggeTuiyan)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 50 命格推演 //tagCSMinggeTuiyan:
                                Cmd:%s,
                                SubCmd:%s,
                                Count:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Count
                                )
        return DumpString
m_NAtagCSMinggeTuiyan=tagCSMinggeTuiyan()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSMinggeTuiyan.Cmd,m_NAtagCSMinggeTuiyan.SubCmd))] = m_NAtagCSMinggeTuiyan
#------------------------------------------------------
# B2 10 群英榜匹配玩家 #tagCSQunyingMatch
class  tagCSQunyingMatch(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsRefresh", c_ubyte),    # 0-打开界面无匹配数据时查询,1-强制刷新匹配列表
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x10
        self.IsRefresh = 0
        return
    def GetLength(self):
        return sizeof(tagCSQunyingMatch)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 10 群英榜匹配玩家 //tagCSQunyingMatch:
                                Cmd:%s,
                                SubCmd:%s,
                                IsRefresh:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsRefresh
                                )
        return DumpString
m_NAtagCSQunyingMatch=tagCSQunyingMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSQunyingMatch.Cmd,m_NAtagCSQunyingMatch.SubCmd))] = m_NAtagCSQunyingMatch
#------------------------------------------------------
# B2 07 重置加点 #tagCMResetAttrPoint
class  tagCMResetAttrPoint(Structure):
@@ -13410,125 +11052,6 @@
m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
#------------------------------------------------------
# B2 19 神通升级 #tagCMShentongLVUp
class  tagCMShentongLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ShentongID", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x19
        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 = 0x19
        self.ShentongID = 0
        return
    def GetLength(self):
        return sizeof(tagCMShentongLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                ShentongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ShentongID
                                )
        return DumpString
m_NAtagCMShentongLVUp=tagCMShentongLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
#------------------------------------------------------
# B2 20 神通技能设置 #tagCMShentongSkillSet
class  tagCMShentongSkillSet(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SkillIDList = list()    #(vector<DWORD> SkillIDList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkillIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x20
        self.Count = 0
        self.SkillIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SkillIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
#------------------------------------------------------
@@ -13637,606 +11160,6 @@
m_NAtagCMUseTreeLVUPTimeItem=tagCMUseTreeLVUPTimeItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseTreeLVUPTimeItem.Cmd,m_NAtagCMUseTreeLVUPTimeItem.SubCmd))] = m_NAtagCMUseTreeLVUPTimeItem
#------------------------------------------------------
# B3 19 提升魅力等级 #tagCGCharmLVUp
class  tagCGCharmLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x19
        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 = 0xB3
        self.SubCmd = 0x19
        return
    def GetLength(self):
        return sizeof(tagCGCharmLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCGCharmLVUp=tagCGCharmLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
#------------------------------------------------------
# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
class  tagCGCharmOfferBillboardQuery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 魅力玩家ID
                  ("QueryType", c_ubyte),    # 查看类型: 1-总榜,2-周榜,3-日榜
                  ("QueryCount", c_ubyte),    # 查看名次数量,最大255
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x09
        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 = 0xB3
        self.SubCmd = 0x09
        self.PlayerID = 0
        self.QueryType = 0
        self.QueryCount = 0
        return
    def GetLength(self):
        return sizeof(tagCGCharmOfferBillboardQuery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                QueryType:%d,
                                QueryCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.QueryType,
                                self.QueryCount
                                )
        return DumpString
m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
#------------------------------------------------------
# B3 17 情戒解锁 #tagCMLoveRingUnlock
class  tagCMLoveRingUnlock(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x17
        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 = 0xB3
        self.SubCmd = 0x17
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUnlock)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
#------------------------------------------------------
# B3 18 情戒升级 #tagCMLoveRingUp
class  tagCMLoveRingUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x18
        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 = 0xB3
        self.SubCmd = 0x18
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMLoveRingUp=tagCMLoveRingUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
#------------------------------------------------------
# B3 15 离婚 #tagCMMarryBreak
class  tagCMMarryBreak(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BreakType", c_ubyte),    # 0-和平离婚;1-强制离婚
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x15
        self.BreakType = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBreak)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
                                Cmd:%s,
                                SubCmd:%s,
                                BreakType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BreakType
                                )
        return DumpString
m_NAtagCMMarryBreak=tagCMMarryBreak()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
#------------------------------------------------------
# B3 16 和平离婚回应 #tagGCMarryBreakResponse
class  tagGCMarryBreakResponse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x16
        self.IsOK = 0
        return
    def GetLength(self):
        return sizeof(tagGCMarryBreakResponse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
                                Cmd:%s,
                                SubCmd:%s,
                                IsOK:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsOK
                                )
        return DumpString
m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
#------------------------------------------------------
# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
class  tagCMMarryBuyFireworks(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x14
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBuyFireworks)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
#------------------------------------------------------
# B3 13 吃喜糖 #tagCMMarryEatCandy
class  tagCMMarryEatCandy(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x13
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryEatCandy)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
#------------------------------------------------------
# B3 11 提亲 #tagCMMarryReq
class  tagCMMarryReq(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("BridePriceID", c_ubyte),    # 聘礼ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x11
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x11
        self.TagPlayerID = 0
        self.BridePriceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryReq)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 11 提亲 //tagCMMarryReq:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                BridePriceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.BridePriceID
                                )
        return DumpString
m_NAtagCMMarryReq=tagCMMarryReq()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
#------------------------------------------------------
# B3 12 提亲回应 #tagCGMarryResponse
class  tagCGMarryResponse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ReqPlayerID", c_int),    # 提亲的玩家ID
                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x12
        self.ReqPlayerID = 0
        self.IsOK = 0
        return
    def GetLength(self):
        return sizeof(tagCGMarryResponse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
                                Cmd:%s,
                                SubCmd:%s,
                                ReqPlayerID:%d,
                                IsOK:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ReqPlayerID,
                                self.IsOK
                                )
        return DumpString
m_NAtagCGMarryResponse=tagCGMarryResponse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
#------------------------------------------------------
# B3 10 送礼物 #tagCMSendGifts
class  tagCMSendGifts(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("GiftNum", c_ushort),    # 赠送礼物编号
                  ("GiftCount", c_int),    # 赠送礼物数量
                  ("IsAutoBuy", c_ubyte),    # 是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x10
        self.TagPlayerID = 0
        self.GiftNum = 0
        self.GiftCount = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMSendGifts)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                GiftNum:%d,
                                GiftCount:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.GiftNum,
                                self.GiftCount,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMSendGifts=tagCMSendGifts()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
#------------------------------------------------------
@@ -14568,9 +11491,9 @@
#------------------------------------------------------
# B3 20 聊天 #tagCMTalk
# B3 20 聊天 #tagCSTalk
class  tagCMPyTalk(Structure):
class  tagCSTalk(Structure):
    Head = tagHead()
    ChannelType = 0    #(BYTE ChannelType)// 频道
    Len = 0    #(WORD Len)
@@ -14634,11 +11557,14 @@
        return DumpString
m_NAtagCSTalk=tagCSTalk()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTalk.Head.Cmd,m_NAtagCSTalk.Head.SubCmd))] = m_NAtagCSTalk
#------------------------------------------------------
# B4 12 战斗阵容保存 #tagCSHeroLineupSave
# B4 12 战斗阵容预设保存 #tagCSHeroPresetSave
class  tagCSHeroLineupPos(Structure):
class  tagCSHeroPresetPos(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
@@ -14660,13 +11586,13 @@
        return
    def GetLength(self):
        return sizeof(tagCSHeroLineupPos)
        return sizeof(tagCSHeroPresetPos)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 12 战斗阵容保存 //tagCSHeroLineupSave:
        DumpString = '''// B4 12 战斗阵容预设保存 //tagCSHeroPresetSave:
                                ItemIndex:%d,
                                PosNum:%d
                                '''\
@@ -14677,12 +11603,11 @@
        return DumpString
class  tagCSHeroLineupSave(Structure):
class  tagCSHeroPresetSave(Structure):
    Head = tagHead()
    LineupID = 0    #(BYTE LineupID)//阵容ID:1-主阵容;其他待扩展,如某个防守阵容
    ShapeType = 0    #(BYTE ShapeType)//本阵容阵型,0为默认阵型,可扩展不同的阵型
    PresetID = 0    #(BYTE PresetID)//阵容方案预设ID
    PosCnt = 0    #(BYTE PosCnt)
    HeroPosList = list()    #(vector<tagCSHeroLineupPos> HeroPosList)// 保存的阵容,只发送最终的阵容武将位置即可
    HeroPosList = list()    #(vector<tagCSHeroPresetPos> HeroPosList)// 保存的阵容,只发送最终的阵容武将位置即可
    data = None
    def __init__(self):
@@ -14694,11 +11619,10 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.LineupID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ShapeType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PosCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PosCnt):
            temHeroPosList = tagCSHeroLineupPos()
            temHeroPosList = tagCSHeroPresetPos()
            _pos = temHeroPosList.ReadData(_lpData, _pos)
            self.HeroPosList.append(temHeroPosList)
        return _pos
@@ -14708,8 +11632,7 @@
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x12
        self.LineupID = 0
        self.ShapeType = 0
        self.PresetID = 0
        self.PosCnt = 0
        self.HeroPosList = list()
        return
@@ -14717,7 +11640,6 @@
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        for i in range(self.PosCnt):
@@ -14728,8 +11650,7 @@
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.LineupID)
        data = CommFunc.WriteBYTE(data, self.ShapeType)
        data = CommFunc.WriteBYTE(data, self.PresetID)
        data = CommFunc.WriteBYTE(data, self.PosCnt)
        for i in range(self.PosCnt):
            data = CommFunc.WriteString(data, self.HeroPosList[i].GetLength(), self.HeroPosList[i].GetBuffer())
@@ -14738,23 +11659,21 @@
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                LineupID:%d,
                                ShapeType:%d,
                                PresetID:%d,
                                PosCnt:%d,
                                HeroPosList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.LineupID,
                                self.ShapeType,
                                self.PresetID,
                                self.PosCnt,
                                "..."
                                )
        return DumpString
m_NAtagCSHeroLineupSave=tagCSHeroLineupSave()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroLineupSave.Head.Cmd,m_NAtagCSHeroLineupSave.Head.SubCmd))] = m_NAtagCSHeroLineupSave
m_NAtagCSHeroPresetSave=tagCSHeroPresetSave()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroPresetSave.Head.Cmd,m_NAtagCSHeroPresetSave.Head.SubCmd))] = m_NAtagCSHeroPresetSave
#------------------------------------------------------
@@ -15684,62 +12603,6 @@
#------------------------------------------------------
# B4 0D 战斗印记 #tagCMYinji
class  tagCMYinji(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Count", c_ubyte),
                  ("Type", c_ubyte),    # 0 加,1减
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        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 = 0xB4
        self.SubCmd = 0x0D
        self.Count = 0
        self.Type = 0
        return
    def GetLength(self):
        return sizeof(tagCMYinji)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
                                Cmd:%s,
                                SubCmd:%s,
                                Count:%d,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Count,
                                self.Type
                                )
        return DumpString
m_NAtagCMYinji=tagCMYinji()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
#------------------------------------------------------
#B4 03 吸引NPC仇恨 #tagNPCAttention
class  tagNPCAttention(Structure):
@@ -15956,6 +12819,66 @@
m_NAtagCSTurnFightReportView=tagCSTurnFightReportView()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTurnFightReportView.Head.Cmd,m_NAtagCSTurnFightReportView.Head.SubCmd))] = m_NAtagCSTurnFightReportView
#------------------------------------------------------
# B4 16 查看NPC属性 #tagCSViewNPCAttr
class  tagCSViewNPCAttr(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),    # 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
                  ("FuncLineID", c_int),    # MapID对应的扩展值,如具体某个关卡等
                  ("ViewNPCID", c_int),    # 指定查看某个NPCID,发0则查看该关卡阵容所有NPC
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        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 = 0xB4
        self.SubCmd = 0x16
        self.MapID = 0
        self.FuncLineID = 0
        self.ViewNPCID = 0
        return
    def GetLength(self):
        return sizeof(tagCSViewNPCAttr)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 16 查看NPC属性 //tagCSViewNPCAttr:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d,
                                ViewNPCID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID,
                                self.ViewNPCID
                                )
        return DumpString
m_NAtagCSViewNPCAttr=tagCSViewNPCAttr()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSViewNPCAttr.Cmd,m_NAtagCSViewNPCAttr.SubCmd))] = m_NAtagCSViewNPCAttr
#------------------------------------------------------
@@ -17684,106 +14607,6 @@
#------------------------------------------------------
# C0 06 查询幸运云购开奖记录 #tagCGQueryLuckyCloudBuyLotteryRec
class  tagCGQueryLuckyCloudBuyLotteryRec(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    #查询分区ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        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 = 0xC0
        self.SubCmd = 0x06
        self.ZoneID = 0
        return
    def GetLength(self):
        return sizeof(tagCGQueryLuckyCloudBuyLotteryRec)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C0 06 查询幸运云购开奖记录 //tagCGQueryLuckyCloudBuyLotteryRec:
                                Cmd:%s,
                                SubCmd:%s,
                                ZoneID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZoneID
                                )
        return DumpString
m_NAtagCGQueryLuckyCloudBuyLotteryRec=tagCGQueryLuckyCloudBuyLotteryRec()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyLotteryRec.Cmd,m_NAtagCGQueryLuckyCloudBuyLotteryRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyLotteryRec
#------------------------------------------------------
# C0 05 查询幸运云购购买号码记录 #tagCGQueryLuckyCloudBuyNumRec
class  tagCGQueryLuckyCloudBuyNumRec(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        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 = 0xC0
        self.SubCmd = 0x05
        return
    def GetLength(self):
        return sizeof(tagCGQueryLuckyCloudBuyNumRec)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C0 05 查询幸运云购购买号码记录 //tagCGQueryLuckyCloudBuyNumRec:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCGQueryLuckyCloudBuyNumRec=tagCGQueryLuckyCloudBuyNumRec()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyNumRec.Cmd,m_NAtagCGQueryLuckyCloudBuyNumRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyNumRec
#------------------------------------------------------
# C0 04 查看跨服排行榜 #tagCGViewCrossBillboard
class  tagCGViewCrossBillboard(Structure):
@@ -18831,56 +15654,4 @@
m_NAtagCMFamilyGCZSQ=tagCMFamilyGCZSQ()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ
#------------------------------------------------------
# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
class  tagCMLuckyCloudBuy(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BuyCount", c_ushort),    # 购买份数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xC1
        self.SubCmd = 0x10
        self.BuyCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMLuckyCloudBuy)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy:
                                Cmd:%s,
                                SubCmd:%s,
                                BuyCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BuyCount
                                )
        return DumpString
m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ