From 71d77df560af421d106484e9276e89297b88e40a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 六月 2025 19:09:47 +0800
Subject: [PATCH] 0312 调整结构简化为 只有 Client和Server概念 导出

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 9723 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 4,656 insertions(+), 5,067 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index d2e2a50..e95e85e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -327,5073 +327,6 @@
 
 
 #------------------------------------------------------
-#A4 06 变更家族成员加入审核方式#tagCGChangeFamilyAcceptJoinType
-
-class  tagCGChangeFamilyAcceptJoinType(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    #0 默认需要审核,1 自动同意申请,2 拒绝申请
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        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 = 0xA4
-        self.SubCmd = 0x06
-        self.Type = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChangeFamilyAcceptJoinType)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A4 06 变更家族成员加入审核方式//tagCGChangeFamilyAcceptJoinType:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type
-                                )
-        return DumpString
-
-
-m_NAtagCGChangeFamilyAcceptJoinType=tagCGChangeFamilyAcceptJoinType()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyAcceptJoinType.Cmd,m_NAtagCGChangeFamilyAcceptJoinType.SubCmd))] = m_NAtagCGChangeFamilyAcceptJoinType
-
-
-#------------------------------------------------------
-# A4 13 修改家族徽章 #tagCGChangeFamilyEmblem
-
-class  tagCGChangeFamilyEmblem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("EmblemID", c_ubyte),    # 更换的徽章ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        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 = 0xA4
-        self.SubCmd = 0x13
-        self.EmblemID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChangeFamilyEmblem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A4 13 修改家族徽章 //tagCGChangeFamilyEmblem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                EmblemID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.EmblemID
-                                )
-        return DumpString
-
-
-m_NAtagCGChangeFamilyEmblem=tagCGChangeFamilyEmblem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyEmblem.Cmd,m_NAtagCGChangeFamilyEmblem.SubCmd))] = m_NAtagCGChangeFamilyEmblem
-
-
-#------------------------------------------------------
-# A4 08 查询家族行为信息 #tagCGQueryFamilyAction
-
-class  tagCGQueryFamilyAction(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActionType", c_ubyte),    # 行为类型
-                  ("FamilyID", c_int),    # 家族ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        self.SubCmd = 0x08
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA4
-        self.SubCmd = 0x08
-        self.ActionType = 0
-        self.FamilyID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryFamilyAction)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A4 08 查询家族行为信息 //tagCGQueryFamilyAction:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActionType:%d,
-                                FamilyID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActionType,
-                                self.FamilyID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryFamilyAction=tagCGQueryFamilyAction()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryFamilyAction.Cmd,m_NAtagCGQueryFamilyAction.SubCmd))] = m_NAtagCGQueryFamilyAction
-
-
-#------------------------------------------------------
-#A4 07 升级家族#tagCGFamilyLVUp
-
-class  tagCGFamilyLVUp(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA4
-        self.SubCmd = 0x07
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGFamilyLVUp)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A4 07 升级家族//tagCGFamilyLVUp:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGFamilyLVUp=tagCGFamilyLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyLVUp.Cmd,m_NAtagCGFamilyLVUp.SubCmd))] = m_NAtagCGFamilyLVUp
-
-
-#------------------------------------------------------
-# A4 09 家族仓库删除物品 #tagCGFamilyStoreDel
-
-class  tagCGFamilyStoreDel(Structure):
-    Head = tagHead()
-    IndexCount = 0    #(BYTE IndexCount)
-    StoreItemIndex = list()    #(vector<BYTE> StoreItemIndex)// 仓库物品索引,1代表索引0的物品,与兑换一致
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.IndexCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.StoreItemIndex.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x09
-        self.IndexCount = 0
-        self.StoreItemIndex = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1 * self.IndexCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IndexCount)
-        for i in range(self.IndexCount):
-            data = CommFunc.WriteBYTE(data, self.StoreItemIndex[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                IndexCount:%d,
-                                StoreItemIndex:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.IndexCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCGFamilyStoreDel=tagCGFamilyStoreDel()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyStoreDel.Head.Cmd,m_NAtagCGFamilyStoreDel.Head.SubCmd))] = m_NAtagCGFamilyStoreDel
-
-
-#------------------------------------------------------
-# A4 10 仙盟联赛连胜奖励分配 #tagCGFamilyWarWinRewardAllot
-
-class  tagCGFamilyWarWinRewardAllot(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MemPlayerID", c_int),    #分配给的仙盟成员玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        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 = 0xA4
-        self.SubCmd = 0x10
-        self.MemPlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGFamilyWarWinRewardAllot)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A4 10 仙盟联赛连胜奖励分配 //tagCGFamilyWarWinRewardAllot:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MemPlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MemPlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGFamilyWarWinRewardAllot=tagCGFamilyWarWinRewardAllot()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyWarWinRewardAllot.Cmd,m_NAtagCGFamilyWarWinRewardAllot.SubCmd))] = m_NAtagCGFamilyWarWinRewardAllot
-
-
-#------------------------------------------------------
-#A4 03 加入家族审核情况 #tagCGJoinFamilyReply
-
-class  tagCGJoinFamilyReply(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagPlayerID", c_int),    #被审核玩家ID 0则代表全部
-                  ("IsOK", c_ubyte),    #是否同意加入
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA4
-        self.SubCmd = 0x03
-        self.TagPlayerID = 0
-        self.IsOK = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGJoinFamilyReply)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A4 03 加入家族审核情况 //tagCGJoinFamilyReply:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagPlayerID:%d,
-                                IsOK:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagPlayerID,
-                                self.IsOK
-                                )
-        return DumpString
-
-
-m_NAtagCGJoinFamilyReply=tagCGJoinFamilyReply()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinFamilyReply.Cmd,m_NAtagCGJoinFamilyReply.SubCmd))] = m_NAtagCGJoinFamilyReply
-
-
-#------------------------------------------------------
-# A4 11 一键申请入盟 #tagCGOneKeyJoinFamily
-
-class  tagCGOneKeyJoinFamily(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        self.SubCmd = 0x11
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA4
-        self.SubCmd = 0x11
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGOneKeyJoinFamily)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A4 11 一键申请入盟 //tagCGOneKeyJoinFamily:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGOneKeyJoinFamily=tagCGOneKeyJoinFamily()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGOneKeyJoinFamily.Cmd,m_NAtagCGOneKeyJoinFamily.SubCmd))] = m_NAtagCGOneKeyJoinFamily
-
-
-#------------------------------------------------------
-# A4 04 创建家族 #tagCGPyCreatFamily
-
-class  tagCGPyCreatFamily(Structure):
-    Head = tagHead()
-    Name = ""    #(char Name[33])
-    FakeID = 0    #(WORD FakeID)//假仙盟编号
-    EmblemID = 0    #(BYTE EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.FakeID,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        self.Name = ""
-        self.FakeID = 0
-        self.EmblemID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 33
-        length += 2
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 33, self.Name)
-        data = CommFunc.WriteWORD(data, self.FakeID)
-        data = CommFunc.WriteBYTE(data, self.EmblemID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Name:%s,
-                                FakeID:%d,
-                                EmblemID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Name,
-                                self.FakeID,
-                                self.EmblemID
-                                )
-        return DumpString
-
-
-m_NAtagCGPyCreatFamily=tagCGPyCreatFamily()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPyCreatFamily.Head.Cmd,m_NAtagCGPyCreatFamily.Head.SubCmd))] = m_NAtagCGPyCreatFamily
-
-
-#------------------------------------------------------
-# A4 12 搜索家族 #tagCGPySearchFamily
-
-class  tagCGPySearchFamily(Structure):
-    Head = tagHead()
-    MsgLen = 0    #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
-    Msg = ""    #(String Msg)//size = MsgLen
-    LV = 0    #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
-    MaxCount = 0    #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
-    IsSearching = 0    #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
-        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x12
-        self.MsgLen = 0
-        self.Msg = ""
-        self.LV = 0
-        self.MaxCount = 0
-        self.IsSearching = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += len(self.Msg)
-        length += 1
-        length += 1
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.MsgLen)
-        data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
-        data = CommFunc.WriteBYTE(data, self.LV)
-        data = CommFunc.WriteBYTE(data, self.MaxCount)
-        data = CommFunc.WriteBYTE(data, self.IsSearching)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                MsgLen:%d,
-                                Msg:%s,
-                                LV:%d,
-                                MaxCount:%d,
-                                IsSearching:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.MsgLen,
-                                self.Msg,
-                                self.LV,
-                                self.MaxCount,
-                                self.IsSearching
-                                )
-        return DumpString
-
-
-m_NAtagCGPySearchFamily=tagCGPySearchFamily()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
-
-
-#------------------------------------------------------
-#A4 01  查看家族第N页#tagCGViewFamilyPage
-
-class  tagCGViewFamilyPage(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PageIndex", c_ushort),    #查询页数
-                  ("ShowCount", c_ubyte),    #每页显示数量
-                  ("SortRulex", c_ubyte),    #排序规则
-                  ("ViewType", c_ubyte),    #查看类型
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        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 = 0xA4
-        self.SubCmd = 0x01
-        self.PageIndex = 0
-        self.ShowCount = 0
-        self.SortRulex = 0
-        self.ViewType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewFamilyPage)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A4 01  查看家族第N页//tagCGViewFamilyPage:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PageIndex:%d,
-                                ShowCount:%d,
-                                SortRulex:%d,
-                                ViewType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PageIndex,
-                                self.ShowCount,
-                                self.SortRulex,
-                                self.ViewType
-                                )
-        return DumpString
-
-
-m_NAtagCGViewFamilyPage=tagCGViewFamilyPage()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewFamilyPage.Cmd,m_NAtagCGViewFamilyPage.SubCmd))] = m_NAtagCGViewFamilyPage
-
-
-#------------------------------------------------------
-#A4 02  查看申请入会的玩家 #tagCGViewFamilyRequestInfo
-
-class  tagCGViewFamilyRequestInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA4
-        self.SubCmd = 0x02
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewFamilyRequestInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A4 02  查看申请入会的玩家 //tagCGViewFamilyRequestInfo:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGViewFamilyRequestInfo=tagCGViewFamilyRequestInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewFamilyRequestInfo.Cmd,m_NAtagCGViewFamilyRequestInfo.SubCmd))] = m_NAtagCGViewFamilyRequestInfo
-
-
-#------------------------------------------------------
-# A4 14 查看目标仙盟 #tagCGViewTagFamily
-
-class  tagCGViewTagFamily(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagFamilyID", c_int),    # 目标仙盟ID,支持查看跨服仙盟
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA4
-        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 = 0xA4
-        self.SubCmd = 0x14
-        self.TagFamilyID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewTagFamily)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A4 14 查看目标仙盟 //tagCGViewTagFamily:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagFamilyID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagFamilyID
-                                )
-        return DumpString
-
-
-m_NAtagCGViewTagFamily=tagCGViewTagFamily()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewTagFamily.Cmd,m_NAtagCGViewTagFamily.SubCmd))] = m_NAtagCGViewTagFamily
-
-
-#------------------------------------------------------
-# A9 03 关注BOSS刷新 #tagCGAttentionBoss
-
-class  tagCGAttentionBoss(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("IsAdd", c_ubyte),    #0-取消关注, 1-关注
-                  ("BossID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA9
-        self.SubCmd = 0x03
-        self.IsAdd = 0
-        self.BossID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGAttentionBoss)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 03 关注BOSS刷新 //tagCGAttentionBoss:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                IsAdd:%d,
-                                BossID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.IsAdd,
-                                self.BossID
-                                )
-        return DumpString
-
-
-m_NAtagCGAttentionBoss=tagCGAttentionBoss()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionBoss.Cmd,m_NAtagCGAttentionBoss.SubCmd))] = m_NAtagCGAttentionBoss
-
-
-#------------------------------------------------------
-# A9 02 渡劫护法 #tagCGRealmFBHelp
-
-class  tagCGRealmFBHelp(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    #护法目标ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA9
-        self.SubCmd = 0x02
-        self.PlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGRealmFBHelp)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 02 渡劫护法 //tagCGRealmFBHelp:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGRealmFBHelp=tagCGRealmFBHelp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRealmFBHelp.Cmd,m_NAtagCGRealmFBHelp.SubCmd))] = m_NAtagCGRealmFBHelp
-
-
-#------------------------------------------------------
-# A9 A2 查看排行榜#tagCPYWatchBillboard
-
-class  tagCPYWatchBillboard(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    #类型 TBillboardType
-                  ("StartIndex", c_int),    #查看的起始名次索引, 默认0
-                  ("WatchCnt", c_ubyte),    #查看条数,默认20,最大不超过100
-                  ("WatchID", c_int),    #查看指定ID名次前后,如玩家ID、家族ID等
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0xA2
-        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 = 0xA2
-        self.Type = 0
-        self.StartIndex = 0
-        self.WatchCnt = 0
-        self.WatchID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCPYWatchBillboard)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 A2 查看排行榜//tagCPYWatchBillboard:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d,
-                                StartIndex:%d,
-                                WatchCnt:%d,
-                                WatchID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type,
-                                self.StartIndex,
-                                self.WatchCnt,
-                                self.WatchID
-                                )
-        return DumpString
-
-
-m_NAtagCPYWatchBillboard=tagCPYWatchBillboard()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCPYWatchBillboard.Cmd,m_NAtagCPYWatchBillboard.SubCmd))] = m_NAtagCPYWatchBillboard
-
-
-#------------------------------------------------------
-# A9 A4 查找玩家 #tagCGFuzzySearchPlayer
-
-class  tagCGFuzzySearchPlayer(Structure):
-    Head = tagHead()
-    Name = ""    #(char Name[33])
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA4
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA4
-        self.Name = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 33
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 33, self.Name)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Name:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Name
-                                )
-        return DumpString
-
-
-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
-
-
-#------------------------------------------------------
-# A9 07 点赞仙宫 #tagCGLikeXiangong
-
-class  tagCGLikeXiangong(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("XiangongID", c_ushort),    # 仙宫ID,为0时代表每日的仙宫点赞
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA9
-        self.SubCmd = 0x07
-        self.XiangongID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGLikeXiangong)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                XiangongID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.XiangongID
-                                )
-        return DumpString
-
-
-m_NAtagCGLikeXiangong=tagCGLikeXiangong()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
-
-
-#------------------------------------------------------
-# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
-
-class  tagCGQueryArenaBattlePlayer(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    #目标玩家ID,仅支持查真实玩家
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0xA5
-        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 = 0xA5
-        self.PlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryArenaBattlePlayer)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 A5 查看竞技场对战玩家最新信息 //tagCGQueryArenaBattlePlayer:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryArenaBattlePlayer=tagCGQueryArenaBattlePlayer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattlePlayer.Cmd,m_NAtagCGQueryArenaBattlePlayer.SubCmd))] = m_NAtagCGQueryArenaBattlePlayer
-
-
-#------------------------------------------------------
-# A9 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord
-
-class  tagCGQueryArenaBattleRecord(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0xA8
-        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 = 0xA8
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryArenaBattleRecord)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 A8 查看竞技场对战记录 //tagCGQueryArenaBattleRecord:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryArenaBattleRecord=tagCGQueryArenaBattleRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattleRecord.Cmd,m_NAtagCGQueryArenaBattleRecord.SubCmd))] = m_NAtagCGQueryArenaBattleRecord
-
-
-#------------------------------------------------------
-# A9 04 查询boss信息 #tagCGQueryBossInfo
-
-class  tagCGQueryBossInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//数量
-    BossIDList = list()    #(vector<DWORD> BossIDList)//boosid
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x04
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.BossIDList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x04
-        self.Count = 0
-        self.BossIDList = 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.BossIDList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                BossIDList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryBossInfo=tagCGQueryBossInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryBossInfo.Head.Cmd,m_NAtagCGQueryBossInfo.Head.SubCmd))] = m_NAtagCGQueryBossInfo
-
-
-#------------------------------------------------------
-#A9 A1 查询玩家补偿#tagCGQueryCompensation
-
-class  tagCGQueryCompensation(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0xA1
-        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 = 0xA1
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryCompensation)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A9 A1 查询玩家补偿//tagCGQueryCompensation:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryCompensation=tagCGQueryCompensation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryCompensation.Cmd,m_NAtagCGQueryCompensation.SubCmd))] = m_NAtagCGQueryCompensation
-
-
-#------------------------------------------------------
-# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
-
-class  tagCGQueryNotifyEquipDetailInfo(Structure):
-    Head = tagHead()
-    ItemGUID = ""    #(char ItemGUID[40])
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x05
-        self.ItemGUID = ""
-        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.ItemGUID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ItemGUID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ItemGUID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
-
-
-#------------------------------------------------------
-# A9 A3 查看推荐好友 #tagCGQueryRecommendFriends
-
-class  tagCGQueryRecommendFriends(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0xA3
-        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 = 0xA3
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryRecommendFriends)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 A3 查看推荐好友 //tagCGQueryRecommendFriends:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends
-
-
-#------------------------------------------------------
-# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
-
-class  tagCGQueryXiangongRecPlayers(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("XiangongID", c_ushort),    # 仙宫ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0x06
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA9
-        self.SubCmd = 0x06
-        self.XiangongID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryXiangongRecPlayers)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                XiangongID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.XiangongID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
-
-
-#------------------------------------------------------
-#A9 A6 设置邮件(补偿)已读状态 #tagCGReadCompensation
-
-class  tagCGReadCompensation(Structure):
-    Head = tagHead()
-    GUID = ""    #(char GUID[40])
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        self.GUID = ""
-        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.GUID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                GUID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.GUID
-                                )
-        return DumpString
-
-
-m_NAtagCGReadCompensation=tagCGReadCompensation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGReadCompensation.Head.Cmd,m_NAtagCGReadCompensation.Head.SubCmd))] = m_NAtagCGReadCompensation
-
-
-#------------------------------------------------------
-#A9 A7 删除邮件(补偿) #tagCGDelCompensation
-
-class  tagCGDelCompensation(Structure):
-    Head = tagHead()
-    GUID = ""    #(char GUID[40])
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        self.GUID = ""
-        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.GUID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                GUID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.GUID
-                                )
-        return DumpString
-
-
-m_NAtagCGDelCompensation=tagCGDelCompensation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDelCompensation.Head.Cmd,m_NAtagCGDelCompensation.Head.SubCmd))] = m_NAtagCGDelCompensation
-
-
-#------------------------------------------------------
-# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
-
-class  tagCGCallupFamilyMemberToBoss(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("NPCID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAC
-        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 = 0xAC
-        self.SubCmd = 0x05
-        self.NPCID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCallupFamilyMemberToBoss)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                NPCID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.NPCID
-                                )
-        return DumpString
-
-
-m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
-
-
-#------------------------------------------------------
-# AC 02 仙魔之争战斗结束 #tagCGXMZZOver
-
-class  tagCGXMZZOver(Structure):
-    Head = tagHead()
-    IsWin = 0    #(BYTE IsWin)//是否胜利
-    IsEnd = 0    #(BYTE IsEnd)//是否结束
-    HPPer = 0    #(BYTE HPPer)//剩余血量百分比
-    VSName = ""    #(char VSName[33])//对手名字
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x02
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IsEnd,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.HPPer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.VSName,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x02
-        self.IsWin = 0
-        self.IsEnd = 0
-        self.HPPer = 0
-        self.VSName = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1
-        length += 33
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsWin)
-        data = CommFunc.WriteBYTE(data, self.IsEnd)
-        data = CommFunc.WriteBYTE(data, self.HPPer)
-        data = CommFunc.WriteString(data, 33, self.VSName)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                IsWin:%d,
-                                IsEnd:%d,
-                                HPPer:%d,
-                                VSName:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.IsWin,
-                                self.IsEnd,
-                                self.HPPer,
-                                self.VSName
-                                )
-        return DumpString
-
-
-m_NAtagCGXMZZOver=tagCGXMZZOver()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZOver.Head.Cmd,m_NAtagCGXMZZOver.Head.SubCmd))] = m_NAtagCGXMZZOver
-
-
-#------------------------------------------------------
-# AC 01 仙魔之争报名 #tagCGJoinXMZZ
-
-class  tagCGJoinXMZZ(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAC
-        self.SubCmd = 0x01
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAC
-        self.SubCmd = 0x01
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGJoinXMZZ)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 01 仙魔之争报名 //tagCGJoinXMZZ:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGJoinXMZZ=tagCGJoinXMZZ()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinXMZZ.Cmd,m_NAtagCGJoinXMZZ.SubCmd))] = m_NAtagCGJoinXMZZ
-
-
-#------------------------------------------------------
-# AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
-
-class  tagCGQueryAllFamilyBossHurt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAC
-        self.SubCmd = 0x04
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAC
-        self.SubCmd = 0x04
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryAllFamilyBossHurt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 04 查询仙盟抢Boss所有Boss当前进度 //tagCGQueryAllFamilyBossHurt:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryAllFamilyBossHurt=tagCGQueryAllFamilyBossHurt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAllFamilyBossHurt.Cmd,m_NAtagCGQueryAllFamilyBossHurt.SubCmd))] = m_NAtagCGQueryAllFamilyBossHurt
-
-
-#------------------------------------------------------
-# AC 03 仙魔之争信息查询 #tagCGXMZZInfoQuery
-
-class  tagCGXMZZInfoQuery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAC
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAC
-        self.SubCmd = 0x03
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGXMZZInfoQuery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 03 仙魔之争信息查询 //tagCGXMZZInfoQuery:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGXMZZInfoQuery=tagCGXMZZInfoQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZInfoQuery.Cmd,m_NAtagCGXMZZInfoQuery.SubCmd))] = m_NAtagCGXMZZInfoQuery
-
-
-#------------------------------------------------------
-# 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 34 福地请求结算奖励 #tagCGMineAreaAwardGet
-
-class  tagCGMineAreaAwardGet(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        self.SubCmd = 0x34
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB0
-        self.SubCmd = 0x34
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGMineAreaAwardGet)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 34 福地请求结算奖励 //tagCGMineAreaAwardGet:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGMineAreaAwardGet=tagCGMineAreaAwardGet()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaAwardGet.Cmd,m_NAtagCGMineAreaAwardGet.SubCmd))] = m_NAtagCGMineAreaAwardGet
-
-
-#------------------------------------------------------
-# B0 33 福地查看 #tagCGMineAreaView
-
-class  tagCGMineAreaView(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("QueryType", c_ubyte),    # 查询同步类型:0-后端主动同步;1-查看指定福地;2-查看道友福地列表;3-查看周围随机福地列表;4-退出他人福地;5-查看记录
-                  ("QueryValue", c_int),    # 查询值,类型1时-发送目标玩家ID;3时-发送是否重新随机
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        self.SubCmd = 0x33
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB0
-        self.SubCmd = 0x33
-        self.QueryType = 0
-        self.QueryValue = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGMineAreaView)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 33 福地查看 //tagCGMineAreaView:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                QueryType:%d,
-                                QueryValue:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.QueryType,
-                                self.QueryValue
-                                )
-        return DumpString
-
-
-m_NAtagCGMineAreaView=tagCGMineAreaView()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaView.Cmd,m_NAtagCGMineAreaView.SubCmd))] = m_NAtagCGMineAreaView
-
-
-#------------------------------------------------------
-#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 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
-
-
-#------------------------------------------------------
-# B0 20 请求膜拜玩家 #tagCGWorship
-
-class  tagCGWorship(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    # 目标玩家ID
-                  ("WorshipType", c_ubyte),    # 膜拜类型
-                  ("WorshipValue", c_int),    # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        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 = 0xB0
-        self.SubCmd = 0x20
-        self.PlayerID = 0
-        self.WorshipType = 0
-        self.WorshipValue = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGWorship)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 20 请求膜拜玩家 //tagCGWorship:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d,
-                                WorshipType:%d,
-                                WorshipValue:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID,
-                                self.WorshipType,
-                                self.WorshipValue
-                                )
-        return DumpString
-
-
-m_NAtagCGWorship=tagCGWorship()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGWorship.Cmd,m_NAtagCGWorship.SubCmd))] = m_NAtagCGWorship
-
-
-#------------------------------------------------------
-# B3 19 提升魅力等级 #tagCGCharmLVUp
-
-class  tagCGCharmLVUp(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x19
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x19
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCharmLVUp)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGCharmLVUp=tagCGCharmLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
-
-
-#------------------------------------------------------
-# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
-
-class  tagCGCharmOfferBillboardQuery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    # 魅力玩家ID
-                  ("QueryType", c_ubyte),    # 查看类型: 1-总榜,2-周榜,3-日榜
-                  ("QueryCount", c_ubyte),    # 查看名次数量,最大255
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x09
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x09
-        self.PlayerID = 0
-        self.QueryType = 0
-        self.QueryCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCharmOfferBillboardQuery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d,
-                                QueryType:%d,
-                                QueryCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID,
-                                self.QueryType,
-                                self.QueryCount
-                                )
-        return DumpString
-
-
-m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
-
-
-#------------------------------------------------------
-# B3 16 和平离婚回应 #tagGCMarryBreakResponse
-
-class  tagGCMarryBreakResponse(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x16
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x16
-        self.IsOK = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCMarryBreakResponse)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                IsOK:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.IsOK
-                                )
-        return DumpString
-
-
-m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
-
-
-#------------------------------------------------------
-# B3 12 提亲回应 #tagCGMarryResponse
-
-class  tagCGMarryResponse(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ReqPlayerID", c_int),    # 提亲的玩家ID
-                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x12
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x12
-        self.ReqPlayerID = 0
-        self.IsOK = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGMarryResponse)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ReqPlayerID:%d,
-                                IsOK:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ReqPlayerID,
-                                self.IsOK
-                                )
-        return DumpString
-
-
-m_NAtagCGMarryResponse=tagCGMarryResponse()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
-
-
-#------------------------------------------------------
-#B3 04 加入黑名单 #tagCGAddBlackList
-
-class  tagCGAddBlackList(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagID", c_int),    #玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x04
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x04
-        self.TagID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGAddBlackList)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//B3 04 加入黑名单 //tagCGAddBlackList:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagID
-                                )
-        return DumpString
-
-
-m_NAtagCGAddBlackList=tagCGAddBlackList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAddBlackList.Cmd,m_NAtagCGAddBlackList.SubCmd))] = m_NAtagCGAddBlackList
-
-
-#------------------------------------------------------
-#B3 01 添加好友#tagCGAddFriend
-
-class  tagCGAddFriend(Structure):
-    Head = tagHead()
-    TagName = ""    #(char TagName[33])//玩家名称
-    TagID = 0    #(DWORD TagID)//玩家ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x01
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.TagName,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x01
-        self.TagName = ""
-        self.TagID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 33
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 33, self.TagName)
-        data = CommFunc.WriteDWORD(data, self.TagID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                TagName:%s,
-                                TagID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.TagName,
-                                self.TagID
-                                )
-        return DumpString
-
-
-m_NAtagCGAddFriend=tagCGAddFriend()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAddFriend.Head.Cmd,m_NAtagCGAddFriend.Head.SubCmd))] = m_NAtagCGAddFriend
-
-
-#------------------------------------------------------
-#B3 05 移除黑名单 #tagCGDelBlackList
-
-class  tagCGDelBlackList(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        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 = 0xB3
-        self.SubCmd = 0x05
-        self.TagID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGDelBlackList)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//B3 05 移除黑名单 //tagCGDelBlackList:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagID
-                                )
-        return DumpString
-
-
-m_NAtagCGDelBlackList=tagCGDelBlackList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDelBlackList.Cmd,m_NAtagCGDelBlackList.SubCmd))] = m_NAtagCGDelBlackList
-
-
-#------------------------------------------------------
-#B3 02 删除好友#tagCGDeleteFriend
-
-class  tagCGDeleteFriend(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("FriendID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x02
-        self.FriendID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGDeleteFriend)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//B3 02 删除好友//tagCGDeleteFriend:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                FriendID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.FriendID
-                                )
-        return DumpString
-
-
-m_NAtagCGDeleteFriend=tagCGDeleteFriend()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDeleteFriend.Cmd,m_NAtagCGDeleteFriend.SubCmd))] = m_NAtagCGDeleteFriend
-
-
-#------------------------------------------------------
-#B3 06 查询玩家的简短信息 #tagCGViewPlayerShortInfo
-
-class  tagCGViewPlayerShortInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        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 = 0xB3
-        self.SubCmd = 0x06
-        self.PlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewPlayerShortInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//B3 06 查询玩家的简短信息 //tagCGViewPlayerShortInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGViewPlayerShortInfo=tagCGViewPlayerShortInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewPlayerShortInfo.Cmd,m_NAtagCGViewPlayerShortInfo.SubCmd))] = m_NAtagCGViewPlayerShortInfo
-
-
-#------------------------------------------------------
-#B3 03 是否允许加入好友的回应#tagCGJoinFriendAnswer
-
-class  tagCGJoinFriendAnswer(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagID", c_int),    
-                  ("Answer", c_ubyte),    #0: 拒绝 1: 接受
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB3
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB3
-        self.SubCmd = 0x03
-        self.TagID = 0
-        self.Answer = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGJoinFriendAnswer)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//B3 03 是否允许加入好友的回应//tagCGJoinFriendAnswer:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagID:%d,
-                                Answer:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagID,
-                                self.Answer
-                                )
-        return DumpString
-
-
-m_NAtagCGJoinFriendAnswer=tagCGJoinFriendAnswer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinFriendAnswer.Cmd,m_NAtagCGJoinFriendAnswer.SubCmd))] = m_NAtagCGJoinFriendAnswer
-
-
-#------------------------------------------------------
-# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
-
-class  tagCGAttentionAuctionItemChange(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemID", c_int),    
-                  ("IsAttention", c_ubyte),    #是否关注,取消关注发0
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB5
-        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 = 0xB5
-        self.SubCmd = 0x18
-        self.ItemID = 0
-        self.IsAttention = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGAttentionAuctionItemChange)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemID:%d,
-                                IsAttention:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemID,
-                                self.IsAttention
-                                )
-        return DumpString
-
-
-m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
-
-
-#------------------------------------------------------
-# B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
-
-class  tagCGPYQueryBourseItemOnSale(Structure):
-    Head = tagHead()
-    QueryType = 0    #(DWORD QueryType)//查询的分类标识
-    ItemName = ""    #(char ItemName[33])//物品名(模糊查询)
-    ItemID = 0    #(DWORD ItemID)//物品ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.QueryType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemName,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x03
-        self.QueryType = 0
-        self.ItemName = ""
-        self.ItemID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 33
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.QueryType)
-        data = CommFunc.WriteString(data, 33, self.ItemName)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                QueryType:%d,
-                                ItemName:%s,
-                                ItemID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.QueryType,
-                                self.ItemName,
-                                self.ItemID
-                                )
-        return DumpString
-
-
-m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale
-
-
-#------------------------------------------------------
-# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
-
-class  tagCGQueryAttentionAuctionItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB5
-        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 = 0xB5
-        self.SubCmd = 0x16
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryAttentionAuctionItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
-
-
-#------------------------------------------------------
-# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
-
-class  tagCGQueryAuctionItem(Structure):
-    Head = tagHead()
-    Job = 0    #(BYTE Job)//过滤职业,0为不限制
-    ItemTypeCount = 0    #(BYTE ItemTypeCount)
-    ItemTypeList = list()    #(vector<DWORD> ItemTypeList)//指定的物品类型
-    ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
-    SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
-    SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
-    FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
-    QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
-    QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x10
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ItemTypeCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.ItemTypeList.append(value)
-        self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.SpecItemIDCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.SpecItemIDList.append(value)
-        self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x10
-        self.Job = 0
-        self.ItemTypeCount = 0
-        self.ItemTypeList = list()
-        self.ClassLV = 0
-        self.SpecItemIDCount = 0
-        self.SpecItemIDList = list()
-        self.FromItemGUID = ""
-        self.QueryDir = 0
-        self.QueryCount = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 4 * self.ItemTypeCount
-        length += 1
-        length += 1
-        length += 4 * self.SpecItemIDCount
-        length += 40
-        length += 1
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Job)
-        data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
-        for i in range(self.ItemTypeCount):
-            data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
-        data = CommFunc.WriteBYTE(data, self.ClassLV)
-        data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
-        for i in range(self.SpecItemIDCount):
-            data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
-        data = CommFunc.WriteString(data, 40, self.FromItemGUID)
-        data = CommFunc.WriteBYTE(data, self.QueryDir)
-        data = CommFunc.WriteBYTE(data, self.QueryCount)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Job:%d,
-                                ItemTypeCount:%d,
-                                ItemTypeList:%s,
-                                ClassLV:%d,
-                                SpecItemIDCount:%d,
-                                SpecItemIDList:%s,
-                                FromItemGUID:%s,
-                                QueryDir:%d,
-                                QueryCount:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Job,
-                                self.ItemTypeCount,
-                                "...",
-                                self.ClassLV,
-                                self.SpecItemIDCount,
-                                "...",
-                                self.FromItemGUID,
-                                self.QueryDir,
-                                self.QueryCount
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
-
-
-#------------------------------------------------------
-# B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord
-
-class  tagCGQueryAuctionRecord(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("RecordType", c_ubyte),    #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB5
-        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 = 0xB5
-        self.SubCmd = 0x12
-        self.RecordType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryAuctionRecord)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                RecordType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.RecordType
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord
-
-
-#------------------------------------------------------
-# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
-
-class  tagCGQueryTagAuctionItem(Structure):
-    Head = tagHead()
-    ItemGUID = ""    #(char ItemGUID[40])
-    ItemID = 0    #(DWORD ItemID)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x17
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB5
-        self.Head.SubCmd = 0x17
-        self.ItemGUID = ""
-        self.ItemID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 40
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 40, self.ItemGUID)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ItemGUID:%s,
-                                ItemID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ItemGUID,
-                                self.ItemID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
-
-
-#------------------------------------------------------
-# B9 07 自动匹配队伍或玩家 #tagCGAutoMatchTeam
-
-class  tagCGAutoMatchTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagMapID", c_int),    # 目标地图; 发0代表匹配当前场景的
-                  ("TagMapEx", c_ushort),    # 目标地图扩展
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x07
-        self.TagMapID = 0
-        self.TagMapEx = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGAutoMatchTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 07 自动匹配队伍或玩家 //tagCGAutoMatchTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagMapID:%d,
-                                TagMapEx:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagMapID,
-                                self.TagMapEx
-                                )
-        return DumpString
-
-
-m_NAtagCGAutoMatchTeam=tagCGAutoMatchTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAutoMatchTeam.Cmd,m_NAtagCGAutoMatchTeam.SubCmd))] = m_NAtagCGAutoMatchTeam
-
-
-#------------------------------------------------------
-# B9 08 取消匹配队伍或玩家 #tagCGCancelMatchTeam
-
-class  tagCGCancelMatchTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x08
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x08
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCancelMatchTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 08 取消匹配队伍或玩家 //tagCGCancelMatchTeam:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGCancelMatchTeam=tagCGCancelMatchTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelMatchTeam.Cmd,m_NAtagCGCancelMatchTeam.SubCmd))] = m_NAtagCGCancelMatchTeam
-
-
-#------------------------------------------------------
-# B9 21 修改功能队伍 #tagCGChangeFuncTeam
-
-class  tagCGChangeFuncTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TeamID", c_int),    
-                  ("FuncMapID", c_int),    # 功能地图ID或自定义的活动功能ID
-                  ("MinLV", c_ushort),    #最低等级限制
-                  ("MinFightPower", c_int),    #最低战力限制,求余亿
-                  ("MinFightPowerEx", c_int),    #最低战力限制,整除亿
-                  ("ServerOnly", c_ubyte),    #是否仅本服玩家可加入,0-否,1-是
-                  ("NeedCheck", c_ubyte),    #是否需要审核
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x21
-        self.TeamID = 0
-        self.FuncMapID = 0
-        self.MinLV = 0
-        self.MinFightPower = 0
-        self.MinFightPowerEx = 0
-        self.ServerOnly = 0
-        self.NeedCheck = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChangeFuncTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 21 修改功能队伍 //tagCGChangeFuncTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TeamID:%d,
-                                FuncMapID:%d,
-                                MinLV:%d,
-                                MinFightPower:%d,
-                                MinFightPowerEx:%d,
-                                ServerOnly:%d,
-                                NeedCheck:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TeamID,
-                                self.FuncMapID,
-                                self.MinLV,
-                                self.MinFightPower,
-                                self.MinFightPowerEx,
-                                self.ServerOnly,
-                                self.NeedCheck
-                                )
-        return DumpString
-
-
-m_NAtagCGChangeFuncTeam=tagCGChangeFuncTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFuncTeam.Cmd,m_NAtagCGChangeFuncTeam.SubCmd))] = m_NAtagCGChangeFuncTeam
-
-
-#------------------------------------------------------
-# B9 03 修改队伍信息 #tagCGChangeTeamInfo
-
-class  tagCGChangeTeamInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagMapID", c_int),    # 目标地图
-                  ("TagMapEx", c_ushort),    # 目标地图扩展
-                  ("ReqMinLV", c_ushort),    # 队员最低等级限制
-                  ("ReqMaxLV", c_ushort),    # 队员最高等级限制
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x03
-        self.TagMapID = 0
-        self.TagMapEx = 0
-        self.ReqMinLV = 0
-        self.ReqMaxLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChangeTeamInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 03 修改队伍信息 //tagCGChangeTeamInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagMapID:%d,
-                                TagMapEx:%d,
-                                ReqMinLV:%d,
-                                ReqMaxLV:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagMapID,
-                                self.TagMapEx,
-                                self.ReqMinLV,
-                                self.ReqMaxLV
-                                )
-        return DumpString
-
-
-m_NAtagCGChangeTeamInfo=tagCGChangeTeamInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeTeamInfo.Cmd,m_NAtagCGChangeTeamInfo.SubCmd))] = m_NAtagCGChangeTeamInfo
-
-
-#------------------------------------------------------
-# B9 20 创建功能队伍 #tagCGCreateFuncTeam
-
-class  tagCGCreateFuncTeam(Structure):
-    Head = tagHead()
-    FuncMapID = 0    #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
-    FuncMapEx = 0    #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级
-    NameLen = 0    #(BYTE NameLen)
-    TeamName = ""    #(String TeamName)// 队伍名称,可为空
-    MinLV = 0    #(WORD MinLV)//最低等级限制
-    MinFightPower = 0    #(DWORD MinFightPower)//最低战力限制,求余亿
-    MinFightPowerEx = 0    #(DWORD MinFightPowerEx)//最低战力限制,整除亿
-    ServerOnly = 0    #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
-    NeedCheck = 0    #(BYTE NeedCheck)//是否需要审核
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB9
-        self.Head.SubCmd = 0x20
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB9
-        self.Head.SubCmd = 0x20
-        self.FuncMapID = 0
-        self.FuncMapEx = 0
-        self.NameLen = 0
-        self.TeamName = ""
-        self.MinLV = 0
-        self.MinFightPower = 0
-        self.MinFightPowerEx = 0
-        self.ServerOnly = 0
-        self.NeedCheck = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 1
-        length += len(self.TeamName)
-        length += 2
-        length += 4
-        length += 4
-        length += 1
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.FuncMapID)
-        data = CommFunc.WriteDWORD(data, self.FuncMapEx)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
-        data = CommFunc.WriteWORD(data, self.MinLV)
-        data = CommFunc.WriteDWORD(data, self.MinFightPower)
-        data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
-        data = CommFunc.WriteBYTE(data, self.ServerOnly)
-        data = CommFunc.WriteBYTE(data, self.NeedCheck)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                FuncMapID:%d,
-                                FuncMapEx:%d,
-                                NameLen:%d,
-                                TeamName:%s,
-                                MinLV:%d,
-                                MinFightPower:%d,
-                                MinFightPowerEx:%d,
-                                ServerOnly:%d,
-                                NeedCheck:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.FuncMapID,
-                                self.FuncMapEx,
-                                self.NameLen,
-                                self.TeamName,
-                                self.MinLV,
-                                self.MinFightPower,
-                                self.MinFightPowerEx,
-                                self.ServerOnly,
-                                self.NeedCheck
-                                )
-        return DumpString
-
-
-m_NAtagCGCreateFuncTeam=tagCGCreateFuncTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCreateFuncTeam.Head.Cmd,m_NAtagCGCreateFuncTeam.Head.SubCmd))] = m_NAtagCGCreateFuncTeam
-
-
-#------------------------------------------------------
-# B9 01 创建队伍 #tagCGCreateTeam
-
-class  tagCGCreateTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagMapID", c_int),    # 目标地图
-                  ("TagMapEx", c_ushort),    # 目标地图扩展
-                  ("ReqMinLV", c_ushort),    # 队员最低等级限制
-                  ("ReqMaxLV", c_ushort),    # 队员最高等级限制
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x01
-        self.TagMapID = 0
-        self.TagMapEx = 0
-        self.ReqMinLV = 0
-        self.ReqMaxLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCreateTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 01 创建队伍 //tagCGCreateTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagMapID:%d,
-                                TagMapEx:%d,
-                                ReqMinLV:%d,
-                                ReqMaxLV:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagMapID,
-                                self.TagMapEx,
-                                self.ReqMinLV,
-                                self.ReqMaxLV
-                                )
-        return DumpString
-
-
-m_NAtagCGCreateTeam=tagCGCreateTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCreateTeam.Cmd,m_NAtagCGCreateTeam.SubCmd))] = m_NAtagCGCreateTeam
-
-
-#------------------------------------------------------
-# B9 22 功能队伍成员操作 #tagCGFuncTeamMemOP
-
-class  tagCGFuncTeamMemOP(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TeamID", c_int),    
-                  ("FuncMapID", c_int),    # 功能地图ID或自定义的活动功能ID
-                  ("OPType", c_ubyte),    # 1-申请加入;2-申请取消;3-同意入队;4-拒绝入队;5-退出队伍;6-踢出队伍;7-转让队长;8-解散队伍;
-                  ("OPData", c_int),    # 可选
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x22
-        self.TeamID = 0
-        self.FuncMapID = 0
-        self.OPType = 0
-        self.OPData = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGFuncTeamMemOP)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 22 功能队伍成员操作 //tagCGFuncTeamMemOP:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TeamID:%d,
-                                FuncMapID:%d,
-                                OPType:%d,
-                                OPData:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TeamID,
-                                self.FuncMapID,
-                                self.OPType,
-                                self.OPData
-                                )
-        return DumpString
-
-
-m_NAtagCGFuncTeamMemOP=tagCGFuncTeamMemOP()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFuncTeamMemOP.Cmd,m_NAtagCGFuncTeamMemOP.SubCmd))] = m_NAtagCGFuncTeamMemOP
-
-
-#------------------------------------------------------
-# B9 02 邀请玩家加入队伍 #tagCGInvitePlayerJoinTeam
-
-class  tagCGInvitePlayerJoinTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    # 目标玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x02
-        self.PlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGInvitePlayerJoinTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 02 邀请玩家加入队伍 //tagCGInvitePlayerJoinTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGInvitePlayerJoinTeam=tagCGInvitePlayerJoinTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeam.Cmd,m_NAtagCGInvitePlayerJoinTeam.SubCmd))] = m_NAtagCGInvitePlayerJoinTeam
-
-
-#------------------------------------------------------
-# B9 0A 按条件邀请玩家加入队伍 #tagCGInvitePlayerJoinTeamByLV
-
-class  tagCGInvitePlayerJoinTeamByLV(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LVLimit", c_ushort),    # 目标玩家大于等于此等级
-                  ("InviteCnt", c_ubyte),    # 邀请玩家个数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x0A
-        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 = 0xB9
-        self.SubCmd = 0x0A
-        self.LVLimit = 0
-        self.InviteCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGInvitePlayerJoinTeamByLV)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 0A 按条件邀请玩家加入队伍 //tagCGInvitePlayerJoinTeamByLV:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LVLimit:%d,
-                                InviteCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LVLimit,
-                                self.InviteCnt
-                                )
-        return DumpString
-
-
-m_NAtagCGInvitePlayerJoinTeamByLV=tagCGInvitePlayerJoinTeamByLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeamByLV.Cmd,m_NAtagCGInvitePlayerJoinTeamByLV.SubCmd))] = m_NAtagCGInvitePlayerJoinTeamByLV
-
-
-#------------------------------------------------------
-# B9 23 查找功能队伍列表 #tagCGQueryFuncTeam
-
-class  tagCGQueryFuncTeam(Structure):
-    Head = tagHead()
-    FuncMapID = 0    #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
-    FuncMapEx = 0    #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有
-    StartIndex = 0    #(DWORD StartIndex)// 查看的起始索引, 默认0
-    QueryCnt = 0    #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100
-    HaveSpace = 0    #(BYTE HaveSpace)// 是否只查看有空位置的队伍
-    IDLimitType = 0    #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长
-    SearchLen = 0    #(BYTE SearchLen)
-    SearchMsg = ""    #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB9
-        self.Head.SubCmd = 0x23
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB9
-        self.Head.SubCmd = 0x23
-        self.FuncMapID = 0
-        self.FuncMapEx = 0
-        self.StartIndex = 0
-        self.QueryCnt = 0
-        self.HaveSpace = 0
-        self.IDLimitType = 0
-        self.SearchLen = 0
-        self.SearchMsg = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        length += 1
-        length += 1
-        length += 1
-        length += len(self.SearchMsg)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.FuncMapID)
-        data = CommFunc.WriteDWORD(data, self.FuncMapEx)
-        data = CommFunc.WriteDWORD(data, self.StartIndex)
-        data = CommFunc.WriteBYTE(data, self.QueryCnt)
-        data = CommFunc.WriteBYTE(data, self.HaveSpace)
-        data = CommFunc.WriteBYTE(data, self.IDLimitType)
-        data = CommFunc.WriteBYTE(data, self.SearchLen)
-        data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                FuncMapID:%d,
-                                FuncMapEx:%d,
-                                StartIndex:%d,
-                                QueryCnt:%d,
-                                HaveSpace:%d,
-                                IDLimitType:%d,
-                                SearchLen:%d,
-                                SearchMsg:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.FuncMapID,
-                                self.FuncMapEx,
-                                self.StartIndex,
-                                self.QueryCnt,
-                                self.HaveSpace,
-                                self.IDLimitType,
-                                self.SearchLen,
-                                self.SearchMsg
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryFuncTeam=tagCGQueryFuncTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryFuncTeam.Head.Cmd,m_NAtagCGQueryFuncTeam.Head.SubCmd))] = m_NAtagCGQueryFuncTeam
-
-
-#------------------------------------------------------
-# B9 24 查找玩家功能队伍 #tagCGQueryPlayerFuncTeam
-
-class  tagCGQueryPlayerFuncTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("FuncMapID", c_int),    # 功能地图ID或自定义的活动功能ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x24
-        self.FuncMapID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryPlayerFuncTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 24 查找玩家功能队伍 //tagCGQueryPlayerFuncTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                FuncMapID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.FuncMapID
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryPlayerFuncTeam=tagCGQueryPlayerFuncTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryPlayerFuncTeam.Cmd,m_NAtagCGQueryPlayerFuncTeam.SubCmd))] = m_NAtagCGQueryPlayerFuncTeam
-
-
-#------------------------------------------------------
-# B9 05 查询推荐组队的附近玩家 #tagCGQueryRecommendNearbyPlayer
-
-class  tagCGQueryRecommendNearbyPlayer(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x05
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryRecommendNearbyPlayer)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 05 查询推荐组队的附近玩家 //tagCGQueryRecommendNearbyPlayer:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryRecommendNearbyPlayer=tagCGQueryRecommendNearbyPlayer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendNearbyPlayer.Cmd,m_NAtagCGQueryRecommendNearbyPlayer.SubCmd))] = m_NAtagCGQueryRecommendNearbyPlayer
-
-
-#------------------------------------------------------
-# B9 06 查询对应组队目标的队伍 #tagCGQueryTagMapTeam
-
-class  tagCGQueryTagMapTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TagMapID", c_int),    # 目标地图
-                  ("TagMapEx", c_ushort),    # 目标地图扩展
-                  ("IsTagEx", c_ubyte),    # 是否查询对应目标扩展的; 0否1是
-                  ("MatchState", c_ubyte),    # 0-全部;1-匹配中的;
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x06
-        self.TagMapID = 0
-        self.TagMapEx = 0
-        self.IsTagEx = 0
-        self.MatchState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryTagMapTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 06 查询对应组队目标的队伍 //tagCGQueryTagMapTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TagMapID:%d,
-                                TagMapEx:%d,
-                                IsTagEx:%d,
-                                MatchState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TagMapID,
-                                self.TagMapEx,
-                                self.IsTagEx,
-                                self.MatchState
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryTagMapTeam=tagCGQueryTagMapTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagMapTeam.Cmd,m_NAtagCGQueryTagMapTeam.SubCmd))] = m_NAtagCGQueryTagMapTeam
-
-
-#------------------------------------------------------
-# B9 10 查询在线队员对应功能数据 #tagCGQueryTeamMemFuncData
-
-class  tagCGQueryTeamMemFuncData(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TeamMemFuncType", c_ubyte),    # 查询队员的功能数据类型
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        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 = 0xB9
-        self.SubCmd = 0x10
-        self.TeamMemFuncType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryTeamMemFuncData)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 10 查询在线队员对应功能数据 //tagCGQueryTeamMemFuncData:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TeamMemFuncType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TeamMemFuncType
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryTeamMemFuncData=tagCGQueryTeamMemFuncData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeamMemFuncData.Cmd,m_NAtagCGQueryTeamMemFuncData.SubCmd))] = m_NAtagCGQueryTeamMemFuncData
-
-
-#------------------------------------------------------
-# B9 11 请求加入队伍 #tagCGRequestJoinTeam
-
-class  tagCGRequestJoinTeam(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TeamID", c_int),    # 目标队伍ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x11
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x11
-        self.TeamID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGRequestJoinTeam)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 11 请求加入队伍 //tagCGRequestJoinTeam:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TeamID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TeamID
-                                )
-        return DumpString
-
-
-m_NAtagCGRequestJoinTeam=tagCGRequestJoinTeam()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRequestJoinTeam.Cmd,m_NAtagCGRequestJoinTeam.SubCmd))] = m_NAtagCGRequestJoinTeam
-
-
-#------------------------------------------------------
-# B9 09 队员进入副本准备选择 #tagCGTeamMemberPrepare
-
-class  tagCGTeamMemberPrepare(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PrepareState", c_ubyte),    # 1-准备;2-拒绝
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB9
-        self.SubCmd = 0x09
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB9
-        self.SubCmd = 0x09
-        self.PrepareState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGTeamMemberPrepare)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B9 09 队员进入副本准备选择 //tagCGTeamMemberPrepare:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PrepareState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PrepareState
-                                )
-        return DumpString
-
-
-m_NAtagCGTeamMemberPrepare=tagCGTeamMemberPrepare()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGTeamMemberPrepare.Cmd,m_NAtagCGTeamMemberPrepare.SubCmd))] = m_NAtagCGTeamMemberPrepare
-
-
-#------------------------------------------------------
-# C0 21 跨服排位仙官申请回应 #tagCGChampionshipOfficialApplyReply
-
-class  tagCGChampionshipOfficialApplyReply(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MainOfficialID", c_ushort),    #界主官职ID
-                  ("OfficialID", c_ushort),    #申请官职ID
-                  ("PlayerID", c_int),    #申请的玩家ID
-                  ("IsOK", c_ubyte),    #是否同意;1-是;0-否
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        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 = 0xC0
-        self.SubCmd = 0x21
-        self.MainOfficialID = 0
-        self.OfficialID = 0
-        self.PlayerID = 0
-        self.IsOK = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChampionshipOfficialApplyReply)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 21 跨服排位仙官申请回应 //tagCGChampionshipOfficialApplyReply:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MainOfficialID:%d,
-                                OfficialID:%d,
-                                PlayerID:%d,
-                                IsOK:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MainOfficialID,
-                                self.OfficialID,
-                                self.PlayerID,
-                                self.IsOK
-                                )
-        return DumpString
-
-
-m_NAtagCGChampionshipOfficialApplyReply=tagCGChampionshipOfficialApplyReply()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialApplyReply.Cmd,m_NAtagCGChampionshipOfficialApplyReply.SubCmd))] = m_NAtagCGChampionshipOfficialApplyReply
-
-
-#------------------------------------------------------
-# C0 23 跨服排位仙官挑战记录查询 #tagCGChampionshipOfficialChallengeQuery
-
-class  tagCGChampionshipOfficialChallengeQuery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MainOfficialID", c_ushort),    #界主官职ID
-                  ("OfficialID", c_ushort),    #查询官职ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x23
-        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 = 0x23
-        self.MainOfficialID = 0
-        self.OfficialID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChampionshipOfficialChallengeQuery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 23 跨服排位仙官挑战记录查询 //tagCGChampionshipOfficialChallengeQuery:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MainOfficialID:%d,
-                                OfficialID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MainOfficialID,
-                                self.OfficialID
-                                )
-        return DumpString
-
-
-m_NAtagCGChampionshipOfficialChallengeQuery=tagCGChampionshipOfficialChallengeQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialChallengeQuery.Cmd,m_NAtagCGChampionshipOfficialChallengeQuery.SubCmd))] = m_NAtagCGChampionshipOfficialChallengeQuery
-
-
-#------------------------------------------------------
-# C0 24 跨服排位辞退下级仙官 #tagCGChampionshipOfficialKick
-
-class  tagCGChampionshipOfficialKick(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MainOfficialID", c_ushort),    #界主官职ID
-                  ("OfficialID", c_ushort),    #目标官职ID
-                  ("PlayerID", c_int),    #目标玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        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 = 0xC0
-        self.SubCmd = 0x24
-        self.MainOfficialID = 0
-        self.OfficialID = 0
-        self.PlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChampionshipOfficialKick)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 24 跨服排位辞退下级仙官 //tagCGChampionshipOfficialKick:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MainOfficialID:%d,
-                                OfficialID:%d,
-                                PlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MainOfficialID,
-                                self.OfficialID,
-                                self.PlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGChampionshipOfficialKick=tagCGChampionshipOfficialKick()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialKick.Cmd,m_NAtagCGChampionshipOfficialKick.SubCmd))] = m_NAtagCGChampionshipOfficialKick
-
-
-#------------------------------------------------------
-# C0 25 跨服排位主动离任仙官 #tagCGChampionshipOfficialLeave
-
-class  tagCGChampionshipOfficialLeave(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MainOfficialID", c_ushort),    #界主官职ID
-                  ("OfficialID", c_ushort),    #离任官职ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        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 = 0xC0
-        self.SubCmd = 0x25
-        self.MainOfficialID = 0
-        self.OfficialID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGChampionshipOfficialLeave)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 25 跨服排位主动离任仙官 //tagCGChampionshipOfficialLeave:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MainOfficialID:%d,
-                                OfficialID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MainOfficialID,
-                                self.OfficialID
-                                )
-        return DumpString
-
-
-m_NAtagCGChampionshipOfficialLeave=tagCGChampionshipOfficialLeave()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialLeave.Cmd,m_NAtagCGChampionshipOfficialLeave.SubCmd))] = m_NAtagCGChampionshipOfficialLeave
-
-
-#------------------------------------------------------
-# C0 09 跨服战场召集场次修改 #tagCGCrossBattlefieldCallChange
-
-class  tagCGCrossBattlefieldCallChange(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Hour", c_ubyte),    #战场开启时
-                  ("Minute", c_ubyte),    #战场开启分
-                  ("ServerOnly", c_ubyte),    #是否仅本服玩家可加入,0-否,1-是
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x09
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x09
-        self.Hour = 0
-        self.Minute = 0
-        self.ServerOnly = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCrossBattlefieldCallChange)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 09 跨服战场召集场次修改 //tagCGCrossBattlefieldCallChange:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Hour:%d,
-                                Minute:%d,
-                                ServerOnly:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Hour,
-                                self.Minute,
-                                self.ServerOnly
-                                )
-        return DumpString
-
-
-m_NAtagCGCrossBattlefieldCallChange=tagCGCrossBattlefieldCallChange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallChange.Cmd,m_NAtagCGCrossBattlefieldCallChange.SubCmd))] = m_NAtagCGCrossBattlefieldCallChange
-
-
-#------------------------------------------------------
-# C0 08 跨服战场召集场次踢人 #tagCGCrossBattlefieldCallKick
-
-class  tagCGCrossBattlefieldCallKick(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Hour", c_ubyte),    #战场开启时
-                  ("Minute", c_ubyte),    #战场开启分
-                  ("TagPlayerID", c_int),    #目标玩家ID,即要被踢出去的玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x08
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x08
-        self.Hour = 0
-        self.Minute = 0
-        self.TagPlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCrossBattlefieldCallKick)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 08 跨服战场召集场次踢人 //tagCGCrossBattlefieldCallKick:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Hour:%d,
-                                Minute:%d,
-                                TagPlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Hour,
-                                self.Minute,
-                                self.TagPlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGCrossBattlefieldCallKick=tagCGCrossBattlefieldCallKick()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallKick.Cmd,m_NAtagCGCrossBattlefieldCallKick.SubCmd))] = m_NAtagCGCrossBattlefieldCallKick
-
-
-#------------------------------------------------------
-# C0 07 跨服战场加入召集场次 #tagCGCrossBattlefieldJoinByCall
-
-class  tagCGCrossBattlefieldJoinByCall(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Hour", c_ubyte),    #战场开启时
-                  ("Minute", c_ubyte),    #战场开启分
-                  ("BuyPlayerID", c_int),    #加入目标玩家的召集队伍,即购买召集场的玩家ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x07
-        self.Hour = 0
-        self.Minute = 0
-        self.BuyPlayerID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGCrossBattlefieldJoinByCall)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 07 跨服战场加入召集场次 //tagCGCrossBattlefieldJoinByCall:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Hour:%d,
-                                Minute:%d,
-                                BuyPlayerID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Hour,
-                                self.Minute,
-                                self.BuyPlayerID
-                                )
-        return DumpString
-
-
-m_NAtagCGCrossBattlefieldJoinByCall=tagCGCrossBattlefieldJoinByCall()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldJoinByCall.Cmd,m_NAtagCGCrossBattlefieldJoinByCall.SubCmd))] = m_NAtagCGCrossBattlefieldJoinByCall
-
-
-#------------------------------------------------------
-# C0 26 仙盟攻城战查询 #tagCGFamilyGCZQuery
-
-class  tagCGFamilyGCZQuery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("QueryType", c_ubyte),    #查询类型:1-成员捐献值;2-进入城池场景;3-退出城池场景;4-进入城池;5-退出城池;6-战报;7-分组仙盟成员伤害;
-                  ("BatType", c_ubyte),    #指定战场类型,需要发送的查询类型: 2、4
-                  ("GroupNum", c_ubyte),    #指定分组编号,需要发送的查询类型: 2、4
-                  ("FamilyID", c_int),    #指定仙盟ID或城池ID,查自己盟的可不发,需要发的类型:2、4、6、7
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x26
-        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 = 0x26
-        self.QueryType = 0
-        self.BatType = 0
-        self.GroupNum = 0
-        self.FamilyID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGFamilyGCZQuery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 26 仙盟攻城战查询 //tagCGFamilyGCZQuery:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                QueryType:%d,
-                                BatType:%d,
-                                GroupNum:%d,
-                                FamilyID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.QueryType,
-                                self.BatType,
-                                self.GroupNum,
-                                self.FamilyID
-                                )
-        return DumpString
-
-
-m_NAtagCGFamilyGCZQuery=tagCGFamilyGCZQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyGCZQuery.Cmd,m_NAtagCGFamilyGCZQuery.SubCmd))] = m_NAtagCGFamilyGCZQuery
-
-
-#------------------------------------------------------
-# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
-
-class  tagCGForceQuitCrossState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x03
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGForceQuitCrossState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 03 强制退出跨服状态 //tagCGForceQuitCrossState:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
-
-
-#------------------------------------------------------
-# 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):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    #榜单类型
-                  ("GroupValue1", c_int),    # 分组值1
-                  ("GroupValue2", c_int),    # 分组值2,与分组值1组合归为同组榜单数据
-                  ("StartIndex", c_int),    #查看的起始名次索引, 默认0
-                  ("WatchCnt", c_ubyte),    #查看条数,默认20,最大不超过100
-                  ("WatchID", c_int),    #查看指定ID名次前后,如玩家ID、家族ID等
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x04
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x04
-        self.Type = 0
-        self.GroupValue1 = 0
-        self.GroupValue2 = 0
-        self.StartIndex = 0
-        self.WatchCnt = 0
-        self.WatchID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewCrossBillboard)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d,
-                                GroupValue1:%d,
-                                GroupValue2:%d,
-                                StartIndex:%d,
-                                WatchCnt:%d,
-                                WatchID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type,
-                                self.GroupValue1,
-                                self.GroupValue2,
-                                self.StartIndex,
-                                self.WatchCnt,
-                                self.WatchID
-                                )
-        return DumpString
-
-
-m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
-
-
-#------------------------------------------------------
-# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
-
-class  tagCGViewCrossPKBillboard(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ZoneID", c_ubyte),    # 赛区ID	
-                  ("SeasonID", c_ubyte),    # 赛季ID	
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        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 = 0xC0
-        self.SubCmd = 0x01
-        self.ZoneID = 0
-        self.SeasonID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewCrossPKBillboard)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 01 查看跨服竞技场赛季排行榜 //tagCGViewCrossPKBillboard:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ZoneID:%d,
-                                SeasonID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ZoneID,
-                                self.SeasonID
-                                )
-        return DumpString
-
-
-m_NAtagCGViewCrossPKBillboard=tagCGViewCrossPKBillboard()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPKBillboard.Cmd,m_NAtagCGViewCrossPKBillboard.SubCmd))] = m_NAtagCGViewCrossPKBillboard
-
-
-#------------------------------------------------------
-# C0 02 查看跨服玩家信息 #tagCGViewCrossPlayerInfo
-
-class  tagCGViewCrossPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    # 跨服玩家ID
-                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC0
-        self.SubCmd = 0x02
-        self.PlayerID = 0
-        self.EquipClassLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGViewCrossPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PlayerID:%d,
-                                EquipClassLV:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PlayerID,
-                                self.EquipClassLV
-                                )
-        return DumpString
-
-
-m_NAtagCGViewCrossPlayerInfo=tagCGViewCrossPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPlayerInfo.Cmd,m_NAtagCGViewCrossPlayerInfo.SubCmd))] = m_NAtagCGViewCrossPlayerInfo
-
-
-#------------------------------------------------------
 # A1 21 转职业 #tagCMChangeJob
 
 class  tagCMChangeJob(Structure):
