ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -1304,6 +1304,106 @@
#------------------------------------------------------
# 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):
@@ -2230,6 +2330,222 @@
#------------------------------------------------------
# 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):
@@ -2506,7 +2822,7 @@
class  tagCGVoiceChat(Structure):
    Head = tagHead()
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
    TargetNameLen = 0    #(BYTE TargetNameLen)
    TargetName = ""    #(String TargetName)//size = TargetNameLen
    TargetID = 0    #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -3567,6 +3883,58 @@
#------------------------------------------------------
# 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):
@@ -3619,6 +3987,422 @@
#------------------------------------------------------
# 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 03 强制退出跨服状态 #tagCGForceQuitCrossState
class  tagCGForceQuitCrossState(Structure):
@@ -3667,6 +4451,166 @@
#------------------------------------------------------
# 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_ubyte),    # 分组值1
                  ("GroupValue2", c_ubyte),    # 分组值2,与分组值1组合归为同组榜单数据
                  ]
    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
        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
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type,
                                self.GroupValue1,
                                self.GroupValue2
                                )
        return DumpString
m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
#------------------------------------------------------
# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
class  tagCGViewCrossPKBillboard(Structure):
@@ -3674,8 +4618,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    # 赛区ID
                  ("SeasonID", c_ubyte),    # 赛季ID
                  ("ZoneID", c_ubyte),    # 赛区ID
                  ("SeasonID", c_ubyte),    # 赛季ID
                  ]
    def __init__(self):
@@ -3896,6 +4840,58 @@
m_NAtagCMPCInfo=tagCMPCInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
#------------------------------------------------------
# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
class  tagCMQueryCoinToGoldCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("RecordID", c_ubyte),    #充值记录ID,也就是充值ID,发0则查全部
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        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 = 0xA1
        self.SubCmd = 0x23
        self.RecordID = 0
        return
    def GetLength(self):
        return sizeof(tagCMQueryCoinToGoldCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 23 查询充值次数 //tagCMQueryCoinToGoldCount:
                                Cmd:%s,
                                SubCmd:%s,
                                RecordID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.RecordID
                                )
        return DumpString
m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
#------------------------------------------------------
@@ -5937,6 +6933,58 @@
#------------------------------------------------------
# A2 07 接受任务 #tagCMTakeTask
class  tagCMTakeTask(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TaskID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        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 = 0xA2
        self.SubCmd = 0x07
        self.TaskID = 0
        return
    def GetLength(self):
        return sizeof(tagCMTakeTask)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 07 接受任务 //tagCMTakeTask:
                                Cmd:%s,
                                SubCmd:%s,
                                TaskID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TaskID
                                )
        return DumpString
m_NAtagCMTakeTask=tagCMTakeTask()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeTask.Cmd,m_NAtagCMTakeTask.SubCmd))] = m_NAtagCMTakeTask
#------------------------------------------------------
#A2 12 查看玩家详细信息#tagCMViewPlayerInfo
class  tagCMViewPlayerInfo(Structure):
@@ -6231,7 +7279,7 @@
                  ("SrcBackpack", c_ubyte),    #源背包类型
                  ("DesBackPack", c_ubyte),    #目标背包类型
                  ("SrcIndex", c_ushort),    #转移物品索引位置;当全部转移时此值无效
                  ("IsAll", c_ubyte),    #是否全部转移
                  ("IsAll", c_ubyte),    #是否全部转移
                  ]
    def __init__(self):
@@ -6492,98 +7540,52 @@
# A3 30 装备神装进阶 #tagCMEquipEvolve
class  tagCMEquipEvolve(Structure):
    Head = tagHead()
    EquipIndex = 0    #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
    NeedEquipIDIndex = 0    #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
    NeedItemIDIndexCnt = 0    #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
    NeedItemIDIndex = list()    #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
    NeedSuitIndexCnt = 0    #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
    NeedSuitIndex = list()    #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
    data = None
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EquipIndex", c_ubyte),    # 要进阶的装备在装备背包中索引
                  ]
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x30
        self.Cmd = 0xA3
        self.SubCmd = 0x30
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedItemIDIndexCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.NeedItemIDIndex.append(value)
        self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedSuitIndexCnt):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.NeedSuitIndex.append(value)
        return _pos
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x30
        self.Cmd = 0xA3
        self.SubCmd = 0x30
        self.EquipIndex = 0
        self.NeedEquipIDIndex = 0
        self.NeedItemIDIndexCnt = 0
        self.NeedItemIDIndex = list()
        self.NeedSuitIndexCnt = 0
        self.NeedSuitIndex = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 1 * self.NeedItemIDIndexCnt
        length += 1
        length += 1 * self.NeedSuitIndexCnt
        return length
        return sizeof(tagCMEquipEvolve)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.EquipIndex)
        data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
        data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
        for i in range(self.NeedItemIDIndexCnt):
            data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
        data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
        for i in range(self.NeedSuitIndexCnt):
            data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EquipIndex:%d,
                                NeedEquipIDIndex:%d,
                                NeedItemIDIndexCnt:%d,
                                NeedItemIDIndex:%s,
                                NeedSuitIndexCnt:%d,
                                NeedSuitIndex:%s
        DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve:
                                Cmd:%s,
                                SubCmd:%s,
                                EquipIndex:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EquipIndex,
                                self.NeedEquipIDIndex,
                                self.NeedItemIDIndexCnt,
                                "...",
                                self.NeedSuitIndexCnt,
                                "..."
                                self.Cmd,
                                self.SubCmd,
                                self.EquipIndex
                                )
        return DumpString
