ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -2554,7 +2554,7 @@
class  tagCGVoiceChat(Structure):
    Head = tagHead()
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
    TargetNameLen = 0    #(BYTE TargetNameLen)
    TargetName = ""    #(String TargetName)//size = TargetNameLen
    TargetID = 0    #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -3834,8 +3834,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    # 赛区ID
                  ("SeasonID", c_ubyte),    # 赛季ID
                  ("ZoneID", c_ubyte),    # 赛区ID
                  ("SeasonID", c_ubyte),    # 赛季ID
                  ]
    def __init__(self):
@@ -6495,7 +6495,7 @@
                  ("SrcBackpack", c_ubyte),    #源背包类型
                  ("DesBackPack", c_ubyte),    #目标背包类型
                  ("SrcIndex", c_ushort),    #转移物品索引位置;当全部转移时此值无效
                  ("IsAll", c_ubyte),    #是否全部转移
                  ("IsAll", c_ubyte),    #是否全部转移
                  ]
    def __init__(self):
@@ -6756,98 +6756,52 @@
# A3 30 装备神装进阶 #tagCMEquipEvolve
class  tagCMEquipEvolve(Structure):
    Head = tagHead()
    EquipIndex = 0    #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
    NeedEquipIDIndex = 0    #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
    NeedItemIDIndexCnt = 0    #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
    NeedItemIDIndex = list()    #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
    NeedSuitIndexCnt = 0    #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
    NeedSuitIndex = list()    #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
    data = None
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EquipIndex", c_ubyte),    # 要进阶的装备在装备背包中索引
                  ]
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x30
        self.Cmd = 0xA3
        self.SubCmd = 0x30
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedItemIDIndexCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.NeedItemIDIndex.append(value)
        self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedSuitIndexCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.NeedSuitIndex.append(value)
        return _pos
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x30
        self.Cmd = 0xA3
        self.SubCmd = 0x30
        self.EquipIndex = 0
        self.NeedEquipIDIndex = 0
        self.NeedItemIDIndexCnt = 0
        self.NeedItemIDIndex = list()
        self.NeedSuitIndexCnt = 0
        self.NeedSuitIndex = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 1 * self.NeedItemIDIndexCnt
        length += 1
        length += 1 * self.NeedSuitIndexCnt
        return length
        return sizeof(tagCMEquipEvolve)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.EquipIndex)
        data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
        data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
        for i in range(self.NeedItemIDIndexCnt):
            data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
        data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
        for i in range(self.NeedSuitIndexCnt):
            data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EquipIndex:%d,
                                NeedEquipIDIndex:%d,
                                NeedItemIDIndexCnt:%d,
                                NeedItemIDIndex:%s,
                                NeedSuitIndexCnt:%d,
                                NeedSuitIndex:%s
        DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve:
                                Cmd:%s,
                                SubCmd:%s,
                                EquipIndex:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EquipIndex,
                                self.NeedEquipIDIndex,
                                self.NeedItemIDIndexCnt,
                                "...",
                                self.NeedSuitIndexCnt,
                                "..."
                                self.Cmd,
                                self.SubCmd,
                                self.EquipIndex
                                )
        return DumpString
m_NAtagCMEquipEvolve=tagCMEquipEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve
#------------------------------------------------------
@@ -6956,6 +6910,73 @@
m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
#------------------------------------------------------
# A3 31 装备神装拆解 #tagCMEquipShenDecompose
class  tagCMEquipShenDecompose(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//所在背包索引的数量
    IndexList = list()    #(vector<WORD> IndexList)//所在背包索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x31
        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.ReadWORD(_lpData,_pos)
            self.IndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x31
        self.Count = 0
        self.IndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        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.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.IndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                IndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMEquipShenDecompose=tagCMEquipShenDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipShenDecompose.Head.Cmd,m_NAtagCMEquipShenDecompose.Head.SubCmd))] = m_NAtagCMEquipShenDecompose
#------------------------------------------------------
@@ -12768,6 +12789,7 @@
    PacketCnt = 0    #(WORD PacketCnt)// 红包数量
    MoneyNum = 0    #(WORD MoneyNum)//金钱数量
    Wish = ""    #(char Wish[33])//祝福语
    IsAnonymous = 0    #(BYTE IsAnonymous)//是否匿名
    data = None
    def __init__(self):
@@ -12783,6 +12805,7 @@
        self.PacketCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -12794,6 +12817,7 @@
        self.PacketCnt = 0
        self.MoneyNum = 0
        self.Wish = ""
        self.IsAnonymous = 0
        return
    def GetLength(self):
@@ -12803,6 +12827,7 @@
        length += 2
        length += 2
        length += 33
        length += 1
        return length
