hxp
2 天以前 db168633a2853111b43c413779a5535228dfe61c
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -677,6 +677,77 @@
#------------------------------------------------------
# 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
#------------------------------------------------------
#A1 03 设置是否成年 #tagCMAdult
class  tagCMAdult(Structure):
@@ -2165,7 +2236,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 +2254,7 @@
        self.Cmd = 0xA2
        self.SubCmd = 0x12
        self.PlayerID = 0
        self.EquipClassLV = 0
        self.ServerID = 0
        return
    def GetLength(self):
@@ -2197,13 +2268,13 @@
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                EquipClassLV:%d
                                ServerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.EquipClassLV
                                self.ServerID
                                )
        return DumpString
@@ -4769,227 +4840,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):
@@ -5150,54 +5000,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):
@@ -5252,90 +5054,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
#------------------------------------------------------
@@ -6176,58 +5894,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):
@@ -6337,114 +6003,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
#------------------------------------------------------
@@ -6834,54 +6392,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):
@@ -7006,227 +6516,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):
@@ -7331,107 +6620,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
#------------------------------------------------------
@@ -8360,6 +7636,62 @@
#------------------------------------------------------
# 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
#------------------------------------------------------
# A6 16 珍宝阁操作 #tagCMZhenbaogeOP
class  tagCMZhenbaogeOP(Structure):
@@ -8958,62 +8290,6 @@
m_NAtagCGFuzzySearchPlayer=tagCGFuzzySearchPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFuzzySearchPlayer.Head.Cmd,m_NAtagCGFuzzySearchPlayer.Head.SubCmd))] = m_NAtagCGFuzzySearchPlayer
#------------------------------------------------------
# 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
#------------------------------------------------------
@@ -10601,115 +9877,6 @@
#------------------------------------------------------
# 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
#------------------------------------------------------
# B0 39 自动淘金免费使用 #tagCSGoldRushAutoFreeUse
class  tagCSGoldRushAutoFreeUse(Structure):
@@ -10930,19 +10097,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):
@@ -10952,17 +10121,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
                                '''\
@@ -10973,221 +10196,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
#------------------------------------------------------
@@ -11263,22 +10273,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):
@@ -11287,39 +10297,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
#------------------------------------------------------
@@ -11572,6 +10656,428 @@
m_NAtagCSArenaMatch=tagCSArenaMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSArenaMatch.Cmd,m_NAtagCSArenaMatch.SubCmd))] = m_NAtagCSArenaMatch
#------------------------------------------------------
# B2 63 战斗预设切换 #tagCSBatPresetSwitch
class  tagCSBatPresetSwitch(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BatPresetType", c_ubyte),    #战斗预设类型:1-主线战斗;2-演武场防守;
                  ("BatPresetID", c_ubyte),    #切换至目标战斗预设ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x63
        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 = 0x63
        self.BatPresetType = 0
        self.BatPresetID = 0
        return
    def GetLength(self):
        return sizeof(tagCSBatPresetSwitch)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 63 战斗预设切换 //tagCSBatPresetSwitch:
                                Cmd:%s,
                                SubCmd:%s,
                                BatPresetType:%d,
                                BatPresetID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BatPresetType,
                                self.BatPresetID
                                )
        return DumpString
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
#------------------------------------------------------
@@ -12070,6 +11576,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):
@@ -12186,6 +11773,9 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ushort),    #武将物品所在武将背包位置索引
                  ("LVReset", c_ubyte),    #重置等级
                  ("BreakReset", c_ubyte),    #重置突破
                  ("AwakeReset", c_ubyte),    #重置觉醒
                  ]
    def __init__(self):
@@ -12203,6 +11793,9 @@
        self.Cmd = 0xB2
        self.SubCmd = 0x39
        self.ItemIndex = 0
        self.LVReset = 0
        self.BreakReset = 0
        self.AwakeReset = 0
        return
    def GetLength(self):
@@ -12215,12 +11808,18 @@
        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
@@ -12636,6 +12235,237 @@
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
#------------------------------------------------------
@@ -13723,9 +13553,9 @@
#------------------------------------------------------
# B3 20 聊天 #tagCMTalk
# B3 20 聊天 #tagCSTalk
class  tagCMPyTalk(Structure):
class  tagCSTalk(Structure):
    Head = tagHead()
    ChannelType = 0    #(BYTE ChannelType)// 频道
    Len = 0    #(WORD Len)
@@ -13789,11 +13619,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),    #武将物品所在武将背包位置索引
@@ -13815,13 +13648,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
                                '''\
@@ -13832,12 +13665,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):
@@ -13849,11 +13681,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
@@ -13863,8 +13694,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
@@ -13872,7 +13702,6 @@
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        for i in range(self.PosCnt):
@@ -13883,8 +13712,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())
@@ -13893,23 +13721,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
#------------------------------------------------------
@@ -15111,6 +14937,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
#------------------------------------------------------
@@ -16839,106 +16725,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):
@@ -17986,56 +17772,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