hxp
2025-11-28 eb63e35d04e6d7bd55ada7f6dfce2567a8577edb
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5117,129 +5117,6 @@
#------------------------------------------------------
#A3 04 玩家扫荡信息 #tagMCFBWipeOutData
class  tagMCFBData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("FBID", c_int),    #fbId
                  ("LineIndex", c_ubyte),    #副本通关场次
                  ("WipeOutCnt", c_ubyte),    #扫荡次数
                  ("passGrade", c_ubyte),    #通关评级
                  ]
    def __init__(self):
        self.Clear()
        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.FBID = 0
        self.LineIndex = 0
        self.WipeOutCnt = 0
        self.passGrade = 0
        return
    def GetLength(self):
        return sizeof(tagMCFBData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 04 玩家扫荡信息 //tagMCFBWipeOutData:
                                FBID:%d,
                                LineIndex:%d,
                                WipeOutCnt:%d,
                                passGrade:%d
                                '''\
                                %(
                                self.FBID,
                                self.LineIndex,
                                self.WipeOutCnt,
                                self.passGrade
                                )
        return DumpString
class  tagMCFBWipeOutData(Structure):
    Head = tagHead()
    WipeOutFBID = 0    #(DWORD WipeOutFBID)//当前扫荡的副本id
    FBDataCnt = 0    #(BYTE FBDataCnt)//
    FBDataList = list()    #(vector<tagMCFBData> FBDataList)//
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.WipeOutFBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FBDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FBDataCnt):
            temFBDataList = tagMCFBData()
            _pos = temFBDataList.ReadData(_lpData, _pos)
            self.FBDataList.append(temFBDataList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x04
        self.WipeOutFBID = 0
        self.FBDataCnt = 0
        self.FBDataList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.FBDataCnt):
            length += self.FBDataList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.WipeOutFBID)
        data = CommFunc.WriteBYTE(data, self.FBDataCnt)
        for i in range(self.FBDataCnt):
            data = CommFunc.WriteString(data, self.FBDataList[i].GetLength(), self.FBDataList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                WipeOutFBID:%d,
                                FBDataCnt:%d,
                                FBDataList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.WipeOutFBID,
                                self.FBDataCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFBWipeOutData=tagMCFBWipeOutData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBWipeOutData.Head.Cmd,m_NAtagMCFBWipeOutData.Head.SubCmd))] = m_NAtagMCFBWipeOutData
#------------------------------------------------------
# A3 18 极品白拿信息 #tagMCFreeGoodsInfo
class  tagMCFreeGoods(Structure):
@@ -5527,135 +5404,6 @@
#------------------------------------------------------
# A3 37 投资理财信息 #tagMCGoldInvestInfo
class  tagMCInvestReward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RewardIndex", c_ushort),    # 索引
                  ("RewardValue", c_ubyte),    # 该等级已领取数据,0可认为未领取
                  ]
    def __init__(self):
        self.Clear()
        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.RewardIndex = 0
        self.RewardValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCInvestReward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 37 投资理财信息 //tagMCGoldInvestInfo:
                                RewardIndex:%d,
                                RewardValue:%d
                                '''\
                                %(
                                self.RewardIndex,
                                self.RewardValue
                                )
        return DumpString
class  tagMCGoldInvestInfo(Structure):
    Head = tagHead()
    InvestType = 0    #(BYTE InvestType)// 投资类型
    CurDay = 0    #(DWORD CurDay)// 当前天数
    InvestGold = 0    #(DWORD InvestGold)// 投资额度
    RewardRecordCnt = 0    #(BYTE RewardRecordCnt)// 投资回报个数
    InvestRewardList = list()    #(vector<tagMCInvestReward> InvestRewardList)// 投资回报记录
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x37
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CurDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.InvestGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RewardRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RewardRecordCnt):
            temInvestRewardList = tagMCInvestReward()
            _pos = temInvestRewardList.ReadData(_lpData, _pos)
            self.InvestRewardList.append(temInvestRewardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x37
        self.InvestType = 0
        self.CurDay = 0
        self.InvestGold = 0
        self.RewardRecordCnt = 0
        self.InvestRewardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        for i in range(self.RewardRecordCnt):
            length += self.InvestRewardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.InvestType)
        data = CommFunc.WriteDWORD(data, self.CurDay)
        data = CommFunc.WriteDWORD(data, self.InvestGold)
        data = CommFunc.WriteBYTE(data, self.RewardRecordCnt)
        for i in range(self.RewardRecordCnt):
            data = CommFunc.WriteString(data, self.InvestRewardList[i].GetLength(), self.InvestRewardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                InvestType:%d,
                                CurDay:%d,
                                InvestGold:%d,
                                RewardRecordCnt:%d,
                                InvestRewardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.InvestType,
                                self.CurDay,
                                self.InvestGold,
                                self.RewardRecordCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCGoldInvestInfo=tagMCGoldInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGoldInvestInfo.Head.Cmd,m_NAtagMCGoldInvestInfo.Head.SubCmd))] = m_NAtagMCGoldInvestInfo
#------------------------------------------------------
# A3 C7 古宝信息 #tagMCGubaoInfo
class  tagMCGubao(Structure):
@@ -5824,20 +5572,22 @@
#------------------------------------------------------
# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
# A3 03 坐骑阶级信息 #tagSCHorseClassInfo
class  tagMCHorsePetSkinInfo(Structure):
class  tagSCHorseClassInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Type", c_ubyte),    # 1-坐骑 2-灵宠
                  ("ID", c_int),    # 对应坐骑表灵宠表ID
                  ("Exp", c_int),    #经验
                  ("SkinLV", c_ubyte),    #觉醒等级
                  ("SkinIndex", c_ubyte),    #当前选择外观
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ClassLV", c_ubyte),    #当前阶级,从0开始
                  ("HorseLV", c_ushort),    #当前阶等级,从1开始
                  ("Exp", c_ushort),    #当前阶等级经验,每级从0开始
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x03
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -5846,111 +5596,51 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Type = 0
        self.ID = 0
        self.Cmd = 0xA3
        self.SubCmd = 0x03
        self.ClassLV = 0
        self.HorseLV = 0
        self.Exp = 0
        self.SkinLV = 0
        self.SkinIndex = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorsePetSkinInfo)
        return sizeof(tagSCHorseClassInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
                                Type:%d,
                                ID:%d,
                                Exp:%d,
                                SkinLV:%d,
                                SkinIndex:%d
        DumpString = '''// A3 03 坐骑阶级信息 //tagSCHorseClassInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ClassLV:%d,
                                HorseLV:%d,
                                Exp:%d
                                '''\
                                %(
                                self.Type,
                                self.ID,
                                self.Exp,
                                self.SkinLV,
                                self.SkinIndex
                                self.Cmd,
                                self.SubCmd,
                                self.ClassLV,
                                self.HorseLV,
                                self.Exp
                                )
        return DumpString
class  tagMCHorsePetSkinData(Structure):
    Head = tagHead()
    Num = 0    #(BYTE Num)//个数
    InfoList = list()    #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Num):
            temInfoList = tagMCHorsePetSkinInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        self.Num = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Num):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Num)
        for i in range(self.Num):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Num:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Num,
                                "..."
                                )
        return DumpString
m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
m_NAtagSCHorseClassInfo=tagSCHorseClassInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseClassInfo.Cmd,m_NAtagSCHorseClassInfo.SubCmd))] = m_NAtagSCHorseClassInfo
#------------------------------------------------------
# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
# A3 04 坐骑外观信息 #tagSCHorseSkinInfo
class  tagMCHorseSkinTimeInfo(Structure):
class  tagSCHorseSkin(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ID", c_int),    # 对应坐骑幻化表ID
                  ("InvalidTime", c_int),    # 失效时间戳
                  ("HorseSkinID", c_ushort),    #坐骑外观ID
                  ("State", c_ubyte),    #是否已激活
                  ("EndTime", c_int),    #到期时间戳,0为永久
                  ("Star", c_ubyte),    #星级
                  ]
    def __init__(self):
