From 8a132929e7184bc274b742d3e25b93782c65e9ef Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 十二月 2025 14:32:56 +0800
Subject: [PATCH] 16 卡牌服务端(后台查看玩家、物品)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 6384 ++++++++++++++---------------------------------------------
 1 files changed, 1,515 insertions(+), 4,869 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c4a4a30..c12717b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/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,247 +5404,6 @@
 
 
 #------------------------------------------------------
-# A3 1D 神兵等级信息 #tagMCGodWeaponLVList
-
-class  tagMCGodWeaponLVInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("WeaponType", c_ubyte),    #神兵类型
-                  ("WeaponLV", c_ushort),    #神兵等级
-                  ("WeaponExp", 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.WeaponType = 0
-        self.WeaponLV = 0
-        self.WeaponExp = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGodWeaponLVInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 1D 神兵等级信息 //tagMCGodWeaponLVList:
-                                WeaponType:%d,
-                                WeaponLV:%d,
-                                WeaponExp:%d
-                                '''\
-                                %(
-                                self.WeaponType,
-                                self.WeaponLV,
-                                self.WeaponExp
-                                )
-        return DumpString
-
-
-class  tagMCGodWeaponLVList(Structure):
-    Head = tagHead()
-    WeaponNum = 0    #(BYTE WeaponNum)//神器个数
-    WeaponInfoList = list()    #(vector<tagMCGodWeaponLVInfo> WeaponInfoList)// 副本数据列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1D
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.WeaponNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.WeaponNum):
-            temWeaponInfoList = tagMCGodWeaponLVInfo()
-            _pos = temWeaponInfoList.ReadData(_lpData, _pos)
-            self.WeaponInfoList.append(temWeaponInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1D
-        self.WeaponNum = 0
-        self.WeaponInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.WeaponNum):
-            length += self.WeaponInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.WeaponNum)
-        for i in range(self.WeaponNum):
-            data = CommFunc.WriteString(data, self.WeaponInfoList[i].GetLength(), self.WeaponInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                WeaponNum:%d,
-                                WeaponInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.WeaponNum,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCGodWeaponLVList=tagMCGodWeaponLVList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGodWeaponLVList.Head.Cmd,m_NAtagMCGodWeaponLVList.Head.SubCmd))] = m_NAtagMCGodWeaponLVList
-
-
-#------------------------------------------------------
-# 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):
@@ -5936,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):
@@ -5958,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):
@@ -6075,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):
@@ -6222,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):
@@ -6241,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
 
@@ -6250,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(),
@@ -6267,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
 
 
 #------------------------------------------------------
@@ -7549,7 +6998,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("Record", c_ubyte),    #0-未领取 1-已领取	
+                  ("Record", c_ubyte),    # 0-未领取 1-已领取
                   ]
 
     def __init__(self):
@@ -8041,185 +7490,6 @@
 
 m_NAtagMCRuneInfo=tagMCRuneInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
-
-
-#------------------------------------------------------
-# 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
 
 
 #------------------------------------------------------
@@ -9405,121 +8675,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):
@@ -9805,152 +8960,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):
@@ -10004,114 +9013,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
 
 
 #------------------------------------------------------
@@ -10628,208 +9529,6 @@
 
 m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
-
-
-#------------------------------------------------------
-# A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
-
-class  tagGCFamilyStoreItem(Structure):
-    Index = 0    #(BYTE Index)// 仓库格子索引,从0开始代表第一格
-    ItemID = 0    #(DWORD ItemID)// 物品ID
-    ItemDataLen = 0    #(WORD ItemDataLen)
-    ItemData = ""    #(String ItemData)//size = ItemDataLen
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
-        return _pos
-
-    def Clear(self):
-        self.Index = 0
-        self.ItemID = 0
-        self.ItemDataLen = 0
-        self.ItemData = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 2
-        length += len(self.ItemData)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.Index)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteWORD(data, self.ItemDataLen)
-        data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Index:%d,
-                                ItemID:%d,
-                                ItemDataLen:%d,
-                                ItemData:%s
-                                '''\
-                                %(
-                                self.Index,
-                                self.ItemID,
-                                self.ItemDataLen,
-                                self.ItemData
-                                )
-        return DumpString
-
-
-class  tagGCFamilyStoreItemInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//数量
-    StoreItemList = list()    #(vector<tagGCFamilyStoreItem> StoreItemList)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x06
-        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):
-            temStoreItemList = tagGCFamilyStoreItem()
-            _pos = temStoreItemList.ReadData(_lpData, _pos)
-            self.StoreItemList.append(temStoreItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x06
-        self.Count = 0
-        self.StoreItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.StoreItemList[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.StoreItemList[i].GetLength(), self.StoreItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                StoreItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyStoreItemInfo=tagGCFamilyStoreItemInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemInfo.Head.Cmd,m_NAtagGCFamilyStoreItemInfo.Head.SubCmd))] = m_NAtagGCFamilyStoreItemInfo
-
-
-#------------------------------------------------------
-# A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
-
-class  tagGCFamilyStoreItemClear(Structure):
-    Head = tagHead()
-    ClearType = 0    #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
-    IndexCount = 0    #(BYTE IndexCount)
-    IndexList = list()    #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x07
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.IndexCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.IndexList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x07
-        self.ClearType = 0
-        self.IndexCount = 0
-        self.IndexList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1 * self.IndexCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ClearType)
-        data = CommFunc.WriteBYTE(data, self.IndexCount)
-        for i in range(self.IndexCount):
-            data = CommFunc.WriteBYTE(data, self.IndexList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ClearType:%d,
-                                IndexCount:%d,
-                                IndexList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ClearType,
-                                self.IndexCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
 
 
 #------------------------------------------------------
@@ -11566,194 +10265,6 @@
 
 
 #------------------------------------------------------
-# A5 35 王者仙盟每日俸禄奖励状态 #tagMCChampionFamilyDailyReward
-
-class  tagMCChampionFamilyDailyReward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("GetState", c_ubyte),    #是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x35
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x35
-        self.GetState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCChampionFamilyDailyReward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 35 王者仙盟每日俸禄奖励状态 //tagMCChampionFamilyDailyReward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                GetState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.GetState
-                                )
-        return DumpString
-
-
-m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
-
-
-#------------------------------------------------------
-# A5 10 传功奖励结果 #tagMCChuangongResult
-
-class  tagMCChuangongItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", 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.ItemID = 0
-        self.ItemCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCChuangongItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
-                                ItemID:%d,
-                                ItemCount:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount
-                                )
-        return DumpString
-
-
-class  tagMCChuangongResult(Structure):
-    Head = tagHead()
-    FromLV = 0    #(WORD FromLV)// 传功前等级
-    ToLV = 0    #(WORD ToLV)// 传功后等级
-    Exp = 0    #(DWORD Exp)// 获得经验求余亿部分
-    ExpPoint = 0    #(DWORD ExpPoint)// 获得经验整除亿部分
-    ItemCount = 0    #(BYTE ItemCount)
-    AwardItemList = list()    #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x10
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ItemCount):
-            temAwardItemList = tagMCChuangongItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x10
-        self.FromLV = 0
-        self.ToLV = 0
-        self.Exp = 0
-        self.ExpPoint = 0
-        self.ItemCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 2
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.ItemCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.FromLV)
-        data = CommFunc.WriteWORD(data, self.ToLV)
-        data = CommFunc.WriteDWORD(data, self.Exp)
-        data = CommFunc.WriteDWORD(data, self.ExpPoint)
-        data = CommFunc.WriteBYTE(data, self.ItemCount)
-        for i in range(self.ItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                FromLV:%d,
-                                ToLV:%d,
-                                Exp:%d,
-                                ExpPoint:%d,
-                                ItemCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.FromLV,
-                                self.ToLV,
-                                self.Exp,
-                                self.ExpPoint,
-                                self.ItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCChuangongResult=tagMCChuangongResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
-
-
-#------------------------------------------------------
 # A5 02 捐献次数信息 #tagSCDonateCntInfo
 
 class  tagSCDonateCntInfo(Structure):
@@ -12012,74 +10523,6 @@
 
 
 #------------------------------------------------------
-# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
-
-class  tagMCFamilyBosFBPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("HurtTotal", c_int),    # 累计伤血,亿求余部分
-                  ("HurtTotalPoint", c_int),    # 累计伤血,亿整除部分
-                  ("FightSeconds", c_int),    # 已累计战斗时长,秒
-                  ("HurtAwardState", c_int),    # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
-                  ("HurtAwardStateFamily", c_int),    # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x07
-        self.HurtTotal = 0
-        self.HurtTotalPoint = 0
-        self.FightSeconds = 0
-        self.HurtAwardState = 0
-        self.HurtAwardStateFamily = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyBosFBPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                HurtTotal:%d,
-                                HurtTotalPoint:%d,
-                                FightSeconds:%d,
-                                HurtAwardState:%d,
-                                HurtAwardStateFamily:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.HurtTotal,
-                                self.HurtTotalPoint,
-                                self.FightSeconds,
-                                self.HurtAwardState,
-                                self.HurtAwardStateFamily
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
-
-
-#------------------------------------------------------
 # A5 21 家族变更 #tagMCFamilyChange
 
 class  tagMCFamilyChange(Structure):
@@ -12129,114 +10572,6 @@
 
 m_NAtagMCFamilyChange=tagMCFamilyChange()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
-
-
-#------------------------------------------------------
-# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
-
-class  tagMCFamilyDayAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("GetState", c_ubyte),    #是否已领取
-                  ("MoneyDonateCount", c_ubyte),    #今日货币捐献次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        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 = 0xA5
-        self.SubCmd = 0x06
-        self.GetState = 0
-        self.MoneyDonateCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyDayAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                GetState:%d,
-                                MoneyDonateCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.GetState,
-                                self.MoneyDonateCount
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyDayAward=tagMCFamilyDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyDayAward.Cmd,m_NAtagMCFamilyDayAward.SubCmd))] = m_NAtagMCFamilyDayAward
-
-
-#------------------------------------------------------
-# A5 03 当日祈福信息 #tagMCFamilyPrayInfo
-
-class  tagMCFamilyPrayInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PrayCntInfo", c_int),    # 当日祈福次数信息, 按位存储祈福类型对应次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x03
-        self.PrayCntInfo = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyPrayInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 03 当日祈福信息 //tagMCFamilyPrayInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PrayCntInfo:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PrayCntInfo
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
 
 
 #------------------------------------------------------
