From d57475ffe460133d146d377e66ed19ccb77b11a7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 20 十月 2025 17:22:00 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(寻宝支持定制第x次x抽必出)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 3396 +++++++++++++++--------------------------------------------
 1 files changed, 888 insertions(+), 2,508 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f9aad71..6366384 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4207,194 +4207,6 @@
 
 
 #------------------------------------------------------
-# A3 15 日常活动次数通知 #tagMCDailyActionCnt
-
-class  tagMCDailyActionInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActionID", c_int),    # ID
-                  ("DayFinishCnt", c_ushort),    # 今日已完成次数
-                  ("DayBuyTimes", c_ubyte),    # 今日购买次数
-                  ("DayItemTimes", c_ubyte),    # 今日物品增加次数
-                  ("WeekFinishCnt", 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.ActionID = 0
-        self.DayFinishCnt = 0
-        self.DayBuyTimes = 0
-        self.DayItemTimes = 0
-        self.WeekFinishCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActionInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
-                                ActionID:%d,
-                                DayFinishCnt:%d,
-                                DayBuyTimes:%d,
-                                DayItemTimes:%d,
-                                WeekFinishCnt:%d
-                                '''\
-                                %(
-                                self.ActionID,
-                                self.DayFinishCnt,
-                                self.DayBuyTimes,
-                                self.DayItemTimes,
-                                self.WeekFinishCnt
-                                )
-        return DumpString
-
-
-class  tagMCDailyActionCnt(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)// 个数
-    ActionInfo = list()    #(vector<tagMCDailyActionInfo> ActionInfo)// 活动信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        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):
-            temActionInfo = tagMCDailyActionInfo()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        self.Count = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.ActionInfo[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.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActionCnt=tagMCDailyActionCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActionCnt.Head.Cmd,m_NAtagMCDailyActionCnt.Head.SubCmd))] = m_NAtagMCDailyActionCnt
-
-
-#------------------------------------------------------
-#A3 33 玩家每日活跃度 #tagMCDailyActivityInfoList
-
-class  tagMCDailyActivityInfoList(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CurValue", c_int),    # 当前总活跃度
-                  ("RealmPoint", c_int),    # 可领取修行点
-                  ("StageIndex", c_ubyte),    # 当前阶段索引
-                  ("AwardRecord", c_int),    # 领奖记录 按位存储
-                  ("ExtraPoint", c_int),    # 多倍活动获得的额外修行点
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        self.CurValue = 0
-        self.RealmPoint = 0
-        self.StageIndex = 0
-        self.AwardRecord = 0
-        self.ExtraPoint = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActivityInfoList)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 33 玩家每日活跃度 //tagMCDailyActivityInfoList:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CurValue:%d,
-                                RealmPoint:%d,
-                                StageIndex:%d,
-                                AwardRecord:%d,
-                                ExtraPoint:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CurValue,
-                                self.RealmPoint,
-                                self.StageIndex,
-                                self.AwardRecord,
-                                self.ExtraPoint
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActivityInfoList=tagMCDailyActivityInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActivityInfoList.Cmd,m_NAtagMCDailyActivityInfoList.SubCmd))] = m_NAtagMCDailyActivityInfoList
-
-
-#------------------------------------------------------
 #A3 0D 玩家签到信息记录 # tagSCDaySignInfo
 
 class  tagSCDaySignInfo(Structure):
@@ -5087,121 +4899,6 @@
 
 m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
-
-
-#------------------------------------------------------
-# A3 16 仙盟活跃信息通知 #tagMCFamilyActivityInfo
-
-class  tagMCFamilyActionCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActionID", c_ubyte),    # ID
-                  ("FinishCnt", 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.ActionID = 0
-        self.FinishCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyActionCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 16 仙盟活跃信息通知 //tagMCFamilyActivityInfo:
-                                ActionID:%d,
-                                FinishCnt:%d
-                                '''\
-                                %(
-                                self.ActionID,
-                                self.FinishCnt
-                                )
-        return DumpString
-
-
-class  tagMCFamilyActivityInfo(Structure):
-    Head = tagHead()
-    AwardRecord = 0    #(DWORD AwardRecord)// 领奖情况记录
-    Count = 0    #(BYTE Count)// 个数
-    InfoList = list()    #(vector<tagMCFamilyActionCnt> InfoList)// 活动信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x16
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temInfoList = tagMCFamilyActionCnt()
-            _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 = 0x16
-        self.AwardRecord = 0
-        self.Count = 0
-        self.InfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.InfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.AwardRecord)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                AwardRecord:%d,
-                                Count:%d,
-                                InfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.AwardRecord,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyActivityInfo=tagMCFamilyActivityInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityInfo.Head.Cmd,m_NAtagMCFamilyActivityInfo.Head.SubCmd))] = m_NAtagMCFamilyActivityInfo
 
 
 #------------------------------------------------------
@@ -6071,58 +5768,6 @@
 
 
 #------------------------------------------------------
-# A3 B9 通知玩家今日抢红包次数 #tagMCGrabRedPacketCnt
-
-class  tagMCGrabRedPacketCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Cnt", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0xB9
-        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 = 0xB9
-        self.Cnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGrabRedPacketCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 B9 通知玩家今日抢红包次数 //tagMCGrabRedPacketCnt:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Cnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Cnt
-                                )
-        return DumpString
-
-
-m_NAtagMCGrabRedPacketCnt=tagMCGrabRedPacketCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGrabRedPacketCnt.Cmd,m_NAtagMCGrabRedPacketCnt.SubCmd))] = m_NAtagMCGrabRedPacketCnt
-
-
-#------------------------------------------------------
 # A3 C7 古宝信息 #tagMCGubaoInfo
 
 class  tagMCGubao(Structure):
@@ -6131,6 +5776,7 @@
                   ("GubaoID", c_ushort),    
                   ("GubaoStar", c_ubyte),    
                   ("GubaoLV", c_ubyte),    
+                  ("EffLayer", c_ubyte),    # 该特殊效果累加层值
                   ]
 
     def __init__(self):
@@ -6146,6 +5792,7 @@
         self.GubaoID = 0
         self.GubaoStar = 0
         self.GubaoLV = 0
+        self.EffLayer = 0
         return
 
     def GetLength(self):
@@ -6158,19 +5805,21 @@
         DumpString = '''// A3 C7 古宝信息 //tagMCGubaoInfo:
                                 GubaoID:%d,
                                 GubaoStar:%d,
-                                GubaoLV:%d
+                                GubaoLV:%d,
+                                EffLayer:%d
                                 '''\
                                 %(
                                 self.GubaoID,
                                 self.GubaoStar,
-                                self.GubaoLV
+                                self.GubaoLV,
+                                self.EffLayer
                                 )
         return DumpString
 
 
 class  tagMCGubaoInfo(Structure):
     Head = tagHead()
-    Count = 0    #(BYTE Count)
+    Count = 0    #(WORD Count)
     GubaoInfoList = list()    #(vector<tagMCGubao> GubaoInfoList)
     data = None
 
@@ -6183,7 +5832,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.Count):
             temGubaoInfoList = tagMCGubao()
             _pos = temGubaoInfoList.ReadData(_lpData, _pos)
@@ -6202,7 +5851,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
-        length += 1
+        length += 2
         for i in range(self.Count):
             length += self.GubaoInfoList[i].GetLength()
 
@@ -6211,7 +5860,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Count)
+        data = CommFunc.WriteWORD(data, self.Count)
         for i in range(self.Count):
             data = CommFunc.WriteString(data, self.GubaoInfoList[i].GetLength(), self.GubaoInfoList[i].GetBuffer())
         return data
@@ -6232,226 +5881,6 @@
 
 m_NAtagMCGubaoInfo=tagMCGubaoInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoInfo.Head.Cmd,m_NAtagMCGubaoInfo.Head.SubCmd))] = m_NAtagMCGubaoInfo