@@ -5963,146 +5653,44 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.ID = 0
        self.InvalidTime = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorseSkinTimeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
                                ID:%d,
                                InvalidTime:%d
                                '''\
                                %(
                                self.ID,
                                self.InvalidTime
                                )
        return DumpString
class  tagMCHorseSkinTimeInfoList(Structure):
    Head = tagHead()
    TimeCnt = 0    #(BYTE TimeCnt)//个数
    TimeInfoList = list()    #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TimeCnt):
            temTimeInfoList = tagMCHorseSkinTimeInfo()
            _pos = temTimeInfoList.ReadData(_lpData, _pos)
            self.TimeInfoList.append(temTimeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x10
        self.TimeCnt = 0
        self.TimeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.TimeCnt):
            length += self.TimeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TimeCnt)
        for i in range(self.TimeCnt):
            data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                TimeCnt:%d,
                                TimeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.TimeCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
#------------------------------------------------------
# A3 CD 坐骑星级信息 #tagMCHorseStarInfo
class  tagMCHorseStar(Structure):
    _pack_ = 1
    _fields_ = [
                  ("HorseID", c_int),    # 坐骑表ID
                  ("Star", c_ubyte),    # 星级
                  ]
    def __init__(self):
        self.Clear()
        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.HorseID = 0
        self.HorseSkinID = 0
        self.State = 0
        self.EndTime = 0
        self.Star = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorseStar)
        return sizeof(tagSCHorseSkin)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
                                HorseID:%d,
        DumpString = '''// A3 04 坐骑外观信息 //tagSCHorseSkinInfo:
                                HorseSkinID:%d,
                                State:%d,
                                EndTime:%d,
                                Star:%d
                                '''\
                                %(
                                self.HorseID,
                                self.HorseSkinID,
                                self.State,
                                self.EndTime,
                                self.Star
                                )
        return DumpString
class  tagMCHorseStarInfo(Structure):
class  tagSCHorseSkinInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    HorseStarList = list()    #(vector<tagMCHorseStar> HorseStarList)
    HorseSkinList = list()    #(vector<tagSCHorseSkin> HorseSkinList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCD
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -6110,18 +5698,18 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temHorseStarList = tagMCHorseStar()
            _pos = temHorseStarList.ReadData(_lpData, _pos)
            self.HorseStarList.append(temHorseStarList)
            temHorseSkinList = tagSCHorseSkin()
            _pos = temHorseSkinList.ReadData(_lpData, _pos)
            self.HorseSkinList.append(temHorseSkinList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCD
        self.Head.SubCmd = 0x04
        self.Count = 0
        self.HorseStarList = list()
        self.HorseSkinList = list()
        return
    def GetLength(self):
@@ -6129,7 +5717,7 @@
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.HorseStarList[i].GetLength()
            length += self.HorseSkinList[i].GetLength()
        return length
@@ -6138,14 +5726,14 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
            data = CommFunc.WriteString(data, self.HorseSkinList[i].GetLength(), self.HorseSkinList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                HorseStarList:%s
                                HorseSkinList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -6155,99 +5743,72 @@
        return DumpString
m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
m_NAtagSCHorseSkinInfo=tagSCHorseSkinInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseSkinInfo.Head.Cmd,m_NAtagSCHorseSkinInfo.Head.SubCmd))] = m_NAtagSCHorseSkinInfo
#------------------------------------------------------
# A3 38 投资理财信息 #tagMCInvestInfo
# A3 38 投资信息 #tagSCInvestInfo
class  tagMCInvestInfo(Structure):
    Head = tagHead()
    InvestType = 0    #(BYTE InvestType)// 投资类型
    CurDay = 0    #(WORD CurDay)// 当前天数,投资第一天为1
    ValueCount = 0    #(BYTE ValueCount)
    RewardValue = list()    #(vector<DWORD> RewardValue)//领奖记录值,按投资回报索引位记录是否已领取
    ProgressValue = list()    #(vector<DWORD> ProgressValue)//投资相关可领取进度记录值:  9登录投资-记录已登录天数;11Boss投资-按回报索引位记录是否已击杀该boss
    data = None
class  tagSCInvestInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("InvestType", c_ubyte),    # 投资类型
                  ("InvestBuyTime", c_int),    # 投资购买时间戳,永久的通过该时间判断是否有效或已过天数,任意类型均有该值,过期没有重置,前端自己判断
                  ("InvestEndTime", c_int),    # 投资到期时间戳,非永久的通过该时间判断到期时间,有天数限制的才有值
                  ("AwardState", c_ubyte),    # 今日是否已领取奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x38
        self.Cmd = 0xA3
        self.SubCmd = 0x38
        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.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CurDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ValueCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.RewardValue.append(value)
        for i in range(self.ValueCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.ProgressValue.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 = 0x38
        self.Cmd = 0xA3
        self.SubCmd = 0x38
        self.InvestType = 0
        self.CurDay = 0
        self.ValueCount = 0
        self.RewardValue = list()
        self.ProgressValue = list()
        self.InvestBuyTime = 0
        self.InvestEndTime = 0
        self.AwardState = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        length += 1
        length += 4 * self.ValueCount
        length += 4 * self.ValueCount
        return length
        return sizeof(tagSCInvestInfo)
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.InvestType)
        data = CommFunc.WriteWORD(data, self.CurDay)
        data = CommFunc.WriteBYTE(data, self.ValueCount)
        for i in range(self.ValueCount):
            data = CommFunc.WriteDWORD(data, self.RewardValue[i])
        for i in range(self.ValueCount):
            data = CommFunc.WriteDWORD(data, self.ProgressValue[i])
        return data
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''
                                Head:%s,
        DumpString = '''// A3 38 投资信息 //tagSCInvestInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                InvestType:%d,
                                CurDay:%d,
                                ValueCount:%d,
                                RewardValue:%s,
                                ProgressValue:%s
                                InvestBuyTime:%d,
                                InvestEndTime:%d,
                                AwardState:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cmd,
                                self.SubCmd,
                                self.InvestType,
                                self.CurDay,
                                self.ValueCount,
                                "...",
                                "..."
                                self.InvestBuyTime,
                                self.InvestEndTime,
                                self.AwardState
                                )
        return DumpString