@@ -9804,6 +4737,757 @@
 
 m_NAtagCMWingUp=tagCMWingUp()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
+
+
+#------------------------------------------------------
+#A4 06 变更家族成员加入审核方式#tagCGChangeFamilyAcceptJoinType
+
+class  tagCGChangeFamilyAcceptJoinType(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Type", c_ubyte),    #0 默认需要审核,1 自动同意申请,2 拒绝申请
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        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 = 0xA4
+        self.SubCmd = 0x06
+        self.Type = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChangeFamilyAcceptJoinType)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A4 06 变更家族成员加入审核方式//tagCGChangeFamilyAcceptJoinType:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Type:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Type
+                                )
+        return DumpString
+
+
+m_NAtagCGChangeFamilyAcceptJoinType=tagCGChangeFamilyAcceptJoinType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyAcceptJoinType.Cmd,m_NAtagCGChangeFamilyAcceptJoinType.SubCmd))] = m_NAtagCGChangeFamilyAcceptJoinType
+
+
+#------------------------------------------------------
+# A4 13 修改家族徽章 #tagCGChangeFamilyEmblem
+
+class  tagCGChangeFamilyEmblem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("EmblemID", c_ubyte),    # 更换的徽章ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        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 = 0xA4
+        self.SubCmd = 0x13
+        self.EmblemID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChangeFamilyEmblem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 13 修改家族徽章 //tagCGChangeFamilyEmblem:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                EmblemID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.EmblemID
+                                )
+        return DumpString
+
+
+m_NAtagCGChangeFamilyEmblem=tagCGChangeFamilyEmblem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyEmblem.Cmd,m_NAtagCGChangeFamilyEmblem.SubCmd))] = m_NAtagCGChangeFamilyEmblem
+
+
+#------------------------------------------------------
+# A4 08 查询家族行为信息 #tagCGQueryFamilyAction
+
+class  tagCGQueryFamilyAction(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActionType", c_ubyte),    # 行为类型
+                  ("FamilyID", c_int),    # 家族ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x08
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA4
+        self.SubCmd = 0x08
+        self.ActionType = 0
+        self.FamilyID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryFamilyAction)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 08 查询家族行为信息 //tagCGQueryFamilyAction:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActionType:%d,
+                                FamilyID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActionType,
+                                self.FamilyID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryFamilyAction=tagCGQueryFamilyAction()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryFamilyAction.Cmd,m_NAtagCGQueryFamilyAction.SubCmd))] = m_NAtagCGQueryFamilyAction
+
+
+#------------------------------------------------------
+#A4 07 升级家族#tagCGFamilyLVUp
+
+class  tagCGFamilyLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x07
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA4
+        self.SubCmd = 0x07
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGFamilyLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A4 07 升级家族//tagCGFamilyLVUp:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGFamilyLVUp=tagCGFamilyLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyLVUp.Cmd,m_NAtagCGFamilyLVUp.SubCmd))] = m_NAtagCGFamilyLVUp
+
+
+#------------------------------------------------------
+# A4 09 家族仓库删除物品 #tagCGFamilyStoreDel
+
+class  tagCGFamilyStoreDel(Structure):
+    Head = tagHead()
+    IndexCount = 0    #(BYTE IndexCount)
+    StoreItemIndex = list()    #(vector<BYTE> StoreItemIndex)// 仓库物品索引,1代表索引0的物品,与兑换一致
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x09
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.IndexCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.StoreItemIndex.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x09
+        self.IndexCount = 0
+        self.StoreItemIndex = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1 * self.IndexCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.IndexCount)
+        for i in range(self.IndexCount):
+            data = CommFunc.WriteBYTE(data, self.StoreItemIndex[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                IndexCount:%d,
+                                StoreItemIndex:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.IndexCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCGFamilyStoreDel=tagCGFamilyStoreDel()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyStoreDel.Head.Cmd,m_NAtagCGFamilyStoreDel.Head.SubCmd))] = m_NAtagCGFamilyStoreDel
+
+
+#------------------------------------------------------
+# A4 10 仙盟联赛连胜奖励分配 #tagCGFamilyWarWinRewardAllot
+
+class  tagCGFamilyWarWinRewardAllot(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MemPlayerID", c_int),    #分配给的仙盟成员玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        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 = 0xA4
+        self.SubCmd = 0x10
+        self.MemPlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGFamilyWarWinRewardAllot)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 10 仙盟联赛连胜奖励分配 //tagCGFamilyWarWinRewardAllot:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MemPlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MemPlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGFamilyWarWinRewardAllot=tagCGFamilyWarWinRewardAllot()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyWarWinRewardAllot.Cmd,m_NAtagCGFamilyWarWinRewardAllot.SubCmd))] = m_NAtagCGFamilyWarWinRewardAllot
+
+
+#------------------------------------------------------
+#A4 03 加入家族审核情况 #tagCGJoinFamilyReply
+
+class  tagCGJoinFamilyReply(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagPlayerID", c_int),    #被审核玩家ID 0则代表全部
+                  ("IsOK", c_ubyte),    #是否同意加入
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA4
+        self.SubCmd = 0x03
+        self.TagPlayerID = 0
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGJoinFamilyReply)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A4 03 加入家族审核情况 //tagCGJoinFamilyReply:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagPlayerID:%d,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagPlayerID,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagCGJoinFamilyReply=tagCGJoinFamilyReply()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinFamilyReply.Cmd,m_NAtagCGJoinFamilyReply.SubCmd))] = m_NAtagCGJoinFamilyReply
+
+
+#------------------------------------------------------
+# A4 11 一键申请入盟 #tagCGOneKeyJoinFamily
+
+class  tagCGOneKeyJoinFamily(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x11
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA4
+        self.SubCmd = 0x11
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGOneKeyJoinFamily)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 11 一键申请入盟 //tagCGOneKeyJoinFamily:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGOneKeyJoinFamily=tagCGOneKeyJoinFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGOneKeyJoinFamily.Cmd,m_NAtagCGOneKeyJoinFamily.SubCmd))] = m_NAtagCGOneKeyJoinFamily
+
+
+#------------------------------------------------------
+# A4 04 创建家族 #tagCGPyCreatFamily
+
+class  tagCGPyCreatFamily(Structure):
+    Head = tagHead()
+    Name = ""    #(char Name[33])
+    FakeID = 0    #(WORD FakeID)//假仙盟编号
+    EmblemID = 0    #(BYTE EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.FakeID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x04
+        self.Name = ""
+        self.FakeID = 0
+        self.EmblemID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 33
+        length += 2
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 33, self.Name)
+        data = CommFunc.WriteWORD(data, self.FakeID)
+        data = CommFunc.WriteBYTE(data, self.EmblemID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Name:%s,
+                                FakeID:%d,
+                                EmblemID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Name,
+                                self.FakeID,
+                                self.EmblemID
+                                )
+        return DumpString
+
+
+m_NAtagCGPyCreatFamily=tagCGPyCreatFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPyCreatFamily.Head.Cmd,m_NAtagCGPyCreatFamily.Head.SubCmd))] = m_NAtagCGPyCreatFamily
+
+
+#------------------------------------------------------
+# A4 12 搜索家族 #tagCGPySearchFamily
+
+class  tagCGPySearchFamily(Structure):
+    Head = tagHead()
+    MsgLen = 0    #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
+    Msg = ""    #(String Msg)//size = MsgLen
+    LV = 0    #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
+    MaxCount = 0    #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
+    IsSearching = 0    #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
+        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        self.MsgLen = 0
+        self.Msg = ""
+        self.LV = 0
+        self.MaxCount = 0
+        self.IsSearching = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += len(self.Msg)
+        length += 1
+        length += 1
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.MsgLen)
+        data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
+        data = CommFunc.WriteBYTE(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.MaxCount)
+        data = CommFunc.WriteBYTE(data, self.IsSearching)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                MsgLen:%d,
+                                Msg:%s,
+                                LV:%d,
+                                MaxCount:%d,
+                                IsSearching:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.MsgLen,
+                                self.Msg,
+                                self.LV,
+                                self.MaxCount,
+                                self.IsSearching
+                                )
+        return DumpString
+
+
+m_NAtagCGPySearchFamily=tagCGPySearchFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
+
+
+#------------------------------------------------------
+#A4 01  查看家族第N页#tagCGViewFamilyPage
+
+class  tagCGViewFamilyPage(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PageIndex", c_ushort),    #查询页数
+                  ("ShowCount", c_ubyte),    #每页显示数量
+                  ("SortRulex", c_ubyte),    #排序规则
+                  ("ViewType", c_ubyte),    #查看类型
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        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 = 0xA4
+        self.SubCmd = 0x01
+        self.PageIndex = 0
+        self.ShowCount = 0
+        self.SortRulex = 0
+        self.ViewType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewFamilyPage)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A4 01  查看家族第N页//tagCGViewFamilyPage:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PageIndex:%d,
+                                ShowCount:%d,
+                                SortRulex:%d,
+                                ViewType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PageIndex,
+                                self.ShowCount,
+                                self.SortRulex,
+                                self.ViewType
+                                )
+        return DumpString
+
+
+m_NAtagCGViewFamilyPage=tagCGViewFamilyPage()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewFamilyPage.Cmd,m_NAtagCGViewFamilyPage.SubCmd))] = m_NAtagCGViewFamilyPage
+
+
+#------------------------------------------------------
+#A4 02  查看申请入会的玩家 #tagCGViewFamilyRequestInfo
+
+class  tagCGViewFamilyRequestInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA4
+        self.SubCmd = 0x02
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewFamilyRequestInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A4 02  查看申请入会的玩家 //tagCGViewFamilyRequestInfo:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGViewFamilyRequestInfo=tagCGViewFamilyRequestInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewFamilyRequestInfo.Cmd,m_NAtagCGViewFamilyRequestInfo.SubCmd))] = m_NAtagCGViewFamilyRequestInfo
+
+
+#------------------------------------------------------
+# A4 14 查看目标仙盟 #tagCGViewTagFamily
+
+class  tagCGViewTagFamily(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagFamilyID", c_int),    # 目标仙盟ID,支持查看跨服仙盟
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        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 = 0xA4
+        self.SubCmd = 0x14
+        self.TagFamilyID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewTagFamily)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 14 查看目标仙盟 //tagCGViewTagFamily:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagFamilyID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagFamilyID
+                                )
+        return DumpString
+
+
+m_NAtagCGViewTagFamily=tagCGViewTagFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewTagFamily.Cmd,m_NAtagCGViewTagFamily.SubCmd))] = m_NAtagCGViewTagFamily
 
 
 #------------------------------------------------------