@@ -12813,6 +12838,7 @@
        data = CommFunc.WriteWORD(data, self.PacketCnt)
        data = CommFunc.WriteWORD(data, self.MoneyNum)
        data = CommFunc.WriteString(data, 33, self.Wish)
        data = CommFunc.WriteBYTE(data, self.IsAnonymous)
        return data
    def OutputString(self):
@@ -12821,14 +12847,16 @@
                                RedPacketID:%d,
                                PacketCnt:%d,
                                MoneyNum:%d,
                                Wish:%s
                                Wish:%s,
                                IsAnonymous:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RedPacketID,
                                self.PacketCnt,
                                self.MoneyNum,
                                self.Wish
                                self.Wish,
                                self.IsAnonymous
                                )
        return DumpString
@@ -13314,6 +13342,286 @@
#------------------------------------------------------
# AA 15 垃圾分类活动收集已完成的任务垃圾 #tagCMActGarbageGetTaskAward
class  tagCMActGarbageGetTaskAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("GarbageTaskID", c_ubyte),    #垃圾任务ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x15
        self.ActNum = 0
        self.GarbageTaskID = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGarbageGetTaskAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 15 垃圾分类活动收集已完成的任务垃圾 //tagCMActGarbageGetTaskAward:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                GarbageTaskID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.GarbageTaskID
                                )
        return DumpString
m_NAtagCMActGarbageGetTaskAward=tagCMActGarbageGetTaskAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageGetTaskAward.Cmd,m_NAtagCMActGarbageGetTaskAward.SubCmd))] = m_NAtagCMActGarbageGetTaskAward
#------------------------------------------------------
# AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
class  tagCMActGarbageSorting(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    GarbageSortingType = 0    #(BYTE GarbageSortingType)//垃圾分类类型,即属于哪种垃圾
    ItemIndexCount = 0    #(BYTE ItemIndexCount)//垃圾背包中的物品索引数
    ItemIndexList = list()    #(vector<BYTE> ItemIndexList)//垃圾背包中的物品索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x14
        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.GarbageSortingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemIndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ItemIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x14
        self.ActNum = 0
        self.GarbageSortingType = 0
        self.ItemIndexCount = 0
        self.ItemIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 1 * self.ItemIndexCount
        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.GarbageSortingType)
        data = CommFunc.WriteBYTE(data, self.ItemIndexCount)
        for i in range(self.ItemIndexCount):
            data = CommFunc.WriteBYTE(data, self.ItemIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                GarbageSortingType:%d,
                                ItemIndexCount:%d,
                                ItemIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.GarbageSortingType,
                                self.ItemIndexCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActGarbageSorting=tagCMActGarbageSorting()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageSorting.Head.Cmd,m_NAtagCMActGarbageSorting.Head.SubCmd))] = m_NAtagCMActGarbageSorting
#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class  tagCMActTurntableChooseItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    GoodItemNumCount = 0    #(BYTE GoodItemNumCount)
    GoodItemNumList = list()    #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
    SuperItemNumCount = 0    #(BYTE SuperItemNumCount)
    SuperItemNumList = list()    #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GoodItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.GoodItemNumList.append(value)
        self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SuperItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.SuperItemNumList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        self.ActNum = 0
        self.GoodItemNumCount = 0
        self.GoodItemNumList = list()
        self.SuperItemNumCount = 0
        self.SuperItemNumList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.GoodItemNumCount
        length += 1
        length += 1 * self.SuperItemNumCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
        for i in range(self.GoodItemNumCount):
            data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
        data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
        for i in range(self.SuperItemNumCount):
            data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                GoodItemNumCount:%d,
                                GoodItemNumList:%s,
                                SuperItemNumCount:%d,
                                SuperItemNumList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.GoodItemNumCount,
                                "...",
                                self.SuperItemNumCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
#------------------------------------------------------
# AA 13 启动转盘 #tagCMActTurntableStart
class  tagCMActTurntableStart(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x13
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActTurntableStart)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActTurntableStart=tagCMActTurntableStart()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
#------------------------------------------------------
# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
class  tagCMActWishingRefresh(Structure):
@@ -13363,6 +13671,188 @@
m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
#------------------------------------------------------
# AA 18 仙匣秘境活动奖池刷新 #tagCMActXianXiaMJAwardPoolRefresh
class  tagCMActXianXiaMJAwardPoolRefresh(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x18
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActXianXiaMJAwardPoolRefresh)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 18 仙匣秘境活动奖池刷新 //tagCMActXianXiaMJAwardPoolRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActXianXiaMJAwardPoolRefresh=tagCMActXianXiaMJAwardPoolRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJAwardPoolRefresh.Cmd,m_NAtagCMActXianXiaMJAwardPoolRefresh.SubCmd))] = m_NAtagCMActXianXiaMJAwardPoolRefresh
#------------------------------------------------------
# AA 17 仙匣秘境活动抽奖 #tagCMActXianXiaMJLottery
class  tagCMActXianXiaMJLottery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("PosNum", c_ubyte),    #玩家点击的奖励位置编号,从1开始
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x17
        self.ActNum = 0
        self.PosNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActXianXiaMJLottery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 17 仙匣秘境活动抽奖 //tagCMActXianXiaMJLottery:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                PosNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.PosNum
                                )
        return DumpString