-
-
-#------------------------------------------------------
-# A3 CA 古宝物品特殊效果信息 #tagMCGubaoItemEffInfo
-
-class  tagMCGubaoItemEff(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GubaoID", c_ushort),    
-                  ("EffType", c_ubyte),    # 不同古宝ID允许拥有相同效果类型,进度值每个古宝ID单独统计
-                  ("EffValue", 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.GubaoID = 0
-        self.EffType = 0
-        self.EffValue = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGubaoItemEff)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 CA 古宝物品特殊效果信息 //tagMCGubaoItemEffInfo:
-                                GubaoID:%d,
-                                EffType:%d,
-                                EffValue:%d
-                                '''\
-                                %(
-                                self.GubaoID,
-                                self.EffType,
-                                self.EffValue
-                                )
-        return DumpString
-
-
-class  tagMCGubaoItemEffInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(WORD Count)
-    ItemEffInfoList = list()    #(vector<tagMCGubaoItemEff> ItemEffInfoList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCA
-        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):
-            temItemEffInfoList = tagMCGubaoItemEff()
-            _pos = temItemEffInfoList.ReadData(_lpData, _pos)
-            self.ItemEffInfoList.append(temItemEffInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCA
-        self.Count = 0
-        self.ItemEffInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        for i in range(self.Count):
-            length += self.ItemEffInfoList[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.ItemEffInfoList[i].GetLength(), self.ItemEffInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ItemEffInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCGubaoItemEffInfo=tagMCGubaoItemEffInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoItemEffInfo.Head.Cmd,m_NAtagMCGubaoItemEffInfo.Head.SubCmd))] = m_NAtagMCGubaoItemEffInfo
-
-
-#------------------------------------------------------
-# A3 CB 古宝碎片信息 #tagMCGubaoPieceInfo
-
-class  tagMCGubaoPiece(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GubaoID", c_ushort),    
-                  ("PieceCount", 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.GubaoID = 0
-        self.PieceCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGubaoPiece)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 CB 古宝碎片信息 //tagMCGubaoPieceInfo:
-                                GubaoID:%d,
-                                PieceCount:%d
-                                '''\
-                                %(
-                                self.GubaoID,
-                                self.PieceCount
-                                )
-        return DumpString
-
-
-class  tagMCGubaoPieceInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    PieceInfoList = list()    #(vector<tagMCGubaoPiece> PieceInfoList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCB
-        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):
-            temPieceInfoList = tagMCGubaoPiece()
-            _pos = temPieceInfoList.ReadData(_lpData, _pos)
-            self.PieceInfoList.append(temPieceInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCB
-        self.Count = 0
-        self.PieceInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.PieceInfoList[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.PieceInfoList[i].GetLength(), self.PieceInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                PieceInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCGubaoPieceInfo=tagMCGubaoPieceInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoPieceInfo.Head.Cmd,m_NAtagMCGubaoPieceInfo.Head.SubCmd))] = m_NAtagMCGubaoPieceInfo
 
 
 #------------------------------------------------------
@@ -8113,80 +7542,6 @@
 
 
 #------------------------------------------------------
-#A3 08 在线奖励信息 #tagMCOnlinePrize
-
-class  tagMCOnlinePrize(Structure):
-    Head = tagHead()
-    OnlineTime = 0    #(DWORD OnlineTime)//在线时间毫秒
-    Len = 0    #(BYTE Len)
-    PrizeInfo = list()    #(vector<DWORD> PrizeInfo)//领奖记录
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x08
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Len):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.PrizeInfo.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x08
-        self.OnlineTime = 0
-        self.Len = 0
-        self.PrizeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        length += 4 * self.Len
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.OnlineTime)
-        data = CommFunc.WriteBYTE(data, self.Len)
-        for i in range(self.Len):
-            data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                OnlineTime:%d,
-                                Len:%d,
-                                PrizeInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.OnlineTime,
-                                self.Len,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCOnlinePrize=tagMCOnlinePrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrize.Head.Cmd,m_NAtagMCOnlinePrize.Head.SubCmd))] = m_NAtagMCOnlinePrize
-
-
-#------------------------------------------------------
 # A3 19 分包下载奖励记录 #tagMCPackDownloadRecord
 
 class  tagMCPackDownloadRecord(Structure):
@@ -8292,145 +7647,6 @@
 
 m_NAtagMCPlayerLVAwardGetRecord=tagMCPlayerLVAwardGetRecord()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerLVAwardGetRecord.Cmd,m_NAtagMCPlayerLVAwardGetRecord.SubCmd))] = m_NAtagMCPlayerLVAwardGetRecord
-
-
-#------------------------------------------------------
-#A3 03 玩家在线奖励信息(暂停使用) #tagMCPlayerOnlinePrizeInfo
-
-class  tagMCOnlinePrizeItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PrizeItem", c_int),    
-                  ("ItemCount", c_ubyte),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        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 = 0xA3
-        self.SubCmd = 0x03
-        self.PrizeItem = 0
-        self.ItemCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCOnlinePrizeItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 03 玩家在线奖励信息(暂停使用) //tagMCPlayerOnlinePrizeInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PrizeItem:%d,
-                                ItemCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PrizeItem,
-                                self.ItemCount
-                                )
-        return DumpString
-
-
-class  tagMCPlayerOnlinePrizeInfo(Structure):
-    Head = tagHead()
-    RemaindTime = 0    #(DWORD RemaindTime)//产生奖励剩余时间
-    HasPrize = 0    #(BYTE HasPrize)//是否可以领取 
-    PrizeType = 0    #(BYTE PrizeType)//在线奖励类型
-    PrizeCnt = 0    #(BYTE PrizeCnt)//在线奖励类型
-    PrizeInfo = list()    #(vector<tagMCOnlinePrizeItem> PrizeInfo)//在线奖励类型
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RemaindTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.HasPrize,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PrizeType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PrizeCnt):
-            temPrizeInfo = tagMCOnlinePrizeItem()
-            _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 = 0x03
-        self.RemaindTime = 0
-        self.HasPrize = 0
-        self.PrizeType = 0
-        self.PrizeCnt = 0
-        self.PrizeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        length += 1
-        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.RemaindTime)
-        data = CommFunc.WriteBYTE(data, self.HasPrize)
-        data = CommFunc.WriteBYTE(data, self.PrizeType)
-        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,
-                                RemaindTime:%d,
-                                HasPrize:%d,
-                                PrizeType:%d,
-                                PrizeCnt:%d,
-                                PrizeInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RemaindTime,
-                                self.HasPrize,
-                                self.PrizeType,
-                                self.PrizeCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCPlayerOnlinePrizeInfo=tagMCPlayerOnlinePrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerOnlinePrizeInfo.Head.Cmd,m_NAtagMCPlayerOnlinePrizeInfo.Head.SubCmd))] = m_NAtagMCPlayerOnlinePrizeInfo
 
 
 #------------------------------------------------------
@@ -9369,66 +8585,13 @@
 
 
 #------------------------------------------------------
-# A3 41  成就完成 #tagMCSuccessFinish
+# A3 42 成就领奖记录列表 #tagSCSuccessAwardRecordList
 
-class  tagMCSuccessFinish(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SuccID", c_int),    #成就id
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x41
-        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 = 0x41
-        self.SuccID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessFinish)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 41  成就完成 //tagMCSuccessFinish:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SuccID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SuccID
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessFinish=tagMCSuccessFinish()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinish.Cmd,m_NAtagMCSuccessFinish.SubCmd))] = m_NAtagMCSuccessFinish
-
-
-#------------------------------------------------------
-#A3 42  成就完成领奖记录列表 #tagMCSuccessFinishAwardRecordList
-
-class  tagMCSuccessFinishAwardRecord(Structure):
+class  tagSCSuccessAwardRecord(Structure):
     _pack_ = 1
     _fields_ = [
                   ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个succid   0-30为0, 31-61为1..
-                  ("Record", c_int),    #对应是否领取值
-                  ("PassportRecord", c_int),    #通行证奖励是否领取值
+                  ("Record", c_int),    #根据成就ID位判断是否已领取
                   ]
 
     def __init__(self):
@@ -9443,33 +8606,30 @@
     def Clear(self):
         self.RecordIndex = 0
         self.Record = 0
-        self.PassportRecord = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCSuccessFinishAwardRecord)
+        return sizeof(tagSCSuccessAwardRecord)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''//A3 42  成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
+        DumpString = '''// A3 42 成就领奖记录列表 //tagSCSuccessAwardRecordList:
                                 RecordIndex:%d,
-                                Record:%d,
-                                PassportRecord:%d
+                                Record:%d
                                 '''\
                                 %(
                                 self.RecordIndex,
-                                self.Record,
-                                self.PassportRecord
+                                self.Record
                                 )
         return DumpString
 
 
-class  tagMCSuccessFinishAwardRecordList(Structure):
+class  tagSCSuccessAwardRecordList(Structure):
     Head = tagHead()
     RecordCnt = 0    #(WORD RecordCnt)//记录个数
-    RecordList = list()    #(vector<tagMCSuccessFinishAwardRecord> RecordList)//记录列表
+    RecordList = list()    #(vector<tagSCSuccessAwardRecord> RecordList)//记录列表
     data = None
 
     def __init__(self):
@@ -9483,7 +8643,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.RecordCnt):
-            temRecordList = tagMCSuccessFinishAwardRecord()
+            temRecordList = tagSCSuccessAwardRecord()
             _pos = temRecordList.ReadData(_lpData, _pos)
             self.RecordList.append(temRecordList)
         return _pos