@@ -12438,22 +10773,205 @@
 
 
 #------------------------------------------------------
-# A5 11 打坐信息 #tagMCFamilySitInfo
+# A5 04 公会讨伐攻击结果 #tagSCFamilyTaofaAtkRet
 
-class  tagMCFamilySitInfo(Structure):
+class  tagSCFamilyTaofaAtkItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Count", 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.ItemID = 0
+        self.Count = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCFamilyTaofaAtkItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+                                ItemID:%d,
+                                Count:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Count
+                                )
+        return DumpString
+
+
+class  tagSCFamilyTaofaAtkHurt(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("IsSuper", c_ubyte),    # 是否暴击
+                  ("HurtValue", c_int),    # 本次伤害,求余亿部分
+                  ("HurtValueEx", 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.IsSuper = 0
+        self.HurtValue = 0
+        self.HurtValueEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCFamilyTaofaAtkHurt)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+                                IsSuper:%d,
+                                HurtValue:%d,
+                                HurtValueEx:%d
+                                '''\
+                                %(
+                                self.IsSuper,
+                                self.HurtValue,
+                                self.HurtValueEx
+                                )
+        return DumpString
+
+
+class  tagSCFamilyTaofaAtkRet(Structure):
+    Head = tagHead()
+    AtkType = 0    #(BYTE AtkType)// 攻击类型:0-常规;1-怒气攻击
+    HurtCount = 0    #(BYTE HurtCount)
+    HurtList = list()    #(vector<tagSCFamilyTaofaAtkHurt> HurtList)// 伤害次数列表,如怒气攻击有多次伤害
+    ItemCount = 0    #(BYTE ItemCount)
+    ItemList = list()    #(vector<tagSCFamilyTaofaAtkItem> ItemList)// 奖励物品列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.AtkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.HurtCount):
+            temHurtList = tagSCFamilyTaofaAtkHurt()
+            _pos = temHurtList.ReadData(_lpData, _pos)
+            self.HurtList.append(temHurtList)
+        self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemCount):
+            temItemList = tagSCFamilyTaofaAtkItem()
+            _pos = temItemList.ReadData(_lpData, _pos)
+            self.ItemList.append(temItemList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x04
+        self.AtkType = 0
+        self.HurtCount = 0
+        self.HurtList = list()
+        self.ItemCount = 0
+        self.ItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        for i in range(self.HurtCount):
+            length += self.HurtList[i].GetLength()
+        length += 1
+        for i in range(self.ItemCount):
+            length += self.ItemList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.AtkType)
+        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.ItemCount)
+        for i in range(self.ItemCount):
+            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                AtkType:%d,
+                                HurtCount:%d,
+                                HurtList:%s,
+                                ItemCount:%d,
+                                ItemList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.AtkType,
+                                self.HurtCount,
+                                "...",
+                                self.ItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCFamilyTaofaAtkRet=tagSCFamilyTaofaAtkRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaAtkRet.Head.Cmd,m_NAtagSCFamilyTaofaAtkRet.Head.SubCmd))] = m_NAtagSCFamilyTaofaAtkRet
+
+
+#------------------------------------------------------
+# A5 03 公会讨伐信息 #tagSCFamilyTaofaInfo
+
+class  tagSCFamilyTaofaInfo(Structure):
     _pack_ = 1
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ExpRound", c_ushort),    # 已获得经验轮次
-                  ("Exp", c_int),    # 获得经验求余亿部分
-                  ("ExpPoint", c_int),    # 获得经验整除亿部分
+                  ("BuZhenState", c_ubyte),    # 是否已布阵
+                  ("AtkCount", c_ushort),    # 已斩杀次数,用于计算剩余次数=免费次数+道具增加次数-已斩杀次数
+                  ("ItemAddCount", c_ushort),    # 道具增加斩杀次数
+                  ("Anger", c_ushort),    # 当前怒气值
+                  ("BoxUnGetCount", c_ushort),    # 当前未领取的宝箱数,即可领取的
+                  ("BoxHurt", c_int),    # 宝箱奖励计算累计伤害,求余亿部分;个人今日累计伤害,换公会不会重置
+                  ("BoxHurtEx", c_int),    # 宝箱奖励计算累计伤害,整除亿部分
+                  ("BoxHurtHis", c_int),    # 宝箱奖励计算累计历史最高伤害,求余亿部分
+                  ("BoxHurtHisEx", c_int),    # 宝箱奖励计算累计历史最高伤害,整除亿部分
                   ]
 
     def __init__(self):
         self.Clear()
         self.Cmd = 0xA5
-        self.SubCmd = 0x11
+        self.SubCmd = 0x03
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -12463,38 +10981,56 @@
 
     def Clear(self):
         self.Cmd = 0xA5
-        self.SubCmd = 0x11
-        self.ExpRound = 0
-        self.Exp = 0
-        self.ExpPoint = 0
+        self.SubCmd = 0x03
+        self.BuZhenState = 0
+        self.AtkCount = 0
+        self.ItemAddCount = 0
+        self.Anger = 0
+        self.BoxUnGetCount = 0
+        self.BoxHurt = 0
+        self.BoxHurtEx = 0
+        self.BoxHurtHis = 0
+        self.BoxHurtHisEx = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCFamilySitInfo)
+        return sizeof(tagSCFamilyTaofaInfo)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
+        DumpString = '''// A5 03 公会讨伐信息 //tagSCFamilyTaofaInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                ExpRound:%d,
-                                Exp:%d,
-                                ExpPoint:%d
+                                BuZhenState:%d,
+                                AtkCount:%d,
+                                ItemAddCount:%d,
+                                Anger:%d,
+                                BoxUnGetCount:%d,
+                                BoxHurt:%d,
+                                BoxHurtEx:%d,
+                                BoxHurtHis:%d,
+                                BoxHurtHisEx:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.ExpRound,
-                                self.Exp,
-                                self.ExpPoint
+                                self.BuZhenState,
+                                self.AtkCount,
+                                self.ItemAddCount,
+                                self.Anger,
+                                self.BoxUnGetCount,
+                                self.BoxHurt,
+                                self.BoxHurtEx,
+                                self.BoxHurtHis,
+                                self.BoxHurtHisEx
                                 )
         return DumpString
 
 
-m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+m_NAtagSCFamilyTaofaInfo=tagSCFamilyTaofaInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaInfo.Cmd,m_NAtagSCFamilyTaofaInfo.SubCmd))] = m_NAtagSCFamilyTaofaInfo
 
 
 #------------------------------------------------------
@@ -12798,125 +11334,6 @@
 
 m_NAtagMCFamilyZhenbaogeInfo=tagMCFamilyZhenbaogeInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenbaogeInfo.Cmd,m_NAtagMCFamilyZhenbaogeInfo.SubCmd))] = m_NAtagMCFamilyZhenbaogeInfo
-
-
-#------------------------------------------------------
-# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
-
-class  tagMCFamilyZhenfa(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ZhenfaType", c_ubyte),    # 阵法类型
-                  ("ZhenfaLV", c_ushort),    # 阵法等级
-                  ("ZhenfaExp", 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.ZhenfaType = 0
-        self.ZhenfaLV = 0
-        self.ZhenfaExp = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyZhenfa)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo:
-                                ZhenfaType:%d,
-                                ZhenfaLV:%d,
-                                ZhenfaExp:%d
-                                '''\
-                                %(
-                                self.ZhenfaType,
-                                self.ZhenfaLV,
-                                self.ZhenfaExp
-                                )
-        return DumpString
-
-
-class  tagMCFamilyZhenfaInfo(Structure):
-    Head = tagHead()
-    PlayerID = 0    #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包
-    Count = 0    #(BYTE Count)
-    ZhenfaInfoList = list()    #(vector<tagMCFamilyZhenfa> ZhenfaInfoList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temZhenfaInfoList = tagMCFamilyZhenfa()
-            _pos = temZhenfaInfoList.ReadData(_lpData, _pos)
-            self.ZhenfaInfoList.append(temZhenfaInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x09
-        self.PlayerID = 0
-        self.Count = 0
-        self.ZhenfaInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.ZhenfaInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                PlayerID:%d,
-                                Count:%d,
-                                ZhenfaInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.PlayerID,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo
 
 
 #------------------------------------------------------
@@ -15139,6 +13556,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)
@@ -15168,6 +13586,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)
@@ -15193,6 +13612,7 @@
         self.Face = 0
         self.FacePic = 0
         self.ModelMark = 0
+        self.EquipShowSwitch = 0
         self.TitleID = 0
         self.ServerID = 0
         self.FightPower = 0
@@ -15221,6 +13641,7 @@
         length += 4
         length += 4
         length += 4
+        length += 4
         length += 33
         length += 4
         length += 3
@@ -15240,6 +13661,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)
@@ -15263,6 +13685,7 @@
                                 Face:%d,
                                 FacePic:%d,
                                 ModelMark:%d,
+                                EquipShowSwitch:%d,
                                 TitleID:%d,
                                 ServerID:%d,
                                 FightPower:%d,
@@ -15284,6 +13707,7 @@
                                 self.Face,
                                 self.FacePic,
                                 self.ModelMark,
+                                self.EquipShowSwitch,
                                 self.TitleID,
                                 self.ServerID,
                                 self.FightPower,
@@ -16001,373 +14425,6 @@
 
 
 #------------------------------------------------------
-# A8 11 商店购买结果 #tagMCShoppingResult
-
-class  tagMCShoppingResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemIndex", c_int),    
-                  ("ItemCnt", c_int),    #购买数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA8
-        self.SubCmd = 0x11
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA8
-        self.SubCmd = 0x11
-        self.ItemIndex = 0
-        self.ItemCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCShoppingResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 11 商店购买结果 //tagMCShoppingResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemIndex:%d,
-                                ItemCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemIndex,
-                                self.ItemCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCShoppingResult=tagMCShoppingResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
-
-
-#------------------------------------------------------
-# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
-
-class  tagMCMysticalShopGoods(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GoodsID", c_int),    # 商品ID
-                  ]
-
-    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.GoodsID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCMysticalShopGoods)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
-                                GoodsID:%d
-                                '''\
-                                %(
-                                self.GoodsID
-                                )
-        return DumpString
-
-
-class  tagMCMysticalShopInfo(Structure):
-    Head = tagHead()
-    RefreshCnt = 0    #(WORD RefreshCnt)// 刷新次数
-    Count = 0    #(BYTE Count)// 商品数
-    GoodsList = list()    #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x16
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temGoodsList = tagMCMysticalShopGoods()
-            _pos = temGoodsList.ReadData(_lpData, _pos)
-            self.GoodsList.append(temGoodsList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x16
-        self.RefreshCnt = 0
-        self.Count = 0
-        self.GoodsList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 1
-        for i in range(self.Count):
-            length += self.GoodsList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.RefreshCnt)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RefreshCnt:%d,
-                                Count:%d,
-                                GoodsList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RefreshCnt,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
-
-
-#------------------------------------------------------
-# A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
-
-class  tagMCMysticalShopTime(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GoodsID", c_int),    # 商品ID
-                  ("StartTime", 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.GoodsID = 0
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCMysticalShopTime)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 06 通知神秘限购商品时间 //tagMCMysticalShopTimeInfo:
-                                GoodsID:%d,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.GoodsID,
-                                self.StartTime
-                                )
-        return DumpString
-
-
-class  tagMCMysticalShopTimeInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(WORD Count)// 商品数
-    ShopTimeList = list()    #(vector<tagMCMysticalShopTime> ShopTimeList)// 商品开卖信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x06
-        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):
-            temShopTimeList = tagMCMysticalShopTime()
-            _pos = temShopTimeList.ReadData(_lpData, _pos)
-            self.ShopTimeList.append(temShopTimeList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x06
-        self.Count = 0
-        self.ShopTimeList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        for i in range(self.Count):
-            length += self.ShopTimeList[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.ShopTimeList[i].GetLength(), self.ShopTimeList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ShopTimeList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMysticalShopTimeInfo=tagMCMysticalShopTimeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopTimeInfo.Head.Cmd,m_NAtagMCMysticalShopTimeInfo.Head.SubCmd))] = m_NAtagMCMysticalShopTimeInfo
-
-
-#------------------------------------------------------
-# 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):
@@ -16445,14 +14502,13 @@
 
 
 #------------------------------------------------------
-# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
+# A8 02 商店物品已购买次数 #tagSCShopItemBuyCntInfo
 
-class  tagMCShopItemDayBuyCnt(Structure):
+class  tagSCShopItemBuyCnt(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("ItemIndex", c_int),    
-                  ("BuyCnt", c_int),    # 今日已购买次数
-                  ("IsReset", c_ubyte),    #是否重置
+                  ("ShopID", c_int),    # 商品ID
+                  ("BuyCnt", c_int),    # 已购买次数
                   ]
 
     def __init__(self):
@@ -16465,35 +14521,32 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.ItemIndex = 0
+        self.ShopID = 0
         self.BuyCnt = 0
-        self.IsReset = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCShopItemDayBuyCnt)
+        return sizeof(tagSCShopItemBuyCnt)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A8 02 通知NPC商店物品今日已购买次数 //tagMCShopItemDayBuyCntInfo:
-                                ItemIndex:%d,
-                                BuyCnt:%d,
-                                IsReset:%d
+        DumpString = '''// A8 02 商店物品已购买次数 //tagSCShopItemBuyCntInfo:
+                                ShopID:%d,
+                                BuyCnt:%d
                                 '''\
                                 %(
-                                self.ItemIndex,
-                                self.BuyCnt,
-                                self.IsReset
+                                self.ShopID,
+                                self.BuyCnt
                                 )
         return DumpString
 
 
-class  tagMCShopItemDayBuyCntInfo(Structure):
+class  tagSCShopItemBuyCntInfo(Structure):
     Head = tagHead()
-    Count = 0    #(WORD Count)//通知个数,注意不限制每日购买次数的默认不通知
-    DayBuyCntList = list()    #(vector<tagMCShopItemDayBuyCnt> DayBuyCntList)
+    Count = 0    #(WORD Count)
+    BuyCntList = list()    #(vector<tagSCShopItemBuyCnt> BuyCntList)//仅通知有限购次数的商品
     data = None
 
     def __init__(self):
@@ -16507,9 +14560,9 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.Count):
-            temDayBuyCntList = tagMCShopItemDayBuyCnt()
-            _pos = temDayBuyCntList.ReadData(_lpData, _pos)
-            self.DayBuyCntList.append(temDayBuyCntList)
+            temBuyCntList = tagSCShopItemBuyCnt()
+            _pos = temBuyCntList.ReadData(_lpData, _pos)
+            self.BuyCntList.append(temBuyCntList)
         return _pos
 
     def Clear(self):
@@ -16518,7 +14571,7 @@
         self.Head.Cmd = 0xA8
         self.Head.SubCmd = 0x02
         self.Count = 0
-        self.DayBuyCntList = list()
+        self.BuyCntList = list()
         return
 
     def GetLength(self):
@@ -16526,7 +14579,7 @@
         length += self.Head.GetLength()
         length += 2
         for i in range(self.Count):
-            length += self.DayBuyCntList[i].GetLength()
+            length += self.BuyCntList[i].GetLength()
 
         return length
 
@@ -16535,14 +14588,14 @@
         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.DayBuyCntList[i].GetLength(), self.DayBuyCntList[i].GetBuffer())
+            data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
                                 Count:%d,
-                                DayBuyCntList:%s
+                                BuyCntList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -16552,8 +14605,89 @@
         return DumpString
 
 
-m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
+m_NAtagSCShopItemBuyCntInfo=tagSCShopItemBuyCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopItemBuyCntInfo.Head.Cmd,m_NAtagSCShopItemBuyCntInfo.Head.SubCmd))] = m_NAtagSCShopItemBuyCntInfo
+
+
+#------------------------------------------------------
+# A8 03 商店刷新解锁的商品信息 #tagSCShopRefreshItemInfo
+
+class  tagSCShopRefreshItemInfo(Structure):
+    Head = tagHead()
+    ShopType = 0    #(WORD ShopType)// 商店类型
+    RefreshCnt = 0    #(BYTE RefreshCnt)// 今日已刷新次数
+    Count = 0    #(BYTE Count)
+    ShopIDList = list()    #(vector<DWORD> ShopIDList)// 对应刷新出来的商店表商品ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x03
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RefreshCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ShopIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x03
+        self.ShopType = 0
+        self.RefreshCnt = 0
+        self.Count = 0
+        self.ShopIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 1
+        length += 1
+        length += 4 * self.Count
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.ShopType)
+        data = CommFunc.WriteBYTE(data, self.RefreshCnt)
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteDWORD(data, self.ShopIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ShopType:%d,
+                                RefreshCnt:%d,
+                                Count:%d,
+                                ShopIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ShopType,
+                                self.RefreshCnt,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCShopRefreshItemInfo=tagSCShopRefreshItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopRefreshItemInfo.Head.Cmd,m_NAtagSCShopRefreshItemInfo.Head.SubCmd))] = m_NAtagSCShopRefreshItemInfo
 
 
 #------------------------------------------------------
@@ -16647,6 +14781,7 @@
 class  tagSCArenaMatchInfo(Structure):
     PlayerID = 0    #(DWORD PlayerID)//目标玩家ID
     PlayerName = ""    #(char PlayerName[33])
+    LV = 0    #(WORD LV)// 玩家等级
     RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
     FightPower = 0    #(DWORD FightPower)//战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分
@@ -16663,6 +14798,7 @@
         self.Clear()
         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16674,6 +14810,7 @@
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
+        self.LV = 0
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
@@ -16687,6 +14824,7 @@
         length += 4
         length += 33
         length += 2
+        length += 2
         length += 4
         length += 4
         length += 4
@@ -16699,6 +14837,7 @@
         data = ''
         data = CommFunc.WriteDWORD(data, self.PlayerID)
         data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
@@ -16711,6 +14850,7 @@
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
+                                LV:%d,
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
@@ -16721,6 +14861,7 @@
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
+                                self.LV,
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
@@ -16806,6 +14947,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("Score", c_int),    #当前积分
+                  ("WinCnt", c_int),    #累计胜利次数
                   ]
 
     def __init__(self):
@@ -16823,6 +14965,7 @@
         self.Cmd = 0xA9
         self.SubCmd = 0x23
         self.Score = 0
+        self.WinCnt = 0
         return
 
     def GetLength(self):
@@ -16835,12 +14978,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
 
@@ -17962,80 +16107,6 @@
 
 m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
-
-
-#------------------------------------------------------
-#A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
-
-class  tagGCOpenServerCampaignAwardCount(Structure):
-    Head = tagHead()
-    CampaignType = 0    #(BYTE CampaignType)//奖励类型
-    AwardTypeCount = 0    #(BYTE AwardTypeCount)//奖品种类数量
-    GotCountList = list()    #(vector<DWORD> GotCountList)//奖品已领取数量列表,根据种类索引依次
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.CampaignType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardTypeCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.GotCountList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x03
-        self.CampaignType = 0
-        self.AwardTypeCount = 0
-        self.GotCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 4 * self.AwardTypeCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.CampaignType)
-        data = CommFunc.WriteBYTE(data, self.AwardTypeCount)
-        for i in range(self.AwardTypeCount):
-            data = CommFunc.WriteDWORD(data, self.GotCountList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                CampaignType:%d,
-                                AwardTypeCount:%d,
-                                GotCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.CampaignType,
-                                self.AwardTypeCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCOpenServerCampaignAwardCount=tagGCOpenServerCampaignAwardCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCOpenServerCampaignAwardCount.Head.Cmd,m_NAtagGCOpenServerCampaignAwardCount.Head.SubCmd))] = m_NAtagGCOpenServerCampaignAwardCount
 
 
 #------------------------------------------------------
@@ -27048,58 +25119,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):
@@ -27343,460 +25362,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
 
 
 #------------------------------------------------------
@@ -30135,58 +27700,6 @@
 
 
 #------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
 # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
 
 class  tagMCRechargePrizeInfo(Structure):
@@ -31448,574 +28961,21 @@
 
 
 #------------------------------------------------------
-# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
+# AB 05 开服庆典信息 #tagSCOSACelebrationInfo
 
-class  tagMCBossFirstKillState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("NPCID", c_int),    
-                  ("FKState", c_int),    # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
-                  ]
-
-    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.NPCID = 0
-        self.FKState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCBossFirstKillState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
-                                NPCID:%d,
-                                FKState:%d
-                                '''\
-                                %(
-                                self.NPCID,
-                                self.FKState
-                                )
-        return DumpString
-
-
-class  tagMCBossFirstKillStateInfo(Structure):
-    Head = tagHead()
-    BossCount = 0    #(BYTE BossCount)
-    FirstKillStateList = list()    #(vector<tagMCBossFirstKillState> FirstKillStateList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x01
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BossCount):
-            temFirstKillStateList = tagMCBossFirstKillState()
-            _pos = temFirstKillStateList.ReadData(_lpData, _pos)
-            self.FirstKillStateList.append(temFirstKillStateList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x01
-        self.BossCount = 0
-        self.FirstKillStateList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.BossCount):
-            length += self.FirstKillStateList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.BossCount)
-        for i in range(self.BossCount):
-            data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                BossCount:%d,
-                                FirstKillStateList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.BossCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
-
-
-#------------------------------------------------------
-# AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
-
-class  tagMCBossRebornData(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActID", c_ubyte),    #活动ID
-                  ("CurTimes", c_ushort),    #已完成次数
-                  ("GotTimes", 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.ActID = 0
-        self.CurTimes = 0
-        self.GotTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCBossRebornData)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
-                                ActID:%d,
-                                CurTimes:%d,
-                                GotTimes:%d
-                                '''\
-                                %(
-                                self.ActID,
-                                self.CurTimes,
-                                self.GotTimes
-                                )
-        return DumpString
-
-
-class  tagMCBossRebornPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//活动个数
-    DataList = list()    #(vector<tagMCBossRebornData> DataList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x03
-        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):
-            temDataList = tagMCBossRebornData()
-            _pos = temDataList.ReadData(_lpData, _pos)
-            self.DataList.append(temDataList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x03
-        self.Count = 0
-        self.DataList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.DataList[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.DataList[i].GetLength(), self.DataList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                DataList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
-
-
-#------------------------------------------------------
-# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
-
-class  tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCBossRebornTaskInfo(Structure):
-    TaskID = 0    #(BYTE TaskID)// id
-    TotalTimes = 0    #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
-    SingleTimes = 0    #(BYTE SingleTimes)// 单次领奖需要次数
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
-    AwardItem = list()    #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItem = tagMCBossRebornAwardItem()
-            _pos = temAwardItem.ReadData(_lpData, _pos)
-            self.AwardItem.append(temAwardItem)
-        return _pos
-
-    def Clear(self):
-        self.TaskID = 0
-        self.TotalTimes = 0
-        self.SingleTimes = 0
-        self.AwardItemCount = 0
-        self.AwardItem = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += 1
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItem[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.TaskID)
-        data = CommFunc.WriteBYTE(data, self.TotalTimes)
-        data = CommFunc.WriteBYTE(data, self.SingleTimes)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TaskID:%d,
-                                TotalTimes:%d,
-                                SingleTimes:%d,
-                                AwardItemCount:%d,
-                                AwardItem:%s
-                                '''\
-                                %(
-                                self.TaskID,
-                                self.TotalTimes,
-                                self.SingleTimes,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCBossRebornInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    TaskCnt = 0    #(BYTE TaskCnt)
-    TaskInfo = list()    #(vector<tagMCBossRebornTaskInfo> TaskInfo)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x04
-        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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TaskCnt):
-            temTaskInfo = tagMCBossRebornTaskInfo()
-            _pos = temTaskInfo.ReadData(_lpData, _pos)
-            self.TaskInfo.append(temTaskInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x04
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.TaskCnt = 0
-        self.TaskInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.TaskCnt):
-            length += self.TaskInfo[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.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.TaskCnt)
-        for i in range(self.TaskCnt):
-            data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                TaskCnt:%d,
-                                TaskInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.TaskCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
-
-
-#------------------------------------------------------
-# AB 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
-
-class  tagMCOpenServerCampaignAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("CampaignType", c_ubyte),    #奖励类型
-                  ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
-                  ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
-                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
-                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表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.CampaignType = 0
-        self.BillAwardRecord = 0
-        self.TagAwardRecord = 0
-        self.RecordData = 0
-        self.RecordDataEx = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCOpenServerCampaignAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 17 开服活动奖励状态 //tagMCOpenServerCampaignAwardList:
-                                CampaignType:%d,
-                                BillAwardRecord:%d,
-                                TagAwardRecord:%d,
-                                RecordData:%d,
-                                RecordDataEx:%d
-                                '''\
-                                %(
-                                self.CampaignType,
-                                self.BillAwardRecord,
-                                self.TagAwardRecord,
-                                self.RecordData,
-                                self.RecordDataEx
-                                )
-        return DumpString
-
-
-class  tagMCOpenServerCampaignAwardList(Structure):
-    Head = tagHead()
-    OSCAwardCnt = 0    #(BYTE OSCAwardCnt)//奖励类型数
-    OSCAwardList = list()    #(vector<tagMCOpenServerCampaignAward> OSCAwardList)// 奖励状态列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x17
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.OSCAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.OSCAwardCnt):
-            temOSCAwardList = tagMCOpenServerCampaignAward()
-            _pos = temOSCAwardList.ReadData(_lpData, _pos)
-            self.OSCAwardList.append(temOSCAwardList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x17
-        self.OSCAwardCnt = 0
-        self.OSCAwardList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.OSCAwardCnt):
-            length += self.OSCAwardList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.OSCAwardCnt)
-        for i in range(self.OSCAwardCnt):
-            data = CommFunc.WriteString(data, self.OSCAwardList[i].GetLength(), self.OSCAwardList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                OSCAwardCnt:%d,
-                                OSCAwardList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.OSCAwardCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
-
-
-#------------------------------------------------------
-# AB 19 炼制奖励信息 #tagMCRefineGiftInfo
-
-class  tagMCRefineGiftInfo(Structure):
+class  tagSCOSACelebrationInfo(Structure):
     _pack_ = 1
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ExpRefineStartTime", c_int),    # 经验炼制活动开始时间
-                  ("MoneyRefineStartTime", c_int),    # 金币炼制活动开始时间
-                  ("ExpRefineCnt", c_ubyte),    # 经验已炼制次数
-                  ("MoneyRefineCnt", c_ubyte),    # 金币已炼制次数
+                  ("PointTotal", c_int),    # 累计庆典积分
+                  ("PointAward", c_int),    # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
                   ]
 
     def __init__(self):
         self.Clear()
         self.Cmd = 0xAB
-        self.SubCmd = 0x19
+        self.SubCmd = 0x05
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -32025,105 +28985,35 @@
 
     def Clear(self):
         self.Cmd = 0xAB
-        self.SubCmd = 0x19
-        self.ExpRefineStartTime = 0
-        self.MoneyRefineStartTime = 0
-        self.ExpRefineCnt = 0
-        self.MoneyRefineCnt = 0
+        self.SubCmd = 0x05
+        self.PointTotal = 0
+        self.PointAward = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCRefineGiftInfo)
+        return sizeof(tagSCOSACelebrationInfo)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
+        DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                ExpRefineStartTime:%d,
-                                MoneyRefineStartTime:%d,
-                                ExpRefineCnt:%d,
-                                MoneyRefineCnt:%d
+                                PointTotal:%d,
+                                PointAward:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.ExpRefineStartTime,
-                                self.MoneyRefineStartTime,
-                                self.ExpRefineCnt,
-                                self.MoneyRefineCnt
+                                self.PointTotal,
+                                self.PointAward
                                 )
         return DumpString
 
 