@@ -16469,6 +12153,829 @@
 
 
 #------------------------------------------------------
+# A9 03 关注BOSS刷新 #tagCGAttentionBoss
+
+class  tagCGAttentionBoss(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("IsAdd", c_ubyte),    #0-取消关注, 1-关注
+                  ("BossID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA9
+        self.SubCmd = 0x03
+        self.IsAdd = 0
+        self.BossID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGAttentionBoss)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 03 关注BOSS刷新 //tagCGAttentionBoss:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                IsAdd:%d,
+                                BossID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.IsAdd,
+                                self.BossID
+                                )
+        return DumpString
+
+
+m_NAtagCGAttentionBoss=tagCGAttentionBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionBoss.Cmd,m_NAtagCGAttentionBoss.SubCmd))] = m_NAtagCGAttentionBoss
+
+
+#------------------------------------------------------
+# A9 02 渡劫护法 #tagCGRealmFBHelp
+
+class  tagCGRealmFBHelp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    #护法目标ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA9
+        self.SubCmd = 0x02
+        self.PlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGRealmFBHelp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 02 渡劫护法 //tagCGRealmFBHelp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGRealmFBHelp=tagCGRealmFBHelp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRealmFBHelp.Cmd,m_NAtagCGRealmFBHelp.SubCmd))] = m_NAtagCGRealmFBHelp
+
+
+#------------------------------------------------------
+# A9 A2 查看排行榜#tagCPYWatchBillboard
+
+class  tagCPYWatchBillboard(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Type", c_ubyte),    #类型 TBillboardType
+                  ("StartIndex", c_int),    #查看的起始名次索引, 默认0
+                  ("WatchCnt", c_ubyte),    #查看条数,默认20,最大不超过100
+                  ("WatchID", c_int),    #查看指定ID名次前后,如玩家ID、家族ID等
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0xA2
+        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 = 0xA2
+        self.Type = 0
+        self.StartIndex = 0
+        self.WatchCnt = 0
+        self.WatchID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCPYWatchBillboard)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 A2 查看排行榜//tagCPYWatchBillboard:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Type:%d,
+                                StartIndex:%d,
+                                WatchCnt:%d,
+                                WatchID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Type,
+                                self.StartIndex,
+                                self.WatchCnt,
+                                self.WatchID
+                                )
+        return DumpString
+
+
+m_NAtagCPYWatchBillboard=tagCPYWatchBillboard()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCPYWatchBillboard.Cmd,m_NAtagCPYWatchBillboard.SubCmd))] = m_NAtagCPYWatchBillboard
+
+
+#------------------------------------------------------
+# A9 A4 查找玩家 #tagCGFuzzySearchPlayer
+
+class  tagCGFuzzySearchPlayer(Structure):
+    Head = tagHead()
+    Name = ""    #(char Name[33])
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA4
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA4
+        self.Name = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 33
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 33, self.Name)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Name:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Name
+                                )
+        return DumpString
+
+
+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
+
+
+#------------------------------------------------------
+# A9 07 点赞仙宫 #tagCGLikeXiangong
+
+class  tagCGLikeXiangong(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("XiangongID", c_ushort),    # 仙宫ID,为0时代表每日的仙宫点赞
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0x07
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA9
+        self.SubCmd = 0x07
+        self.XiangongID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGLikeXiangong)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                XiangongID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.XiangongID
+                                )
+        return DumpString
+
+
+m_NAtagCGLikeXiangong=tagCGLikeXiangong()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
+
+
+#------------------------------------------------------
+# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
+
+class  tagCGQueryArenaBattlePlayer(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    #目标玩家ID,仅支持查真实玩家
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0xA5
+        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 = 0xA5
+        self.PlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryArenaBattlePlayer)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 A5 查看竞技场对战玩家最新信息 //tagCGQueryArenaBattlePlayer:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryArenaBattlePlayer=tagCGQueryArenaBattlePlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattlePlayer.Cmd,m_NAtagCGQueryArenaBattlePlayer.SubCmd))] = m_NAtagCGQueryArenaBattlePlayer
+
+
+#------------------------------------------------------
+# A9 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord
+
+class  tagCGQueryArenaBattleRecord(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0xA8
+        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 = 0xA8
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryArenaBattleRecord)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 A8 查看竞技场对战记录 //tagCGQueryArenaBattleRecord:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryArenaBattleRecord=tagCGQueryArenaBattleRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattleRecord.Cmd,m_NAtagCGQueryArenaBattleRecord.SubCmd))] = m_NAtagCGQueryArenaBattleRecord
+
+
+#------------------------------------------------------
+# A9 04 查询boss信息 #tagCGQueryBossInfo
+
+class  tagCGQueryBossInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)//数量
+    BossIDList = list()    #(vector<DWORD> BossIDList)//boosid
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.BossIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x04
+        self.Count = 0
+        self.BossIDList = 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.BossIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                BossIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryBossInfo=tagCGQueryBossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryBossInfo.Head.Cmd,m_NAtagCGQueryBossInfo.Head.SubCmd))] = m_NAtagCGQueryBossInfo
+
+
+#------------------------------------------------------
+#A9 A1 查询玩家补偿#tagCGQueryCompensation
+
+class  tagCGQueryCompensation(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0xA1
+        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 = 0xA1
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryCompensation)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//A9 A1 查询玩家补偿//tagCGQueryCompensation:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryCompensation=tagCGQueryCompensation()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryCompensation.Cmd,m_NAtagCGQueryCompensation.SubCmd))] = m_NAtagCGQueryCompensation
+
+
+#------------------------------------------------------
+# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
+
+class  tagCGQueryNotifyEquipDetailInfo(Structure):
+    Head = tagHead()
+    ItemGUID = ""    #(char ItemGUID[40])
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x05
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x05
+        self.ItemGUID = ""
+        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.ItemGUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ItemGUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ItemGUID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
+# A9 A3 查看推荐好友 #tagCGQueryRecommendFriends
+
+class  tagCGQueryRecommendFriends(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0xA3
+        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 = 0xA3
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryRecommendFriends)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 A3 查看推荐好友 //tagCGQueryRecommendFriends:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends
+
+
+#------------------------------------------------------
+# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
+
+class  tagCGQueryXiangongRecPlayers(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("XiangongID", c_ushort),    # 仙宫ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA9
+        self.SubCmd = 0x06
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA9
+        self.SubCmd = 0x06
+        self.XiangongID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryXiangongRecPlayers)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                XiangongID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.XiangongID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
+
+
+#------------------------------------------------------
+#A9 A6 设置邮件(补偿)已读状态 #tagCGReadCompensation
+
+class  tagCGReadCompensation(Structure):
+    Head = tagHead()
+    GUID = ""    #(char GUID[40])
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA6
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA6
+        self.GUID = ""
+        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.GUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                GUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.GUID
+                                )
+        return DumpString
+
+
+m_NAtagCGReadCompensation=tagCGReadCompensation()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGReadCompensation.Head.Cmd,m_NAtagCGReadCompensation.Head.SubCmd))] = m_NAtagCGReadCompensation
+
+
+#------------------------------------------------------
+#A9 A7 删除邮件(补偿) #tagCGDelCompensation
+
+class  tagCGDelCompensation(Structure):
+    Head = tagHead()
+    GUID = ""    #(char GUID[40])
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA7
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0xA7
+        self.GUID = ""
+        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.GUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                GUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.GUID
+                                )
+        return DumpString
+
+
+m_NAtagCGDelCompensation=tagCGDelCompensation()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDelCompensation.Head.Cmd,m_NAtagCGDelCompensation.Head.SubCmd))] = m_NAtagCGDelCompensation
+
+
+#------------------------------------------------------
 # AA 24 Boss历练领奖 #tagCMActBossTrialGetAward
 
 class  tagCMActBossTrialGetAward(Structure):