m_NAtagCMEquipEvolve=tagCMEquipEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve
#------------------------------------------------------
@@ -6692,6 +7694,73 @@
m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
#------------------------------------------------------
# A3 31 装备神装拆解 #tagCMEquipShenDecompose
class  tagCMEquipShenDecompose(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//所在背包索引的数量
    IndexList = list()    #(vector<WORD> IndexList)//所在背包索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x31
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.IndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x31
        self.Count = 0
        self.IndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteWORD(data, self.IndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                IndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagCMEquipShenDecompose=tagCMEquipShenDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipShenDecompose.Head.Cmd,m_NAtagCMEquipShenDecompose.Head.SubCmd))] = m_NAtagCMEquipShenDecompose
#------------------------------------------------------
@@ -7103,6 +8172,7 @@
                  ("SubCmd", c_ubyte),
                  ("PackType", c_ubyte),    #背包类型
                  ("ItemIndex", c_ubyte),    #物品在背包中索引
                  ("IsAll", c_ubyte),    #是否处理所有过期物品
                  ]
    def __init__(self):
@@ -7121,6 +8191,7 @@
        self.SubCmd = 0x08
        self.PackType = 0
        self.ItemIndex = 0
        self.IsAll = 0
        return
    def GetLength(self):
@@ -7134,13 +8205,15 @@
                                Cmd:%s,
                                SubCmd:%s,
                                PackType:%d,
                                ItemIndex:%d
                                ItemIndex:%d,
                                IsAll:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PackType,
                                self.ItemIndex
                                self.ItemIndex,
                                self.IsAll
                                )
        return DumpString
@@ -7199,6 +8272,66 @@
m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak
#------------------------------------------------------
# A3 27 灵器培养 #tagCMLingQiTrain
class  tagCMLingQiTrain(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EquipPlace", c_ubyte),    #灵器装备位
                  ("TrainType", c_ubyte),    #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        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 = 0xA3
        self.SubCmd = 0x27
        self.EquipPlace = 0
        self.TrainType = 0
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMLingQiTrain)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 27 灵器培养 //tagCMLingQiTrain:
                                Cmd:%s,
                                SubCmd:%s,
                                EquipPlace:%d,
                                TrainType:%d,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.EquipPlace,
                                self.TrainType,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMLingQiTrain=tagCMLingQiTrain()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiTrain.Cmd,m_NAtagCMLingQiTrain.SubCmd))] = m_NAtagCMLingQiTrain
#------------------------------------------------------
@@ -7905,7 +9038,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HorseID", c_int),    #坐骑ID
                  ("HorseID", c_int),    #坐骑幻化ID
                  ]
    def __init__(self):
@@ -9771,6 +10904,62 @@
#------------------------------------------------------
# A5 32 法器升级 #tagCMFaQiLVUp
class  tagCMFaQiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaQiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
#------------------------------------------------------
# A5 1C 聚魂合成 #tagCMGatherSoulCompound
class  tagCMGatherSoulCompound(Structure):
@@ -10049,6 +11238,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Index", c_ubyte),    # 奖励索引,其他按顺序
                  ("IsDaily", c_ubyte),    # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
                  ]
    def __init__(self):
@@ -10066,6 +11256,7 @@
        self.Cmd = 0xA5
        self.SubCmd = 0x06
        self.Index = 0
        self.IsDaily = 0
        return
    def GetLength(self):
@@ -10078,12 +11269,14 @@
        DumpString = '''//A5 06 玩家领取在线奖励 //tagCMGetOnlinePrize:
                                Cmd:%s,
                                SubCmd:%s,
                                Index:%d
                                Index:%d,
                                IsDaily:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Index
                                self.Index,
                                self.IsDaily
                                )
        return DumpString
@@ -10101,6 +11294,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SuccID", c_int),    #成就ID
                  ("IsPassport", c_ubyte),    #是否通行证奖励
                  ]
    def __init__(self):
@@ -10118,6 +11312,7 @@
        self.Cmd = 0xA5
        self.SubCmd = 0x42
        self.SuccID = 0
        self.IsPassport = 0
        return
    def GetLength(self):
@@ -10130,12 +11325,14 @@
        DumpString = '''// A5 42 领取成就奖励 //tagMCGetSuccessAward:
                                Cmd:%s,
                                SubCmd:%s,
                                SuccID:%d
                                SuccID:%d,
                                IsPassport:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SuccID
                                self.SuccID,
                                self.IsPassport
                                )
        return DumpString