m_NAtagCMActXianXiaMJLottery=tagCMActXianXiaMJLottery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJLottery.Cmd,m_NAtagCMActXianXiaMJLottery.SubCmd))] = m_NAtagCMActXianXiaMJLottery
#------------------------------------------------------
# AA 16 仙匣秘境活动选择大奖 #tagCMActXianXiaMJSuperItem
class  tagCMActXianXiaMJSuperItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    SuperItemCount = 0    #(BYTE SuperItemCount)//选择物品数量
    SuperItemIDList = list()    #(vector<DWORD> SuperItemIDList)//选择的大奖库物品ID列表,每次重新选择需要发送全部已选择的大奖物品ID,不能只发单个物品ID;
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        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.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SuperItemCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SuperItemIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        self.ActNum = 0
        self.SuperItemCount = 0
        self.SuperItemIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.SuperItemCount
        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.SuperItemCount)
        for i in range(self.SuperItemCount):
            data = CommFunc.WriteDWORD(data, self.SuperItemIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                SuperItemCount:%d,
                                SuperItemIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.SuperItemCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActXianXiaMJSuperItem=tagCMActXianXiaMJSuperItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJSuperItem.Head.Cmd,m_NAtagCMActXianXiaMJSuperItem.Head.SubCmd))] = m_NAtagCMActXianXiaMJSuperItem
#------------------------------------------------------
@@ -15370,6 +15860,73 @@
#------------------------------------------------------
# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
class  tagCMActivateFuncSysPrivilege(Structure):
    Head = tagHead()
    ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
    ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivateCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ActivateFuncSysIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        self.ActivateCount = 0
        self.ActivateFuncSysIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.ActivateCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActivateCount)
        for i in range(self.ActivateCount):
            data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActivateCount:%d,
                                ActivateFuncSysIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActivateCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
#------------------------------------------------------
# B2 06 玩家加点 #tagCMAddPoint
class  tagCMAddPoint(Structure):
@@ -15552,6 +16109,62 @@
m_NAtagCMArenaMatch=tagCMArenaMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
class  tagCMGetFuncSysPrivilegeAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FuncSysID", c_ubyte),    # 功能系统ID
                  ("DayNum", c_ubyte),    # 第X天,1为第1天
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.FuncSysID = 0
        self.DayNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetFuncSysPrivilegeAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
                                Cmd:%s,
                                SubCmd:%s,
                                FuncSysID:%d,
                                DayNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FuncSysID,
                                self.DayNum
                                )
        return DumpString
m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
#------------------------------------------------------
@@ -15946,6 +16559,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LostHP", c_int),    
                  ("LostHPEx", c_int),
                  ]
    def __init__(self):
@@ -15963,6 +16577,7 @@
        self.Cmd = 0xB4
        self.SubCmd = 0x0E
        self.LostHP = 0
        self.LostHPEx = 0
        return
    def GetLength(self):
@@ -15975,12 +16590,14 @@
        DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
                                Cmd:%s,
                                SubCmd:%s,
                                LostHP:%d
                                LostHP:%d,
                                LostHPEx:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LostHP
                                self.LostHP,
                                self.LostHPEx
                                )
        return DumpString
@@ -16558,6 +17175,7 @@
                  ("ObjID", c_int),    
                  ("AttackType", c_ubyte),    #爆击, miss
                  ("HurtHP", c_int),    
                  ("HurtHPEx", c_int),
                  ]
    def __init__(self):
@@ -16574,6 +17192,7 @@
        self.ObjID = 0
        self.AttackType = 0
        self.HurtHP = 0
        self.HurtHPEx = 0
        return
    def GetLength(self):
@@ -16587,13 +17206,15 @@
                                ObjType:%d,
                                ObjID:%d,
                                AttackType:%d,
                                HurtHP:%d
                                HurtHP:%d,
                                HurtHPEx:%d
                                '''\
                                %(
                                self.ObjType,
                                self.ObjID,
                                self.AttackType,
                                self.HurtHP
                                self.HurtHP,
                                self.HurtHPEx
                                )
        return DumpString