@@ -17954,6 +14461,280 @@
 
 
 #------------------------------------------------------
+# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
+
+class  tagCGCallupFamilyMemberToBoss(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("NPCID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAC
+        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 = 0xAC
+        self.SubCmd = 0x05
+        self.NPCID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCallupFamilyMemberToBoss)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                NPCID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.NPCID
+                                )
+        return DumpString
+
+
+m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
+
+
+#------------------------------------------------------
+# AC 02 仙魔之争战斗结束 #tagCGXMZZOver
+
+class  tagCGXMZZOver(Structure):
+    Head = tagHead()
+    IsWin = 0    #(BYTE IsWin)//是否胜利
+    IsEnd = 0    #(BYTE IsEnd)//是否结束
+    HPPer = 0    #(BYTE HPPer)//剩余血量百分比
+    VSName = ""    #(char VSName[33])//对手名字
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAC
+        self.Head.SubCmd = 0x02
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IsEnd,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.HPPer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.VSName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAC
+        self.Head.SubCmd = 0x02
+        self.IsWin = 0
+        self.IsEnd = 0
+        self.HPPer = 0
+        self.VSName = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 1
+        length += 33
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.IsWin)
+        data = CommFunc.WriteBYTE(data, self.IsEnd)
+        data = CommFunc.WriteBYTE(data, self.HPPer)
+        data = CommFunc.WriteString(data, 33, self.VSName)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                IsWin:%d,
+                                IsEnd:%d,
+                                HPPer:%d,
+                                VSName:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.IsWin,
+                                self.IsEnd,
+                                self.HPPer,
+                                self.VSName
+                                )
+        return DumpString
+
+
+m_NAtagCGXMZZOver=tagCGXMZZOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZOver.Head.Cmd,m_NAtagCGXMZZOver.Head.SubCmd))] = m_NAtagCGXMZZOver
+
+
+#------------------------------------------------------
+# AC 01 仙魔之争报名 #tagCGJoinXMZZ
+
+class  tagCGJoinXMZZ(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAC
+        self.SubCmd = 0x01
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAC
+        self.SubCmd = 0x01
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGJoinXMZZ)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AC 01 仙魔之争报名 //tagCGJoinXMZZ:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGJoinXMZZ=tagCGJoinXMZZ()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinXMZZ.Cmd,m_NAtagCGJoinXMZZ.SubCmd))] = m_NAtagCGJoinXMZZ
+
+
+#------------------------------------------------------
+# AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
+
+class  tagCGQueryAllFamilyBossHurt(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAC
+        self.SubCmd = 0x04
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAC
+        self.SubCmd = 0x04
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryAllFamilyBossHurt)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AC 04 查询仙盟抢Boss所有Boss当前进度 //tagCGQueryAllFamilyBossHurt:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryAllFamilyBossHurt=tagCGQueryAllFamilyBossHurt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAllFamilyBossHurt.Cmd,m_NAtagCGQueryAllFamilyBossHurt.SubCmd))] = m_NAtagCGQueryAllFamilyBossHurt
+
+
+#------------------------------------------------------
+# AC 03 仙魔之争信息查询 #tagCGXMZZInfoQuery
+
+class  tagCGXMZZInfoQuery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAC
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAC
+        self.SubCmd = 0x03
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGXMZZInfoQuery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AC 03 仙魔之争信息查询 //tagCGXMZZInfoQuery:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGXMZZInfoQuery=tagCGXMZZInfoQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZInfoQuery.Cmd,m_NAtagCGXMZZInfoQuery.SubCmd))] = m_NAtagCGXMZZInfoQuery
+
+
+#------------------------------------------------------
 # AF 01 领取合服当天登陆奖励 # tagCMGetMixLoginDayAward
 
 class  tagCMGetMixLoginDayAward(Structure):