m_NAtagMCInvestInfo=tagMCInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCInvestInfo.Head.Cmd,m_NAtagMCInvestInfo.Head.SubCmd))] = m_NAtagMCInvestInfo
m_NAtagSCInvestInfo=tagSCInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
#------------------------------------------------------
@@ -7880,185 +7441,6 @@
#------------------------------------------------------
# A3 C8 神通等级信息 #tagMCShentongLVInfo
class  tagMCShentongLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ShentongID", c_ubyte),
                  ("ClassLV", c_ubyte),
                  ("LV", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        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.ShentongID = 0
        self.ClassLV = 0
        self.LV = 0
        return
    def GetLength(self):
        return sizeof(tagMCShentongLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
                                ShentongID:%d,
                                ClassLV:%d,
                                LV:%d
                                '''\
                                %(
                                self.ShentongID,
                                self.ClassLV,
                                self.LV
                                )
        return DumpString
class  tagMCShentongLVInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    ShentongLVList = list()    #(vector<tagMCShentongLV> ShentongLVList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        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):
            temShentongLVList = tagMCShentongLV()
            _pos = temShentongLVList.ReadData(_lpData, _pos)
            self.ShentongLVList.append(temShentongLVList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        self.Count = 0
        self.ShentongLVList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.ShentongLVList[i].GetLength()
        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.WriteString(data, self.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ShentongLVList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
#------------------------------------------------------
# A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
class  tagMCShentongSkillInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SkillIDList = list()    #(vector<DWORD> SkillIDList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkillIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        self.Count = 0
        self.SkillIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SkillIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
#------------------------------------------------------
# A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
class  tagMCSingleGoldGift(Structure):
@@ -9241,121 +8623,6 @@
#------------------------------------------------------
#A3 01 坐骑培养信息 #tagTrainHorseData
class  tagTrainHorseData(Structure):
    Head = tagHead()
    LV = 0    #(BYTE LV)//等阶
    EatItemCount = 0    #(DWORD EatItemCount)//当前阶已吃丹个数
    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
    TrainTypes = 0    #(BYTE TrainTypes)//培养类型数
    TrainLVList = list()    #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
    TrainItemCountList = list()    #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
    SkinPlusStateCount = 0    #(BYTE SkinPlusStateCount)//幻化激活状态值数
    SkinPlusStateList = list()    #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TrainTypes):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.TrainLVList.append(value)
        for i in range(self.TrainTypes):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.TrainItemCountList.append(value)
        self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SkinPlusStateCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkinPlusStateList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x01
        self.LV = 0
        self.EatItemCount = 0
        self.SkinPlusState = 0
        self.TrainTypes = 0
        self.TrainLVList = list()
        self.TrainItemCountList = list()
        self.SkinPlusStateCount = 0
        self.SkinPlusStateList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        length += 4 * self.TrainTypes
        length += 4 * self.TrainTypes
        length += 1
        length += 4 * self.SkinPlusStateCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.LV)
        data = CommFunc.WriteDWORD(data, self.EatItemCount)
        data = CommFunc.WriteDWORD(data, self.SkinPlusState)
        data = CommFunc.WriteBYTE(data, self.TrainTypes)
        for i in range(self.TrainTypes):
            data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
        for i in range(self.TrainTypes):
            data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
        data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
        for i in range(self.SkinPlusStateCount):
            data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                LV:%d,
                                EatItemCount:%d,
                                SkinPlusState:%d,
                                TrainTypes:%d,
                                TrainLVList:%s,
                                TrainItemCountList:%s,
                                SkinPlusStateCount:%d,
                                SkinPlusStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.LV,
                                self.EatItemCount,
                                self.SkinPlusState,
                                self.TrainTypes,
                                "...",
                                "...",
                                self.SkinPlusStateCount,
                                "..."
                                )
        return DumpString
m_NAtagTrainHorseData=tagTrainHorseData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class  tagMCTreasureGridLimit(Structure):
@@ -9641,152 +8908,6 @@
#------------------------------------------------------
#A3 05 扫荡奖励信息 #tagMCWipeOutPrize
class  tagMCPrizeItemInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),    #物品id
                  ("ItemCnt", c_ubyte),    #物品数量
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        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 = 0xA3
        self.SubCmd = 0x05
        self.ItemID = 0
        self.ItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCPrizeItemInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 05 扫荡奖励信息 //tagMCWipeOutPrize:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d,
                                ItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID,
                                self.ItemCnt
                                )
        return DumpString
class  tagMCWipeOutPrize(Structure):
    Head = tagHead()
    FBID = 0    #(DWORD FBID)//副本id
    WipeOutCnt = 0    #(DWORD WipeOutCnt)//扫荡次数
    GiveExp = 0    #(DWORD GiveExp)//给予经验
    SilverCnt = 0    #(DWORD SilverCnt)//给予金币
    PrizeCnt = 0    #(BYTE PrizeCnt)//״̬
    PrizeInfo = list()    #(vector<tagMCPrizeItemInfo> PrizeInfo)//״̬
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.WipeOutCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GiveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SilverCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PrizeCnt):
            temPrizeInfo = tagMCPrizeItemInfo()
            _pos = temPrizeInfo.ReadData(_lpData, _pos)
            self.PrizeInfo.append(temPrizeInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x05
        self.FBID = 0
        self.WipeOutCnt = 0
        self.GiveExp = 0
        self.SilverCnt = 0
        self.PrizeCnt = 0
        self.PrizeInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        for i in range(self.PrizeCnt):
            length += self.PrizeInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.FBID)
        data = CommFunc.WriteDWORD(data, self.WipeOutCnt)
        data = CommFunc.WriteDWORD(data, self.GiveExp)
        data = CommFunc.WriteDWORD(data, self.SilverCnt)
        data = CommFunc.WriteBYTE(data, self.PrizeCnt)
        for i in range(self.PrizeCnt):
            data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FBID:%d,
                                WipeOutCnt:%d,
                                GiveExp:%d,
                                SilverCnt:%d,
                                PrizeCnt:%d,
                                PrizeInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FBID,
                                self.WipeOutCnt,
                                self.GiveExp,
                                self.SilverCnt,
                                self.PrizeCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCWipeOutPrize=tagMCWipeOutPrize()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWipeOutPrize.Head.Cmd,m_NAtagMCWipeOutPrize.Head.SubCmd))] = m_NAtagMCWipeOutPrize
#------------------------------------------------------
# A3 35 通知世界等级 #tagPyMCWorldAverageLv
class  tagPyMCWorldAverageLv(Structure):
@@ -9840,114 +8961,6 @@
m_NAtagPyMCWorldAverageLv=tagPyMCWorldAverageLv()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyMCWorldAverageLv.Cmd,m_NAtagPyMCWorldAverageLv.SubCmd))] = m_NAtagPyMCWorldAverageLv
#------------------------------------------------------
# A3 48 仙宝寻主领奖记录 #tagMCXBXZAwardRecordList
class  tagMCXBXZAwardRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个id   0-30为0, 31-61为1..
                  ("Record", c_int),    #对应是否领取值
                  ]
    def __init__(self):
        self.Clear()
        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.RecordIndex = 0
        self.Record = 0
        return
    def GetLength(self):
        return sizeof(tagMCXBXZAwardRecord)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 48 仙宝寻主领奖记录 //tagMCXBXZAwardRecordList:
                                RecordIndex:%d,
                                Record:%d
                                '''\
                                %(
                                self.RecordIndex,
                                self.Record
                                )
        return DumpString
class  tagMCXBXZAwardRecordList(Structure):
    Head = tagHead()
    RecordCnt = 0    #(WORD RecordCnt)//记录个数
    RecordList = list()    #(vector<tagMCXBXZAwardRecord> RecordList)//记录列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x48
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.RecordCnt):
            temRecordList = tagMCXBXZAwardRecord()
            _pos = temRecordList.ReadData(_lpData, _pos)
            self.RecordList.append(temRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x48
        self.RecordCnt = 0
        self.RecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.RecordCnt):
            length += self.RecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.RecordCnt)
        for i in range(self.RecordCnt):
            data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordCnt:%d,
                                RecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCXBXZAwardRecordList=tagMCXBXZAwardRecordList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXBXZAwardRecordList.Head.Cmd,m_NAtagMCXBXZAwardRecordList.Head.SubCmd))] = m_NAtagMCXBXZAwardRecordList
#------------------------------------------------------
@@ -14491,6 +13504,7 @@
    Face = 0    #(DWORD Face)
    FacePic = 0    #(DWORD FacePic)
    ModelMark = 0    #(DWORD ModelMark)//变形模型mark
    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)//其他外观信息
    TitleID = 0    #(DWORD TitleID)//佩戴的称号
    ServerID = 0    #(DWORD ServerID)
    FightPower = 0    #(DWORD FightPower)
@@ -14520,6 +13534,7 @@
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -14545,6 +13560,7 @@
        self.Face = 0
        self.FacePic = 0
        self.ModelMark = 0
        self.EquipShowSwitch = 0
        self.TitleID = 0
        self.ServerID = 0
        self.FightPower = 0
@@ -14573,6 +13589,7 @@
        length += 4
        length += 4
        length += 4
        length += 4
        length += 33
        length += 4
        length += 3
@@ -14592,6 +13609,7 @@
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.ModelMark)
        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
        data = CommFunc.WriteDWORD(data, self.TitleID)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.FightPower)
@@ -14615,6 +13633,7 @@
                                Face:%d,
                                FacePic:%d,
                                ModelMark:%d,
                                EquipShowSwitch:%d,
                                TitleID:%d,
                                ServerID:%d,
                                FightPower:%d,
@@ -14636,6 +13655,7 @@
                                self.Face,
                                self.FacePic,
                                self.ModelMark,
                                self.EquipShowSwitch,
                                self.TitleID,
                                self.ServerID,
                                self.FightPower,
@@ -15353,98 +14373,6 @@
#------------------------------------------------------
# A8 10 通知获得物品 #tagMCNotifyUseItemGetItem
class  tagMCNotifyUseItemGetItem(Structure):
    Head = tagHead()
    UseItemID = 0    #(DWORD UseItemID)// 使用的物品ID
    UseCount = 0    #(WORD UseCount)// 使用物品个数
    GetItemLen = 0    #(WORD GetItemLen)
    GetItemData = ""    #(String GetItemData)//  获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
    MoneyType = 0    #(BYTE MoneyType)// 获得货币类型
    MoneyCount = 0    #(DWORD MoneyCount)// 获得货币数量
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.UseCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoneyCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x10
        self.UseItemID = 0
        self.UseCount = 0
        self.GetItemLen = 0
        self.GetItemData = ""
        self.MoneyType = 0
        self.MoneyCount = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 2
        length += 2
        length += len(self.GetItemData)
        length += 1
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.UseItemID)
        data = CommFunc.WriteWORD(data, self.UseCount)
        data = CommFunc.WriteWORD(data, self.GetItemLen)
        data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
        data = CommFunc.WriteBYTE(data, self.MoneyType)
        data = CommFunc.WriteDWORD(data, self.MoneyCount)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                UseItemID:%d,
                                UseCount:%d,
                                GetItemLen:%d,
                                GetItemData:%s,
                                MoneyType:%d,
                                MoneyCount:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.UseItemID,
                                self.UseCount,
                                self.GetItemLen,
                                self.GetItemData,
                                self.MoneyType,
                                self.MoneyCount
                                )
        return DumpString
