hxp
2025-02-06 a90833bf05d8f4a338b0224a956a3794c106bb48
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -379,6 +379,58 @@
#------------------------------------------------------
# A4 13 修改家族徽章 #tagCGChangeFamilyEmblem
class  tagCGChangeFamilyEmblem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EmblemID", c_ubyte),    # 更换的徽章ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA4
        self.SubCmd = 0x13
        self.EmblemID = 0
        return
    def GetLength(self):
        return sizeof(tagCGChangeFamilyEmblem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 13 修改家族徽章 //tagCGChangeFamilyEmblem:
                                Cmd:%s,
                                SubCmd:%s,
                                EmblemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.EmblemID
                                )
        return DumpString
m_NAtagCGChangeFamilyEmblem=tagCGChangeFamilyEmblem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyEmblem.Cmd,m_NAtagCGChangeFamilyEmblem.SubCmd))] = m_NAtagCGChangeFamilyEmblem
#------------------------------------------------------
# A4 08 查询家族行为信息 #tagCGQueryFamilyAction
class  tagCGQueryFamilyAction(Structure):
@@ -712,6 +764,7 @@
    Head = tagHead()
    Name = ""    #(char Name[33])
    FakeID = 0    #(WORD FakeID)//假仙盟编号
    EmblemID = 0    #(BYTE EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID
    data = None
    def __init__(self):
@@ -725,6 +778,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.FakeID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -734,6 +788,7 @@
        self.Head.SubCmd = 0x04
        self.Name = ""
        self.FakeID = 0
        self.EmblemID = 0
        return
    def GetLength(self):
@@ -741,6 +796,7 @@
        length += self.Head.GetLength()
        length += 33
        length += 2
        length += 1
        return length
@@ -749,18 +805,21 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 33, self.Name)
        data = CommFunc.WriteWORD(data, self.FakeID)
        data = CommFunc.WriteBYTE(data, self.EmblemID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Name:%s,
                                FakeID:%d
                                FakeID:%d,
                                EmblemID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Name,
                                self.FakeID
                                self.FakeID,
                                self.EmblemID
                                )
        return DumpString
@@ -1252,6 +1311,58 @@
#------------------------------------------------------
# A9 07 点赞仙宫 #tagCGLikeXiangong
class  tagCGLikeXiangong(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID,为0时代表每日的仙宫点赞
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        self.SubCmd = 0x07
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA9
        self.SubCmd = 0x07
        self.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGLikeXiangong)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGLikeXiangong=tagCGLikeXiangong()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
#------------------------------------------------------
# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
class  tagCGQueryArenaBattlePlayer(Structure):
@@ -1569,6 +1680,58 @@
m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends
#------------------------------------------------------
# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
class  tagCGQueryXiangongRecPlayers(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        self.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA9
        self.SubCmd = 0x06
        self.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGQueryXiangongRecPlayers)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
#------------------------------------------------------
@@ -5724,6 +5887,54 @@
#------------------------------------------------------
# A1 09 同步打包玩家数据 #tagCMSycnPlayerPackData
class  tagCMSycnPlayerPackData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        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 = 0xA1
        self.SubCmd = 0x09
        return
    def GetLength(self):
        return sizeof(tagCMSycnPlayerPackData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 09 同步打包玩家数据 //tagCMSycnPlayerPackData:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMSycnPlayerPackData=tagCMSycnPlayerPackData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSycnPlayerPackData.Cmd,m_NAtagCMSycnPlayerPackData.SubCmd))] = m_NAtagCMSycnPlayerPackData
#------------------------------------------------------
#A1 03 设置是否成年 #tagCMAdult
class  tagCMAdult(Structure):
@@ -6074,6 +6285,58 @@
m_NAtagCMBuyItemBack=tagCMBuyItemBack()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItemBack.Cmd,m_NAtagCMBuyItemBack.SubCmd))] = m_NAtagCMBuyItemBack
#------------------------------------------------------
# A2 36 聊天气泡框升星 #tagCMChatBubbleBoxStarUP
class  tagCMChatBubbleBoxStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BoxID", c_ubyte),    #气泡ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        self.SubCmd = 0x36
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA2
        self.SubCmd = 0x36
        self.BoxID = 0
        return
    def GetLength(self):
        return sizeof(tagCMChatBubbleBoxStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 36 聊天气泡框升星 //tagCMChatBubbleBoxStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                BoxID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BoxID
                                )
        return DumpString