@@ -10437,6 +11634,62 @@
#------------------------------------------------------
# A5 31 坐骑培养 #tagCMHorseTrain
class  tagCMHorseTrain(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TrainType", c_ubyte),    #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x31
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x31
        self.TrainType = 0
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMHorseTrain)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 31 坐骑培养 //tagCMHorseTrain:
                                Cmd:%s,
                                SubCmd:%s,
                                TrainType:%d,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TrainType,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMHorseTrain=tagCMHorseTrain()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseTrain.Cmd,m_NAtagCMHorseTrain.SubCmd))] = m_NAtagCMHorseTrain
#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class  tagCMHorseUp(Structure):
@@ -10444,8 +11697,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HorseID", c_int),    #坐骑ID
                  ("UseItemCnt", c_ubyte),    #消耗材料个数
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
@@ -10463,7 +11715,6 @@
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x27
        self.HorseID = 0
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
@@ -10478,14 +11729,12 @@
        DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp:
                                Cmd:%s,
                                SubCmd:%s,
                                HorseID:%d,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HorseID,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
@@ -10494,6 +11743,110 @@
m_NAtagCMHorseUp=tagCMHorseUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
#------------------------------------------------------
# A5 34 炼体突破 #tagCMLianTiLVUp
class  tagCMLianTiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x34
        return
    def GetLength(self):
        return sizeof(tagCMLianTiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
#------------------------------------------------------
# A5 33 炼体提升 #tagCMLianTiUp
class  tagCMLianTiUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x33
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMLianTiUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMLianTiUp=tagCMLianTiUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
#------------------------------------------------------
@@ -10656,7 +12009,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Index", c_int),    #选择索引
                  ("ChooseType", c_ubyte),    # 1-按等阶,2-按幻化
                  ("LVID", c_ubyte),    # 阶等级或幻化ID
                  ]
    def __init__(self):
@@ -10673,7 +12027,8 @@
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x02
        self.Index = 0
        self.ChooseType = 0
        self.LVID = 0
        return
    def GetLength(self):
@@ -10686,12 +12041,14 @@
        DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse:
                                Cmd:%s,
                                SubCmd:%s,
                                Index:%d
                                ChooseType:%d,
                                LVID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Index
                                self.ChooseType,
                                self.LVID
                                )
        return DumpString
@@ -12496,6 +13853,7 @@
    PacketCnt = 0    #(WORD PacketCnt)// 红包数量
    MoneyNum = 0    #(WORD MoneyNum)//金钱数量
    Wish = ""    #(char Wish[33])//祝福语
    IsAnonymous = 0    #(BYTE IsAnonymous)//是否匿名
    data = None
    def __init__(self):
@@ -12511,6 +13869,7 @@
        self.PacketCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -12522,6 +13881,7 @@
        self.PacketCnt = 0
        self.MoneyNum = 0
        self.Wish = ""
        self.IsAnonymous = 0
        return
    def GetLength(self):
@@ -12531,6 +13891,7 @@
        length += 2
        length += 2
        length += 33
        length += 1
        return length
@@ -12541,6 +13902,7 @@
        data = CommFunc.WriteWORD(data, self.PacketCnt)
        data = CommFunc.WriteWORD(data, self.MoneyNum)
        data = CommFunc.WriteString(data, 33, self.Wish)
        data = CommFunc.WriteBYTE(data, self.IsAnonymous)
        return data
    def OutputString(self):
@@ -12549,14 +13911,16 @@
                                RedPacketID:%d,
                                PacketCnt:%d,
                                MoneyNum:%d,
                                Wish:%s
                                Wish:%s,
                                IsAnonymous:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RedPacketID,
                                self.PacketCnt,
                                self.MoneyNum,
                                self.Wish
                                self.Wish,
                                self.IsAnonymous
                                )
        return DumpString
@@ -12727,6 +14091,62 @@
m_NAtagCMPetClassUP=tagCMPetClassUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetClassUP.Cmd,m_NAtagCMPetClassUP.SubCmd))] = m_NAtagCMPetClassUP
#------------------------------------------------------
# A7 05 宠物培养 #tagCMPetTrain
class  tagCMPetTrain(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TrainType", c_ubyte),    #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        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 = 0xA7
        self.SubCmd = 0x05
        self.TrainType = 0
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMPetTrain)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 05 宠物培养 //tagCMPetTrain:
                                Cmd:%s,
                                SubCmd:%s,
                                TrainType:%d,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TrainType,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMPetTrain=tagCMPetTrain()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetTrain.Cmd,m_NAtagCMPetTrain.SubCmd))] = m_NAtagCMPetTrain