@@ -9528,18 +8688,18 @@
         return DumpString
 
 
-m_NAtagMCSuccessFinishAwardRecordList=tagMCSuccessFinishAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinishAwardRecordList.Head.Cmd,m_NAtagMCSuccessFinishAwardRecordList.Head.SubCmd))] = m_NAtagMCSuccessFinishAwardRecordList
+m_NAtagSCSuccessAwardRecordList=tagSCSuccessAwardRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessAwardRecordList.Head.Cmd,m_NAtagSCSuccessAwardRecordList.Head.SubCmd))] = m_NAtagSCSuccessAwardRecordList
 
 
 #------------------------------------------------------
-# A3 40  成就信息列表 #tagMCSuccessInfoList
+# A3 40 成就信息列表 #tagSCSuccessInfoList
 
-class  tagMCSuccessInfo(Structure):
+class  tagSCSuccessInfo(Structure):
     SuccType = 0    #(WORD SuccType)//成就类型
-    Len = 0    #(WORD Len)//条件长度
-    Condition = ""    #(String Condition)//成就条件
-    CntValue = 0    #(DWORD CntValue)//当前完成进度值
+    CLen = 0    #(BYTE CLen)
+    Conds = list()    #(vector<DWORD> Conds)// 条件列表
+    CurValue = 0    #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
     data = None
 
     def __init__(self):
@@ -9549,23 +8709,25 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         self.SuccType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Condition,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
-        self.CntValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CLen):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.Conds.append(value)
+        self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
         self.SuccType = 0
-        self.Len = 0
-        self.Condition = ""
-        self.CntValue = 0
+        self.CLen = 0
+        self.Conds = list()
+        self.CurValue = 0
         return
 
     def GetLength(self):
         length = 0
         length += 2
-        length += 2
-        length += len(self.Condition)
+        length += 1
+        length += 4 * self.CLen
         length += 4
 
         return length
@@ -9573,31 +8735,32 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteWORD(data, self.SuccType)
-        data = CommFunc.WriteWORD(data, self.Len)
-        data = CommFunc.WriteString(data, self.Len, self.Condition)
-        data = CommFunc.WriteDWORD(data, self.CntValue)
+        data = CommFunc.WriteBYTE(data, self.CLen)
+        for i in range(self.CLen):
+            data = CommFunc.WriteDWORD(data, self.Conds[i])
+        data = CommFunc.WriteDWORD(data, self.CurValue)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 SuccType:%d,
-                                Len:%d,
-                                Condition:%s,
-                                CntValue:%d
+                                CLen:%d,
+                                Conds:%s,
+                                CurValue:%d
                                 '''\
                                 %(
                                 self.SuccType,
-                                self.Len,
-                                self.Condition,
-                                self.CntValue
+                                self.CLen,
+                                "...",
+                                self.CurValue
                                 )
         return DumpString
 
 
-class  tagMCSuccessInfoList(Structure):
+class  tagSCSuccessInfoList(Structure):
     Head = tagHead()
-    count = 0    #(WORD count)//信息个数
-    SuccessInfoList = list()    #(vector<tagMCSuccessInfo> SuccessInfoList)
+    Count = 0    #(WORD Count)//信息个数
+    SuccessInfoList = list()    #(vector<tagSCSuccessInfo> SuccessInfoList)
     data = None
 
     def __init__(self):
@@ -9609,9 +8772,9 @@
     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):
-            temSuccessInfoList = tagMCSuccessInfo()
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temSuccessInfoList = tagSCSuccessInfo()
             _pos = temSuccessInfoList.ReadData(_lpData, _pos)
             self.SuccessInfoList.append(temSuccessInfoList)
         return _pos
@@ -9621,7 +8784,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xA3
         self.Head.SubCmd = 0x40
-        self.count = 0
+        self.Count = 0
         self.SuccessInfoList = list()
         return
 
@@ -9629,7 +8792,7 @@
         length = 0
         length += self.Head.GetLength()
         length += 2
-        for i in range(self.count):
+        for i in range(self.Count):
             length += self.SuccessInfoList[i].GetLength()
 
         return length
@@ -9637,79 +8800,27 @@
     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.WriteWORD(data, self.Count)
+        for i in range(self.Count):
             data = CommFunc.WriteString(data, self.SuccessInfoList[i].GetLength(), self.SuccessInfoList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                count:%d,
+                                Count:%d,
                                 SuccessInfoList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.count,
+                                self.Count,
                                 "..."
                                 )
         return DumpString
 
 
-m_NAtagMCSuccessInfoList=tagMCSuccessInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessInfoList.Head.Cmd,m_NAtagMCSuccessInfoList.Head.SubCmd))] = m_NAtagMCSuccessInfoList
-
-
-#------------------------------------------------------
-# A3 43  成就积分信息 #tagMCSuccessScoreInfo
-
-class  tagMCSuccessScoreInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ScoreAwardState", c_int),    #成就积分领奖记录,按奖励索引位记录是否领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x43
-        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 = 0x43
-        self.ScoreAwardState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessScoreInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 43  成就积分信息 //tagMCSuccessScoreInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ScoreAwardState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ScoreAwardState
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
+m_NAtagSCSuccessInfoList=tagSCSuccessInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessInfoList.Head.Cmd,m_NAtagSCSuccessInfoList.Head.SubCmd))] = m_NAtagSCSuccessInfoList
 
 
 #------------------------------------------------------
@@ -10007,114 +9118,6 @@
 
 m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Head.Cmd,m_NAtagMCSyncRealmInfo.Head.SubCmd))] = m_NAtagMCSyncRealmInfo
-
-
-#------------------------------------------------------
-# A3 CE 称号星级信息 #tagMCTitleStarInfo
-
-class  tagMCTitleStar(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TitleID", 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.TitleID = 0
-        self.Star = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCTitleStar)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
-                                TitleID:%d,
-                                Star:%d
-                                '''\
-                                %(
-                                self.TitleID,
-                                self.Star
-                                )
-        return DumpString
-
-
-class  tagMCTitleStarInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    TitleStarList = list()    #(vector<tagMCTitleStar> TitleStarList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCE
-        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):
-            temTitleStarList = tagMCTitleStar()
-            _pos = temTitleStarList.ReadData(_lpData, _pos)
-            self.TitleStarList.append(temTitleStarList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCE
-        self.Count = 0
-        self.TitleStarList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                TitleStarList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
 
 
 #------------------------------------------------------
@@ -11628,374 +10631,6 @@
 
 
 #------------------------------------------------------
-# A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
-
-class  tagFGrabRedPacketInfo(Structure):
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//名字
-    PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
-    Face = 0    #(DWORD Face)//基本脸型
-    FacePic = 0    #(DWORD FacePic)//头像框
-    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.NameLen = 0
-        self.Name = ""
-        self.PlayeJob = 0
-        self.Face = 0
-        self.FacePic = 0
-        self.MoneyNum = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += len(self.Name)
-        length += 1
-        length += 4
-        length += 4
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteBYTE(data, self.PlayeJob)
-        data = CommFunc.WriteDWORD(data, self.Face)
-        data = CommFunc.WriteDWORD(data, self.FacePic)
-        data = CommFunc.WriteDWORD(data, self.MoneyNum)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                NameLen:%d,
-                                Name:%s,
-                                PlayeJob:%d,
-                                Face:%d,
-                                FacePic:%d,
-                                MoneyNum:%d
-                                '''\
-                                %(
-                                self.NameLen,
-                                self.Name,
-                                self.PlayeJob,
-                                self.Face,
-                                self.FacePic,
-                                self.MoneyNum
-                                )
-        return DumpString
-
-
-class  tagGCFamilyRedPacketGrabInfo(Structure):
-    Head = tagHead()
-    RedPacketID = 0    #(DWORD RedPacketID)//红包唯一ID
-    Count = 0    #(BYTE Count)//数量
-    GrabInfo = list()    #(vector<tagFGrabRedPacketInfo> GrabInfo)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temGrabInfo = tagFGrabRedPacketInfo()
-            _pos = temGrabInfo.ReadData(_lpData, _pos)
-            self.GrabInfo.append(temGrabInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x05
-        self.RedPacketID = 0
-        self.Count = 0
-        self.GrabInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.GrabInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.GrabInfo[i].GetLength(), self.GrabInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RedPacketID:%d,
-                                Count:%d,
-                                GrabInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RedPacketID,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyRedPacketGrabInfo=tagGCFamilyRedPacketGrabInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketGrabInfo.Head.Cmd,m_NAtagGCFamilyRedPacketGrabInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketGrabInfo
-
-
-#------------------------------------------------------
-# A4 04 家族红包总信息 #tagGCFamilyRedPacketInfo
-
-class  tagFRedPacketInfo(Structure):
-    RedPacketID = 0    #(DWORD RedPacketID)//红包唯一ID
-    PlayerID = 0    #(DWORD PlayerID)//玩家ID
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//玩家名字
-    Time = 0    #(DWORD Time)//时间
-    PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
-    Face = 0    #(DWORD Face)//基本脸型
-    FacePic = 0    #(DWORD FacePic)//头像框
-    MoneyType = 0    #(BYTE MoneyType)//金钱类型
-    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
-    GetWay = 0    #(BYTE GetWay)//获得途径
-    PacketCnt = 0    #(BYTE PacketCnt)//可抢个数
-    State = 0    #(BYTE State)//0未发,1未领取,2已领取,3全部领完
-    WishLen = 0    #(BYTE WishLen)
-    Wish = ""    #(String Wish)//祝福语
-    IsAnonymous = 0    #(BYTE IsAnonymous)//是否匿名
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
-        self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.RedPacketID = 0
-        self.PlayerID = 0
-        self.NameLen = 0
-        self.Name = ""
-        self.Time = 0
-        self.PlayeJob = 0
-        self.Face = 0
-        self.FacePic = 0
-        self.MoneyType = 0
-        self.MoneyNum = 0
-        self.GetWay = 0
-        self.PacketCnt = 0
-        self.State = 0
-        self.WishLen = 0
-        self.Wish = ""
-        self.IsAnonymous = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        length += 1
-        length += len(self.Name)
-        length += 4
-        length += 1
-        length += 4
-        length += 4
-        length += 1
-        length += 4
-        length += 1
-        length += 1
-        length += 1
-        length += 1
-        length += len(self.Wish)
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteBYTE(data, self.PlayeJob)
-        data = CommFunc.WriteDWORD(data, self.Face)
-        data = CommFunc.WriteDWORD(data, self.FacePic)
-        data = CommFunc.WriteBYTE(data, self.MoneyType)
-        data = CommFunc.WriteDWORD(data, self.MoneyNum)
-        data = CommFunc.WriteBYTE(data, self.GetWay)
-        data = CommFunc.WriteBYTE(data, self.PacketCnt)
-        data = CommFunc.WriteBYTE(data, self.State)
-        data = CommFunc.WriteBYTE(data, self.WishLen)
-        data = CommFunc.WriteString(data, self.WishLen, self.Wish)
-        data = CommFunc.WriteBYTE(data, self.IsAnonymous)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                RedPacketID:%d,
-                                PlayerID:%d,
-                                NameLen:%d,
-                                Name:%s,
-                                Time:%d,
-                                PlayeJob:%d,
-                                Face:%d,
-                                FacePic:%d,
-                                MoneyType:%d,
-                                MoneyNum:%d,
-                                GetWay:%d,
-                                PacketCnt:%d,
-                                State:%d,
-                                WishLen:%d,
-                                Wish:%s,
-                                IsAnonymous:%d
-                                '''\
-                                %(
-                                self.RedPacketID,
-                                self.PlayerID,
-                                self.NameLen,
-                                self.Name,
-                                self.Time,
-                                self.PlayeJob,
-                                self.Face,
-                                self.FacePic,
-                                self.MoneyType,
-                                self.MoneyNum,
-                                self.GetWay,
-                                self.PacketCnt,
-                                self.State,
-                                self.WishLen,
-                                self.Wish,
-                                self.IsAnonymous
-                                )
-        return DumpString
-
-
-class  tagGCFamilyRedPacketInfo(Structure):
-    Head = tagHead()
-    IsAll = 0    #(BYTE IsAll)//是否全部红包
-    Count = 0    #(BYTE Count)//红包数量
-    RedPacketInfo = list()    #(vector<tagFRedPacketInfo> RedPacketInfo)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temRedPacketInfo = tagFRedPacketInfo()
-            _pos = temRedPacketInfo.ReadData(_lpData, _pos)
-            self.RedPacketInfo.append(temRedPacketInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        self.IsAll = 0
-        self.Count = 0
-        self.RedPacketInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        for i in range(self.Count):
-            length += self.RedPacketInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsAll)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.RedPacketInfo[i].GetLength(), self.RedPacketInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                IsAll:%d,
-                                Count:%d,
-                                RedPacketInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.IsAll,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyRedPacketInfo=tagGCFamilyRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketInfo.Head.Cmd,m_NAtagGCFamilyRedPacketInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketInfo
-
-
-#------------------------------------------------------
 # A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
 
 class  tagGCFamilyStoreItem(Structure):
@@ -13119,6 +11754,73 @@
 
 
 #------------------------------------------------------
+# A5 02 捐献次数信息 #tagSCDonateCntInfo
+
+class  tagSCDonateCntInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    DonateCntList = list()    #(vector<BYTE> DonateCntList)// 今日已捐献次数列表 [捐献类型1次数, ...]
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x02
+        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.ReadBYTE(_lpData,_pos)
+            self.DonateCntList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x02
+        self.Count = 0
+        self.DonateCntList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1 * 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.WriteBYTE(data, self.DonateCntList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                DonateCntList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCDonateCntInfo=tagSCDonateCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDonateCntInfo.Head.Cmd,m_NAtagSCDonateCntInfo.Head.SubCmd))] = m_NAtagSCDonateCntInfo
+
+
+#------------------------------------------------------
 # A5 13 家族行为信息 #tagMCFamilyActionInfo
 
 class  tagMCFamilyAction(Structure):
