ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -379,6 +379,58 @@
#------------------------------------------------------
# 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):
@@ -712,6 +764,7 @@
    Head = tagHead()
    Name = ""    #(char Name[33])
    FakeID = 0    #(WORD FakeID)//假仙盟编号
    EmblemID = 0    #(BYTE EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID
    data = None
    def __init__(self):
@@ -725,6 +778,7 @@
        _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):
@@ -734,6 +788,7 @@
        self.Head.SubCmd = 0x04
        self.Name = ""
        self.FakeID = 0
        self.EmblemID = 0
        return
    def GetLength(self):
@@ -741,6 +796,7 @@
        length += self.Head.GetLength()
        length += 33
        length += 2
        length += 1
        return length
@@ -749,18 +805,21 @@
        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
                                FakeID:%d,
                                EmblemID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Name,
                                self.FakeID
                                self.FakeID,
                                self.EmblemID
                                )
        return DumpString
@@ -1252,6 +1311,58 @@
#------------------------------------------------------
# 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):
@@ -1569,6 +1680,58 @@
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
#------------------------------------------------------
@@ -3595,6 +3758,82 @@
#------------------------------------------------------
# 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):
@@ -3659,6 +3898,119 @@
#------------------------------------------------------
# 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):
@@ -3720,6 +4072,70 @@
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
#------------------------------------------------------
@@ -3828,6 +4244,164 @@
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
#------------------------------------------------------
@@ -5257,6 +5831,62 @@
#------------------------------------------------------
# A1 26 充值自选物品选择 #tagCMSelectCTGItem
class  tagCMSelectCTGItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("RecordID", c_ushort),    #充值ID
                  ("SelectItemValue", c_int),    # 自选物品索引值,每两位存储每个自选索引对应选择的物品索引+1,存储位值为0代表未选择,最多支持选择4种物品
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        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 = 0xA1
        self.SubCmd = 0x26
        self.RecordID = 0
        self.SelectItemValue = 0
        return
    def GetLength(self):
        return sizeof(tagCMSelectCTGItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 26 充值自选物品选择 //tagCMSelectCTGItem:
                                Cmd:%s,
                                SubCmd:%s,
                                RecordID:%d,
                                SelectItemValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.RecordID,
                                self.SelectItemValue
                                )
        return DumpString
m_NAtagCMSelectCTGItem=tagCMSelectCTGItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectCTGItem.Cmd,m_NAtagCMSelectCTGItem.SubCmd))] = m_NAtagCMSelectCTGItem
#------------------------------------------------------
#A1 03 设置是否成年 #tagCMAdult
class  tagCMAdult(Structure):
@@ -5607,6 +6237,58 @@
m_NAtagCMBuyItemBack=tagCMBuyItemBack()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItemBack.Cmd,m_NAtagCMBuyItemBack.SubCmd))] = m_NAtagCMBuyItemBack
#------------------------------------------------------
# A2 36 聊天气泡框升星 #tagCMChatBubbleBoxStarUP
class  tagCMChatBubbleBoxStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BoxID", c_ubyte),    #气泡ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        self.SubCmd = 0x36
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA2
        self.SubCmd = 0x36
        self.BoxID = 0
        return
    def GetLength(self):
        return sizeof(tagCMChatBubbleBoxStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 36 聊天气泡框升星 //tagCMChatBubbleBoxStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                BoxID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BoxID
                                )
        return DumpString
m_NAtagCMChatBubbleBoxStarUP=tagCMChatBubbleBoxStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChatBubbleBoxStarUP.Cmd,m_NAtagCMChatBubbleBoxStarUP.SubCmd))] = m_NAtagCMChatBubbleBoxStarUP
#------------------------------------------------------
@@ -18653,6 +19335,270 @@
#------------------------------------------------------
# B2 26 头像幻化 #tagCMFaceChange
class  tagCMFaceChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FaceID", c_int),    # 幻化的ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x26
        self.FaceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaceChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 26 头像幻化 //tagCMFaceChange:
                                Cmd:%s,
                                SubCmd:%s,
                                FaceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FaceID
                                )
        return DumpString
m_NAtagCMFaceChange=tagCMFaceChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceChange.Cmd,m_NAtagCMFaceChange.SubCmd))] = m_NAtagCMFaceChange
#------------------------------------------------------
# B2 28 头像框幻化 #tagCMFacePicChange
class  tagCMFacePicChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FacePicID", c_int),    # 幻化的ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x28
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x28
        self.FacePicID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFacePicChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 28 头像框幻化 //tagCMFacePicChange:
                                Cmd:%s,
                                SubCmd:%s,
                                FacePicID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FacePicID
                                )
        return DumpString