m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
#------------------------------------------------------
# A8 17 宠物培养信息 #tagMCPetTrainInfo
class  tagMCPetTrainInfo(Structure):
@@ -15967,6 +14895,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Score", c_int),    #当前积分
                  ("WinCnt", c_int),    #累计胜利次数
                  ]
    def __init__(self):
@@ -15984,6 +14913,7 @@
        self.Cmd = 0xA9
        self.SubCmd = 0x23
        self.Score = 0
        self.WinCnt = 0
        return
    def GetLength(self):
@@ -15996,12 +14926,14 @@
        DumpString = '''// A9 23 演武场玩家信息 //tagSCArenaPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Score:%d
                                Score:%d,
                                WinCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Score
                                self.Score,
                                self.WinCnt
                                )
        return DumpString
@@ -26135,58 +25067,6 @@
#------------------------------------------------------
# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
class  tagMCDayFreeGoldGiftState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DayFreeGoldGiftState", c_ubyte),    #每日免费直购礼包是否已领奖 0-未领 1-已领
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x24
        self.DayFreeGoldGiftState = 0
        return
    def GetLength(self):
        return sizeof(tagMCDayFreeGoldGiftState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
                                Cmd:%s,
                                SubCmd:%s,
                                DayFreeGoldGiftState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DayFreeGoldGiftState
                                )
        return DumpString
m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
#------------------------------------------------------
# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
class  tagMCFeastLoginDayAwardItem(Structure):
@@ -26430,460 +25310,6 @@
m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
#------------------------------------------------------
# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
class  tagMCFeastTravelAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        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.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastTravelAward(Structure):
    AwardIndex = 0    #(BYTE AwardIndex)//游历奖励索引
    NeedTravelPoint = 0    #(WORD NeedTravelPoint)//单次领奖所需游历值
    AwardCountMax = 0    #(WORD AwardCountMax)//最大可领取次数,0代表不限
    AwardItemCount = 0    #(BYTE AwardItemCount)//奖励物品数
    AwardItemList = list()    #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItemList = tagMCFeastTravelAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.AwardIndex = 0
        self.NeedTravelPoint = 0
        self.AwardCountMax = 0
        self.AwardItemCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += 2
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.AwardIndex)
        data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
        data = CommFunc.WriteWORD(data, self.AwardCountMax)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                AwardIndex:%d,
                                NeedTravelPoint:%d,
                                AwardCountMax:%d,
                                AwardItemCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.AwardIndex,
                                self.NeedTravelPoint,
                                self.AwardCountMax,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastTravelTask(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TravelTaskID", c_ubyte),    #游历任务ID
                  ("FinishNeedValue", c_ushort),    #单次完成所需进度
                  ("FinishTimeMax", c_ushort),    #最大可完成次数,0代表不限
                  ("AddTravelPoint", c_ushort),    #单次完成获得游历值
                  ]
    def __init__(self):
        self.Clear()
        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.TravelTaskID = 0
        self.FinishNeedValue = 0
        self.FinishTimeMax = 0
        self.AddTravelPoint = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelTask)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
                                TravelTaskID:%d,
                                FinishNeedValue:%d,
                                FinishTimeMax:%d,
                                AddTravelPoint:%d
                                '''\
                                %(
                                self.TravelTaskID,
                                self.FinishNeedValue,
                                self.FinishTimeMax,
                                self.AddTravelPoint
                                )
        return DumpString
class  tagMCFeastTravelInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
    TravelTaskCount = 0    #(BYTE TravelTaskCount)// 游历任务数
    TravelTaskList = list()    #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
    TravelAwardCount = 0    #(BYTE TravelAwardCount)// 游历奖励数
    TravelAwardList = list()    #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x46
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelTaskCount):
            temTravelTaskList = tagMCFeastTravelTask()
            _pos = temTravelTaskList.ReadData(_lpData, _pos)
            self.TravelTaskList.append(temTravelTaskList)
        self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelAwardCount):
            temTravelAwardList = tagMCFeastTravelAward()
            _pos = temTravelAwardList.ReadData(_lpData, _pos)
            self.TravelAwardList.append(temTravelAwardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x46
        self.StartDate = ""
        self.EndtDate = ""
        self.LimitLV = 0
        self.ResetType = 0
        self.TravelTaskCount = 0
        self.TravelTaskList = list()
        self.TravelAwardCount = 0
        self.TravelAwardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        for i in range(self.TravelTaskCount):
            length += self.TravelTaskList[i].GetLength()
        length += 1
        for i in range(self.TravelAwardCount):
            length += self.TravelAwardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
        for i in range(self.TravelTaskCount):
            data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
        for i in range(self.TravelAwardCount):
            data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                LimitLV:%d,
                                ResetType:%d,
                                TravelTaskCount:%d,
                                TravelTaskList:%s,
                                TravelAwardCount:%d,
                                TravelAwardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.LimitLV,
                                self.ResetType,
                                self.TravelTaskCount,
                                "...",
                                self.TravelAwardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
#------------------------------------------------------
# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
class  tagMCFeastTravelPlayerAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("AwardIndex", c_ubyte),    #游历奖励索引
                  ("GetAwardCount", c_int),    #已领取次数;前端判断是否可领取: 总游历值 >=  (已领取次数 + 1)  * 单次所需游历值
                  ]
    def __init__(self):
        self.Clear()
        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.AwardIndex = 0
        self.GetAwardCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelPlayerAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
                                AwardIndex:%d,
                                GetAwardCount:%d
                                '''\
                                %(
                                self.AwardIndex,
                                self.GetAwardCount
                                )
        return DumpString
class  tagMCFeastTravelPlayerTask(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TravelTaskID", c_ubyte),    #游历任务ID
                  ("TravelValue", c_int),    #当前进度值,一直累加
                  ("FinishCount", c_ubyte),    #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
                  ]
    def __init__(self):
        self.Clear()
        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.TravelTaskID = 0
        self.TravelValue = 0
        self.FinishCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelPlayerTask)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
                                TravelTaskID:%d,
                                TravelValue:%d,
                                FinishCount:%d
                                '''\
                                %(
                                self.TravelTaskID,
                                self.TravelValue,
                                self.FinishCount
                                )
        return DumpString
class  tagMCFeastTravelPlayerInfo(Structure):
    Head = tagHead()
    TravelPoint = 0    #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
    TravelPlayerTaskCount = 0    #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
    TravelPlayerTaskList = list()    #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
    TravelPlayerAwardCount = 0    #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
    TravelPlayerAwardList = list()    #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x47
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelPlayerTaskCount):
            temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
            _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
            self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
        self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelPlayerAwardCount):
            temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
            _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
            self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x47
        self.TravelPoint = 0
        self.TravelPlayerTaskCount = 0
        self.TravelPlayerTaskList = list()
        self.TravelPlayerAwardCount = 0
        self.TravelPlayerAwardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.TravelPlayerTaskCount):
            length += self.TravelPlayerTaskList[i].GetLength()
        length += 1
        for i in range(self.TravelPlayerAwardCount):
            length += self.TravelPlayerAwardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.TravelPoint)
        data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
        for i in range(self.TravelPlayerTaskCount):
            data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
        for i in range(self.TravelPlayerAwardCount):
            data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                TravelPoint:%d,
                                TravelPlayerTaskCount:%d,
                                TravelPlayerTaskList:%s,
                                TravelPlayerAwardCount:%d,
                                TravelPlayerAwardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.TravelPoint,
                                self.TravelPlayerTaskCount,
                                "...",
                                self.TravelPlayerAwardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
#------------------------------------------------------
@@ -29219,58 +27645,6 @@
m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
#------------------------------------------------------
# AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
class  tagMCOnlineRechargeTH(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AwardState", c_ubyte),    #是否已领取奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        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 = 0xAA
        self.SubCmd = 0x04
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagMCOnlineRechargeTH)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
                                Cmd:%s,
                                SubCmd:%s,
                                AwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AwardState
                                )
        return DumpString