@@ -13307,181 +12009,6 @@
 
 m_NAtagMCFamilyActionInfo=tagMCFamilyActionInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActionInfo.Head.Cmd,m_NAtagMCFamilyActionInfo.Head.SubCmd))] = m_NAtagMCFamilyActionInfo
-
-
-#------------------------------------------------------
-# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
-
-class  tagMCFamilyActivityExchangeResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Point", c_int),    # 活跃令
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x02
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x02
-        self.Point = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyActivityExchangeResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Point:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Point
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
-
-
-#------------------------------------------------------
-# A5 08 家族事务信息 #tagMCFamilyAffairInfo
-
-class  tagMCFamilyAffair(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("AffairID", c_ushort),    # 事务ID
-                  ("Star", c_ubyte),    # 星级
-                  ("State", c_ubyte),    # 状态:0-无;1-进行中;2-已完成
-                  ("RemainDuration", 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.AffairID = 0
-        self.Star = 0
-        self.State = 0
-        self.RemainDuration = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyAffair)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 08 家族事务信息 //tagMCFamilyAffairInfo:
-                                AffairID:%d,
-                                Star:%d,
-                                State:%d,
-                                RemainDuration:%d
-                                '''\
-                                %(
-                                self.AffairID,
-                                self.Star,
-                                self.State,
-                                self.RemainDuration
-                                )
-        return DumpString
-
-
-class  tagMCFamilyAffairInfo(Structure):
-    Head = tagHead()
-    RefreshFreeCount = 0    #(BYTE RefreshFreeCount)// 今日已免费刷新次数
-    Count = 0    #(BYTE Count)
-    AffairInfoList = list()    #(vector<tagMCFamilyAffair> AffairInfoList)// 事务列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x08
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RefreshFreeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temAffairInfoList = tagMCFamilyAffair()
-            _pos = temAffairInfoList.ReadData(_lpData, _pos)
-            self.AffairInfoList.append(temAffairInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x08
-        self.RefreshFreeCount = 0
-        self.Count = 0
-        self.AffairInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        for i in range(self.Count):
-            length += self.AffairInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.RefreshFreeCount)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.AffairInfoList[i].GetLength(), self.AffairInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RefreshFreeCount:%d,
-                                Count:%d,
-                                AffairInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RefreshFreeCount,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyAffairInfo=tagMCFamilyAffairInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyAffairInfo.Head.Cmd,m_NAtagMCFamilyAffairInfo.Head.SubCmd))] = m_NAtagMCFamilyAffairInfo
 
 
 #------------------------------------------------------
@@ -13713,62 +12240,6 @@
 
 
 #------------------------------------------------------
-# A5 05 通知家族钻石红包已用额度 #tagMCFamilyRedPacketGoldLimit
-
-class  tagMCFamilyRedPacketGoldLimit(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("HasSendGold", c_int),    # 已用额度
-                  ("ServerGrabCnt", c_int),    # 全服红包已抢次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        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 = 0xA5
-        self.SubCmd = 0x05
-        self.HasSendGold = 0
-        self.ServerGrabCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyRedPacketGoldLimit)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                HasSendGold:%d,
-                                ServerGrabCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.HasSendGold,
-                                self.ServerGrabCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
-
-
-#------------------------------------------------------
 # A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
 
 class  tagMCFamilyReqJoinPlayer(Structure):
@@ -13781,6 +12252,7 @@
     RealmLV = 0    #(BYTE RealmLV)//境界
     Face = 0    #(DWORD Face)//基本脸型
     FacePic = 0    #(DWORD FacePic)//头像框
+    TitleID = 0    #(DWORD TitleID)//称号
     FightPower = 0    #(DWORD FightPower)//战力,求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力,整除亿部分
     ServerID = 0    #(DWORD ServerID)//所属区服ID
@@ -13802,6 +12274,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.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -13818,6 +12291,7 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.ServerID = 0
@@ -13838,6 +12312,7 @@
         length += 4
         length += 4
         length += 4
+        length += 4
         length += 1
 
         return length
@@ -13853,6 +12328,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.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteDWORD(data, self.ServerID)
@@ -13870,6 +12346,7 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                TitleID:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 ServerID:%d,
@@ -13885,6 +12362,7 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.TitleID,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.ServerID,
@@ -14023,6 +12501,7 @@
 # A5 23 搜索家族返回列表 #tagMCFamilyViewList
 
 class  tagMCFamilyView(Structure):
+    Rank = 0    #(WORD Rank)//名次,从1开始
     FamilyID = 0    #(DWORD FamilyID)//家族ID
     FamilyNameLen = 0    #(BYTE FamilyNameLen)
     FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
@@ -14034,6 +12513,7 @@
     JoinLVMin = 0    #(WORD JoinLVMin)//限制最低可加入的玩家等级
     ServerID = 0    #(DWORD ServerID)//区服ID
     EmblemID = 0    #(DWORD EmblemID)//徽章ID
+    EmblemWord = ""    #(char EmblemWord[3])//徽章文字
     FightPower = 0    #(DWORD FightPower)//总战力,求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//总战力,整除亿部分
     MemberCount = 0    #(BYTE MemberCount)//成员人数
@@ -14045,6 +12525,7 @@
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
+        self.Rank,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyNameLen)
@@ -14056,12 +12537,14 @@
         self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
     def Clear(self):
+        self.Rank = 0
         self.FamilyID = 0
         self.FamilyNameLen = 0
         self.FamilyName = ""
@@ -14073,6 +12556,7 @@
         self.JoinLVMin = 0
         self.ServerID = 0
         self.EmblemID = 0
+        self.EmblemWord = ""
         self.FightPower = 0
         self.FightPowerEx = 0
         self.MemberCount = 0
@@ -14080,6 +12564,7 @@
 
     def GetLength(self):
         length = 0
+        length += 2
         length += 4
         length += 1
         length += len(self.FamilyName)
@@ -14091,6 +12576,7 @@
         length += 2
         length += 4
         length += 4
+        length += 3
         length += 4
         length += 4
         length += 1
@@ -14099,6 +12585,7 @@
 
     def GetBuffer(self):
         data = ''
+        data = CommFunc.WriteWORD(data, self.Rank)
         data = CommFunc.WriteDWORD(data, self.FamilyID)
         data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
         data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
@@ -14110,6 +12597,7 @@
         data = CommFunc.WriteWORD(data, self.JoinLVMin)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteDWORD(data, self.EmblemID)
+        data = CommFunc.WriteString(data, 3, self.EmblemWord)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteBYTE(data, self.MemberCount)
@@ -14117,6 +12605,7 @@
 
     def OutputString(self):
         DumpString = '''
+                                Rank:%d,
                                 FamilyID:%d,
                                 FamilyNameLen:%d,
                                 FamilyName:%s,
@@ -14128,11 +12617,13 @@
                                 JoinLVMin:%d,
                                 ServerID:%d,
                                 EmblemID:%d,
+                                EmblemWord:%s,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 MemberCount:%d
                                 '''\
                                 %(
+                                self.Rank,
                                 self.FamilyID,
                                 self.FamilyNameLen,
                                 self.FamilyName,
@@ -14144,6 +12635,7 @@
                                 self.JoinLVMin,
                                 self.ServerID,
                                 self.EmblemID,
+                                self.EmblemWord,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.MemberCount
@@ -14495,114 +12987,6 @@
 
 
 #------------------------------------------------------
-# A5 04 玩家战盟科技等级 #tagMCPlayerTechInfo
-
-class  tagMCPlayerTech(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TechID", c_ushort),    # 科技ID
-                  ("TechLV", 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.TechID = 0
-        self.TechLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPlayerTech)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 04 玩家战盟科技等级 //tagMCPlayerTechInfo:
-                                TechID:%d,
-                                TechLV:%d
-                                '''\
-                                %(
-                                self.TechID,
-                                self.TechLV
-                                )
-        return DumpString
-
-
-class  tagMCPlayerTechInfo(Structure):
-    Head = tagHead()
-    TechCnt = 0    #(BYTE TechCnt)// 科技个数
-    TechInfoList = list()    #(vector<tagMCPlayerTech> TechInfoList)// 科技信息列表
-    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.TechCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TechCnt):
-            temTechInfoList = tagMCPlayerTech()
-            _pos = temTechInfoList.ReadData(_lpData, _pos)
-            self.TechInfoList.append(temTechInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x04
-        self.TechCnt = 0
-        self.TechInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.TechCnt):
-            length += self.TechInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TechCnt)
-        for i in range(self.TechCnt):
-            data = CommFunc.WriteString(data, self.TechInfoList[i].GetLength(), self.TechInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                TechCnt:%d,
-                                TechInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.TechCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCPlayerTechInfo=tagMCPlayerTechInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerTechInfo.Head.Cmd,m_NAtagMCPlayerTechInfo.Head.SubCmd))] = m_NAtagMCPlayerTechInfo
-
-
-#------------------------------------------------------
 # A5 20 玩家家族信息 #tagMCRoleFamilyInfo
 
 class  tagMCRoleFamilyMember(Structure):