-m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
-
-
-#------------------------------------------------------
-# AC 08 boss复活点数通知 #tagGCBossRebornPoint
-
-class  tagGCBossRebornPoint(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Point", c_int),    # 复活点数
-                  ("TotalPoint", c_int),    # 复活总点数
-                  ("RebornCnt", c_ushort),    # 今日已复活次数
-                  ("TotalRebornCnt", c_ushort),    # 每日可复活总次数,0为不限制
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAC
-        self.SubCmd = 0x08
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAC
-        self.SubCmd = 0x08
-        self.Point = 0
-        self.TotalPoint = 0
-        self.RebornCnt = 0
-        self.TotalRebornCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCBossRebornPoint)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Point:%d,
-                                TotalPoint:%d,
-                                RebornCnt:%d,
-                                TotalRebornCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Point,
-                                self.TotalPoint,
-                                self.RebornCnt,
-                                self.TotalRebornCnt
-                                )
-        return DumpString
-
-
-m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
+m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
 
 
 #------------------------------------------------------
@@ -32748,896 +29638,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):
@@ -33860,21 +29860,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):
@@ -33883,434 +29882,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
 
 
 #------------------------------------------------------
@@ -35156,6 +31079,118 @@
 
 
 #------------------------------------------------------
+# B1 31 宿缘信息 #tagSCHeroFatesInfo
+
+class  tagSCHeroFates(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FatesID", c_ubyte),    # 宿缘ID
+                  ("State", c_ubyte),    # 宿缘状态:0-未激活;1-已激活已领奖
+                  ("FatesLV", 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.FatesID = 0
+        self.State = 0
+        self.FatesLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCHeroFates)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 31 宿缘信息 //tagSCHeroFatesInfo:
+                                FatesID:%d,
+                                State:%d,
+                                FatesLV:%d
+                                '''\
+                                %(
+                                self.FatesID,
+                                self.State,
+                                self.FatesLV
+                                )
+        return DumpString
+
+
+class  tagSCHeroFatesInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    FatesList = list()    #(vector<tagSCHeroFates> FatesList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x31
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temFatesList = tagSCHeroFates()
+            _pos = temFatesList.ReadData(_lpData, _pos)
+            self.FatesList.append(temFatesList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x31
+        self.Count = 0
+        self.FatesList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.FatesList[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.FatesList[i].GetLength(), self.FatesList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                FatesList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCHeroFatesInfo=tagSCHeroFatesInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroFatesInfo.Head.Cmd,m_NAtagSCHeroFatesInfo.Head.SubCmd))] = m_NAtagSCHeroFatesInfo
+
+
+#------------------------------------------------------
 # B1 22 武将信息 #tagSCHeroInfo
 
 class  tagSCHero(Structure):
@@ -35412,6 +31447,178 @@
 
 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
+
+
+#------------------------------------------------------
+# B1 28 历练秘笈信息 #tagSCLLMJInfo
+
+class  tagSCLLMJInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MJLV", c_ubyte),    # 秘笈等级,激活后从1开始
+                  ("Zhanchui", c_int),    # 秘笈累计消耗战锤
+                  ("ExpEx", c_int),    # 秘笈今日已额外获得经验
+                  ("DecomposeEx", c_int),    # 秘笈今日已额外获得分解货币
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x28
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB1
+        self.SubCmd = 0x28
+        self.MJLV = 0
+        self.Zhanchui = 0
+        self.ExpEx = 0
+        self.DecomposeEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCLLMJInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 28 历练秘笈信息 //tagSCLLMJInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MJLV:%d,
+                                Zhanchui:%d,
+                                ExpEx:%d,
+                                DecomposeEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MJLV,
+                                self.Zhanchui,
+                                self.ExpEx,
+                                self.DecomposeEx
+                                )
+        return DumpString
+
+
+m_NAtagSCLLMJInfo=tagSCLLMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
 
 
 #------------------------------------------------------
@@ -36464,8 +32671,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):
@@ -36485,8 +32692,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):
@@ -36502,8 +32709,8 @@
                                 TreeLV:%d,
                                 LVUPState:%d,
                                 LVUPRemainTime:%d,
-                                FreeTimeCnt:%d,
-                                FreeTimeLast:%d
+                                Energy:%d,
+                                EnergyTimeLast:%d
                                 '''\
                                 %(
                                 self.Cmd,
@@ -36511,8 +32718,8 @@
                                 self.TreeLV,
                                 self.LVUPState,
                                 self.LVUPRemainTime,
-                                self.FreeTimeCnt,
-                                self.FreeTimeLast
+                                self.Energy,
+                                self.EnergyTimeLast
                                 )
         return DumpString
 
@@ -38967,6 +35174,7 @@
     RealmLV = 0    #(BYTE RealmLV)//境界
     Face = 0    #(DWORD Face)//基本脸型
     FacePic = 0    #(DWORD FacePic)//头像框
+    TitleID = 0    #(DWORD TitleID)//佩戴的称号
     ServerID = 0    #(DWORD ServerID)//所属区服ID
     data = None
 
@@ -38991,6 +35199,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
 
@@ -39011,6 +35220,7 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         self.ServerID = 0
         return
 
@@ -39027,6 +35237,7 @@
         length += 2
         length += 1
         length += 1
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -39048,6 +35259,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
 
@@ -39066,6 +35278,7 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                TitleID:%d,
                                 ServerID:%d
                                 '''\
                                 %(
@@ -39082,6 +35295,7 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.TitleID,
                                 self.ServerID
                                 )
         return DumpString
@@ -39106,6 +35320,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
@@ -39127,6 +35342,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
@@ -39143,6 +35359,7 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         self.ServerID = 0
         self.TalkTime = 0
         return
@@ -39158,6 +35375,7 @@
         length += 2
         length += 1
         length += 1
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -39178,6 +35396,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
@@ -39195,6 +35414,7 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                TitleID:%d,
                                 ServerID:%d,
                                 TalkTime:%d
                                 '''\
@@ -39210,6 +35430,7 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.TitleID,
                                 self.ServerID,
                                 self.TalkTime
                                 )
@@ -39906,6 +36127,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
 
 
 #------------------------------------------------------
@@ -40841,10 +37130,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),    # 当前怒气值
@@ -41447,6 +37736,150 @@
 
 
 #------------------------------------------------------