@@ -18214,6 +14995,63 @@
 
 
 #------------------------------------------------------
+# 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 50 钓鱼收杆 #tagCMDoFish
 
 class  tagCMDoFish(Structure):
@@ -18267,6 +15105,162 @@
 
 m_NAtagCMDoFish=tagCMDoFish()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDoFish.Cmd,m_NAtagCMDoFish.SubCmd))] = m_NAtagCMDoFish
+
+
+#------------------------------------------------------
+# 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 34 福地请求结算奖励 #tagCGMineAreaAwardGet
+
+class  tagCGMineAreaAwardGet(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB0
+        self.SubCmd = 0x34
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB0
+        self.SubCmd = 0x34
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGMineAreaAwardGet)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B0 34 福地请求结算奖励 //tagCGMineAreaAwardGet:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGMineAreaAwardGet=tagCGMineAreaAwardGet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaAwardGet.Cmd,m_NAtagCGMineAreaAwardGet.SubCmd))] = m_NAtagCGMineAreaAwardGet
+
+
+#------------------------------------------------------
+# B0 33 福地查看 #tagCGMineAreaView
+
+class  tagCGMineAreaView(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("QueryType", c_ubyte),    # 查询同步类型:0-后端主动同步;1-查看指定福地;2-查看道友福地列表;3-查看周围随机福地列表;4-退出他人福地;5-查看记录
+                  ("QueryValue", c_int),    # 查询值,类型1时-发送目标玩家ID;3时-发送是否重新随机
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB0
+        self.SubCmd = 0x33
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB0
+        self.SubCmd = 0x33
+        self.QueryType = 0
+        self.QueryValue = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGMineAreaView)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B0 33 福地查看 //tagCGMineAreaView:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                QueryType:%d,
+                                QueryValue:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.QueryType,
+                                self.QueryValue
+                                )
+        return DumpString
+
+
+m_NAtagCGMineAreaView=tagCGMineAreaView()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaView.Cmd,m_NAtagCGMineAreaView.SubCmd))] = m_NAtagCGMineAreaView
 
 
 #------------------------------------------------------