@@ -14616,11 +13000,14 @@
     RealmLV = 0    #(BYTE RealmLV)//境界
     Face = 0    #(DWORD Face)//基本脸型
     FacePic = 0    #(DWORD FacePic)//头像框
+    TitleID = 0    #(DWORD TitleID)//称号
     FightPower = 0    #(DWORD FightPower)//战力,求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力,整除亿部分
     ServerID = 0    #(DWORD ServerID)//所属区服ID
     ContribTotal = 0    #(DWORD ContribTotal)//总贡献度
-    ContribWeek = 0    #(DWORD ContribWeek)//周贡献度
+    ContribDay = 0    #(DWORD ContribDay)//日贡献度
+    DonateCntTotal = 0    #(DWORD DonateCntTotal)//总捐献次数
+    DonateCntDay = 0    #(BYTE DonateCntDay)//日捐献次数
     OffTime = 0    #(DWORD OffTime)// 0-在线; >0-/离线时间戳
     data = None
 
@@ -14640,11 +13027,14 @@
         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.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ContribTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ContribWeek,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ContribDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.DonateCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.DonateCntDay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.OffTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
@@ -14659,11 +13049,14 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.ServerID = 0
         self.ContribTotal = 0
-        self.ContribWeek = 0
+        self.ContribDay = 0
+        self.DonateCntTotal = 0
+        self.DonateCntDay = 0
         self.OffTime = 0
         return
 
@@ -14685,6 +13078,9 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 1
+        length += 4
 
         return length
 
@@ -14700,11 +13096,14 @@
         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.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteDWORD(data, self.ContribTotal)
-        data = CommFunc.WriteDWORD(data, self.ContribWeek)
+        data = CommFunc.WriteDWORD(data, self.ContribDay)
+        data = CommFunc.WriteDWORD(data, self.DonateCntTotal)
+        data = CommFunc.WriteBYTE(data, self.DonateCntDay)
         data = CommFunc.WriteDWORD(data, self.OffTime)
         return data
 
@@ -14720,11 +13119,14 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                TitleID:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 ServerID:%d,
                                 ContribTotal:%d,