#------------------------------------------------------
@@ -12986,6 +14406,342 @@
#------------------------------------------------------
# AA 09 集字活动兑换 #tagCMActCollectWordsExchange
class  tagCMActCollectWordsExchange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号,1 或 2,相互独立的活动,可同时开启
                  ("ExchangeNum", c_ubyte),    #兑换编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x09
        self.ActNum = 0
        self.ExchangeNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActCollectWordsExchange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 09 集字活动兑换 //tagCMActCollectWordsExchange:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                ExchangeNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.ExchangeNum
                                )
        return DumpString
m_NAtagCMActCollectWordsExchange=tagCMActCollectWordsExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActCollectWordsExchange.Cmd,m_NAtagCMActCollectWordsExchange.SubCmd))] = m_NAtagCMActCollectWordsExchange
#------------------------------------------------------
# AA 15 垃圾分类活动收集已完成的任务垃圾 #tagCMActGarbageGetTaskAward
class  tagCMActGarbageGetTaskAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("GarbageTaskID", c_ubyte),    #垃圾任务ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x15
        self.ActNum = 0
        self.GarbageTaskID = 0
        return
    def GetLength(self):
        return sizeof(tagCMActGarbageGetTaskAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 15 垃圾分类活动收集已完成的任务垃圾 //tagCMActGarbageGetTaskAward:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                GarbageTaskID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.GarbageTaskID
                                )
        return DumpString
m_NAtagCMActGarbageGetTaskAward=tagCMActGarbageGetTaskAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageGetTaskAward.Cmd,m_NAtagCMActGarbageGetTaskAward.SubCmd))] = m_NAtagCMActGarbageGetTaskAward
#------------------------------------------------------
# AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
class  tagCMActGarbageSorting(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    GarbageSortingType = 0    #(BYTE GarbageSortingType)//垃圾分类类型,即属于哪种垃圾
    ItemIndexCount = 0    #(BYTE ItemIndexCount)//垃圾背包中的物品索引数
    ItemIndexList = list()    #(vector<BYTE> ItemIndexList)//垃圾背包中的物品索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x14
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GarbageSortingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemIndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ItemIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x14
        self.ActNum = 0
        self.GarbageSortingType = 0
        self.ItemIndexCount = 0
        self.ItemIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 1 * self.ItemIndexCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.GarbageSortingType)
        data = CommFunc.WriteBYTE(data, self.ItemIndexCount)
        for i in range(self.ItemIndexCount):
            data = CommFunc.WriteBYTE(data, self.ItemIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                GarbageSortingType:%d,
                                ItemIndexCount:%d,
                                ItemIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.GarbageSortingType,
                                self.ItemIndexCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActGarbageSorting=tagCMActGarbageSorting()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageSorting.Head.Cmd,m_NAtagCMActGarbageSorting.Head.SubCmd))] = m_NAtagCMActGarbageSorting
#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class  tagCMActTurntableChooseItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    GoodItemNumCount = 0    #(BYTE GoodItemNumCount)
    GoodItemNumList = list()    #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
    SuperItemNumCount = 0    #(BYTE SuperItemNumCount)
    SuperItemNumList = list()    #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GoodItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.GoodItemNumList.append(value)
        self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SuperItemNumCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.SuperItemNumList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x12
        self.ActNum = 0
        self.GoodItemNumCount = 0
        self.GoodItemNumList = list()
        self.SuperItemNumCount = 0
        self.SuperItemNumList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.GoodItemNumCount
        length += 1
        length += 1 * self.SuperItemNumCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
        for i in range(self.GoodItemNumCount):
            data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
        data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
        for i in range(self.SuperItemNumCount):
            data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                GoodItemNumCount:%d,
                                GoodItemNumList:%s,
                                SuperItemNumCount:%d,
                                SuperItemNumList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.GoodItemNumCount,
                                "...",
                                self.SuperItemNumCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
#------------------------------------------------------
# AA 13 启动转盘 #tagCMActTurntableStart
class  tagCMActTurntableStart(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x13
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActTurntableStart)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActTurntableStart=tagCMActTurntableStart()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
#------------------------------------------------------
# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
class  tagCMActWishingRefresh(Structure):
@@ -13035,6 +14791,188 @@
m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
#------------------------------------------------------
# AA 18 仙匣秘境活动奖池刷新 #tagCMActXianXiaMJAwardPoolRefresh
class  tagCMActXianXiaMJAwardPoolRefresh(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x18
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x18
        self.ActNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActXianXiaMJAwardPoolRefresh)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 18 仙匣秘境活动奖池刷新 //tagCMActXianXiaMJAwardPoolRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum
                                )
        return DumpString