m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
#------------------------------------------------------
@@ -31715,896 +30089,6 @@
#------------------------------------------------------
# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
class  tagMCActivityPlaceInfo(Structure):
    Head = tagHead()
    StartTime = 0    #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
    PlaceCount = 0    #(BYTE PlaceCount)// 剩余未完成探索次数
    RewardCount = 0    #(BYTE RewardCount)// 累计未领取探索奖励次数
    RewardLen = 0    #(BYTE RewardLen)
    RewardInfo = ""    #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
    TodayExp = 0    #(DWORD TodayExp)
    TodayExpPoint = 0    #(DWORD TodayExpPoint)
    YestordayExp = 0    #(DWORD YestordayExp)
    YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
    TotalCount = 0    #(DWORD TotalCount)// 累计活跃放置次数
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
        self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        self.StartTime = 0
        self.PlaceCount = 0
        self.RewardCount = 0
        self.RewardLen = 0
        self.RewardInfo = ""
        self.TodayExp = 0
        self.TodayExpPoint = 0
        self.YestordayExp = 0
        self.YestordayExpPoint = 0
        self.TotalCount = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1
        length += 1
        length += len(self.RewardInfo)
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.StartTime)
        data = CommFunc.WriteBYTE(data, self.PlaceCount)
        data = CommFunc.WriteBYTE(data, self.RewardCount)
        data = CommFunc.WriteBYTE(data, self.RewardLen)
        data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
        data = CommFunc.WriteDWORD(data, self.TodayExp)
        data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
        data = CommFunc.WriteDWORD(data, self.YestordayExp)
        data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
        data = CommFunc.WriteDWORD(data, self.TotalCount)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartTime:%d,
                                PlaceCount:%d,
                                RewardCount:%d,
                                RewardLen:%d,
                                RewardInfo:%s,
                                TodayExp:%d,
                                TodayExpPoint:%d,
                                YestordayExp:%d,
                                YestordayExpPoint:%d,
                                TotalCount:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartTime,
                                self.PlaceCount,
                                self.RewardCount,
                                self.RewardLen,
                                self.RewardInfo,
                                self.TodayExp,
                                self.TodayExpPoint,
                                self.YestordayExp,
                                self.YestordayExpPoint,
                                self.TotalCount
                                )
        return DumpString
m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
#------------------------------------------------------
# B0 01 新增协助 #tagGCAssistInfoList
class  tagGCAssistInfo(Structure):
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        return _pos
    def Clear(self):
        self.AssistGUID = ""
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        return data
    def OutputString(self):
        DumpString = '''
                                AssistGUID:%s,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s
                                '''\
                                %(
                                self.AssistGUID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData
                                )
        return DumpString
class  tagGCAssistInfoList(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    AssistInfoList = list()    #(vector<tagGCAssistInfo> AssistInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        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):
            temAssistInfoList = tagGCAssistInfo()
            _pos = temAssistInfoList.ReadData(_lpData, _pos)
            self.AssistInfoList.append(temAssistInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        self.Count = 0
        self.AssistInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.AssistInfoList[i].GetLength()
        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.WriteString(data, self.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                AssistInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCAssistInfoList=tagGCAssistInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
#------------------------------------------------------
# B0 03 正在进行中的协助 #tagGCAssistingInfo
class  tagGCAssistingInfo(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistingInfo=tagGCAssistingInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
#------------------------------------------------------
# B0 08 协助结束 #tagGCAssistOver
class  tagGCAssistOver(Structure):
    Head = tagHead()
    IsTagPlayerReason = 0    #(BYTE IsTagPlayerReason)//是否发布方原因
    ReasonLen = 0    #(BYTE ReasonLen)
    Reason = ""    #(String Reason)//原因
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        self.IsTagPlayerReason = 0
        self.ReasonLen = 0
        self.Reason = ""
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += len(self.Reason)
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
        data = CommFunc.WriteBYTE(data, self.ReasonLen)
        data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsTagPlayerReason:%d,
                                ReasonLen:%d,
                                Reason:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsTagPlayerReason,
                                self.ReasonLen,
                                self.Reason,
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistOver=tagGCAssistOver()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
#------------------------------------------------------
# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
class  tagGCCanGetAssistThanksGiftCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CanGetCount", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x06
        self.CanGetCount = 0
        return
    def GetLength(self):
        return sizeof(tagGCCanGetAssistThanksGiftCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
                                Cmd:%s,
                                SubCmd:%s,
                                CanGetCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CanGetCount
                                )
        return DumpString
m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
#------------------------------------------------------
# B0 02 删除协助 #tagGCClearAssist
class  tagGCClearAssist(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCClearAssist=tagGCClearAssist()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
#------------------------------------------------------
#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
class  tagFamilyArrestAwardReceiveState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ReceiveState", c_int),    #悬赏任务奖励领取情况
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x25
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x25
        self.ReceiveState = 0
        return
    def GetLength(self):
        return sizeof(tagFamilyArrestAwardReceiveState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B0 25 家族悬赏任务奖励领取情况 //tagFamilyArrestAwardReceiveState:
                                Cmd:%s,
                                SubCmd:%s,
                                ReceiveState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ReceiveState
                                )
        return DumpString
m_NAtagFamilyArrestAwardReceiveState=tagFamilyArrestAwardReceiveState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestAwardReceiveState.Cmd,m_NAtagFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagFamilyArrestAwardReceiveState
#------------------------------------------------------
#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
class  tagFamilyArrestOverState(Structure):
    ID = 0    #(DWORD ID)//悬赏任务ID
    NameLen = 0    #(WORD NameLen)//名字长度
    Name = ""    #(String Name)//size = NameLen
    OverState = 0    #(DWORD OverState)//任务完成情况
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.OverState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ID = 0
        self.NameLen = 0
        self.Name = ""
        self.OverState = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += len(self.Name)
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ID)
        data = CommFunc.WriteWORD(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.OverState)
        return data
    def OutputString(self):
        DumpString = '''
                                ID:%d,
                                NameLen:%d,
                                Name:%s,
                                OverState:%d
                                '''\
                                %(
                                self.ID,
                                self.NameLen,
                                self.Name,
                                self.OverState
                                )
        return DumpString
class  tagFamilyArrestOverStateInfo(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x26
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temArrestOverStateInfo = tagFamilyArrestOverState()
            _pos = temArrestOverStateInfo.ReadData(_lpData, _pos)
            self.ArrestOverStateInfo.append(temArrestOverStateInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x26
        self.Count = 0
        self.ArrestOverStateInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.ArrestOverStateInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ArrestOverStateInfo[i].GetLength(), self.ArrestOverStateInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ArrestOverStateInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
#------------------------------------------------------
# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
class  tagGCGetAssistThanksGiftPreview(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    PlayerID = 0    #(DWORD PlayerID)//发起玩家ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    TimeStr = ""    #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
    ExtraAward = 0    #(BYTE ExtraAward)//是否有额外奖励
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        self.ItemID = 0
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.TimeStr = ""
        self.ExtraAward = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 19
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteString(data, 19, self.TimeStr)
        data = CommFunc.WriteBYTE(data, self.ExtraAward)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                TimeStr:%s,
                                ExtraAward:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.TimeStr,
                                self.ExtraAward
                                )
        return DumpString
m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
#------------------------------------------------------
# B0 37 淘金营地信息 #tagSCGoldRushCampInfo
class  tagSCGoldRushCamp(Structure):
@@ -32827,21 +30311,20 @@
#------------------------------------------------------
# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
# B0 40 游历信息 #tagSCTravelInfo
class  tagMCTodayAssistMoneyInfo(Structure):
class  tagSCTravelGrid(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TodayAssistMoney", c_ushort),    #今日已获得活跃令,不含社交加成
                  ("SocialMoney", c_ushort),    #社交额外加成
                  ("Row", c_ubyte),    #行,从1开始
                  ("Col", c_ubyte),    #列,从1开始
                  ("State", c_ubyte),    #状态:0-未点击;1-已开启;2-裂纹
                  ("Multi", c_ubyte),    #奖励倍值: 默认1倍;2-双倍;...
                  ("EventID", c_ushort),    #事件ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -32850,434 +30333,358 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        self.TodayAssistMoney = 0
        self.SocialMoney = 0
        self.Row = 0
        self.Col = 0
        self.State = 0
        self.Multi = 0
        self.EventID = 0
        return
    def GetLength(self):
        return sizeof(tagMCTodayAssistMoneyInfo)
        return sizeof(tagSCTravelGrid)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TodayAssistMoney:%d,
                                SocialMoney:%d
        DumpString = '''// B0 40 游历信息 //tagSCTravelInfo:
                                Row:%d,
                                Col:%d,
                                State:%d,
                                Multi:%d,
                                EventID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TodayAssistMoney,
                                self.SocialMoney
                                self.Row,
                                self.Col,
                                self.State,
                                self.Multi,
                                self.EventID
                                )
        return DumpString
m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
#------------------------------------------------------
# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
class  tagGCAssistPlayerInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic
                                )
        return DumpString
class  tagGCUseAssistThanksGiftPreview(Structure):
class  tagSCTravelInfo(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    AssistPlayerCount = 0    #(BYTE AssistPlayerCount)
    AssistPlayerList = list()    #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
    Energy = 0    #(BYTE Energy)//剩余体力
    EnergyTime = 0    #(DWORD EnergyTime)//上次恢复体力时间戳
    TravelCnt = 0    #(DWORD TravelCnt)//累计游历次数
    SceneryType = 0    #(BYTE SceneryType)//景观类型
    SceneryRow = 0    #(BYTE SceneryRow)//景观左上角所在行,从1开始
    SceneryCol = 0    #(BYTE SceneryCol)//景观左上角所在列,从1开始
    SceneryLVInfo = 0    #(DWORD SceneryLVInfo)//景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
    Result = 0    #(BYTE Result)//后端处理:0-无;1-常规;2-马车炸弹;3-传送门;4-景观;5-重置开始
    GridCnt = 0    #(BYTE GridCnt)
    GridList = list()    #(vector<tagSCTravelGrid> GridList)//格子信息列表,只同步变化的
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        self.Head.SubCmd = 0x40
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AssistPlayerCount):
            temAssistPlayerList = tagGCAssistPlayerInfo()
            _pos = temAssistPlayerList.ReadData(_lpData, _pos)
            self.AssistPlayerList.append(temAssistPlayerList)
        self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryRow,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryCol,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryLVInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GridCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GridCnt):
            temGridList = tagSCTravelGrid()
            _pos = temGridList.ReadData(_lpData, _pos)
            self.GridList.append(temGridList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        self.ItemID = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.AssistPlayerCount = 0
        self.AssistPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 1
        for i in range(self.AssistPlayerCount):
            length += self.AssistPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
        for i in range(self.AssistPlayerCount):
            data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                AssistPlayerCount:%d,
                                AssistPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.AssistPlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
#------------------------------------------------------
# B0 20 膜拜信息列表 #tagGCWorshipInfoList
class  tagGCWorshipInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)// 目标玩家ID
    WorshipType = 0    #(BYTE WorshipType)// 膜拜类型
    WorshipValue = 0    #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
    InfoLen = 0    #(WORD InfoLen)
    PlayerInfo = ""    #(String PlayerInfo)// 玩家信息{k:v, ...}
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.WorshipType = 0
        self.WorshipValue = 0
        self.InfoLen = 0
        self.PlayerInfo = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 4
        length += 2
        length += len(self.PlayerInfo)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.WorshipType)
        data = CommFunc.WriteDWORD(data, self.WorshipValue)
        data = CommFunc.WriteWORD(data, self.InfoLen)
        data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                WorshipType:%d,
                                WorshipValue:%d,
                                InfoLen:%d,
                                PlayerInfo:%s
                                '''\
                                %(
                                self.PlayerID,
                                self.WorshipType,
                                self.WorshipValue,
                                self.InfoLen,
                                self.PlayerInfo
                                )
        return DumpString
class  tagGCWorshipInfoList(Structure):
    Head = tagHead()
    WorshipCount = 0    #(BYTE WorshipCount)
    WorshipInfoList = list()    #(vector<tagGCWorshipInfo> WorshipInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WorshipCount):
            temWorshipInfoList = tagGCWorshipInfo()
            _pos = temWorshipInfoList.ReadData(_lpData, _pos)
            self.WorshipInfoList.append(temWorshipInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x20
        self.WorshipCount = 0
        self.WorshipInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.WorshipCount):
            length += self.WorshipInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.WorshipCount)
        for i in range(self.WorshipCount):
            data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                WorshipCount:%d,
                                WorshipInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.WorshipCount,
                                "..."
                                )
        return DumpString
m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
#------------------------------------------------------
# B0 21 膜拜结果 #tagGCWorshipResult
class  tagGCWorshipResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 目标玩家ID
                  ("WorshipType", c_ubyte),    # 膜拜类型
                  ("WorshipValue", c_int),    # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
                  ("Result", c_ubyte),    # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
                  ("MoneyType", c_ubyte),    # 货币类型
                  ("MoneyValue", c_int),    # 货币奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        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 = 0xB0
        self.SubCmd = 0x21
        self.PlayerID = 0
        self.WorshipType = 0
        self.WorshipValue = 0
        self.Head.SubCmd = 0x40
        self.Energy = 0
        self.EnergyTime = 0
        self.TravelCnt = 0
        self.SceneryType = 0
        self.SceneryRow = 0
        self.SceneryCol = 0
        self.SceneryLVInfo = 0
        self.Result = 0
        self.MoneyType = 0
        self.MoneyValue = 0
        self.GridCnt = 0
        self.GridList = list()
        return
    def GetLength(self):
        return sizeof(tagGCWorshipResult)
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        length += 1
        length += 1
        length += 4
        length += 1
        length += 1
        for i in range(self.GridCnt):
            length += self.GridList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Energy)
        data = CommFunc.WriteDWORD(data, self.EnergyTime)
        data = CommFunc.WriteDWORD(data, self.TravelCnt)
        data = CommFunc.WriteBYTE(data, self.SceneryType)
        data = CommFunc.WriteBYTE(data, self.SceneryRow)
        data = CommFunc.WriteBYTE(data, self.SceneryCol)
        data = CommFunc.WriteDWORD(data, self.SceneryLVInfo)
        data = CommFunc.WriteBYTE(data, self.Result)
        data = CommFunc.WriteBYTE(data, self.GridCnt)
        for i in range(self.GridCnt):
            data = CommFunc.WriteString(data, self.GridList[i].GetLength(), self.GridList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Energy:%d,
                                EnergyTime:%d,
                                TravelCnt:%d,
                                SceneryType:%d,
                                SceneryRow:%d,
                                SceneryCol:%d,
                                SceneryLVInfo:%d,
                                Result:%d,
                                GridCnt:%d,
                                GridList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Energy,
                                self.EnergyTime,
                                self.TravelCnt,
                                self.SceneryType,
                                self.SceneryRow,
                                self.SceneryCol,
                                self.SceneryLVInfo,
                                self.Result,
                                self.GridCnt,
                                "..."
                                )
        return DumpString
m_NAtagSCTravelInfo=tagSCTravelInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
#------------------------------------------------------
# B1 30 红颜信息 #tagSCBeautyInfo
class  tagSCBeautySkin(Structure):
    _pack_ = 1
    _fields_ = [
                  ("SkinID", c_ushort),    #ʱװID
                  ("State", c_ubyte),    #是否已激活
                  ("Used", c_ubyte),    #是否已穿戴该时装,某个红颜的所有时装穿戴可能都为0,则前端取默认时装进行展示,如果有同步已穿戴的则以后端为准
                  ("Star", c_ubyte),    #时装星级,激活时为0星
                  ]
    def __init__(self):
        self.Clear()
        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.SkinID = 0
        self.State = 0
        self.Used = 0
        self.Star = 0
        return
    def GetLength(self):
        return sizeof(tagSCBeautySkin)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                WorshipType:%d,
                                WorshipValue:%d,
                                Result:%d,
                                MoneyType:%d,
                                MoneyValue:%d
        DumpString = '''// B1 30 红颜信息 //tagSCBeautyInfo:
                                SkinID:%d,
                                State:%d,
                                Used:%d,
                                Star:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.WorshipType,
                                self.WorshipValue,
                                self.Result,
                                self.MoneyType,
                                self.MoneyValue
                                self.SkinID,
                                self.State,
                                self.Used,
                                self.Star
                                )
        return DumpString
m_NAtagGCWorshipResult=tagGCWorshipResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
class  tagSCBeauty(Structure):
    BeautyID = 0    #(WORD BeautyID)//红颜ID
    State = 0    #(BYTE State)//是否已激活
    LV = 0    #(WORD LV)//红颜好感等级,激活时为0级
    Exp = 0    #(WORD Exp)//当前等级经验
    AwardLV = 0    #(WORD AwardLV)//已经领取到的奖励等级记录
    SkinCnt = 0    #(BYTE SkinCnt)
    SkinList = list()    #(vector<tagSCBeautySkin> SkinList)//时装皮肤列表,默认解锁的不通知,有变化的才会同步
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.BeautyID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Exp,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AwardLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.SkinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SkinCnt):
            temSkinList = tagSCBeautySkin()
            _pos = temSkinList.ReadData(_lpData, _pos)
            self.SkinList.append(temSkinList)
        return _pos
    def Clear(self):
        self.BeautyID = 0
        self.State = 0
        self.LV = 0
        self.Exp = 0
        self.AwardLV = 0
        self.SkinCnt = 0
        self.SkinList = list()
        return
    def GetLength(self):
        length = 0
        length += 2
        length += 1
        length += 2
        length += 2
        length += 2
        length += 1
        for i in range(self.SkinCnt):
            length += self.SkinList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteWORD(data, self.BeautyID)
        data = CommFunc.WriteBYTE(data, self.State)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.Exp)
        data = CommFunc.WriteWORD(data, self.AwardLV)
        data = CommFunc.WriteBYTE(data, self.SkinCnt)
        for i in range(self.SkinCnt):
            data = CommFunc.WriteString(data, self.SkinList[i].GetLength(), self.SkinList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                BeautyID:%d,
                                State:%d,
                                LV:%d,
                                Exp:%d,
                                AwardLV:%d,
                                SkinCnt:%d,
                                SkinList:%s
                                '''\
                                %(
                                self.BeautyID,
                                self.State,
                                self.LV,
                                self.Exp,
                                self.AwardLV,
                                self.SkinCnt,
                                "..."
                                )
        return DumpString
class  tagSCBeautyInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    BeautyList = list()    #(vector<tagSCBeauty> BeautyList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x30
        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):
            temBeautyList = tagSCBeauty()
            _pos = temBeautyList.ReadData(_lpData, _pos)
            self.BeautyList.append(temBeautyList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x30
        self.Count = 0
        self.BeautyList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.BeautyList[i].GetLength()
        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.WriteString(data, self.BeautyList[i].GetLength(), self.BeautyList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                BeautyList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagSCBeautyInfo=tagSCBeautyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCBeautyInfo.Head.Cmd,m_NAtagSCBeautyInfo.Head.SubCmd))] = m_NAtagSCBeautyInfo
#------------------------------------------------------
@@ -34379,6 +31786,114 @@
m_NAtagSCLineupInfo=tagSCLineupInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupInfo.Head.Cmd,m_NAtagSCLineupInfo.Head.SubCmd))] = m_NAtagSCLineupInfo
#------------------------------------------------------
# B1 29 阵容推荐信息 #tagSCLineupRecommendInfo
class  tagSCLineupRecommend(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RecommendID", c_ubyte),    #推荐阵容表ID
                  ("AwardState", c_int),    #推荐武将领奖状态,按武将配置的顺序位存储是否已领取
                  ]
    def __init__(self):
        self.Clear()
        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.RecommendID = 0
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagSCLineupRecommend)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 29 阵容推荐信息 //tagSCLineupRecommendInfo:
                                RecommendID:%d,
                                AwardState:%d
                                '''\
                                %(
                                self.RecommendID,
                                self.AwardState
                                )
        return DumpString
class  tagSCLineupRecommendInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    RecommendList = list()    #(vector<tagSCLineupRecommend> RecommendList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x29
        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):
            temRecommendList = tagSCLineupRecommend()
            _pos = temRecommendList.ReadData(_lpData, _pos)
            self.RecommendList.append(temRecommendList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x29
        self.Count = 0
        self.RecommendList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.RecommendList[i].GetLength()
        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.WriteString(data, self.RecommendList[i].GetLength(), self.RecommendList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                RecommendList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagSCLineupRecommendInfo=tagSCLineupRecommendInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupRecommendInfo.Head.Cmd,m_NAtagSCLineupRecommendInfo.Head.SubCmd))] = m_NAtagSCLineupRecommendInfo
#------------------------------------------------------
@@ -35495,8 +33010,8 @@
                  ("TreeLV", c_ubyte),    # 当前仙树等级
                  ("LVUPState", c_ubyte),    # 0-非升级中;1-升级中
                  ("LVUPRemainTime", c_int),    # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
                  ("FreeTimeCnt", c_ubyte),    # 今日已免费减时次数
                  ("FreeTimeLast", c_int),    # 上次免费减时时间戳
                  ("Energy", c_ubyte),    # 当前累计充能次数
                  ("EnergyTimeLast", c_int),    # 上次获得充能次数时间戳
                  ]
    def __init__(self):
@@ -35516,8 +33031,8 @@
        self.TreeLV = 0
        self.LVUPState = 0
        self.LVUPRemainTime = 0
        self.FreeTimeCnt = 0
        self.FreeTimeLast = 0
        self.Energy = 0
        self.EnergyTimeLast = 0
        return
    def GetLength(self):
@@ -35533,8 +33048,8 @@
                                TreeLV:%d,
                                LVUPState:%d,
                                LVUPRemainTime:%d,
                                FreeTimeCnt:%d,
                                FreeTimeLast:%d
                                Energy:%d,
                                EnergyTimeLast:%d
                                '''\
                                %(
                                self.Cmd,
@@ -35542,8 +33057,8 @@
                                self.TreeLV,
                                self.LVUPState,
                                self.LVUPRemainTime,
                                self.FreeTimeCnt,
                                self.FreeTimeLast
                                self.Energy,
                                self.EnergyTimeLast
                                )
        return DumpString
@@ -37998,6 +35513,7 @@
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    TitleID = 0    #(DWORD TitleID)//佩戴的称号
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    data = None
@@ -38022,6 +35538,7 @@
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
@@ -38042,6 +35559,7 @@
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.TitleID = 0
        self.ServerID = 0
        return
@@ -38058,6 +35576,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
@@ -38079,6 +35598,7 @@
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.TitleID)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        return data
@@ -38097,6 +35617,7 @@
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                TitleID:%d,
                                ServerID:%d
                                '''\
                                %(
@@ -38113,6 +35634,7 @@
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.TitleID,
                                self.ServerID
                                )
        return DumpString
@@ -38137,6 +35659,7 @@
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    TitleID = 0    #(DWORD TitleID)//佩戴的称号
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    TalkTime = 0    #(DWORD TalkTime)//该聊天发送时间戳
    data = None
@@ -38158,6 +35681,7 @@
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
@@ -38174,6 +35698,7 @@
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.TitleID = 0
        self.ServerID = 0
        self.TalkTime = 0
        return
@@ -38189,6 +35714,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
@@ -38209,6 +35735,7 @@
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.TitleID)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.TalkTime)
        return data
@@ -38226,6 +35753,7 @@
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                TitleID:%d,
                                ServerID:%d,
                                TalkTime:%d
                                '''\
@@ -38241,6 +35769,7 @@
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.TitleID,
                                self.ServerID,
                                self.TalkTime
                                )
@@ -38937,6 +36466,74 @@
m_NAtagMCNPCSkillWarn=tagMCNPCSkillWarn()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCSkillWarn.Head.Cmd,m_NAtagMCNPCSkillWarn.Head.SubCmd))] = m_NAtagMCNPCSkillWarn
#------------------------------------------------------
# B4 19 对象最新生命刷新 #tagSCObjHPRefresh
class  tagSCObjHPRefresh(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ObjID", c_int),
                  ("HP", c_int),    # 当前血量,求余亿部分
                  ("HPEx", c_int),    # 当前血量,整除亿部分
                  ("MaxHP", c_int),    # 最大血量,求余亿部分
                  ("MaxHPEx", c_int),    # 最大血量,整除亿部分
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        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 = 0xB4
        self.SubCmd = 0x19
        self.ObjID = 0
        self.HP = 0
        self.HPEx = 0
        self.MaxHP = 0
        self.MaxHPEx = 0
        return
    def GetLength(self):
        return sizeof(tagSCObjHPRefresh)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 19 对象最新生命刷新 //tagSCObjHPRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                ObjID:%d,
                                HP:%d,
                                HPEx:%d,
                                MaxHP:%d,
                                MaxHPEx:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ObjID,
                                self.HP,
                                self.HPEx,
                                self.MaxHP,
                                self.MaxHPEx
                                )
        return DumpString