-                                ContribWeek:%d,
+                                ContribDay:%d,
+                                DonateCntTotal:%d,
+                                DonateCntDay:%d,
                                 OffTime:%d
                                 '''\
                                 %(
@@ -14738,11 +13140,14 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.TitleID,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.ServerID,
                                 self.ContribTotal,
-                                self.ContribWeek,
+                                self.ContribDay,
+                                self.DonateCntTotal,
+                                self.DonateCntDay,
                                 self.OffTime
                                 )
         return DumpString
@@ -14758,6 +13163,7 @@
     JoinLVMin = 0    #(WORD JoinLVMin)//限制最低可加入的玩家等级
     ServerID = 0    #(DWORD ServerID)//区服ID,创建时以族长的区服ID赋值
     EmblemID = 0    #(DWORD EmblemID)//徽章ID
+    EmblemWord = ""    #(char EmblemWord[3])//徽章文字
     FightPower = 0    #(DWORD FightPower)//总战力,求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//总战力,整除亿部分
     BroadcastLen = 0    #(WORD BroadcastLen)//公告
@@ -14784,6 +13190,7 @@
         self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -14809,6 +13216,7 @@
         self.JoinLVMin = 0
         self.ServerID = 0
         self.EmblemID = 0
+        self.EmblemWord = ""
         self.FightPower = 0
         self.FightPowerEx = 0
         self.BroadcastLen = 0
@@ -14829,6 +13237,7 @@
         length += 2
         length += 4
         length += 4
+        length += 3
         length += 4
         length += 4
         length += 2
@@ -14851,6 +13260,7 @@
         data = CommFunc.WriteWORD(data, self.JoinLVMin)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteDWORD(data, self.EmblemID)
+        data = CommFunc.WriteString(data, 3, self.EmblemWord)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.BroadcastLen)
@@ -14872,6 +13282,7 @@
                                 JoinLVMin:%d,
                                 ServerID:%d,
                                 EmblemID:%d,
+                                EmblemWord:%s,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 BroadcastLen:%d,
@@ -14890,6 +13301,7 @@
                                 self.JoinLVMin,
                                 self.ServerID,
                                 self.EmblemID,
+                                self.EmblemWord,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.BroadcastLen,
@@ -15484,122 +13896,6 @@
 
 m_NAtagMCBossHurtList=tagMCBossHurtList()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossHurtList.Head.Cmd,m_NAtagMCBossHurtList.Head.SubCmd))] = m_NAtagMCBossHurtList
-
-
-#------------------------------------------------------
-# A7 17 聊天气泡框状态 #tagMCChatBubbleBoxState
-
-class  tagMCChatBubbleBox(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("BoxID", c_ubyte),    #气泡ID
-                  ("State", c_ubyte),    #是否已激活
-                  ("EndTime", c_int),    #到期时间戳,0为永久
-                  ("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.BoxID = 0
-        self.State = 0
-        self.EndTime = 0
-        self.Star = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCChatBubbleBox)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A7 17 聊天气泡框状态 //tagMCChatBubbleBoxState:
-                                BoxID:%d,
-                                State:%d,
-                                EndTime:%d,
-                                Star:%d
-                                '''\
-                                %(
-                                self.BoxID,
-                                self.State,
-                                self.EndTime,
-                                self.Star
-                                )
-        return DumpString
-
-
-class  tagMCChatBubbleBoxState(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    BoxList = list()    #(vector<tagMCChatBubbleBox> BoxList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x17
-        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):
-            temBoxList = tagMCChatBubbleBox()
-            _pos = temBoxList.ReadData(_lpData, _pos)
-            self.BoxList.append(temBoxList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x17
-        self.Count = 0
-        self.BoxList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.BoxList[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.BoxList[i].GetLength(), self.BoxList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                BoxList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Head.Cmd,m_NAtagMCChatBubbleBoxState.Head.SubCmd))] = m_NAtagMCChatBubbleBoxState
 
 
 #------------------------------------------------------
@@ -16850,6 +15146,7 @@
     FamilyID = 0    #(DWORD FamilyID)
     FamilyName = ""    #(char FamilyName[33])
     FamilyEmblemID = 0    #(DWORD FamilyEmblemID)//仙盟徽章ID
+    FamilyEmblemWord = ""    #(char FamilyEmblemWord[3])//徽章文字
     PlusDataSize = 0    #(DWORD PlusDataSize)
     PlusData = ""    #(String PlusData)//扩展记录	
     data = None
@@ -16878,6 +15175,7 @@
         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
         self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FamilyEmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
         self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
         return _pos
@@ -16902,6 +15200,7 @@
         self.FamilyID = 0
         self.FamilyName = ""
         self.FamilyEmblemID = 0
+        self.FamilyEmblemWord = ""
         self.PlusDataSize = 0
         self.PlusData = ""
         return
@@ -16924,6 +15223,7 @@
         length += 4
         length += 33
         length += 4
+        length += 3
         length += 4
         length += len(self.PlusData)
 
@@ -16947,6 +15247,7 @@
         data = CommFunc.WriteDWORD(data, self.FamilyID)
         data = CommFunc.WriteString(data, 33, self.FamilyName)
         data = CommFunc.WriteDWORD(data, self.FamilyEmblemID)
+        data = CommFunc.WriteString(data, 3, self.FamilyEmblemWord)
         data = CommFunc.WriteDWORD(data, self.PlusDataSize)
         data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
         return data
@@ -16969,6 +15270,7 @@
                                 FamilyID:%d,
                                 FamilyName:%s,
                                 FamilyEmblemID:%d,