m_NAtagCMActXianXiaMJAwardPoolRefresh=tagCMActXianXiaMJAwardPoolRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJAwardPoolRefresh.Cmd,m_NAtagCMActXianXiaMJAwardPoolRefresh.SubCmd))] = m_NAtagCMActXianXiaMJAwardPoolRefresh
#------------------------------------------------------
# AA 17 仙匣秘境活动抽奖 #tagCMActXianXiaMJLottery
class  tagCMActXianXiaMJLottery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("PosNum", c_ubyte),    #玩家点击的奖励位置编号,从1开始
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x17
        self.ActNum = 0
        self.PosNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMActXianXiaMJLottery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 17 仙匣秘境活动抽奖 //tagCMActXianXiaMJLottery:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                PosNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.PosNum
                                )
        return DumpString
m_NAtagCMActXianXiaMJLottery=tagCMActXianXiaMJLottery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJLottery.Cmd,m_NAtagCMActXianXiaMJLottery.SubCmd))] = m_NAtagCMActXianXiaMJLottery
#------------------------------------------------------
# AA 16 仙匣秘境活动选择大奖 #tagCMActXianXiaMJSuperItem
class  tagCMActXianXiaMJSuperItem(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    SuperItemCount = 0    #(BYTE SuperItemCount)//选择物品数量
    SuperItemIDList = list()    #(vector<DWORD> SuperItemIDList)//选择的大奖库物品ID列表,每次重新选择需要发送全部已选择的大奖物品ID,不能只发单个物品ID;
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SuperItemCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SuperItemIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        self.ActNum = 0
        self.SuperItemCount = 0
        self.SuperItemIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.SuperItemCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.SuperItemCount)
        for i in range(self.SuperItemCount):
            data = CommFunc.WriteDWORD(data, self.SuperItemIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                SuperItemCount:%d,
                                SuperItemIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.SuperItemCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActXianXiaMJSuperItem=tagCMActXianXiaMJSuperItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJSuperItem.Head.Cmd,m_NAtagCMActXianXiaMJSuperItem.Head.SubCmd))] = m_NAtagCMActXianXiaMJSuperItem
#------------------------------------------------------
@@ -13102,6 +15040,114 @@
#------------------------------------------------------
# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
class  tagCMFeastWishBottleChooseItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BottleNum", c_ubyte),    #瓶子编号
                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x10
        self.BottleNum = 0
        self.RecordIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMFeastWishBottleChooseItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
                                Cmd:%s,
                                SubCmd:%s,
                                BottleNum:%d,
                                RecordIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BottleNum,
                                self.RecordIndex
                                )
        return DumpString
m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
#------------------------------------------------------
# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
class  tagCMFeastWishPoolWish(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WishCount", c_ubyte),    #祝福次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x11
        self.WishCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMFeastWishPoolWish)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
                                Cmd:%s,
                                SubCmd:%s,
                                WishCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WishCount
                                )
        return DumpString
m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
#------------------------------------------------------
# AA 05 限时抢购预约 #tagCMFlashSaleAppointment
class  tagCMFlashSaleAppointment(Structure):
@@ -13109,6 +15155,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号
                  ("GoodsID", c_int),    # 抢购商品标识
                  ("State", c_ubyte),    # 1-预约 0-取消
                  ]
@@ -13127,6 +15174,7 @@
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x05
        self.ActNum = 0
        self.GoodsID = 0
        self.State = 0
        return
@@ -13141,12 +15189,14 @@
        DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                GoodsID:%d,
                                State:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.GoodsID,
                                self.State
                                )
@@ -14006,6 +16056,154 @@
#------------------------------------------------------
# B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
class  tagCMActivityPlaceQuery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x29
        return
    def GetLength(self):
        return sizeof(tagCMActivityPlaceQuery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery
#------------------------------------------------------
# B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
class  tagCMActivityPlaceQuickFinish(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FinishCount", c_ubyte),    #完成次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x28
        self.FinishCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMActivityPlaceQuickFinish)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish:
                                Cmd:%s,
                                SubCmd:%s,
                                FinishCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FinishCount
                                )
        return DumpString
m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish
#------------------------------------------------------
# B0 27 活跃放置启动 #tagCMActivityPlaceStart
class  tagCMActivityPlaceStart(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x27
        return
    def GetLength(self):
        return sizeof(tagCMActivityPlaceStart)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart
#------------------------------------------------------
# B0 50 钓鱼收杆 #tagCMDoFish
class  tagCMDoFish(Structure):
@@ -14782,6 +16980,73 @@
#------------------------------------------------------
# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
class  tagCMActivateFuncSysPrivilege(Structure):
    Head = tagHead()
    ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
    ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivateCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ActivateFuncSysIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        self.ActivateCount = 0
        self.ActivateFuncSysIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.ActivateCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActivateCount)
        for i in range(self.ActivateCount):
            data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActivateCount:%d,
                                ActivateFuncSysIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActivateCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