m_NAtagSCObjHPRefresh=tagSCObjHPRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCObjHPRefresh.Cmd,m_NAtagSCObjHPRefresh.SubCmd))] = m_NAtagSCObjHPRefresh
#------------------------------------------------------
@@ -39872,10 +37469,10 @@
                  ("NPCID", c_int),    # 战斗NPCID,不同的实例ID对应的NPCID可能一样
                  ("HeroID", c_int),    # 武将ID,玩家或NPC均可能有,如果有值则外观相关以该武将为准,否则以NPCID为准
                  ("SkinID", c_int),    # 武将皮肤ID,玩家或NPC均可能有,如果有值则皮肤以该值为准,否则取NPCID对应的皮肤ID
                  ("HP", c_int),    # 当前血量,求余20亿部分
                  ("HPEx", c_int),    # 当前血量,整除20亿部分
                  ("MaxHP", c_int),    # 最大血量,求余20亿部分
                  ("MaxHPEx", c_int),    # 最大血量,整除20亿部分
                  ("HP", c_int),    # 当前血量,求余亿部分
                  ("HPEx", c_int),    # 当前血量,整除亿部分
                  ("MaxHP", c_int),    # 最大血量,求余亿部分
                  ("MaxHPEx", c_int),    # 最大血量,整除亿部分
                  ("LV", c_ushort),    # 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
                  ("PosNum", c_ubyte),    # 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
                  ("AngreXP", c_ushort),    # 当前怒气值
@@ -40643,17 +38240,16 @@
#------------------------------------------------------
# B4 27 使用技能 #tagSCUseSkill
class  tagSCUseSkillHurt(Structure):
class  tagSCUseSkillHurtEx(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ObjID", c_int),
                  ("AttackTypes", c_int),    # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
                  ("ObjID", c_int),    # 额外目标,如溅射伤害、平摊伤害目标,非技能自身的主要目标
                  ("AttackTypes", c_int),    # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
                  ("HurtHP", c_int),    # 飘血值,求余亿部分
                  ("HurtHPEx", c_int),    # 飘血值,整除亿部分
                  ("CurHP", c_int),    # 更新剩余血量,求余亿部分
                  ("CurHPEx", c_int),    # 更新剩余血量,整除亿部分
                  ("SuckHP", c_int),    # 本次伤害转化的吸血量
                  ("BounceHP", c_int),    # 本次伤害反弹的伤害量
                  ]
    def __init__(self):
@@ -40673,11 +38269,10 @@
        self.CurHP = 0
        self.CurHPEx = 0
        self.SuckHP = 0
        self.BounceHP = 0
        return
    def GetLength(self):
        return sizeof(tagSCUseSkillHurt)
        return sizeof(tagSCUseSkillHurtEx)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
@@ -40690,8 +38285,110 @@
                                HurtHPEx:%d,
                                CurHP:%d,
                                CurHPEx:%d,
                                SuckHP:%d
                                '''\
                                %(
                                self.ObjID,
                                self.AttackTypes,
                                self.HurtHP,
                                self.HurtHPEx,
                                self.CurHP,
                                self.CurHPEx,
                                self.SuckHP
                                )
        return DumpString
class  tagSCUseSkillHurt(Structure):
    ObjID = 0    #(DWORD ObjID)// 技能自身目标ID
    AttackTypes = 0    #(DWORD AttackTypes)// 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
    HurtHP = 0    #(DWORD HurtHP)// 飘血值,求余亿部分
    HurtHPEx = 0    #(DWORD HurtHPEx)// 飘血值,整除亿部分
    CurHP = 0    #(DWORD CurHP)// 更新剩余血量,求余亿部分
    CurHPEx = 0    #(DWORD CurHPEx)// 更新剩余血量,整除亿部分
    SuckHP = 0    #(DWORD SuckHP)// 本次伤害转化的吸血量
    BounceHP = 0    #(DWORD BounceHP)// 本次伤害反弹的伤害量
    HurtCountEx = 0    #(BYTE HurtCountEx)
    HurtListEx = list()    #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端多次伤害的有效,如弹射的平摊伤害
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AttackTypes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SuckHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BounceHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.HurtCountEx):
            temHurtListEx = tagSCUseSkillHurtEx()
            _pos = temHurtListEx.ReadData(_lpData, _pos)
            self.HurtListEx.append(temHurtListEx)
        return _pos
    def Clear(self):
        self.ObjID = 0
        self.AttackTypes = 0
        self.HurtHP = 0
        self.HurtHPEx = 0
        self.CurHP = 0
        self.CurHPEx = 0
        self.SuckHP = 0
        self.BounceHP = 0
        self.HurtCountEx = 0
        self.HurtListEx = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        for i in range(self.HurtCountEx):
            length += self.HurtListEx[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ObjID)
        data = CommFunc.WriteDWORD(data, self.AttackTypes)
        data = CommFunc.WriteDWORD(data, self.HurtHP)
        data = CommFunc.WriteDWORD(data, self.HurtHPEx)
        data = CommFunc.WriteDWORD(data, self.CurHP)
        data = CommFunc.WriteDWORD(data, self.CurHPEx)
        data = CommFunc.WriteDWORD(data, self.SuckHP)
        data = CommFunc.WriteDWORD(data, self.BounceHP)
        data = CommFunc.WriteBYTE(data, self.HurtCountEx)
        for i in range(self.HurtCountEx):
            data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ObjID:%d,
                                AttackTypes:%d,
                                HurtHP:%d,
                                HurtHPEx:%d,
                                CurHP:%d,
                                CurHPEx:%d,
                                SuckHP:%d,
                                BounceHP:%d
                                BounceHP:%d,
                                HurtCountEx:%d,
                                HurtListEx:%s
                                '''\
                                %(
                                self.ObjID,
@@ -40701,7 +38398,9 @@
                                self.CurHP,
                                self.CurHPEx,
                                self.SuckHP,
                                self.BounceHP
                                self.BounceHP,
                                self.HurtCountEx,
                                "..."
                                )
        return DumpString
@@ -40710,13 +38409,15 @@
    Head = tagHead()
    ObjID = 0    #(DWORD ObjID)
    PMType = 0    #(BYTE PMType)// 物法类型 0或1-物理;2-法术
    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的
    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的;6-dot结算;7-持续治疗结算
    CurHP = 0    #(DWORD CurHP)// 释放技能后剩余血量,吸血、反弹可能引起变化,求余亿部分
    CurHPEx = 0    #(DWORD CurHPEx)// 释放技能后剩余血量,吸血、反弹可能引起变化,整除亿部分
    SkillID = 0    #(DWORD SkillID)
    RelatedSkillID = 0    #(DWORD RelatedSkillID)// 关联的技能ID,一般是主技能ID或由于某个技能释放引起的
    HurtCount = 0    #(BYTE HurtCount)//伤害数目
    HurtList = list()    #(vector<tagSCUseSkillHurt> HurtList)//size = HurtCount
    HurtCount = 0    #(BYTE HurtCount)
    HurtList = list()    #(vector<tagSCUseSkillHurt> HurtList)// 主要伤害目标列表
    HurtCountEx = 0    #(BYTE HurtCountEx)
    HurtListEx = list()    #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端单次伤害的有效,如平摊或溅射伤害
    data = None
    def __init__(self):
@@ -40740,6 +38441,11 @@
            temHurtList = tagSCUseSkillHurt()
            _pos = temHurtList.ReadData(_lpData, _pos)
            self.HurtList.append(temHurtList)
        self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.HurtCountEx):
            temHurtListEx = tagSCUseSkillHurtEx()
            _pos = temHurtListEx.ReadData(_lpData, _pos)
            self.HurtListEx.append(temHurtListEx)
        return _pos
    def Clear(self):
@@ -40756,6 +38462,8 @@
        self.RelatedSkillID = 0
        self.HurtCount = 0
        self.HurtList = list()
        self.HurtCountEx = 0
        self.HurtListEx = list()
        return
    def GetLength(self):
@@ -40771,6 +38479,9 @@
        length += 1
        for i in range(self.HurtCount):
            length += self.HurtList[i].GetLength()
        length += 1
        for i in range(self.HurtCountEx):
            length += self.HurtListEx[i].GetLength()
        return length
@@ -40787,6 +38498,9 @@
        data = CommFunc.WriteBYTE(data, self.HurtCount)
        for i in range(self.HurtCount):
            data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.HurtCountEx)
        for i in range(self.HurtCountEx):
            data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
        return data
    def OutputString(self):
@@ -40800,7 +38514,9 @@
                                SkillID:%d,
                                RelatedSkillID:%d,
                                HurtCount:%d,
                                HurtList:%s
                                HurtList:%s,
                                HurtCountEx:%d,
                                HurtListEx:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -40812,6 +38528,8 @@
                                self.SkillID,
                                self.RelatedSkillID,
                                self.HurtCount,
                                "...",
                                self.HurtCountEx,
                                "..."
                                )
        return DumpString