+# B4 31 战斗战报结果 #tagSCTurnFightRet
+
+class  tagSCTurnFightRet(Structure):
+    Head = tagHead()
+    MapID = 0    #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
+    FuncLineID = 0    #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
+    TagType = 0    #(BYTE TagType)// 目标类型,0-NPC阵容,1-玩家
+    TagID = 0    #(DWORD TagID)// 目标类型对应的ID,如玩家ID
+    ValueCount = 0    #(BYTE ValueCount)
+    ValueList = list()    #(vector<DWORD> ValueList)// 附加值列表,可选,具体含义由MapID决定
+    IsWin = 0    #(BYTE IsWin)//是否获胜
+    AwardLen = 0    #(WORD AwardLen)
+    AwardMsg = ""    #(String AwardMsg)//功能结算奖励信息,不含战斗相关统计信息
+    BatLen = 0    #(WORD BatLen)
+    BatStatMsg = ""    #(String BatStatMsg)//战斗相关统计信息
+    PathDate = ""    #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
+    GUID = ""    #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x31
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ValueCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ValueList.append(value)
+        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.AwardMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
+        self.BatLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.BatStatMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.BatLen)
+        self.PathDate,_pos = CommFunc.ReadString(_lpData, _pos,8)
+        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x31
+        self.MapID = 0
+        self.FuncLineID = 0
+        self.TagType = 0
+        self.TagID = 0
+        self.ValueCount = 0
+        self.ValueList = list()
+        self.IsWin = 0
+        self.AwardLen = 0
+        self.AwardMsg = ""
+        self.BatLen = 0
+        self.BatStatMsg = ""
+        self.PathDate = ""
+        self.GUID = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 1
+        length += 4
+        length += 1
+        length += 4 * self.ValueCount
+        length += 1
+        length += 2
+        length += len(self.AwardMsg)
+        length += 2
+        length += len(self.BatStatMsg)
+        length += 8
+        length += 40
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteDWORD(data, self.FuncLineID)
+        data = CommFunc.WriteBYTE(data, self.TagType)
+        data = CommFunc.WriteDWORD(data, self.TagID)
+        data = CommFunc.WriteBYTE(data, self.ValueCount)
+        for i in range(self.ValueCount):
+            data = CommFunc.WriteDWORD(data, self.ValueList[i])
+        data = CommFunc.WriteBYTE(data, self.IsWin)
+        data = CommFunc.WriteWORD(data, self.AwardLen)
+        data = CommFunc.WriteString(data, self.AwardLen, self.AwardMsg)
+        data = CommFunc.WriteWORD(data, self.BatLen)
+        data = CommFunc.WriteString(data, self.BatLen, self.BatStatMsg)
+        data = CommFunc.WriteString(data, 8, self.PathDate)
+        data = CommFunc.WriteString(data, 40, self.GUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                MapID:%d,
+                                FuncLineID:%d,
+                                TagType:%d,
+                                TagID:%d,
+                                ValueCount:%d,
+                                ValueList:%s,
+                                IsWin:%d,
+                                AwardLen:%d,
+                                AwardMsg:%s,
+                                BatLen:%d,
+                                BatStatMsg:%s,
+                                PathDate:%s,
+                                GUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.MapID,
+                                self.FuncLineID,
+                                self.TagType,
+                                self.TagID,
+                                self.ValueCount,
+                                "...",
+                                self.IsWin,
+                                self.AwardLen,
+                                self.AwardMsg,
+                                self.BatLen,
+                                self.BatStatMsg,
+                                self.PathDate,
+                                self.GUID
+                                )
+        return DumpString
+
+
+m_NAtagSCTurnFightRet=tagSCTurnFightRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightRet.Head.Cmd,m_NAtagSCTurnFightRet.Head.SubCmd))] = m_NAtagSCTurnFightRet
+
+
+#------------------------------------------------------
 # B4 20 回合制战斗状态 #tagMCTurnFightState
 
 class  tagMCTurnFightState(Structure):
@@ -41612,17 +38045,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):
@@ -41642,11 +38074,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())
@@ -41659,8 +38090,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,
@@ -41670,7 +38203,9 @@
                                 self.CurHP,
                                 self.CurHPEx,
                                 self.SuckHP,
-                                self.BounceHP
+                                self.BounceHP,
+                                self.HurtCountEx,
+                                "..."
                                 )
         return DumpString
 
@@ -41679,13 +38214,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):
@@ -41709,6 +38246,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):
@@ -41725,6 +38267,8 @@
         self.RelatedSkillID = 0
         self.HurtCount = 0
         self.HurtList = list()
+        self.HurtCountEx = 0
+        self.HurtListEx = list()
         return
 
     def GetLength(self):
@@ -41740,6 +38284,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
 
@@ -41756,6 +38303,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):
@@ -41769,7 +38319,9 @@
                                 SkillID:%d,
                                 RelatedSkillID:%d,
                                 HurtCount:%d,
-                                HurtList:%s
+                                HurtList:%s,
+                                HurtCountEx:%d,
+                                HurtListEx:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -41781,6 +38333,8 @@
                                 self.SkillID,
                                 self.RelatedSkillID,
                                 self.HurtCount,
+                                "...",
+                                self.HurtCountEx,
                                 "..."
                                 )
         return DumpString
@@ -51283,6 +47837,98 @@
 
 
 #------------------------------------------------------
+# C2 02 跨服通用信息包 #tagSSCommMsg
+
+class  tagSSCommMsg(Structure):
+    Head = tagHead()
+    FromServerID = 0    #(DWORD FromServerID)//哪个服发的
+    ServerTime = 0    #(DWORD ServerTime)//来源服务器时间戳
+    TypeLen = 0    #(BYTE TypeLen)
+    MsgType = ""    #(String MsgType)
+    Len = 0    #(DWORD Len)
+    Data = ""    #(String Data)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x02
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
+        self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x02
+        self.FromServerID = 0
+        self.ServerTime = 0
+        self.TypeLen = 0
+        self.MsgType = ""
+        self.Len = 0
+        self.Data = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.MsgType)
+        length += 4
+        length += len(self.Data)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.FromServerID)
+        data = CommFunc.WriteDWORD(data, self.ServerTime)
+        data = CommFunc.WriteBYTE(data, self.TypeLen)
+        data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
+        data = CommFunc.WriteDWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Data)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FromServerID:%d,
+                                ServerTime:%d,
+                                TypeLen:%d,
+                                MsgType:%s,
+                                Len:%d,
+                                Data:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FromServerID,
+                                self.ServerTime,
+                                self.TypeLen,
+                                self.MsgType,
+                                self.Len,
+                                self.Data
+                                )
+        return DumpString
+
+
+m_NAtagSSCommMsg=tagSSCommMsg()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
+
+
+#------------------------------------------------------
 # C2 01 跨服服务器间的测试包 #tagSSTest
 
 class  tagSSTest(Structure):

--
Gitblit v1.8.0