#------------------------------------------------------
# B2 06 玩家加点 #tagCMAddPoint
class  tagCMAddPoint(Structure):
@@ -14856,6 +17121,170 @@
m_NAtagCMAddPoint=tagCMAddPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
#------------------------------------------------------
# B2 10 竞技场挑战玩家 #tagCMArenaBattle
class  tagCMArenaBattle(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID或机器人ID
                  ("Result", c_ubyte),    # 0-进入自定义场景发送通知后端;1-胜利(后端处理,暂时不需要发送此状态);2-失败(前端被对手击杀需要发送此状态)
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x10
        self.TagPlayerID = 0
        self.Result = 0
        return
    def GetLength(self):
        return sizeof(tagCMArenaBattle)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 10 竞技场挑战玩家 //tagCMArenaBattle:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                Result:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.Result
                                )
        return DumpString
m_NAtagCMArenaBattle=tagCMArenaBattle()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaBattle.Cmd,m_NAtagCMArenaBattle.SubCmd))] = m_NAtagCMArenaBattle
#------------------------------------------------------
# B2 09 竞技场匹配玩家 #tagCMArenaMatch
class  tagCMArenaMatch(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsRefresh", c_ubyte),    # 0-打开界面无匹配数据时时查询,1-强制刷新匹配列表
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        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 = 0xB2
        self.SubCmd = 0x09
        self.IsRefresh = 0
        return
    def GetLength(self):
        return sizeof(tagCMArenaMatch)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 09 竞技场匹配玩家 //tagCMArenaMatch:
                                Cmd:%s,
                                SubCmd:%s,
                                IsRefresh:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsRefresh
                                )
        return DumpString
m_NAtagCMArenaMatch=tagCMArenaMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
class  tagCMGetFuncSysPrivilegeAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FuncSysID", c_ubyte),    # 功能系统ID
                  ("DayNum", c_ubyte),    # 第X天,1为第1天
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.FuncSysID = 0
        self.DayNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetFuncSysPrivilegeAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
                                Cmd:%s,
                                SubCmd:%s,
                                FuncSysID:%d,
                                DayNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FuncSysID,
                                self.DayNum
                                )
        return DumpString
m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
#------------------------------------------------------
@@ -15190,6 +17619,390 @@
#------------------------------------------------------
# B3 17 情戒解锁 #tagCMLoveRingUnlock
class  tagCMLoveRingUnlock(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x17
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUnlock)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
#------------------------------------------------------
# B3 18 情戒升级 #tagCMLoveRingUp
class  tagCMLoveRingUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x18
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMLoveRingUp=tagCMLoveRingUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
#------------------------------------------------------
# B3 15 离婚 #tagCMMarryBreak
class  tagCMMarryBreak(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BreakType", c_ubyte),    # 0-和平离婚;1-强制离婚
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x15
        self.BreakType = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBreak)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
                                Cmd:%s,
                                SubCmd:%s,
                                BreakType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BreakType
                                )
        return DumpString
m_NAtagCMMarryBreak=tagCMMarryBreak()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
#------------------------------------------------------
# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
class  tagCMMarryBuyFireworks(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x14
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBuyFireworks)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
#------------------------------------------------------
# B3 13 吃喜糖 #tagCMMarryEatCandy
class  tagCMMarryEatCandy(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x13
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryEatCandy)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
#------------------------------------------------------
# B3 11 提亲 #tagCMMarryReq
class  tagCMMarryReq(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("BridePriceID", c_ubyte),    # 聘礼ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x11
        self.TagPlayerID = 0
        self.BridePriceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryReq)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 11 提亲 //tagCMMarryReq:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                BridePriceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.BridePriceID
                                )
        return DumpString
m_NAtagCMMarryReq=tagCMMarryReq()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
#------------------------------------------------------
# B3 10 送礼物 #tagCMSendGifts
class  tagCMSendGifts(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("GiftNum", c_ushort),    # 赠送礼物编号
                  ("GiftCount", c_int),    # 赠送礼物数量
                  ("IsAutoBuy", c_ubyte),    # 是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        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 = 0xB3
        self.SubCmd = 0x10
        self.TagPlayerID = 0
        self.GiftNum = 0
        self.GiftCount = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMSendGifts)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                GiftNum:%d,
                                GiftCount:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.GiftNum,
                                self.GiftCount,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMSendGifts=tagCMSendGifts()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
#------------------------------------------------------
# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
class  tagCMRecyclePriWoodPile(Structure):
@@ -15250,6 +18063,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LostHP", c_int),    
                  ("LostHPEx", c_int),
                  ]
    def __init__(self):
@@ -15267,6 +18081,7 @@
        self.Cmd = 0xB4
        self.SubCmd = 0x0E
        self.LostHP = 0
        self.LostHPEx = 0
        return
    def GetLength(self):