m_NAtagCMFacePicChange=tagCMFacePicChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicChange.Cmd,m_NAtagCMFacePicChange.SubCmd))] = m_NAtagCMFacePicChange
#------------------------------------------------------
# B2 29 头像框升星 #tagCMFacePicStarUP
class  tagCMFacePicStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FacePicID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x29
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x29
        self.FacePicID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFacePicStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 29 头像框升星 //tagCMFacePicStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                FacePicID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FacePicID
                                )
        return DumpString
m_NAtagCMFacePicStarUP=tagCMFacePicStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicStarUP.Cmd,m_NAtagCMFacePicStarUP.SubCmd))] = m_NAtagCMFacePicStarUP
#------------------------------------------------------
# B2 27 头像升星 #tagCMFaceStarUP
class  tagCMFaceStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FaceID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x27
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x27
        self.FaceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaceStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 27 头像升星 //tagCMFaceStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                FaceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FaceID
                                )
        return DumpString
m_NAtagCMFaceStarUP=tagCMFaceStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceStarUP.Cmd,m_NAtagCMFaceStarUP.SubCmd))] = m_NAtagCMFaceStarUP
#------------------------------------------------------
# B2 25 新聚魂操作 #tagCMGatherTheSoulOP
class  tagCMGatherTheSoulOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OpType", c_ubyte),    # 0-激活升级; 1-穿戴替换; 2-卸下
                  ("SoulID", c_int),    # 聚魂ID;当操作升级时,如果为0代表一键升级所有可升级的
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x25
        self.OpType = 0
        self.SoulID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGatherTheSoulOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 25 新聚魂操作 //tagCMGatherTheSoulOP:
                                Cmd:%s,
                                SubCmd:%s,
                                OpType:%d,
                                SoulID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OpType,
                                self.SoulID
                                )
        return DumpString
m_NAtagCMGatherTheSoulOP=tagCMGatherTheSoulOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGatherTheSoulOP.Cmd,m_NAtagCMGatherTheSoulOP.SubCmd))] = m_NAtagCMGatherTheSoulOP
#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
class  tagCMGetFuncSysPrivilegeAward(Structure):
@@ -18815,18 +19761,15 @@
#------------------------------------------------------
# B2 17 古宝升星 #tagCMGubaoStarUp
class  tagCMGubaoStarUp(Structure):
class  tagCMGubaoPieceUse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GubaoID", c_ushort),
                  ("GubaoID", c_ushort),    # 通用碎片古宝ID
                  ("PieceCount", c_ushort),    # 使用碎片个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -18835,33 +19778,99 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x17
        self.GubaoID = 0
        self.PieceCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMGubaoStarUp)
        return sizeof(tagCMGubaoPieceUse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 17 古宝升星 //tagCMGubaoStarUp:
                                Cmd:%s,
                                SubCmd:%s,
                                GubaoID:%d
                                GubaoID:%d,
                                PieceCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GubaoID
                                self.GubaoID,
                                self.PieceCount
                                )
        return DumpString
class  tagCMGubaoStarUp(Structure):
    Head = tagHead()
    GubaoID = 0    #(WORD GubaoID)
    PieceSelectCount = 0    #(BYTE PieceSelectCount)
    CommPieceUseList = list()    #(vector<tagCMGubaoPieceUse> CommPieceUseList)// 通用古宝碎片使用列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x17
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.GubaoID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PieceSelectCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PieceSelectCount):
            temCommPieceUseList = tagCMGubaoPieceUse()
            _pos = temCommPieceUseList.ReadData(_lpData, _pos)
            self.CommPieceUseList.append(temCommPieceUseList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x17
        self.GubaoID = 0
        self.PieceSelectCount = 0
        self.CommPieceUseList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        for i in range(self.PieceSelectCount):
            length += self.CommPieceUseList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.GubaoID)
        data = CommFunc.WriteBYTE(data, self.PieceSelectCount)
        for i in range(self.PieceSelectCount):
            data = CommFunc.WriteString(data, self.CommPieceUseList[i].GetLength(), self.CommPieceUseList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                GubaoID:%d,
                                PieceSelectCount:%d,
                                CommPieceUseList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.GubaoID,
                                self.PieceSelectCount,
                                "..."
                                )
        return DumpString
m_NAtagCMGubaoStarUp=tagCMGubaoStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Cmd,m_NAtagCMGubaoStarUp.SubCmd))] = m_NAtagCMGubaoStarUp
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Head.Cmd,m_NAtagCMGubaoStarUp.Head.SubCmd))] = m_NAtagCMGubaoStarUp
#------------------------------------------------------