+                                FamilyEmblemWord:%s,
                                 PlusDataSize:%d,
                                 PlusData:%s
                                 '''\
@@ -16989,6 +15291,7 @@
                                 self.FamilyID,
                                 self.FamilyName,
                                 self.FamilyEmblemID,
+                                self.FamilyEmblemWord,
                                 self.PlusDataSize,
                                 self.PlusData
                                 )
@@ -18344,11 +16647,13 @@
 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)//战力整除亿部分
     Face = 0    #(DWORD Face)//基本脸型
     FacePic = 0    #(DWORD FacePic)//头像框
+    TitleID = 0    #(DWORD TitleID)//称号
     data = None
 
     def __init__(self):
@@ -18359,21 +16664,25 @@
         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)
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
+        self.LV = 0
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         return
 
     def GetLength(self):
@@ -18381,6 +16690,8 @@
         length += 4
         length += 33
         length += 2
+        length += 2
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -18392,31 +16703,37 @@
         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)
         data = CommFunc.WriteDWORD(data, self.Face)
         data = CommFunc.WriteDWORD(data, self.FacePic)
+        data = CommFunc.WriteDWORD(data, self.TitleID)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
+                                LV:%d,
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 Face:%d,
-                                FacePic:%d
+                                FacePic:%d,
+                                TitleID:%d
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
+                                self.LV,
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.Face,
-                                self.FacePic
+                                self.FacePic,
+                                self.TitleID
                                 )
         return DumpString
 
@@ -19471,169 +17788,6 @@
 
 
 #------------------------------------------------------
-# A9 A7 通知可抢的红包信息 #tagGCGrabRedPacketInfo
-
-class  tagGCGrabRedPacketInfo(Structure):
-    Head = tagHead()
-    RedPacketCnt = 0    #(DWORD RedPacketCnt)//可抢红包个数
-    StrLen = 0    #(WORD StrLen)//字符串长度
-    OwnerName = ""    #(String OwnerName)//红包主人名字
-    RedPacketID = 0    #(DWORD RedPacketID)//可抢红包ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RedPacketCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        self.RedPacketCnt = 0
-        self.StrLen = 0
-        self.OwnerName = ""
-        self.RedPacketID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 2
-        length += len(self.OwnerName)
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RedPacketCnt)
-        data = CommFunc.WriteWORD(data, self.StrLen)
-        data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RedPacketCnt:%d,
-                                StrLen:%d,
-                                OwnerName:%s,
-                                RedPacketID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RedPacketCnt,
-                                self.StrLen,
-                                self.OwnerName,
-                                self.RedPacketID
-                                )
-        return DumpString
-
-
-m_NAtagGCGrabRedPacketInfo=tagGCGrabRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketInfo.Head.Cmd,m_NAtagGCGrabRedPacketInfo.Head.SubCmd))] = m_NAtagGCGrabRedPacketInfo
-
-
-#------------------------------------------------------
-# A9 A6 通知抢红包结果 #tagGCGrabRedPacketResult
-
-class  tagGCGrabRedPacketResult(Structure):
-    Head = tagHead()
-    StrLen = 0    #(WORD StrLen)//字符串长度
-    OwnerName = ""    #(String OwnerName)//红包主人名字
-    TotalMoney = 0    #(DWORD TotalMoney)//红包总额
-    DataSize = 0    #(DWORD DataSize)
-    GrabInfo = ""    #(String GrabInfo)//抢红包具体结果
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
-        self.TotalMoney,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GrabInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        self.StrLen = 0
-        self.OwnerName = ""
-        self.TotalMoney = 0
-        self.DataSize = 0
-        self.GrabInfo = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += len(self.OwnerName)
-        length += 4
-        length += 4
-        length += len(self.GrabInfo)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.StrLen)
-        data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
-        data = CommFunc.WriteDWORD(data, self.TotalMoney)
-        data = CommFunc.WriteDWORD(data, self.DataSize)
-        data = CommFunc.WriteString(data, self.DataSize, self.GrabInfo)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StrLen:%d,
-                                OwnerName:%s,
-                                TotalMoney:%d,
-                                DataSize:%d,
-                                GrabInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StrLen,
-                                self.OwnerName,
-                                self.TotalMoney,
-                                self.DataSize,
-                                self.GrabInfo
-                                )
-        return DumpString
-
-
-m_NAtagGCGrabRedPacketResult=tagGCGrabRedPacketResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketResult.Head.Cmd,m_NAtagGCGrabRedPacketResult.Head.SubCmd))] = m_NAtagGCGrabRedPacketResult
-
-
-#------------------------------------------------------
 # A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
 
 class  tagGCNotifyEquipClassEquip(Structure):
@@ -20649,6 +18803,63 @@
 
 
 #------------------------------------------------------
+# A9 21 角色改名结果 #tagSCRenameResult
+
+class  tagSCRenameResult(Structure):
+    Head = tagHead()
+    PlayerName = ""    #(char PlayerName[33])// 新名字
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x21
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x21
+        self.PlayerName = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 33
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PlayerName:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PlayerName
+                                )
+        return DumpString
+
+
+m_NAtagSCRenameResult=tagSCRenameResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCRenameResult.Head.Cmd,m_NAtagSCRenameResult.Head.SubCmd))] = m_NAtagSCRenameResult
+
+
+#------------------------------------------------------
 # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
 
 class  tagGCStoreServerBuyCnt(Structure):
@@ -20754,58 +18965,6 @@
 
 m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
-
-
-#------------------------------------------------------
-#A9 21 角色改名结果 #tagUpdatePlayerNameResult
-
-class  tagUpdatePlayerNameResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Result", c_ubyte),    #角色改名结果
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        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 = 0xA9
-        self.SubCmd = 0x21
-        self.Result = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagUpdatePlayerNameResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A9 21 角色改名结果 //tagUpdatePlayerNameResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Result:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Result
-                                )
-        return DumpString
-
-
-m_NAtagUpdatePlayerNameResult=tagUpdatePlayerNameResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUpdatePlayerNameResult.Cmd,m_NAtagUpdatePlayerNameResult.SubCmd))] = m_NAtagUpdatePlayerNameResult
 
 
 #------------------------------------------------------
@@ -33727,62 +31886,6 @@
 
 
 #------------------------------------------------------
-# AB 25 节日红包信息 #tagMCFeastRedPackInfo
-
-class  tagMCFeastRedPackInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MoneyNum", c_int),    # 累积抢到多少钱
-                  ("GrabCnt", c_ushort),    # 已抢红包次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        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 = 0xAB
-        self.SubCmd = 0x25
-        self.MoneyNum = 0
-        self.GrabCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastRedPackInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MoneyNum:%d,
-                                GrabCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MoneyNum,
-                                self.GrabCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
-
-
-#------------------------------------------------------
 # AB 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
 
 class  tagMCOpenServerCampaignAward(Structure):
@@ -33900,66 +32003,6 @@
 
 m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
-
-
-#------------------------------------------------------
-# AB 24 开服红包信息 #tagMCOpenServerRedPacketInfo
-
-class  tagMCOpenServerRedPacketInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MoneyNum", c_int),    # 累积抢到多少钱
-                  ("GrabCnt", c_ushort),    # 已抢红包次数
-                  ("StartTime", c_int),    # 开始倒计时时间
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        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 = 0xAB
-        self.SubCmd = 0x24
-        self.MoneyNum = 0
-        self.GrabCnt = 0
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCOpenServerRedPacketInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 24 开服红包信息 //tagMCOpenServerRedPacketInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MoneyNum:%d,
-                                GrabCnt:%d,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MoneyNum,
-                                self.GrabCnt,
-                                self.StartTime
-                                )
-        return DumpString
-
-
-m_NAtagMCOpenServerRedPacketInfo=tagMCOpenServerRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerRedPacketInfo.Cmd,m_NAtagMCOpenServerRedPacketInfo.SubCmd))] = m_NAtagMCOpenServerRedPacketInfo
 
 
 #------------------------------------------------------
@@ -34373,151 +32416,6 @@
 
 
 #------------------------------------------------------
-# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
-
-class  tagGCFeastRedPacketDay(Structure):
-    RedPacketCount = 0    #(BYTE RedPacketCount)
-    RedPacketIDList = list()    #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RedPacketCount):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
-            self.RedPacketIDList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.RedPacketCount = 0
-        self.RedPacketIDList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.RedPacketCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.RedPacketCount)
-        for i in range(self.RedPacketCount):
-            data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                RedPacketCount:%d,
-                                RedPacketIDList:%s
-                                '''\
-                                %(
-                                self.RedPacketCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagGCFeastRedPacketInfo(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点重置
-    RedPacketDays = 0    #(BYTE RedPacketDays)
-    RedPacketDayList = list()    #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x11
-        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.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RedPacketDays):
-            temRedPacketDayList = tagGCFeastRedPacketDay()
-            _pos = temRedPacketDayList.ReadData(_lpData, _pos)
-            self.RedPacketDayList.append(temRedPacketDayList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x11
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.ResetType = 0
-        self.RedPacketDays = 0
-        self.RedPacketDayList = 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.RedPacketDays):
-            length += self.RedPacketDayList[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.RedPacketDays)
-        for i in range(self.RedPacketDays):
-            data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                ResetType:%d,
-                                RedPacketDays:%d,
-                                RedPacketDayList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.ResetType,
-                                self.RedPacketDays,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
-
-
-#------------------------------------------------------
 # AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
 
 class  tagGCMultiExpRateTime(Structure):
@@ -34742,73 +32640,6 @@
 
 m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
-
-
-#------------------------------------------------------
-# AC 05 红包删除 #tagGCRedPacketDel
-
-class  tagGCRedPacketDel(Structure):
-    Head = tagHead()
-    Cnt = 0    #(DWORD Cnt)// 个数
-    DelRedPacketID = list()    #(vector<DWORD> DelRedPacketID)// 红包ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.Cnt):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.DelRedPacketID.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x05
-        self.Cnt = 0
-        self.DelRedPacketID = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4 * self.Cnt
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteDWORD(data, self.DelRedPacketID[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                DelRedPacketID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCRedPacketDel=tagGCRedPacketDel()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRedPacketDel.Head.Cmd,m_NAtagGCRedPacketDel.Head.SubCmd))] = m_NAtagGCRedPacketDel
 
 
 #------------------------------------------------------
@@ -36490,6 +34321,122 @@
 
 
 #------------------------------------------------------
+# B1 27 聊天气泡框信息 #tagSCChatBoxInfo
+
+class  tagSCChatBox(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("BoxID", c_int),    #气泡框ID
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
+                  ("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.BoxID = 0
+        self.State = 0
+        self.EndTime = 0
+        self.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCChatBox)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 27 聊天气泡框信息 //tagSCChatBoxInfo:
+                                BoxID:%d,
+                                State:%d,
+                                EndTime:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.BoxID,
+                                self.State,
+                                self.EndTime,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagSCChatBoxInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    BoxList = list()    #(vector<tagSCChatBox> BoxList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x27
+        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):
+            temBoxList = tagSCChatBox()
+            _pos = temBoxList.ReadData(_lpData, _pos)
+            self.BoxList.append(temBoxList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x27
+        self.Count = 0
+        self.BoxList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.BoxList[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.BoxList[i].GetLength(), self.BoxList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                BoxList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCChatBoxInfo=tagSCChatBoxInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCChatBoxInfo.Head.Cmd,m_NAtagSCChatBoxInfo.Head.SubCmd))] = m_NAtagSCChatBoxInfo
+
+
+#------------------------------------------------------
 # B1 02 玩家时装皮肤激活状态 #tagMCClothesCoatSkinState
 
 class  tagMCClothesCoatLVInfo(Structure):
@@ -36609,6 +34556,158 @@
 
 m_NAtagMCClothesCoatSkinState=tagMCClothesCoatSkinState()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClothesCoatSkinState.Head.Cmd,m_NAtagMCClothesCoatSkinState.Head.SubCmd))] = m_NAtagMCClothesCoatSkinState