@@ -15279,12 +18094,14 @@
        DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
                                Cmd:%s,
                                SubCmd:%s,
                                LostHP:%d
                                LostHP:%d,
                                LostHPEx:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LostHP
                                self.LostHP,
                                self.LostHPEx
                                )
        return DumpString
@@ -15862,6 +18679,7 @@
                  ("ObjID", c_int),    
                  ("AttackType", c_ubyte),    #爆击, miss
                  ("HurtHP", c_int),    
                  ("HurtHPEx", c_int),
                  ]
    def __init__(self):
@@ -15878,6 +18696,7 @@
        self.ObjID = 0
        self.AttackType = 0
        self.HurtHP = 0
        self.HurtHPEx = 0
        return
    def GetLength(self):
@@ -15891,13 +18710,15 @@
                                ObjType:%d,
                                ObjID:%d,
                                AttackType:%d,
                                HurtHP:%d
                                HurtHP:%d,
                                HurtHPEx:%d
                                '''\
                                %(
                                self.ObjType,
                                self.ObjID,
                                self.AttackType,
                                self.HurtHP
                                self.HurtHP,
                                self.HurtHPEx
                                )
        return DumpString
@@ -16263,7 +19084,7 @@
class  tagCMBiddingAuctionItem(Structure):
    Head = tagHead()
    ItemGUID = ""    #(char ItemGUID[40])
    BiddingPrice = 0    #(WORD BiddingPrice)//竞价价格
    BiddingPrice = 0    #(DWORD BiddingPrice)//竞价价格
    data = None
    def __init__(self):
@@ -16276,7 +19097,7 @@
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BiddingPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -16292,7 +19113,7 @@
        length = 0
        length += self.Head.GetLength()
        length += 40
        length += 2
        length += 4
        return length
@@ -16300,7 +19121,7 @@
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteWORD(data, self.BiddingPrice)
        data = CommFunc.WriteDWORD(data, self.BiddingPrice)
        return data
    def OutputString(self):
@@ -16479,6 +19300,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ubyte),    #物品在背包中索引
                  ("SellCount", c_ushort),    #上架个数,0代表全部上架
                  ]
    def __init__(self):
@@ -16496,6 +19318,7 @@
        self.Cmd = 0xB5
        self.SubCmd = 0x13
        self.ItemIndex = 0
        self.SellCount = 0
        return
    def GetLength(self):
@@ -16508,12 +19331,14 @@
        DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d
                                ItemIndex:%d,
                                SellCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemIndex
                                self.ItemIndex,
                                self.SellCount
                                )
        return DumpString
@@ -16633,6 +19458,322 @@
m_NAtagCMChangeTeamCheckState=tagCMChangeTeamCheckState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeTeamCheckState.Cmd,m_NAtagCMChangeTeamCheckState.SubCmd))] = m_NAtagCMChangeTeamCheckState
#------------------------------------------------------
# C1 22 跨服排位竞猜 #tagCMChampionshipGuess
class  tagCMChampionshipGuess(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    #排位数据分区ID
                  ("GuessType", c_ubyte),    #竞猜类型 8-8强;4-4强排位
                  ("PlayerID", c_int),    #目标玩家ID
                  ("GuessCount", c_ubyte),    #投注/追加份数
                  ("GuessRank", c_ubyte),    # 竞猜名次,没有名次的竞猜默认0;1-代表第一名
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        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 = 0xC1
        self.SubCmd = 0x22
        self.ZoneID = 0
        self.GuessType = 0
        self.PlayerID = 0
        self.GuessCount = 0
        self.GuessRank = 0
        return
    def GetLength(self):
        return sizeof(tagCMChampionshipGuess)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 22 跨服排位竞猜 //tagCMChampionshipGuess:
                                Cmd:%s,
                                SubCmd:%s,
                                ZoneID:%d,
                                GuessType:%d,
                                PlayerID:%d,
                                GuessCount:%d,
                                GuessRank:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZoneID,
                                self.GuessType,
                                self.PlayerID,
                                self.GuessCount,
                                self.GuessRank
                                )
        return DumpString
m_NAtagCMChampionshipGuess=tagCMChampionshipGuess()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipGuess.Cmd,m_NAtagCMChampionshipGuess.SubCmd))] = m_NAtagCMChampionshipGuess
#------------------------------------------------------
# C1 20 跨服排位仙官申请 #tagCMChampionshipOfficialApply
class  tagCMChampionshipOfficialApply(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    #仙官数据分区ID
                  ("MainOfficialID", c_ushort),    #界主官职ID
                  ("OfficialID", c_ushort),    #申请官职ID
                  ("Cancel", c_ubyte),    #是否取消申请,默认0-申请;1-取消申请
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        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 = 0xC1
        self.SubCmd = 0x20
        self.ZoneID = 0
        self.MainOfficialID = 0
        self.OfficialID = 0
        self.Cancel = 0
        return
    def GetLength(self):
        return sizeof(tagCMChampionshipOfficialApply)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 20 跨服排位仙官申请 //tagCMChampionshipOfficialApply:
                                Cmd:%s,
                                SubCmd:%s,
                                ZoneID:%d,
                                MainOfficialID:%d,
                                OfficialID:%d,
                                Cancel:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZoneID,
                                self.MainOfficialID,
                                self.OfficialID,
                                self.Cancel
                                )
        return DumpString
m_NAtagCMChampionshipOfficialApply=tagCMChampionshipOfficialApply()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialApply.Cmd,m_NAtagCMChampionshipOfficialApply.SubCmd))] = m_NAtagCMChampionshipOfficialApply
#------------------------------------------------------
# C1 21 跨服排位仙官挑战 #tagCMChampionshipOfficialChallenge
class  tagCMChampionshipOfficialChallenge(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    #仙官数据分区ID
                  ("MainOfficialID", c_ushort),    #界主官职ID
                  ("OfficialID", c_ushort),    #挑战的目标官职ID
                  ("PlayerID", c_int),    #挑战时的目标玩家ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        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 = 0xC1
        self.SubCmd = 0x21
        self.ZoneID = 0
        self.MainOfficialID = 0
        self.OfficialID = 0
        self.PlayerID = 0
        return
    def GetLength(self):
        return sizeof(tagCMChampionshipOfficialChallenge)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 21 跨服排位仙官挑战 //tagCMChampionshipOfficialChallenge:
                                Cmd:%s,
                                SubCmd:%s,
                                ZoneID:%d,
                                MainOfficialID:%d,
                                OfficialID:%d,
                                PlayerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZoneID,
                                self.MainOfficialID,
                                self.OfficialID,
                                self.PlayerID
                                )
        return DumpString
m_NAtagCMChampionshipOfficialChallenge=tagCMChampionshipOfficialChallenge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialChallenge.Cmd,m_NAtagCMChampionshipOfficialChallenge.SubCmd))] = m_NAtagCMChampionshipOfficialChallenge
#------------------------------------------------------
# C1 23 跨服排位膜拜 #tagCMChampionshipWorship
class  tagCMChampionshipWorship(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    #仙官数据分区ID
                  ("PlayerID", c_int),    #目标玩家ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        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 = 0xC1
        self.SubCmd = 0x23
        self.ZoneID = 0
        self.PlayerID = 0
        return
    def GetLength(self):
        return sizeof(tagCMChampionshipWorship)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 23 跨服排位膜拜 //tagCMChampionshipWorship:
                                Cmd:%s,
                                SubCmd:%s,
                                ZoneID:%d,
                                PlayerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ZoneID,
                                self.PlayerID
                                )
        return DumpString
m_NAtagCMChampionshipWorship=tagCMChampionshipWorship()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipWorship.Cmd,m_NAtagCMChampionshipWorship.SubCmd))] = m_NAtagCMChampionshipWorship
#------------------------------------------------------
# C1 09 跨服战场购买开启场次 #tagCMCrossBattlefieldBuyOpen
class  tagCMCrossBattlefieldBuyOpen(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Hour", c_ubyte),    #战场开启时
                  ("Minute", c_ubyte),    #战场开启分
                  ("Faction", c_ubyte),    #阵营 1-红;2-蓝
                  ("ServerOnly", c_ubyte),    #是否仅本服玩家可加入,0-否,1-是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        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 = 0xC1
        self.SubCmd = 0x09
        self.Hour = 0
        self.Minute = 0
        self.Faction = 0
        self.ServerOnly = 0
        return
    def GetLength(self):
        return sizeof(tagCMCrossBattlefieldBuyOpen)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 09 跨服战场购买开启场次 //tagCMCrossBattlefieldBuyOpen:
                                Cmd:%s,
                                SubCmd:%s,
                                Hour:%d,
                                Minute:%d,
                                Faction:%d,
                                ServerOnly:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Hour,
                                self.Minute,
                                self.Faction,
                                self.ServerOnly
                                )
        return DumpString
m_NAtagCMCrossBattlefieldBuyOpen=tagCMCrossBattlefieldBuyOpen()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossBattlefieldBuyOpen.Cmd,m_NAtagCMCrossBattlefieldBuyOpen.SubCmd))] = m_NAtagCMCrossBattlefieldBuyOpen
#------------------------------------------------------
@@ -17008,4 +20149,56 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
#------------------------------------------------------
# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
class  tagCMLuckyCloudBuy(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BuyCount", c_ushort),    # 购买份数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xC1
        self.SubCmd = 0x10
        self.BuyCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMLuckyCloudBuy)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy:
                                Cmd:%s,
                                SubCmd:%s,
                                BuyCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BuyCount
                                )
        return DumpString
m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy