hxp
2023-09-27 e6062b42c1191e9ab95e000a38276634eff0e1f1
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -4723,6 +4723,118 @@
#------------------------------------------------------
# A1 21 תְҵ #tagCMChangeJob
class  tagCMChangeJob(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagJob", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x21
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x21
        self.TagJob = 0
        return
    def GetLength(self):
        return sizeof(tagCMChangeJob)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 21 תְҵ //tagCMChangeJob:
                                Cmd:%s,
                                SubCmd:%s,
                                TagJob:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagJob
                                )
        return DumpString
m_NAtagCMChangeJob=tagCMChangeJob()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
#------------------------------------------------------
# A1 20 货币兑换 #tagCMMoneyExchange
class  tagCMMoneyExchange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SrcMoneyType", c_ubyte),    # 源货币类型
                  ("TagMoneyType", c_ubyte),    # 目标货币类型
                  ("ExchangeValue", c_int),    # 兑换数量(消耗源货币的数量)
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        self.SrcMoneyType = 0
        self.TagMoneyType = 0
        self.ExchangeValue = 0
        return
    def GetLength(self):
        return sizeof(tagCMMoneyExchange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
                                Cmd:%s,
                                SubCmd:%s,
                                SrcMoneyType:%d,
                                TagMoneyType:%d,
                                ExchangeValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SrcMoneyType,
                                self.TagMoneyType,
                                self.ExchangeValue
                                )
        return DumpString
m_NAtagCMMoneyExchange=tagCMMoneyExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
#------------------------------------------------------
# A1 01 玩家电脑信息 #tagCMPCInfo
class  tagCMPCInfo(Structure):
@@ -9922,6 +10034,54 @@
#------------------------------------------------------
# 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):
@@ -10956,6 +11116,58 @@
#------------------------------------------------------
# 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):
@@ -11391,6 +11603,114 @@
m_NAtagMCGetSuccessAward=tagMCGetSuccessAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGetSuccessAward.Cmd,m_NAtagMCGetSuccessAward.SubCmd))] = m_NAtagMCGetSuccessAward
#------------------------------------------------------
# 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
#------------------------------------------------------
@@ -14651,6 +14971,241 @@
#------------------------------------------------------
# AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
class  tagCMActGodGiftChooseItemInfo(Structure):
    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
    Count = 0    #(BYTE Count)//选择个数
    ItemNumList = list()    #(vector<BYTE> ItemNumList)//选择物品编号列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ItemNumList.append(value)
        return _pos
    def Clear(self):
        self.ItemLibType = 0
        self.Count = 0
        self.ItemNumList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ItemLibType)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteBYTE(data, self.ItemNumList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                ItemLibType:%d,
                                Count:%d,
                                ItemNumList:%s
                                '''\
                                %(
                                self.ItemLibType,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagCMActGodGiftChooseItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    ChooseLibCount = 0    #(BYTE ChooseLibCount)//选择库个数
    ChooseItemList = list()    #(vector<tagCMActGodGiftChooseItemInfo> ChooseItemList)//选择库物品信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ChooseLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ChooseLibCount):
            temChooseItemList = tagCMActGodGiftChooseItemInfo()
            _pos = temChooseItemList.ReadData(_lpData, _pos)
            self.ChooseItemList.append(temChooseItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        self.ActNum = 0
        self.ChooseLibCount = 0
        self.ChooseItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.ChooseLibCount):
            length += self.ChooseItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.ChooseLibCount)
        for i in range(self.ChooseLibCount):
            data = CommFunc.WriteString(data, self.ChooseItemList[i].GetLength(), self.ChooseItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                ChooseLibCount:%d,
                                ChooseItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.ChooseLibCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActGodGiftChooseItem=tagCMActGodGiftChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftChooseItem.Head.Cmd,m_NAtagCMActGodGiftChooseItem.Head.SubCmd))] = m_NAtagCMActGodGiftChooseItem
#------------------------------------------------------
# AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
class  tagCMActGodGiftlottery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x21
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGodGiftlottery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 21 天帝礼包抽奖 //tagCMActGodGiftlottery:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActGodGiftlottery=tagCMActGodGiftlottery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftlottery.Cmd,m_NAtagCMActGodGiftlottery.SubCmd))] = m_NAtagCMActGodGiftlottery
#------------------------------------------------------
# AA 22 天帝礼包重置 #tagCMActGodGiftReset
class  tagCMActGodGiftReset(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x22
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x22
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGodGiftReset)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 22 天帝礼包重置 //tagCMActGodGiftReset:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActGodGiftReset=tagCMActGodGiftReset()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset
#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class  tagCMActTurntableChooseItem(Structure):
@@ -17340,6 +17895,162 @@
#------------------------------------------------------
# B2 16 古宝激活 #tagCMGubaoActivate
class  tagCMGubaoActivate(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GubaoID", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x16
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x16
        self.GubaoID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGubaoActivate)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 16 古宝激活 //tagCMGubaoActivate:
                                Cmd:%s,
                                SubCmd:%s,
                                GubaoID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GubaoID
                                )
        return DumpString
m_NAtagCMGubaoActivate=tagCMGubaoActivate()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoActivate.Cmd,m_NAtagCMGubaoActivate.SubCmd))] = m_NAtagCMGubaoActivate
#------------------------------------------------------
# B2 18 古宝升级 #tagCMGubaoLVUp
class  tagCMGubaoLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GubaoID", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x18
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x18
        self.GubaoID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGubaoLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 18 古宝升级 //tagCMGubaoLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                GubaoID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GubaoID
                                )
        return DumpString
m_NAtagCMGubaoLVUp=tagCMGubaoLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoLVUp.Cmd,m_NAtagCMGubaoLVUp.SubCmd))] = m_NAtagCMGubaoLVUp
#------------------------------------------------------
# B2 17 古宝升星 #tagCMGubaoStarUp
class  tagCMGubaoStarUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GubaoID", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x17
        self.GubaoID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGubaoStarUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 17 古宝升星 //tagCMGubaoStarUp:
                                Cmd:%s,
                                SubCmd:%s,
                                GubaoID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GubaoID
                                )
        return DumpString
m_NAtagCMGubaoStarUp=tagCMGubaoStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Cmd,m_NAtagCMGubaoStarUp.SubCmd))] = m_NAtagCMGubaoStarUp
#------------------------------------------------------
# B2 07 重置加点 #tagCMResetAttrPoint
class  tagCMResetAttrPoint(Structure):
@@ -17388,6 +18099,125 @@
#------------------------------------------------------
# B2 19 神通升级 #tagCMShentongLVUp
class  tagCMShentongLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ShentongID", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x19
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x19
        self.ShentongID = 0
        return
    def GetLength(self):
        return sizeof(tagCMShentongLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                ShentongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ShentongID
                                )
        return DumpString
m_NAtagCMShentongLVUp=tagCMShentongLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
#------------------------------------------------------
# B2 20 神通技能设置 #tagCMShentongSkillSet
class  tagCMShentongSkillSet(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SkillIDList = list()    #(vector<DWORD> SkillIDList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkillIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x20
        self.Count = 0
        self.SkillIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SkillIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
#------------------------------------------------------
#B2 01 脱机挂状态 # tagCMLoginState
class  tagCMLoginState(Structure):