m_NAtagCMChatBubbleBoxStarUP=tagCMChatBubbleBoxStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChatBubbleBoxStarUP.Cmd,m_NAtagCMChatBubbleBoxStarUP.SubCmd))] = m_NAtagCMChatBubbleBoxStarUP
#------------------------------------------------------
@@ -7338,7 +7601,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("RealmDifficulty", c_ubyte),    #境界难度 = 100 + 所选境界等级,如境界13,则发113
                  ("RealmDifficulty", c_ushort),    #境界难度 = 1000 + 所选境界等级,如境界13,则发1013
                  ]
    def __init__(self):
@@ -7627,6 +7890,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CountID", c_int),    # 计数ID,客户端与策划约定,可以是NPCID或其他
                  ("Type", c_ubyte),    # 1-杀怪
                  ]
    def __init__(self):
@@ -7644,6 +7908,7 @@
        self.Cmd = 0xA2
        self.SubCmd = 0x25
        self.CountID = 0
        self.Type = 0
        return
    def GetLength(self):
@@ -7656,12 +7921,14 @@
        DumpString = '''//A2 25 客户端任务计数 // tagCMClientTaskCount:
                                Cmd:%s,
                                SubCmd:%s,
                                CountID:%d
                                CountID:%d,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CountID
                                self.CountID,
                                self.Type
                                )
        return DumpString
@@ -9687,20 +9954,15 @@
#------------------------------------------------------
# A3 23 使用物品 #tagCMUseItems
class  tagCMUseItems(Structure):
class  tagCMUseItemsSelect(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ubyte),    #物品在背包中索引
                  ("UseCnt", c_ushort),    #使用个数,0表示全部使用
                  ("ExData", c_int),    #使用扩展值, 默认0, 选择物品宝箱时发送选择的物品ID
                  ("SelectID", c_int),    #选择项ID
                  ("SelectCnt", c_ushort),    #选择数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x23
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -9709,39 +9971,113 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x23
        self.ItemIndex = 0
        self.UseCnt = 0
        self.ExData = 0
        self.SelectID = 0
        self.SelectCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMUseItems)
        return sizeof(tagCMUseItemsSelect)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 23 使用物品 //tagCMUseItems:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d,
                                UseCnt:%d,
                                ExData:%d
                                SelectID:%d,
                                SelectCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SelectID,
                                self.SelectCnt
                                )
        return DumpString
class  tagCMUseItems(Structure):
    Head = tagHead()
    ItemIndex = 0    #(BYTE ItemIndex)//物品在背包中索引
    UseCnt = 0    #(WORD UseCnt)//使用个数,0表示全部使用
    ExData = 0    #(DWORD ExData)//使用扩展值, 默认0, 选择物品宝箱时发送选择的物品ID
    SelectCount = 0    #(BYTE SelectCount)//指定选择项,当批量使用单个箱子需要同时选中多种选项时使用该值
    SelectList = list()    #(vector<tagCMUseItemsSelect> SelectList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.UseCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SelectCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SelectCount):
            temSelectList = tagCMUseItemsSelect()
            _pos = temSelectList.ReadData(_lpData, _pos)
            self.SelectList.append(temSelectList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x23
        self.ItemIndex = 0
        self.UseCnt = 0
        self.ExData = 0
        self.SelectCount = 0
        self.SelectList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        length += 4
        length += 1
        for i in range(self.SelectCount):
            length += self.SelectList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ItemIndex)
        data = CommFunc.WriteWORD(data, self.UseCnt)
        data = CommFunc.WriteDWORD(data, self.ExData)
        data = CommFunc.WriteBYTE(data, self.SelectCount)
        for i in range(self.SelectCount):
            data = CommFunc.WriteString(data, self.SelectList[i].GetLength(), self.SelectList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemIndex:%d,
                                UseCnt:%d,
                                ExData:%d,
                                SelectCount:%d,
                                SelectList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemIndex,
                                self.UseCnt,
                                self.ExData
                                self.ExData,
                                self.SelectCount,
                                "..."
                                )
        return DumpString
m_NAtagCMUseItems=tagCMUseItems()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseItems.Cmd,m_NAtagCMUseItems.SubCmd))] = m_NAtagCMUseItems
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseItems.Head.Cmd,m_NAtagCMUseItems.Head.SubCmd))] = m_NAtagCMUseItems
#------------------------------------------------------
@@ -15307,6 +15643,58 @@
#------------------------------------------------------
# A6 16 珍宝阁操作 #tagCMZhenbaogeOP
class  tagCMZhenbaogeOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OpType", c_ubyte),    # 操作:0-砍价;1-购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA6
        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 = 0xA6
        self.SubCmd = 0x16
        self.OpType = 0
        return
    def GetLength(self):
        return sizeof(tagCMZhenbaogeOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A6 16 珍宝阁操作 //tagCMZhenbaogeOP:
                                Cmd:%s,
                                SubCmd:%s,
                                OpType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OpType
                                )
        return DumpString
m_NAtagCMZhenbaogeOP=tagCMZhenbaogeOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhenbaogeOP.Cmd,m_NAtagCMZhenbaogeOP.SubCmd))] = m_NAtagCMZhenbaogeOP
#------------------------------------------------------
# A7 02 宠物激活 #tagCMActivatePet
class  tagCMActivatePet(Structure):
@@ -16323,6 +16711,70 @@
#------------------------------------------------------
# AA 25 炼器操作 #tagCMActLianqiOP
class  tagCMActLianqiOP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OPType", c_ubyte),    # 1-移动;2-使用道具;3-重新开始;4-领取等级奖励
                  ("OPValue", c_int),    # 移动时-发1上2下3左4右;使用道具时-发使用个数*10+道具ID所在配置索引;等级奖励时-发领取的奖励等级
                  ("OPValue2", c_int),    # 使用道具时-发选中格子A的行列值 行*10+列
                  ("OPValue3", c_int),    # 使用道具时-发选中格子B的行列值 行*10+列
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x25
        self.OPType = 0
        self.OPValue = 0
        self.OPValue2 = 0
        self.OPValue3 = 0
        return
    def GetLength(self):
        return sizeof(tagCMActLianqiOP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 25 炼器操作 //tagCMActLianqiOP:
                                Cmd:%s,
                                SubCmd:%s,
                                OPType:%d,
                                OPValue:%d,
                                OPValue2:%d,
                                OPValue3:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OPType,
                                self.OPValue,
                                self.OPValue2,
                                self.OPValue3
                                )
        return DumpString
m_NAtagCMActLianqiOP=tagCMActLianqiOP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActLianqiOP.Cmd,m_NAtagCMActLianqiOP.SubCmd))] = m_NAtagCMActLianqiOP
#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class  tagCMActTurntableChooseItem(Structure):
@@ -17029,6 +17481,66 @@
m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
#------------------------------------------------------
# AA 02 推金币 #tagCMTuijinbi
class  tagCMTuijinbi(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("OpType", c_ubyte),    # 操作类型: 0-抽奖;1-获得金币;2-激活至尊卡
                  ("Value1", c_int),    # 类型1时为货币类型
                  ("Value2", c_int),    # 类型1时为货币数值
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x02
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x02
        self.OpType = 0
        self.Value1 = 0
        self.Value2 = 0
        return
    def GetLength(self):
        return sizeof(tagCMTuijinbi)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 02 推金币 //tagCMTuijinbi:
                                Cmd:%s,
                                SubCmd:%s,
                                OpType:%d,
                                Value1:%d,
                                Value2:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.OpType,
                                self.Value1,
                                self.Value2
                                )
        return DumpString
m_NAtagCMTuijinbi=tagCMTuijinbi()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTuijinbi.Cmd,m_NAtagCMTuijinbi.SubCmd))] = m_NAtagCMTuijinbi
#------------------------------------------------------
@@ -17984,6 +18496,54 @@
#------------------------------------------------------
# B0 35 福地管家免费试用 #tagCMMineHouseKeeperFreeUse
class  tagCMMineHouseKeeperFreeUse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x35
        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 = 0x35
        return
    def GetLength(self):
        return sizeof(tagCMMineHouseKeeperFreeUse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 35 福地管家免费试用 //tagCMMineHouseKeeperFreeUse:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMMineHouseKeeperFreeUse=tagCMMineHouseKeeperFreeUse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineHouseKeeperFreeUse.Cmd,m_NAtagCMMineHouseKeeperFreeUse.SubCmd))] = m_NAtagCMMineHouseKeeperFreeUse
#------------------------------------------------------
# B0 30 福地物品拉 #tagCMMineItemPull
class  tagCMMineItemPull(Structure):
@@ -18055,7 +18615,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsSuper", c_ubyte),    # 是否超级刷新
                  ("RefreshType", c_ubyte),    # 刷新类型:0-自己物品普通刷新;1-自己物品超级刷新;2-周围福地玩家列表刷新
                  ]
    def __init__(self):
@@ -18072,7 +18632,7 @@
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x31
        self.IsSuper = 0
        self.RefreshType = 0
        return
    def GetLength(self):
@@ -18085,12 +18645,12 @@
        DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                IsSuper:%d
                                RefreshType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsSuper
                                self.RefreshType
                                )
        return DumpString
@@ -18597,6 +19157,62 @@
m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
#------------------------------------------------------
# B1 08 快速一键过关副本 #tagCMFBQuickPass
class  tagCMFBQuickPass(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("LineID", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        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 = 0xB1
        self.SubCmd = 0x08
        self.MapID = 0
        self.LineID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFBQuickPass)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 08 快速一键过关副本 //tagCMFBQuickPass:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                LineID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.LineID
                                )
        return DumpString
m_NAtagCMFBQuickPass=tagCMFBQuickPass()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass
#------------------------------------------------------
@@ -19117,6 +19733,214 @@
m_NAtagCMArenaMatch=tagCMArenaMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
#------------------------------------------------------
# B2 26 头像幻化 #tagCMFaceChange
class  tagCMFaceChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FaceID", c_int),    # 幻化的ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x26
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x26
        self.FaceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaceChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 26 头像幻化 //tagCMFaceChange:
                                Cmd:%s,
                                SubCmd:%s,
                                FaceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FaceID
                                )
        return DumpString
m_NAtagCMFaceChange=tagCMFaceChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceChange.Cmd,m_NAtagCMFaceChange.SubCmd))] = m_NAtagCMFaceChange
#------------------------------------------------------
# B2 28 头像框幻化 #tagCMFacePicChange
class  tagCMFacePicChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FacePicID", c_int),    # 幻化的ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x28
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x28
        self.FacePicID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFacePicChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 28 头像框幻化 //tagCMFacePicChange:
                                Cmd:%s,
                                SubCmd:%s,
                                FacePicID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FacePicID
                                )
        return DumpString
m_NAtagCMFacePicChange=tagCMFacePicChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicChange.Cmd,m_NAtagCMFacePicChange.SubCmd))] = m_NAtagCMFacePicChange
#------------------------------------------------------
# B2 29 头像框升星 #tagCMFacePicStarUP
class  tagCMFacePicStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FacePicID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x29
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x29
        self.FacePicID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFacePicStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 29 头像框升星 //tagCMFacePicStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                FacePicID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FacePicID
                                )
        return DumpString
m_NAtagCMFacePicStarUP=tagCMFacePicStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicStarUP.Cmd,m_NAtagCMFacePicStarUP.SubCmd))] = m_NAtagCMFacePicStarUP
#------------------------------------------------------
# B2 27 头像升星 #tagCMFaceStarUP
class  tagCMFaceStarUP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FaceID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x27
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x27
        self.FaceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaceStarUP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 27 头像升星 //tagCMFaceStarUP:
                                Cmd:%s,
                                SubCmd:%s,
                                FaceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FaceID
                                )
        return DumpString
m_NAtagCMFaceStarUP=tagCMFaceStarUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceStarUP.Cmd,m_NAtagCMFaceStarUP.SubCmd))] = m_NAtagCMFaceStarUP
#------------------------------------------------------
@@ -20282,6 +21106,70 @@
m_NAtagCMSendGifts=tagCMSendGifts()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
#------------------------------------------------------
# B4 11 镜像战斗 #tagCMMirrorFight
class  tagCMMirrorFight(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),    # 自定义地图ID,如竞技场等
                  ("FuncLineID", c_ushort),
                  ("TagPlayeID", c_int),    # 目标玩家ID,支持跨服玩家ID
                  ("CmdType", c_ubyte),    # 命令类型: 0-创建战斗;1-开始战斗;2-战斗中跳过;3-不创建战斗直接得结果
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        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 = 0xB4
        self.SubCmd = 0x11
        self.MapID = 0
        self.FuncLineID = 0
        self.TagPlayeID = 0
        self.CmdType = 0
        return
    def GetLength(self):
        return sizeof(tagCMMirrorFight)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 11 镜像战斗 //tagCMMirrorFight:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d,
                                TagPlayeID:%d,
                                CmdType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID,
                                self.TagPlayeID,
                                self.CmdType
                                )
        return DumpString
m_NAtagCMMirrorFight=tagCMMirrorFight()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMirrorFight.Cmd,m_NAtagCMMirrorFight.SubCmd))] = m_NAtagCMMirrorFight
#------------------------------------------------------
@@ -22329,7 +23217,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),    # 0-取消匹配; 1-进行匹配
                  ("Type", c_ubyte),    # 0-查询匹配;1-刷新匹配
                  ]
    def __init__(self):
@@ -22382,6 +23270,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsWin", c_ubyte),    #是否获胜
                  ("TagPlayerID", c_int),    #目标玩家ID
                  ]
    def __init__(self):
@@ -22399,6 +23288,7 @@
        self.Cmd = 0xC1
        self.SubCmd = 0x08
        self.IsWin = 0
        self.TagPlayerID = 0
        return
    def GetLength(self):
@@ -22411,12 +23301,14 @@
        DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver:
                                Cmd:%s,
                                SubCmd:%s,
                                IsWin:%d
                                IsWin:%d,
                                TagPlayerID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsWin
                                self.IsWin,
                                self.TagPlayerID
                                )
        return DumpString