@@ -18530,6 +15524,54 @@
 
 
 #------------------------------------------------------
+#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):
@@ -18694,6 +15736,119 @@
 
 
 #------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
 # B0 05 开始世界传送 #tagCMWorldTransfer
 
 class  tagCMWorldTransfer(Structure):
@@ -18763,6 +15918,66 @@
 
 m_NAtagCMWorldTransfer=tagCMWorldTransfer()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWorldTransfer.Cmd,m_NAtagCMWorldTransfer.SubCmd))] = m_NAtagCMWorldTransfer
+
+
+#------------------------------------------------------
+# B0 20 请求膜拜玩家 #tagCGWorship
+
+class  tagCGWorship(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 目标玩家ID
+                  ("WorshipType", c_ubyte),    # 膜拜类型
+                  ("WorshipValue", c_int),    # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB0
+        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 = 0xB0
+        self.SubCmd = 0x20
+        self.PlayerID = 0
+        self.WorshipType = 0
+        self.WorshipValue = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGWorship)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B0 20 请求膜拜玩家 //tagCGWorship:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d,
+                                WorshipType:%d,
+                                WorshipValue:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID,
+                                self.WorshipType,
+                                self.WorshipValue
+                                )
+        return DumpString
+
+
+m_NAtagCGWorship=tagCGWorship()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGWorship.Cmd,m_NAtagCGWorship.SubCmd))] = m_NAtagCGWorship
 
 
 #------------------------------------------------------
@@ -20324,6 +17539,114 @@
 
 
 #------------------------------------------------------
+# B3 19 提升魅力等级 #tagCGCharmLVUp
+
+class  tagCGCharmLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x19
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x19
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCharmLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGCharmLVUp=tagCGCharmLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
+
+
+#------------------------------------------------------
+# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
+
+class  tagCGCharmOfferBillboardQuery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 魅力玩家ID
+                  ("QueryType", c_ubyte),    # 查看类型: 1-总榜,2-周榜,3-日榜
+                  ("QueryCount", c_ubyte),    # 查看名次数量,最大255
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x09
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x09
+        self.PlayerID = 0
+        self.QueryType = 0
+        self.QueryCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCharmOfferBillboardQuery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d,
+                                QueryType:%d,
+                                QueryCount:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID,
+                                self.QueryType,
+                                self.QueryCount
+                                )
+        return DumpString
+
+
+m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
+
+
+#------------------------------------------------------
 # B3 17 情戒解锁 #tagCMLoveRingUnlock
 
 class  tagCMLoveRingUnlock(Structure):
@@ -20473,6 +17796,58 @@
 
 m_NAtagCMMarryBreak=tagCMMarryBreak()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
+
+
+#------------------------------------------------------
+# B3 16 和平离婚回应 #tagGCMarryBreakResponse
+
+class  tagGCMarryBreakResponse(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x16
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x16
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCMarryBreakResponse)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
 
 
 #------------------------------------------------------
@@ -20644,6 +18019,62 @@
 
 
 #------------------------------------------------------
+# B3 12 提亲回应 #tagCGMarryResponse
+
+class  tagCGMarryResponse(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ReqPlayerID", c_int),    # 提亲的玩家ID
+                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x12
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x12
+        self.ReqPlayerID = 0
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGMarryResponse)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ReqPlayerID:%d,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ReqPlayerID,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagCGMarryResponse=tagCGMarryResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
+
+
+#------------------------------------------------------
 # B3 10 送礼物 #tagCMSendGifts
 
 class  tagCMSendGifts(Structure):
@@ -20705,6 +18136,334 @@
 
 m_NAtagCMSendGifts=tagCMSendGifts()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
+
+
+#------------------------------------------------------
+#B3 04 加入黑名单 #tagCGAddBlackList
+
+class  tagCGAddBlackList(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagID", c_int),    #玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x04
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x04
+        self.TagID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGAddBlackList)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B3 04 加入黑名单 //tagCGAddBlackList:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagID
+                                )
+        return DumpString
+
+
+m_NAtagCGAddBlackList=tagCGAddBlackList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAddBlackList.Cmd,m_NAtagCGAddBlackList.SubCmd))] = m_NAtagCGAddBlackList
+
+
+#------------------------------------------------------
+#B3 01 添加好友#tagCGAddFriend
+
+class  tagCGAddFriend(Structure):
+    Head = tagHead()
+    TagName = ""    #(char TagName[33])//玩家名称
+    TagID = 0    #(DWORD TagID)//玩家ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x01
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.TagName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x01
+        self.TagName = ""
+        self.TagID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 33
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 33, self.TagName)
+        data = CommFunc.WriteDWORD(data, self.TagID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                TagName:%s,
+                                TagID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.TagName,
+                                self.TagID
+                                )
+        return DumpString
+
+
+m_NAtagCGAddFriend=tagCGAddFriend()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAddFriend.Head.Cmd,m_NAtagCGAddFriend.Head.SubCmd))] = m_NAtagCGAddFriend
+
+
+#------------------------------------------------------
+#B3 05 移除黑名单 #tagCGDelBlackList
+
+class  tagCGDelBlackList(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x05
+        self.TagID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGDelBlackList)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B3 05 移除黑名单 //tagCGDelBlackList:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagID
+                                )
+        return DumpString
+
+
+m_NAtagCGDelBlackList=tagCGDelBlackList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDelBlackList.Cmd,m_NAtagCGDelBlackList.SubCmd))] = m_NAtagCGDelBlackList
+
+
+#------------------------------------------------------
+#B3 02 删除好友#tagCGDeleteFriend
+
+class  tagCGDeleteFriend(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("FriendID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x02
+        self.FriendID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGDeleteFriend)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B3 02 删除好友//tagCGDeleteFriend:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                FriendID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.FriendID
+                                )
+        return DumpString
+
+
+m_NAtagCGDeleteFriend=tagCGDeleteFriend()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGDeleteFriend.Cmd,m_NAtagCGDeleteFriend.SubCmd))] = m_NAtagCGDeleteFriend
+
+
+#------------------------------------------------------
+#B3 06 查询玩家的简短信息 #tagCGViewPlayerShortInfo
+
+class  tagCGViewPlayerShortInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x06
+        self.PlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewPlayerShortInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B3 06 查询玩家的简短信息 //tagCGViewPlayerShortInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGViewPlayerShortInfo=tagCGViewPlayerShortInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewPlayerShortInfo.Cmd,m_NAtagCGViewPlayerShortInfo.SubCmd))] = m_NAtagCGViewPlayerShortInfo
+
+
+#------------------------------------------------------
+#B3 03 是否允许加入好友的回应#tagCGJoinFriendAnswer
+
+class  tagCGJoinFriendAnswer(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagID", c_int),    
+                  ("Answer", c_ubyte),    #0: 拒绝 1: 接受
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x03
+        self.TagID = 0
+        self.Answer = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGJoinFriendAnswer)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B3 03 是否允许加入好友的回应//tagCGJoinFriendAnswer:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagID:%d,
+                                Answer:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagID,
+                                self.Answer
+                                )
+        return DumpString
+
+
+m_NAtagCGJoinFriendAnswer=tagCGJoinFriendAnswer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinFriendAnswer.Cmd,m_NAtagCGJoinFriendAnswer.SubCmd))] = m_NAtagCGJoinFriendAnswer
 
 
 #------------------------------------------------------
@@ -21963,6 +19722,520 @@
 
 
 #------------------------------------------------------
+# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
+
+class  tagCGAttentionAuctionItemChange(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ItemID", c_int),    
+                  ("IsAttention", c_ubyte),    #是否关注,取消关注发0
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB5
+        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 = 0xB5
+        self.SubCmd = 0x18
+        self.ItemID = 0
+        self.IsAttention = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGAttentionAuctionItemChange)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ItemID:%d,
+                                IsAttention:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ItemID,
+                                self.IsAttention
+                                )
+        return DumpString
+
+
+m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
+
+
+#------------------------------------------------------
+# B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
+
+class  tagCGPYQueryBourseItemOnSale(Structure):
+    Head = tagHead()
+    QueryType = 0    #(DWORD QueryType)//查询的分类标识
+    ItemName = ""    #(char ItemName[33])//物品名(模糊查询)
+    ItemID = 0    #(DWORD ItemID)//物品ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x03
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.QueryType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ItemName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x03
+        self.QueryType = 0
+        self.ItemName = ""
+        self.ItemID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 33
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.QueryType)
+        data = CommFunc.WriteString(data, 33, self.ItemName)
+        data = CommFunc.WriteDWORD(data, self.ItemID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                QueryType:%d,
+                                ItemName:%s,
+                                ItemID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.QueryType,
+                                self.ItemName,
+                                self.ItemID
+                                )
+        return DumpString
+
+
+m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale
+
+
+#------------------------------------------------------
+# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
+
+class  tagCGQueryAttentionAuctionItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB5
+        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 = 0xB5
+        self.SubCmd = 0x16
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryAttentionAuctionItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
+
+
+#------------------------------------------------------
+# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
+
+class  tagCGQueryAuctionItem(Structure):
+    Head = tagHead()
+    Job = 0    #(BYTE Job)//过滤职业,0为不限制
+    ItemTypeCount = 0    #(BYTE ItemTypeCount)
+    ItemTypeList = list()    #(vector<DWORD> ItemTypeList)//指定的物品类型
+    ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
+    SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
+    SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
+    FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
+    QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
+    QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x10
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemTypeCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ItemTypeList.append(value)
+        self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.SpecItemIDCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.SpecItemIDList.append(value)
+        self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x10
+        self.Job = 0
+        self.ItemTypeCount = 0
+        self.ItemTypeList = list()
+        self.ClassLV = 0
+        self.SpecItemIDCount = 0
+        self.SpecItemIDList = list()
+        self.FromItemGUID = ""
+        self.QueryDir = 0
+        self.QueryCount = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 4 * self.ItemTypeCount
+        length += 1
+        length += 1
+        length += 4 * self.SpecItemIDCount
+        length += 40
+        length += 1
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
+        for i in range(self.ItemTypeCount):
+            data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
+        data = CommFunc.WriteBYTE(data, self.ClassLV)
+        data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
+        for i in range(self.SpecItemIDCount):
+            data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
+        data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+        data = CommFunc.WriteBYTE(data, self.QueryDir)
+        data = CommFunc.WriteBYTE(data, self.QueryCount)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Job:%d,
+                                ItemTypeCount:%d,
+                                ItemTypeList:%s,
+                                ClassLV:%d,
+                                SpecItemIDCount:%d,
+                                SpecItemIDList:%s,
+                                FromItemGUID:%s,
+                                QueryDir:%d,
+                                QueryCount:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Job,
+                                self.ItemTypeCount,
+                                "...",
+                                self.ClassLV,
+                                self.SpecItemIDCount,
+                                "...",
+                                self.FromItemGUID,
+                                self.QueryDir,
+                                self.QueryCount
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
+
+
+#------------------------------------------------------
+# B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord
+
+class  tagCGQueryAuctionRecord(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("RecordType", c_ubyte),    #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB5
+        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 = 0xB5
+        self.SubCmd = 0x12
+        self.RecordType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryAuctionRecord)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                RecordType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.RecordType
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord
+
+
+#------------------------------------------------------
+# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
+
+class  tagCGQueryTagAuctionItem(Structure):
+    Head = tagHead()
+    ItemGUID = ""    #(char ItemGUID[40])
+    ItemID = 0    #(DWORD ItemID)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x17
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB5
+        self.Head.SubCmd = 0x17
+        self.ItemGUID = ""
+        self.ItemID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 40
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 40, self.ItemGUID)
+        data = CommFunc.WriteDWORD(data, self.ItemID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ItemGUID:%s,
+                                ItemID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ItemGUID,
+                                self.ItemID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
+
+
+#------------------------------------------------------
+# B9 07 自动匹配队伍或玩家 #tagCGAutoMatchTeam
+
+class  tagCGAutoMatchTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagMapID", c_int),    # 目标地图; 发0代表匹配当前场景的
+                  ("TagMapEx", c_ushort),    # 目标地图扩展
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x07
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x07
+        self.TagMapID = 0
+        self.TagMapEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGAutoMatchTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 07 自动匹配队伍或玩家 //tagCGAutoMatchTeam:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagMapID:%d,
+                                TagMapEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagMapID,
+                                self.TagMapEx
+                                )
+        return DumpString
+
+
+m_NAtagCGAutoMatchTeam=tagCGAutoMatchTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAutoMatchTeam.Cmd,m_NAtagCGAutoMatchTeam.SubCmd))] = m_NAtagCGAutoMatchTeam
+
+
+#------------------------------------------------------
+# B9 08 取消匹配队伍或玩家 #tagCGCancelMatchTeam
+
+class  tagCGCancelMatchTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x08
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x08
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCancelMatchTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 08 取消匹配队伍或玩家 //tagCGCancelMatchTeam:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGCancelMatchTeam=tagCGCancelMatchTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelMatchTeam.Cmd,m_NAtagCGCancelMatchTeam.SubCmd))] = m_NAtagCGCancelMatchTeam
+
+
+#------------------------------------------------------
 # B9 21 修改功能队伍 #tagCMChangeFuncTeam
 
 class  tagCMChangeFuncTeam(Structure):
@@ -22095,6 +20368,70 @@
 
 
 #------------------------------------------------------
+# B9 03 修改队伍信息 #tagCGChangeTeamInfo
+
+class  tagCGChangeTeamInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagMapID", c_int),    # 目标地图
+                  ("TagMapEx", c_ushort),    # 目标地图扩展
+                  ("ReqMinLV", c_ushort),    # 队员最低等级限制
+                  ("ReqMaxLV", c_ushort),    # 队员最高等级限制
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x03
+        self.TagMapID = 0
+        self.TagMapEx = 0
+        self.ReqMinLV = 0
+        self.ReqMaxLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChangeTeamInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 03 修改队伍信息 //tagCGChangeTeamInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagMapID:%d,
+                                TagMapEx:%d,
+                                ReqMinLV:%d,
+                                ReqMaxLV:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagMapID,
+                                self.TagMapEx,
+                                self.ReqMinLV,
+                                self.ReqMaxLV
+                                )
+        return DumpString
+
+
+m_NAtagCGChangeTeamInfo=tagCGChangeTeamInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeTeamInfo.Cmd,m_NAtagCGChangeTeamInfo.SubCmd))] = m_NAtagCGChangeTeamInfo
+
+
+#------------------------------------------------------
 # B9 20 创建功能队伍 #tagCMCreateFuncTeam
 
 class  tagCMCreateFuncTeam(Structure):
@@ -22208,6 +20545,70 @@
 
 
 #------------------------------------------------------
+# B9 01 创建队伍 #tagCGCreateTeam
+
+class  tagCGCreateTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagMapID", c_int),    # 目标地图
+                  ("TagMapEx", c_ushort),    # 目标地图扩展
+                  ("ReqMinLV", c_ushort),    # 队员最低等级限制
+                  ("ReqMaxLV", c_ushort),    # 队员最高等级限制
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        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 = 0xB9
+        self.SubCmd = 0x01
+        self.TagMapID = 0
+        self.TagMapEx = 0
+        self.ReqMinLV = 0
+        self.ReqMaxLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCreateTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 01 创建队伍 //tagCGCreateTeam:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagMapID:%d,
+                                TagMapEx:%d,
+                                ReqMinLV:%d,
+                                ReqMaxLV:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagMapID,
+                                self.TagMapEx,
+                                self.ReqMinLV,
+                                self.ReqMaxLV
+                                )
+        return DumpString
+
+
+m_NAtagCGCreateTeam=tagCGCreateTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCreateTeam.Cmd,m_NAtagCGCreateTeam.SubCmd))] = m_NAtagCGCreateTeam
+
+
+#------------------------------------------------------
 # B9 22 功能队伍成员操作 #tagCMFuncTeamMemOP
 
 class  tagCMFuncTeamMemOP(Structure):
@@ -22269,6 +20670,114 @@
 
 m_NAtagCMFuncTeamMemOP=tagCMFuncTeamMemOP()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFuncTeamMemOP.Cmd,m_NAtagCMFuncTeamMemOP.SubCmd))] = m_NAtagCMFuncTeamMemOP
+
+
+#------------------------------------------------------
+# B9 02 邀请玩家加入队伍 #tagCGInvitePlayerJoinTeam
+
+class  tagCGInvitePlayerJoinTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 目标玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x02
+        self.PlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGInvitePlayerJoinTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 02 邀请玩家加入队伍 //tagCGInvitePlayerJoinTeam:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGInvitePlayerJoinTeam=tagCGInvitePlayerJoinTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeam.Cmd,m_NAtagCGInvitePlayerJoinTeam.SubCmd))] = m_NAtagCGInvitePlayerJoinTeam
+
+
+#------------------------------------------------------
+# B9 0A 按条件邀请玩家加入队伍 #tagCGInvitePlayerJoinTeamByLV
+
+class  tagCGInvitePlayerJoinTeamByLV(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("LVLimit", c_ushort),    # 目标玩家大于等于此等级
+                  ("InviteCnt", c_ubyte),    # 邀请玩家个数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x0A
+        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 = 0xB9
+        self.SubCmd = 0x0A
+        self.LVLimit = 0
+        self.InviteCnt = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGInvitePlayerJoinTeamByLV)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 0A 按条件邀请玩家加入队伍 //tagCGInvitePlayerJoinTeamByLV:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                LVLimit:%d,
+                                InviteCnt:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.LVLimit,
+                                self.InviteCnt
+                                )
+        return DumpString
+
+
+m_NAtagCGInvitePlayerJoinTeamByLV=tagCGInvitePlayerJoinTeamByLV()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeamByLV.Cmd,m_NAtagCGInvitePlayerJoinTeamByLV.SubCmd))] = m_NAtagCGInvitePlayerJoinTeamByLV
 
 
 #------------------------------------------------------
@@ -22430,6 +20939,1086 @@
 
 
 #------------------------------------------------------
+# B9 05 查询推荐组队的附近玩家 #tagCGQueryRecommendNearbyPlayer
+
+class  tagCGQueryRecommendNearbyPlayer(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        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 = 0xB9
+        self.SubCmd = 0x05
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryRecommendNearbyPlayer)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 05 查询推荐组队的附近玩家 //tagCGQueryRecommendNearbyPlayer:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryRecommendNearbyPlayer=tagCGQueryRecommendNearbyPlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendNearbyPlayer.Cmd,m_NAtagCGQueryRecommendNearbyPlayer.SubCmd))] = m_NAtagCGQueryRecommendNearbyPlayer
+
+
+#------------------------------------------------------
+# B9 06 查询对应组队目标的队伍 #tagCGQueryTagMapTeam
+
+class  tagCGQueryTagMapTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagMapID", c_int),    # 目标地图
+                  ("TagMapEx", c_ushort),    # 目标地图扩展
+                  ("IsTagEx", c_ubyte),    # 是否查询对应目标扩展的; 0否1是
+                  ("MatchState", c_ubyte),    # 0-全部;1-匹配中的;
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        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 = 0xB9
+        self.SubCmd = 0x06
+        self.TagMapID = 0
+        self.TagMapEx = 0
+        self.IsTagEx = 0
+        self.MatchState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryTagMapTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 06 查询对应组队目标的队伍 //tagCGQueryTagMapTeam:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagMapID:%d,
+                                TagMapEx:%d,
+                                IsTagEx:%d,
+                                MatchState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagMapID,
+                                self.TagMapEx,
+                                self.IsTagEx,
+                                self.MatchState
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryTagMapTeam=tagCGQueryTagMapTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagMapTeam.Cmd,m_NAtagCGQueryTagMapTeam.SubCmd))] = m_NAtagCGQueryTagMapTeam
+
+
+#------------------------------------------------------
+# B9 10 查询在线队员对应功能数据 #tagCGQueryTeamMemFuncData
+
+class  tagCGQueryTeamMemFuncData(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TeamMemFuncType", c_ubyte),    # 查询队员的功能数据类型
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        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 = 0xB9
+        self.SubCmd = 0x10
+        self.TeamMemFuncType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryTeamMemFuncData)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 10 查询在线队员对应功能数据 //tagCGQueryTeamMemFuncData:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TeamMemFuncType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TeamMemFuncType
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryTeamMemFuncData=tagCGQueryTeamMemFuncData()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeamMemFuncData.Cmd,m_NAtagCGQueryTeamMemFuncData.SubCmd))] = m_NAtagCGQueryTeamMemFuncData
+
+
+#------------------------------------------------------
+# B9 11 请求加入队伍 #tagCGRequestJoinTeam
+
+class  tagCGRequestJoinTeam(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TeamID", c_int),    # 目标队伍ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x11
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x11
+        self.TeamID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGRequestJoinTeam)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 11 请求加入队伍 //tagCGRequestJoinTeam:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TeamID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TeamID
+                                )
+        return DumpString
+
+
+m_NAtagCGRequestJoinTeam=tagCGRequestJoinTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRequestJoinTeam.Cmd,m_NAtagCGRequestJoinTeam.SubCmd))] = m_NAtagCGRequestJoinTeam
+
+
+#------------------------------------------------------
+# B9 09 队员进入副本准备选择 #tagCGTeamMemberPrepare
+
+class  tagCGTeamMemberPrepare(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PrepareState", c_ubyte),    # 1-准备;2-拒绝
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x09
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x09
+        self.PrepareState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGTeamMemberPrepare)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 09 队员进入副本准备选择 //tagCGTeamMemberPrepare:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PrepareState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PrepareState
+                                )
+        return DumpString
+
+
+m_NAtagCGTeamMemberPrepare=tagCGTeamMemberPrepare()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGTeamMemberPrepare.Cmd,m_NAtagCGTeamMemberPrepare.SubCmd))] = m_NAtagCGTeamMemberPrepare
+
+
+#------------------------------------------------------
+# C0 21 跨服排位仙官申请回应 #tagCGChampionshipOfficialApplyReply
+
+class  tagCGChampionshipOfficialApplyReply(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MainOfficialID", c_ushort),    #界主官职ID
+                  ("OfficialID", c_ushort),    #申请官职ID
+                  ("PlayerID", c_int),    #申请的玩家ID
+                  ("IsOK", c_ubyte),    #是否同意;1-是;0-否
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        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 = 0xC0
+        self.SubCmd = 0x21
+        self.MainOfficialID = 0
+        self.OfficialID = 0
+        self.PlayerID = 0
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChampionshipOfficialApplyReply)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 21 跨服排位仙官申请回应 //tagCGChampionshipOfficialApplyReply:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MainOfficialID:%d,
+                                OfficialID:%d,
+                                PlayerID:%d,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MainOfficialID,
+                                self.OfficialID,
+                                self.PlayerID,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagCGChampionshipOfficialApplyReply=tagCGChampionshipOfficialApplyReply()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialApplyReply.Cmd,m_NAtagCGChampionshipOfficialApplyReply.SubCmd))] = m_NAtagCGChampionshipOfficialApplyReply
+
+
+#------------------------------------------------------
+# C0 23 跨服排位仙官挑战记录查询 #tagCGChampionshipOfficialChallengeQuery
+
+class  tagCGChampionshipOfficialChallengeQuery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MainOfficialID", c_ushort),    #界主官职ID
+                  ("OfficialID", c_ushort),    #查询官职ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x23
+        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 = 0x23
+        self.MainOfficialID = 0
+        self.OfficialID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChampionshipOfficialChallengeQuery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 23 跨服排位仙官挑战记录查询 //tagCGChampionshipOfficialChallengeQuery:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MainOfficialID:%d,
+                                OfficialID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MainOfficialID,
+                                self.OfficialID
+                                )
+        return DumpString
+
+
+m_NAtagCGChampionshipOfficialChallengeQuery=tagCGChampionshipOfficialChallengeQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialChallengeQuery.Cmd,m_NAtagCGChampionshipOfficialChallengeQuery.SubCmd))] = m_NAtagCGChampionshipOfficialChallengeQuery
+
+
+#------------------------------------------------------
+# C0 24 跨服排位辞退下级仙官 #tagCGChampionshipOfficialKick
+
+class  tagCGChampionshipOfficialKick(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MainOfficialID", c_ushort),    #界主官职ID
+                  ("OfficialID", c_ushort),    #目标官职ID
+                  ("PlayerID", c_int),    #目标玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        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 = 0xC0
+        self.SubCmd = 0x24
+        self.MainOfficialID = 0
+        self.OfficialID = 0
+        self.PlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChampionshipOfficialKick)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 24 跨服排位辞退下级仙官 //tagCGChampionshipOfficialKick:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MainOfficialID:%d,
+                                OfficialID:%d,
+                                PlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MainOfficialID,
+                                self.OfficialID,
+                                self.PlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGChampionshipOfficialKick=tagCGChampionshipOfficialKick()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialKick.Cmd,m_NAtagCGChampionshipOfficialKick.SubCmd))] = m_NAtagCGChampionshipOfficialKick
+
+
+#------------------------------------------------------
+# C0 25 跨服排位主动离任仙官 #tagCGChampionshipOfficialLeave
+
+class  tagCGChampionshipOfficialLeave(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MainOfficialID", c_ushort),    #界主官职ID
+                  ("OfficialID", c_ushort),    #离任官职ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        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 = 0xC0
+        self.SubCmd = 0x25
+        self.MainOfficialID = 0
+        self.OfficialID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGChampionshipOfficialLeave)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 25 跨服排位主动离任仙官 //tagCGChampionshipOfficialLeave:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MainOfficialID:%d,
+                                OfficialID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MainOfficialID,
+                                self.OfficialID
+                                )
+        return DumpString
+
+
+m_NAtagCGChampionshipOfficialLeave=tagCGChampionshipOfficialLeave()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialLeave.Cmd,m_NAtagCGChampionshipOfficialLeave.SubCmd))] = m_NAtagCGChampionshipOfficialLeave
+
+
+#------------------------------------------------------
+# C0 09 跨服战场召集场次修改 #tagCGCrossBattlefieldCallChange
+
+class  tagCGCrossBattlefieldCallChange(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Hour", c_ubyte),    #战场开启时
+                  ("Minute", c_ubyte),    #战场开启分
+                  ("ServerOnly", c_ubyte),    #是否仅本服玩家可加入,0-否,1-是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x09
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x09
+        self.Hour = 0
+        self.Minute = 0
+        self.ServerOnly = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCrossBattlefieldCallChange)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 09 跨服战场召集场次修改 //tagCGCrossBattlefieldCallChange:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Hour:%d,
+                                Minute:%d,
+                                ServerOnly:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Hour,
+                                self.Minute,
+                                self.ServerOnly
+                                )
+        return DumpString
+
+
+m_NAtagCGCrossBattlefieldCallChange=tagCGCrossBattlefieldCallChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallChange.Cmd,m_NAtagCGCrossBattlefieldCallChange.SubCmd))] = m_NAtagCGCrossBattlefieldCallChange
+
+
+#------------------------------------------------------
+# C0 08 跨服战场召集场次踢人 #tagCGCrossBattlefieldCallKick
+
+class  tagCGCrossBattlefieldCallKick(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Hour", c_ubyte),    #战场开启时
+                  ("Minute", c_ubyte),    #战场开启分
+                  ("TagPlayerID", c_int),    #目标玩家ID,即要被踢出去的玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x08
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x08
+        self.Hour = 0
+        self.Minute = 0
+        self.TagPlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCrossBattlefieldCallKick)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 08 跨服战场召集场次踢人 //tagCGCrossBattlefieldCallKick:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Hour:%d,
+                                Minute:%d,
+                                TagPlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Hour,
+                                self.Minute,
+                                self.TagPlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGCrossBattlefieldCallKick=tagCGCrossBattlefieldCallKick()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallKick.Cmd,m_NAtagCGCrossBattlefieldCallKick.SubCmd))] = m_NAtagCGCrossBattlefieldCallKick
+
+
+#------------------------------------------------------
+# C0 07 跨服战场加入召集场次 #tagCGCrossBattlefieldJoinByCall
+
+class  tagCGCrossBattlefieldJoinByCall(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Hour", c_ubyte),    #战场开启时
+                  ("Minute", c_ubyte),    #战场开启分
+                  ("BuyPlayerID", c_int),    #加入目标玩家的召集队伍,即购买召集场的玩家ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x07
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x07
+        self.Hour = 0
+        self.Minute = 0
+        self.BuyPlayerID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCrossBattlefieldJoinByCall)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 07 跨服战场加入召集场次 //tagCGCrossBattlefieldJoinByCall:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Hour:%d,
+                                Minute:%d,
+                                BuyPlayerID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Hour,
+                                self.Minute,
+                                self.BuyPlayerID
+                                )
+        return DumpString
+
+
+m_NAtagCGCrossBattlefieldJoinByCall=tagCGCrossBattlefieldJoinByCall()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldJoinByCall.Cmd,m_NAtagCGCrossBattlefieldJoinByCall.SubCmd))] = m_NAtagCGCrossBattlefieldJoinByCall
+
+
+#------------------------------------------------------
+# C0 26 仙盟攻城战查询 #tagCGFamilyGCZQuery
+
+class  tagCGFamilyGCZQuery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("QueryType", c_ubyte),    #查询类型:1-成员捐献值;2-进入城池场景;3-退出城池场景;4-进入城池;5-退出城池;6-战报;7-分组仙盟成员伤害;
+                  ("BatType", c_ubyte),    #指定战场类型,需要发送的查询类型: 2、4
+                  ("GroupNum", c_ubyte),    #指定分组编号,需要发送的查询类型: 2、4
+                  ("FamilyID", c_int),    #指定仙盟ID或城池ID,查自己盟的可不发,需要发的类型:2、4、6、7
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x26
+        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 = 0x26
+        self.QueryType = 0
+        self.BatType = 0
+        self.GroupNum = 0
+        self.FamilyID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGFamilyGCZQuery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 26 仙盟攻城战查询 //tagCGFamilyGCZQuery:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                QueryType:%d,
+                                BatType:%d,
+                                GroupNum:%d,
+                                FamilyID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.QueryType,
+                                self.BatType,
+                                self.GroupNum,
+                                self.FamilyID
+                                )
+        return DumpString
+
+
+m_NAtagCGFamilyGCZQuery=tagCGFamilyGCZQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyGCZQuery.Cmd,m_NAtagCGFamilyGCZQuery.SubCmd))] = m_NAtagCGFamilyGCZQuery
+
+
+#------------------------------------------------------
+# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
+
+class  tagCGForceQuitCrossState(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x03
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x03
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGForceQuitCrossState)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 03 强制退出跨服状态 //tagCGForceQuitCrossState:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
+
+
+#------------------------------------------------------
+# 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):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Type", c_ubyte),    #榜单类型
+                  ("GroupValue1", c_int),    # 分组值1
+                  ("GroupValue2", c_int),    # 分组值2,与分组值1组合归为同组榜单数据
+                  ("StartIndex", c_int),    #查看的起始名次索引, 默认0
+                  ("WatchCnt", c_ubyte),    #查看条数,默认20,最大不超过100
+                  ("WatchID", c_int),    #查看指定ID名次前后,如玩家ID、家族ID等
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x04
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x04
+        self.Type = 0
+        self.GroupValue1 = 0
+        self.GroupValue2 = 0
+        self.StartIndex = 0
+        self.WatchCnt = 0
+        self.WatchID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewCrossBillboard)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Type:%d,
+                                GroupValue1:%d,
+                                GroupValue2:%d,
+                                StartIndex:%d,
+                                WatchCnt:%d,
+                                WatchID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Type,
+                                self.GroupValue1,
+                                self.GroupValue2,
+                                self.StartIndex,
+                                self.WatchCnt,
+                                self.WatchID
+                                )
+        return DumpString
+
+
+m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
+
+
+#------------------------------------------------------
+# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
+
+class  tagCGViewCrossPKBillboard(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ZoneID", c_ubyte),    # 赛区ID	
+                  ("SeasonID", c_ubyte),    # 赛季ID	
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        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 = 0xC0
+        self.SubCmd = 0x01
+        self.ZoneID = 0
+        self.SeasonID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewCrossPKBillboard)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 01 查看跨服竞技场赛季排行榜 //tagCGViewCrossPKBillboard:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ZoneID:%d,
+                                SeasonID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ZoneID,
+                                self.SeasonID
+                                )
+        return DumpString
+
+
+m_NAtagCGViewCrossPKBillboard=tagCGViewCrossPKBillboard()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPKBillboard.Cmd,m_NAtagCGViewCrossPKBillboard.SubCmd))] = m_NAtagCGViewCrossPKBillboard
+
+
+#------------------------------------------------------
+# C0 02 查看跨服玩家信息 #tagCGViewCrossPlayerInfo
+
+class  tagCGViewCrossPlayerInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 跨服玩家ID
+                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x02
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x02
+        self.PlayerID = 0
+        self.EquipClassLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewCrossPlayerInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d,
+                                EquipClassLV:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID,
+                                self.EquipClassLV
+                                )
+        return DumpString
+
+
+m_NAtagCGViewCrossPlayerInfo=tagCGViewCrossPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPlayerInfo.Cmd,m_NAtagCGViewCrossPlayerInfo.SubCmd))] = m_NAtagCGViewCrossPlayerInfo
+
+
+#------------------------------------------------------
 # C1 22 跨服排位竞猜 #tagCMChampionshipGuess
 
 class  tagCMChampionshipGuess(Structure):

--
Gitblit v1.8.0