+
+
+#------------------------------------------------------
+# B1 09 每日活跃任务信息 #tagSCDailyTaskInfo
+
+class  tagSCDailyTask(Structure):
+    TaskType = 0    #(BYTE TaskType)// 任务类型
+    CLen = 0    #(BYTE CLen)
+    Conds = list()    #(vector<DWORD> Conds)// 条件列表
+    CurValue = 0    #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.TaskType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CLen):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.Conds.append(value)
+        self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.TaskType = 0
+        self.CLen = 0
+        self.Conds = list()
+        self.CurValue = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += 4 * self.CLen
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.TaskType)
+        data = CommFunc.WriteBYTE(data, self.CLen)
+        for i in range(self.CLen):
+            data = CommFunc.WriteDWORD(data, self.Conds[i])
+        data = CommFunc.WriteDWORD(data, self.CurValue)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                TaskType:%d,
+                                CLen:%d,
+                                Conds:%s,
+                                CurValue:%d
+                                '''\
+                                %(
+                                self.TaskType,
+                                self.CLen,
+                                "...",
+                                self.CurValue
+                                )
+        return DumpString
+
+
+class  tagSCDailyTaskInfo(Structure):
+    Head = tagHead()
+    ActivityTotal = 0    #(DWORD ActivityTotal)// 今日累计获得活跃度
+    ActivityAward = 0    #(DWORD ActivityAward)// 累计活跃领奖记录,按活跃ID奖励二进制位存储是否已领取
+    DailyTaskState = 0    #(DWORD DailyTaskState)// 今日任务是否已领取奖励,按任务ID二进制位存储是否已领取
+    TaskCount = 0    #(BYTE TaskCount)
+    TaskList = list()    #(vector<tagSCDailyTask> TaskList)// 差异更新的任务信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x09
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActivityTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ActivityAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.DailyTaskState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TaskCount):
+            temTaskList = tagSCDailyTask()
+            _pos = temTaskList.ReadData(_lpData, _pos)
+            self.TaskList.append(temTaskList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x09
+        self.ActivityTotal = 0
+        self.ActivityAward = 0
+        self.DailyTaskState = 0
+        self.TaskCount = 0
+        self.TaskList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.TaskCount):
+            length += self.TaskList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.ActivityTotal)
+        data = CommFunc.WriteDWORD(data, self.ActivityAward)
+        data = CommFunc.WriteDWORD(data, self.DailyTaskState)
+        data = CommFunc.WriteBYTE(data, self.TaskCount)
+        for i in range(self.TaskCount):
+            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActivityTotal:%d,
+                                ActivityAward:%d,
+                                DailyTaskState:%d,
+                                TaskCount:%d,
+                                TaskList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActivityTotal,
+                                self.ActivityAward,
+                                self.DailyTaskState,
+                                self.TaskCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCDailyTaskInfo=tagSCDailyTaskInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDailyTaskInfo.Head.Cmd,m_NAtagSCDailyTaskInfo.Head.SubCmd))] = m_NAtagSCDailyTaskInfo
 
 
 #------------------------------------------------------
@@ -37323,6 +35422,186 @@
 
 
 #------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
+# B1 19 形象信息 #tagSCModelInfo
+
+class  tagSCModel(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ModelID", c_int),    #形象ID
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
+                  ("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.ModelID = 0
+        self.State = 0
+        self.EndTime = 0
+        self.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCModel)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 19 形象信息 //tagSCModelInfo:
+                                ModelID:%d,
+                                State:%d,
+                                EndTime:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.ModelID,
+                                self.State,
+                                self.EndTime,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagSCModelInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    ModelList = list()    #(vector<tagSCModel> ModelList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x19
+        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):
+            temModelList = tagSCModel()
+            _pos = temModelList.ReadData(_lpData, _pos)
+            self.ModelList.append(temModelList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x19
+        self.Count = 0
+        self.ModelList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.ModelList[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.ModelList[i].GetLength(), self.ModelList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                ModelList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCModelInfo=tagSCModelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCModelInfo.Head.Cmd,m_NAtagSCModelInfo.Head.SubCmd))] = m_NAtagSCModelInfo
+
+
+#------------------------------------------------------
 # B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
 
 class  tagMCNotifyPlayerMove(Structure):
@@ -37380,80 +35659,6 @@
 
 m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove
-
-
-#------------------------------------------------------
-# B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
-
-class  tagMCOnlinePrizeNew(Structure):
-    Head = tagHead()
-    OnlineTime = 0    #(DWORD OnlineTime)//在线时间毫秒
-    Len = 0    #(BYTE Len)
-    PrizeInfo = list()    #(vector<DWORD> PrizeInfo)//领奖记录
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB1
-        self.Head.SubCmd = 0x13
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Len):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.PrizeInfo.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB1
-        self.Head.SubCmd = 0x13
-        self.OnlineTime = 0
-        self.Len = 0
-        self.PrizeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        length += 4 * self.Len
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.OnlineTime)
-        data = CommFunc.WriteBYTE(data, self.Len)
-        for i in range(self.Len):
-            data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                OnlineTime:%d,
-                                Len:%d,
-                                PrizeInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.OnlineTime,
-                                self.Len,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCOnlinePrizeNew=tagMCOnlinePrizeNew()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrizeNew.Head.Cmd,m_NAtagMCOnlinePrizeNew.Head.SubCmd))] = m_NAtagMCOnlinePrizeNew
 
 
 #------------------------------------------------------
@@ -38093,6 +36298,122 @@
 
 m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
+
+
+#------------------------------------------------------
+# B1 26 称号信息 #tagSCTitleInfo
+
+class  tagSCTitle(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("TitleID", c_int),    #称号ID
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
+                  ("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.TitleID = 0
+        self.State = 0
+        self.EndTime = 0
+        self.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCTitle)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 26 称号信息 //tagSCTitleInfo:
+                                TitleID:%d,
+                                State:%d,
+                                EndTime:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.TitleID,
+                                self.State,
+                                self.EndTime,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagSCTitleInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    TitleList = list()    #(vector<tagSCTitle> TitleList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        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.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temTitleList = tagSCTitle()
+            _pos = temTitleList.ReadData(_lpData, _pos)
+            self.TitleList.append(temTitleList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x26
+        self.Count = 0
+        self.TitleList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.TitleList[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.TitleList[i].GetLength(), self.TitleList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                TitleList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCTitleInfo=tagSCTitleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTitleInfo.Head.Cmd,m_NAtagSCTitleInfo.Head.SubCmd))] = m_NAtagSCTitleInfo
 
 
 #------------------------------------------------------
@@ -43429,10 +41750,11 @@
     Head = tagHead()
     ObjID = 0    #(DWORD ObjID)
     PMType = 0    #(BYTE PMType)// 物法类型 0或1-物理;2-法术
-    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击
+    BattleType = 0    #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的
     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
     data = None
@@ -43452,6 +41774,7 @@
         self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.SkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.RelatedSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.HurtCount):
             temHurtList = tagSCUseSkillHurt()
@@ -43470,6 +41793,7 @@
         self.CurHP = 0
         self.CurHPEx = 0
         self.SkillID = 0
+        self.RelatedSkillID = 0
         self.HurtCount = 0
         self.HurtList = list()
         return
@@ -43480,6 +41804,7 @@
         length += 4
         length += 1
         length += 1
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -43498,6 +41823,7 @@
         data = CommFunc.WriteDWORD(data, self.CurHP)
         data = CommFunc.WriteDWORD(data, self.CurHPEx)
         data = CommFunc.WriteDWORD(data, self.SkillID)
+        data = CommFunc.WriteDWORD(data, self.RelatedSkillID)
         data = CommFunc.WriteBYTE(data, self.HurtCount)
         for i in range(self.HurtCount):
             data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
@@ -43512,6 +41838,7 @@
                                 CurHP:%d,
                                 CurHPEx:%d,
                                 SkillID:%d,
+                                RelatedSkillID:%d,
                                 HurtCount:%d,
                                 HurtList:%s
                                 '''\
@@ -43523,6 +41850,7 @@
                                 self.CurHP,
                                 self.CurHPEx,
                                 self.SkillID,
+                                self.RelatedSkillID,
                                 self.HurtCount,
                                 "..."
                                 )
@@ -53022,4 +51350,56 @@
 
 
 m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
+
+
+#------------------------------------------------------
+# C2 01 跨服服务器间的测试包 #tagSSTest
+
+class  tagSSTest(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Data", c_int),    #测试
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC2
+        self.SubCmd = 0x01
+        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 = 0xC2
+        self.SubCmd = 0x01
+        self.Data = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSSTest)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C2 01 跨服服务器间的测试包 //tagSSTest:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Data:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Data
+                                )
+        return DumpString
+
+
+m_NAtagSSTest=tagSSTest()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSTest.Cmd,m_NAtagSSTest.SubCmd))] = m_NAtagSSTest
\ No newline at end of file

--
Gitblit v1.8.0