From 26958aff1b844a743a805b4f9075bee800b72a46 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 04 十一月 2025 14:35:37 +0800
Subject: [PATCH] 332 【主界面】座骑系统-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 5960 ++++++++++++++---------------------------------------------
 1 files changed, 1,425 insertions(+), 4,535 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c32e6bf..2b16e24 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4207,69 +4207,18 @@
 
 
 #------------------------------------------------------
-# A3 15 日常活动次数通知 #tagMCDailyActionCnt
+#A3 0D 玩家签到信息记录 # tagSCDaySignInfo
 
-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):
+class  tagSCDaySignInfo(Structure):
     Head = tagHead()
-    Count = 0    #(BYTE Count)// 个数
-    ActionInfo = list()    #(vector<tagMCDailyActionInfo> ActionInfo)// 活动信息
+    Count = 0    #(BYTE Count)
+    SignStateList = list()    #(vector<BYTE> SignStateList)//每日签到状态记录列表 [第1天状态, ...]  状态:0-不可签到;1-已签到;2-可补签;3-已领取
     data = None
 
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
+        self.Head.SubCmd = 0x0D
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -4277,26 +4226,24 @@
         _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)
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.SignStateList.append(value)
         return _pos
 
     def Clear(self):
         self.Head = tagHead()
         self.Head.Clear()
         self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
+        self.Head.SubCmd = 0x0D
         self.Count = 0
-        self.ActionInfo = list()
+        self.SignStateList = list()
         return
 
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
         length += 1
-        for i in range(self.Count):
-            length += self.ActionInfo[i].GetLength()
+        length += 1 * self.Count
 
         return length
 
@@ -4305,14 +4252,14 @@
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteBYTE(data, self.Count)
         for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+            data = CommFunc.WriteBYTE(data, self.SignStateList[i])
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
                                 Count:%d,
-                                ActionInfo:%s
+                                SignStateList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -4322,144 +4269,8 @@
         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 玩家签到信息记录 # tagMCDaySignInfo
-
-class  tagMCDaySignInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("DaySignCount", c_ubyte),    #已经签到天数
-                  ("ReplenishSignCount", c_ubyte),    # 可以补签天数
-                  ("IsSign", c_ubyte),    #当天是否已经签到,发送0和1
-                  ("IsFrist", c_ubyte),    #是否是第一个月
-                  ("TotalSignCount", c_ushort),    #累计总签到天数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x0D
-        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 = 0x0D
-        self.DaySignCount = 0
-        self.ReplenishSignCount = 0
-        self.IsSign = 0
-        self.IsFrist = 0
-        self.TotalSignCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDaySignInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 0D 玩家签到信息记录 // tagMCDaySignInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                DaySignCount:%d,
-                                ReplenishSignCount:%d,
-                                IsSign:%d,
-                                IsFrist:%d,
-                                TotalSignCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.DaySignCount,
-                                self.ReplenishSignCount,
-                                self.IsSign,
-                                self.IsFrist,
-                                self.TotalSignCount
-                                )
-        return DumpString
-
-
-m_NAtagMCDaySignInfo=tagMCDaySignInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDaySignInfo.Cmd,m_NAtagMCDaySignInfo.SubCmd))] = m_NAtagMCDaySignInfo
+m_NAtagSCDaySignInfo=tagSCDaySignInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDaySignInfo.Head.Cmd,m_NAtagSCDaySignInfo.Head.SubCmd))] = m_NAtagSCDaySignInfo
 
 
 #------------------------------------------------------
@@ -5091,121 +4902,6 @@
 
 
 #------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
 # A3 54 法器信息 #tagMCFaQiInfo
 
 class  tagMCFaQiInfo(Structure):
@@ -5418,129 +5114,6 @@
 
 m_NAtagSCFBInfoList=tagSCFBInfoList()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFBInfoList.Head.Cmd,m_NAtagSCFBInfoList.Head.SubCmd))] = m_NAtagSCFBInfoList
-
-
-#------------------------------------------------------
-#A3 04 玩家扫荡信息 #tagMCFBWipeOutData
-
-class  tagMCFBData(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("FBID", c_int),    #fbId
-                  ("LineIndex", c_ubyte),    #副本通关场次
-                  ("WipeOutCnt", c_ubyte),    #扫荡次数
-                  ("passGrade", c_ubyte),    #通关评级
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.FBID = 0
-        self.LineIndex = 0
-        self.WipeOutCnt = 0
-        self.passGrade = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFBData)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 04 玩家扫荡信息 //tagMCFBWipeOutData:
-                                FBID:%d,
-                                LineIndex:%d,
-                                WipeOutCnt:%d,
-                                passGrade:%d
-                                '''\
-                                %(
-                                self.FBID,
-                                self.LineIndex,
-                                self.WipeOutCnt,
-                                self.passGrade
-                                )
-        return DumpString
-
-
-class  tagMCFBWipeOutData(Structure):
-    Head = tagHead()
-    WipeOutFBID = 0    #(DWORD WipeOutFBID)//当前扫荡的副本id
-    FBDataCnt = 0    #(BYTE FBDataCnt)//
-    FBDataList = list()    #(vector<tagMCFBData> FBDataList)//
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x04
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.WipeOutFBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FBDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.FBDataCnt):
-            temFBDataList = tagMCFBData()
-            _pos = temFBDataList.ReadData(_lpData, _pos)
-            self.FBDataList.append(temFBDataList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x04
-        self.WipeOutFBID = 0
-        self.FBDataCnt = 0
-        self.FBDataList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.FBDataCnt):
-            length += self.FBDataList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.WipeOutFBID)
-        data = CommFunc.WriteBYTE(data, self.FBDataCnt)
-        for i in range(self.FBDataCnt):
-            data = CommFunc.WriteString(data, self.FBDataList[i].GetLength(), self.FBDataList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                WipeOutFBID:%d,
-                                FBDataCnt:%d,
-                                FBDataList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.WipeOutFBID,
-                                self.FBDataCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFBWipeOutData=tagMCFBWipeOutData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBWipeOutData.Head.Cmd,m_NAtagMCFBWipeOutData.Head.SubCmd))] = m_NAtagMCFBWipeOutData
 
 
 #------------------------------------------------------
@@ -5831,118 +5404,6 @@
 
 
 #------------------------------------------------------
-# A3 1D 神兵等级信息 #tagMCGodWeaponLVList
-
-class  tagMCGodWeaponLVInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("WeaponType", c_ubyte),    #神兵类型
-                  ("WeaponLV", c_ushort),    #神兵等级
-                  ("WeaponExp", c_int),    #当前神兵经验
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.WeaponType = 0
-        self.WeaponLV = 0
-        self.WeaponExp = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGodWeaponLVInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 1D 神兵等级信息 //tagMCGodWeaponLVList:
-                                WeaponType:%d,
-                                WeaponLV:%d,
-                                WeaponExp:%d
-                                '''\
-                                %(
-                                self.WeaponType,
-                                self.WeaponLV,
-                                self.WeaponExp
-                                )
-        return DumpString
-
-
-class  tagMCGodWeaponLVList(Structure):
-    Head = tagHead()
-    WeaponNum = 0    #(BYTE WeaponNum)//神器个数
-    WeaponInfoList = list()    #(vector<tagMCGodWeaponLVInfo> WeaponInfoList)// 副本数据列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1D
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.WeaponNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.WeaponNum):
-            temWeaponInfoList = tagMCGodWeaponLVInfo()
-            _pos = temWeaponInfoList.ReadData(_lpData, _pos)
-            self.WeaponInfoList.append(temWeaponInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1D
-        self.WeaponNum = 0
-        self.WeaponInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.WeaponNum):
-            length += self.WeaponInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.WeaponNum)
-        for i in range(self.WeaponNum):
-            data = CommFunc.WriteString(data, self.WeaponInfoList[i].GetLength(), self.WeaponInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                WeaponNum:%d,
-                                WeaponInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.WeaponNum,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCGodWeaponLVList=tagMCGodWeaponLVList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGodWeaponLVList.Head.Cmd,m_NAtagMCGodWeaponLVList.Head.SubCmd))] = m_NAtagMCGodWeaponLVList
-
-
-#------------------------------------------------------
 # A3 37 投资理财信息 #tagMCGoldInvestInfo
 
 class  tagMCInvestReward(Structure):
@@ -6072,58 +5533,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):
@@ -6132,6 +5541,7 @@
                   ("GubaoID", c_ushort),    
                   ("GubaoStar", c_ubyte),    
                   ("GubaoLV", c_ubyte),    
+                  ("EffLayer", c_ubyte),    # 该特殊效果累加层值
                   ]
 
     def __init__(self):
@@ -6147,6 +5557,7 @@
         self.GubaoID = 0
         self.GubaoStar = 0
         self.GubaoLV = 0
+        self.EffLayer = 0
         return
 
     def GetLength(self):
@@ -6159,19 +5570,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
 
@@ -6184,7 +5597,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)
@@ -6203,7 +5616,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()
 
@@ -6212,7 +5625,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
@@ -6233,226 +5646,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
 
 
 #------------------------------------------------------
@@ -6508,20 +5701,22 @@
 
 
 #------------------------------------------------------
-# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
+# A3 03 坐骑阶级信息 #tagSCHorseClassInfo
 
-class  tagMCHorsePetSkinInfo(Structure):
+class  tagSCHorseClassInfo(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("Type", c_ubyte),    # 1-坐骑 2-灵宠
-                  ("ID", c_int),    # 对应坐骑表灵宠表ID
-                  ("Exp", c_int),    #经验
-                  ("SkinLV", c_ubyte),    #觉醒等级
-                  ("SkinIndex", c_ubyte),    #当前选择外观
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ClassLV", c_ubyte),    #当前阶级,从0开始
+                  ("HorseLV", c_ushort),    #当前阶等级,从1开始
+                  ("Exp", c_ushort),    #当前阶等级经验,每级从0开始
                   ]
 
     def __init__(self):
         self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0x03
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -6530,111 +5725,51 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.Type = 0
-        self.ID = 0
+        self.Cmd = 0xA3
+        self.SubCmd = 0x03
+        self.ClassLV = 0
+        self.HorseLV = 0
         self.Exp = 0
-        self.SkinLV = 0
-        self.SkinIndex = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCHorsePetSkinInfo)
+        return sizeof(tagSCHorseClassInfo)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
-                                Type:%d,
-                                ID:%d,
-                                Exp:%d,
-                                SkinLV:%d,
-                                SkinIndex:%d
+        DumpString = '''// A3 03 坐骑阶级信息 //tagSCHorseClassInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ClassLV:%d,
+                                HorseLV:%d,
+                                Exp:%d
                                 '''\
                                 %(
-                                self.Type,
-                                self.ID,
-                                self.Exp,
-                                self.SkinLV,
-                                self.SkinIndex
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ClassLV,
+                                self.HorseLV,
+                                self.Exp
                                 )
         return DumpString
 
 
-class  tagMCHorsePetSkinData(Structure):
-    Head = tagHead()
-    Num = 0    #(BYTE Num)//个数
-    InfoList = list()    #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Num):
-            temInfoList = tagMCHorsePetSkinInfo()
-            _pos = temInfoList.ReadData(_lpData, _pos)
-            self.InfoList.append(temInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x12
-        self.Num = 0
-        self.InfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Num):
-            length += self.InfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Num)
-        for i in range(self.Num):
-            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Num:%d,
-                                InfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Num,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+m_NAtagSCHorseClassInfo=tagSCHorseClassInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseClassInfo.Cmd,m_NAtagSCHorseClassInfo.SubCmd))] = m_NAtagSCHorseClassInfo
 
 
 #------------------------------------------------------
-# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
+# A3 04 坐骑外观信息 #tagSCHorseSkinInfo
 
-class  tagMCHorseSkinTimeInfo(Structure):
+class  tagSCHorseSkin(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("ID", c_int),    # 对应坐骑幻化表ID
-                  ("InvalidTime", c_int),    # 失效时间戳
+                  ("HorseSkinID", c_ubyte),    #坐骑外观ID
+                  ("State", c_ubyte),    #是否已激活
+                  ("EndTime", c_int),    #到期时间戳,0为永久
+                  ("Star", c_ubyte),    #星级
                   ]
 
     def __init__(self):
@@ -6647,146 +5782,44 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.ID = 0
-        self.InvalidTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCHorseSkinTimeInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
-                                ID:%d,
-                                InvalidTime:%d
-                                '''\
-                                %(
-                                self.ID,
-                                self.InvalidTime
-                                )
-        return DumpString
-
-
-class  tagMCHorseSkinTimeInfoList(Structure):
-    Head = tagHead()
-    TimeCnt = 0    #(BYTE TimeCnt)//个数
-    TimeInfoList = list()    #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x10
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TimeCnt):
-            temTimeInfoList = tagMCHorseSkinTimeInfo()
-            _pos = temTimeInfoList.ReadData(_lpData, _pos)
-            self.TimeInfoList.append(temTimeInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x10
-        self.TimeCnt = 0
-        self.TimeInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.TimeCnt):
-            length += self.TimeInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TimeCnt)
-        for i in range(self.TimeCnt):
-            data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                TimeCnt:%d,
-                                TimeInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.TimeCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
-
-
-#------------------------------------------------------
-# A3 CD 坐骑星级信息 #tagMCHorseStarInfo
-
-class  tagMCHorseStar(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("HorseID", c_int),    # 坐骑表ID
-                  ("Star", c_ubyte),    # 星级
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.HorseID = 0
+        self.HorseSkinID = 0
+        self.State = 0
+        self.EndTime = 0
         self.Star = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCHorseStar)
+        return sizeof(tagSCHorseSkin)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
-                                HorseID:%d,
+        DumpString = '''// A3 04 坐骑外观信息 //tagSCHorseSkinInfo:
+                                HorseSkinID:%d,
+                                State:%d,
+                                EndTime:%d,
                                 Star:%d
                                 '''\
                                 %(
-                                self.HorseID,
+                                self.HorseSkinID,
+                                self.State,
+                                self.EndTime,
                                 self.Star
                                 )
         return DumpString
 
 
-class  tagMCHorseStarInfo(Structure):
+class  tagSCHorseSkinInfo(Structure):
     Head = tagHead()
     Count = 0    #(BYTE Count)
-    HorseStarList = list()    #(vector<tagMCHorseStar> HorseStarList)
+    HorseSkinList = list()    #(vector<tagSCHorseSkin> HorseSkinList)
     data = None
 
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCD
+        self.Head.SubCmd = 0x04
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -6794,18 +5827,18 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.Count):
-            temHorseStarList = tagMCHorseStar()
-            _pos = temHorseStarList.ReadData(_lpData, _pos)
-            self.HorseStarList.append(temHorseStarList)
+            temHorseSkinList = tagSCHorseSkin()
+            _pos = temHorseSkinList.ReadData(_lpData, _pos)
+            self.HorseSkinList.append(temHorseSkinList)
         return _pos
 
     def Clear(self):
         self.Head = tagHead()
         self.Head.Clear()
         self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0xCD
+        self.Head.SubCmd = 0x04
         self.Count = 0
-        self.HorseStarList = list()
+        self.HorseSkinList = list()
         return
 
     def GetLength(self):
@@ -6813,7 +5846,7 @@
         length += self.Head.GetLength()
         length += 1
         for i in range(self.Count):
-            length += self.HorseStarList[i].GetLength()
+            length += self.HorseSkinList[i].GetLength()
 
         return length
 
@@ -6822,14 +5855,14 @@
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteBYTE(data, self.Count)
         for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
+            data = CommFunc.WriteString(data, self.HorseSkinList[i].GetLength(), self.HorseSkinList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
                                 Count:%d,
-                                HorseStarList:%s
+                                HorseSkinList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -6839,8 +5872,8 @@
         return DumpString
 
 
-m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
+m_NAtagSCHorseSkinInfo=tagSCHorseSkinInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseSkinInfo.Head.Cmd,m_NAtagSCHorseSkinInfo.Head.SubCmd))] = m_NAtagSCHorseSkinInfo
 
 
 #------------------------------------------------------
@@ -8114,132 +7147,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):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Record", c_ubyte),    #0-未领取 1-已领取	
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x19
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x19
-        self.Record = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPackDownloadRecord)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 19 分包下载奖励记录 //tagMCPackDownloadRecord:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Record:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Record
-                                )
-        return DumpString
-
-
-m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
-
-
-#------------------------------------------------------
 #A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
 
 class  tagMCPlayerLVAwardGetRecord(Structure):
@@ -8293,145 +7200,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
 
 
 #------------------------------------------------------
@@ -9370,66 +8138,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):
@@ -9444,33 +8159,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):
@@ -9484,7 +8196,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
@@ -9529,18 +8241,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):
@@ -9550,23 +8262,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
@@ -9574,31 +8288,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):
@@ -9610,9 +8325,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
@@ -9622,7 +8337,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xA3
         self.Head.SubCmd = 0x40
-        self.count = 0
+        self.Count = 0
         self.SuccessInfoList = list()
         return
 
@@ -9630,7 +8345,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
@@ -9638,79 +8353,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
 
 
 #------------------------------------------------------
@@ -10011,114 +8674,6 @@
 
 
 #------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
 # A3 56 通天令信息 #tagMCTongTianLingInfo
 
 class  tagMCTongTianLingInfo(Structure):
@@ -10400,121 +8955,6 @@
 
 m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
-
-
-#------------------------------------------------------
-#A3 01 坐骑培养信息 #tagTrainHorseData
-
-class  tagTrainHorseData(Structure):
-    Head = tagHead()
-    LV = 0    #(BYTE LV)//等阶
-    EatItemCount = 0    #(DWORD EatItemCount)//当前阶已吃丹个数
-    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
-    TrainTypes = 0    #(BYTE TrainTypes)//培养类型数
-    TrainLVList = list()    #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
-    TrainItemCountList = list()    #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
-    SkinPlusStateCount = 0    #(BYTE SkinPlusStateCount)//幻化激活状态值数
-    SkinPlusStateList = list()    #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x01
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TrainTypes):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.TrainLVList.append(value)
-        for i in range(self.TrainTypes):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.TrainItemCountList.append(value)
-        self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.SkinPlusStateCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.SkinPlusStateList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x01
-        self.LV = 0
-        self.EatItemCount = 0
-        self.SkinPlusState = 0
-        self.TrainTypes = 0
-        self.TrainLVList = list()
-        self.TrainItemCountList = list()
-        self.SkinPlusStateCount = 0
-        self.SkinPlusStateList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 4
-        length += 4
-        length += 1
-        length += 4 * self.TrainTypes
-        length += 4 * self.TrainTypes
-        length += 1
-        length += 4 * self.SkinPlusStateCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.LV)
-        data = CommFunc.WriteDWORD(data, self.EatItemCount)
-        data = CommFunc.WriteDWORD(data, self.SkinPlusState)
-        data = CommFunc.WriteBYTE(data, self.TrainTypes)
-        for i in range(self.TrainTypes):
-            data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
-        for i in range(self.TrainTypes):
-            data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
-        data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
-        for i in range(self.SkinPlusStateCount):
-            data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                LV:%d,
-                                EatItemCount:%d,
-                                SkinPlusState:%d,
-                                TrainTypes:%d,
-                                TrainLVList:%s,
-                                TrainItemCountList:%s,
-                                SkinPlusStateCount:%d,
-                                SkinPlusStateList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.LV,
-                                self.EatItemCount,
-                                self.SkinPlusState,
-                                self.TrainTypes,
-                                "...",
-                                "...",
-                                self.SkinPlusStateCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagTrainHorseData=tagTrainHorseData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
 
 
 #------------------------------------------------------
@@ -10800,152 +9240,6 @@
 
 m_NAtagMCTreasureResult=tagMCTreasureResult()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTreasureResult.Head.Cmd,m_NAtagMCTreasureResult.Head.SubCmd))] = m_NAtagMCTreasureResult
-
-
-#------------------------------------------------------
-#A3 05 扫荡奖励信息 #tagMCWipeOutPrize
-
-class  tagMCPrizeItemInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemID", c_int),    #物品id
-                  ("ItemCnt", c_ubyte),    #物品数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x05
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x05
-        self.ItemID = 0
-        self.ItemCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPrizeItemInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 05 扫荡奖励信息 //tagMCWipeOutPrize:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemID:%d,
-                                ItemCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemID,
-                                self.ItemCnt
-                                )
-        return DumpString
-
-
-class  tagMCWipeOutPrize(Structure):
-    Head = tagHead()
-    FBID = 0    #(DWORD FBID)//副本id
-    WipeOutCnt = 0    #(DWORD WipeOutCnt)//扫荡次数
-    GiveExp = 0    #(DWORD GiveExp)//给予经验
-    SilverCnt = 0    #(DWORD SilverCnt)//给予金币
-    PrizeCnt = 0    #(BYTE PrizeCnt)//状态
-    PrizeInfo = list()    #(vector<tagMCPrizeItemInfo> PrizeInfo)//状态
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.FBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.WipeOutCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GiveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SilverCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PrizeCnt):
-            temPrizeInfo = tagMCPrizeItemInfo()
-            _pos = temPrizeInfo.ReadData(_lpData, _pos)
-            self.PrizeInfo.append(temPrizeInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x05
-        self.FBID = 0
-        self.WipeOutCnt = 0
-        self.GiveExp = 0
-        self.SilverCnt = 0
-        self.PrizeCnt = 0
-        self.PrizeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.PrizeCnt):
-            length += self.PrizeInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.FBID)
-        data = CommFunc.WriteDWORD(data, self.WipeOutCnt)
-        data = CommFunc.WriteDWORD(data, self.GiveExp)
-        data = CommFunc.WriteDWORD(data, self.SilverCnt)
-        data = CommFunc.WriteBYTE(data, self.PrizeCnt)
-        for i in range(self.PrizeCnt):
-            data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                FBID:%d,
-                                WipeOutCnt:%d,
-                                GiveExp:%d,
-                                SilverCnt:%d,
-                                PrizeCnt:%d,
-                                PrizeInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.FBID,
-                                self.WipeOutCnt,
-                                self.GiveExp,
-                                self.SilverCnt,
-                                self.PrizeCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCWipeOutPrize=tagMCWipeOutPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWipeOutPrize.Head.Cmd,m_NAtagMCWipeOutPrize.Head.SubCmd))] = m_NAtagMCWipeOutPrize
 
 
 #------------------------------------------------------
@@ -11626,576 +9920,6 @@
 
 m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
-
-
-#------------------------------------------------------
-# 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):
-    Index = 0    #(BYTE Index)// 仓库格子索引,从0开始代表第一格
-    ItemID = 0    #(DWORD ItemID)// 物品ID
-    ItemDataLen = 0    #(WORD ItemDataLen)
-    ItemData = ""    #(String ItemData)//size = ItemDataLen
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
-        return _pos
-
-    def Clear(self):
-        self.Index = 0
-        self.ItemID = 0
-        self.ItemDataLen = 0
-        self.ItemData = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 2
-        length += len(self.ItemData)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.Index)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteWORD(data, self.ItemDataLen)
-        data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Index:%d,
-                                ItemID:%d,
-                                ItemDataLen:%d,
-                                ItemData:%s
-                                '''\
-                                %(
-                                self.Index,
-                                self.ItemID,
-                                self.ItemDataLen,
-                                self.ItemData
-                                )
-        return DumpString
-
-
-class  tagGCFamilyStoreItemInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//数量
-    StoreItemList = list()    #(vector<tagGCFamilyStoreItem> StoreItemList)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x06
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temStoreItemList = tagGCFamilyStoreItem()
-            _pos = temStoreItemList.ReadData(_lpData, _pos)
-            self.StoreItemList.append(temStoreItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x06
-        self.Count = 0
-        self.StoreItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.StoreItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.StoreItemList[i].GetLength(), self.StoreItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                StoreItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyStoreItemInfo=tagGCFamilyStoreItemInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemInfo.Head.Cmd,m_NAtagGCFamilyStoreItemInfo.Head.SubCmd))] = m_NAtagGCFamilyStoreItemInfo
-
-
-#------------------------------------------------------
-# A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
-
-class  tagGCFamilyStoreItemClear(Structure):
-    Head = tagHead()
-    ClearType = 0    #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
-    IndexCount = 0    #(BYTE IndexCount)
-    IndexList = list()    #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x07
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.IndexCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.IndexList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x07
-        self.ClearType = 0
-        self.IndexCount = 0
-        self.IndexList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1 * self.IndexCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ClearType)
-        data = CommFunc.WriteBYTE(data, self.IndexCount)
-        for i in range(self.IndexCount):
-            data = CommFunc.WriteBYTE(data, self.IndexList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ClearType:%d,
-                                IndexCount:%d,
-                                IndexList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ClearType,
-                                self.IndexCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
 
 
 #------------------------------------------------------
@@ -12932,191 +10656,70 @@
 
 
 #------------------------------------------------------
-# A5 35 王者仙盟每日俸禄奖励状态 #tagMCChampionFamilyDailyReward
+# A5 02 捐献次数信息 #tagSCDonateCntInfo
 
-class  tagMCChampionFamilyDailyReward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("GetState", c_ubyte),    #是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x35
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x35
-        self.GetState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCChampionFamilyDailyReward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 35 王者仙盟每日俸禄奖励状态 //tagMCChampionFamilyDailyReward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                GetState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.GetState
-                                )
-        return DumpString
-
-
-m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
-
-
-#------------------------------------------------------
-# A5 10 传功奖励结果 #tagMCChuangongResult
-
-class  tagMCChuangongItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.ItemCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCChuangongItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
-                                ItemID:%d,
-                                ItemCount:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount
-                                )
-        return DumpString
-
-
-class  tagMCChuangongResult(Structure):
+class  tagSCDonateCntInfo(Structure):
     Head = tagHead()
-    FromLV = 0    #(WORD FromLV)// 传功前等级
-    ToLV = 0    #(WORD ToLV)// 传功后等级
-    Exp = 0    #(DWORD Exp)// 获得经验求余亿部分
-    ExpPoint = 0    #(DWORD ExpPoint)// 获得经验整除亿部分
-    ItemCount = 0    #(BYTE ItemCount)
-    AwardItemList = list()    #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
+    Count = 0    #(BYTE Count)
+    DonateCntList = list()    #(vector<BYTE> DonateCntList)// 今日已捐献次数列表 [捐献类型1次数, ...]
     data = None
 
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x10
+        self.Head.SubCmd = 0x02
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ItemCount):
-            temAwardItemList = tagMCChuangongItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
+        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 = 0x10
-        self.FromLV = 0
-        self.ToLV = 0
-        self.Exp = 0
-        self.ExpPoint = 0
-        self.ItemCount = 0
-        self.AwardItemList = list()
+        self.Head.SubCmd = 0x02
+        self.Count = 0
+        self.DonateCntList = list()
         return
 
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
-        length += 2
-        length += 2
-        length += 4
-        length += 4
         length += 1
-        for i in range(self.ItemCount):
-            length += self.AwardItemList[i].GetLength()
+        length += 1 * self.Count
 
         return length
 
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.FromLV)
-        data = CommFunc.WriteWORD(data, self.ToLV)
-        data = CommFunc.WriteDWORD(data, self.Exp)
-        data = CommFunc.WriteDWORD(data, self.ExpPoint)
-        data = CommFunc.WriteBYTE(data, self.ItemCount)
-        for i in range(self.ItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+        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,
-                                FromLV:%d,
-                                ToLV:%d,
-                                Exp:%d,
-                                ExpPoint:%d,
-                                ItemCount:%d,
-                                AwardItemList:%s
+                                Count:%d,
+                                DonateCntList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.FromLV,
-                                self.ToLV,
-                                self.Exp,
-                                self.ExpPoint,
-                                self.ItemCount,
+                                self.Count,
                                 "..."
                                 )
         return DumpString
 
 
-m_NAtagMCChuangongResult=tagMCChuangongResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
+m_NAtagSCDonateCntInfo=tagSCDonateCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDonateCntInfo.Head.Cmd,m_NAtagSCDonateCntInfo.Head.SubCmd))] = m_NAtagSCDonateCntInfo
 
 
 #------------------------------------------------------
@@ -13311,249 +10914,6 @@
 
 
 #------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
-# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
-
-class  tagMCFamilyBosFBPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("HurtTotal", c_int),    # 累计伤血,亿求余部分
-                  ("HurtTotalPoint", c_int),    # 累计伤血,亿整除部分
-                  ("FightSeconds", c_int),    # 已累计战斗时长,秒
-                  ("HurtAwardState", c_int),    # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
-                  ("HurtAwardStateFamily", c_int),    # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x07
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x07
-        self.HurtTotal = 0
-        self.HurtTotalPoint = 0
-        self.FightSeconds = 0
-        self.HurtAwardState = 0
-        self.HurtAwardStateFamily = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyBosFBPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                HurtTotal:%d,
-                                HurtTotalPoint:%d,
-                                FightSeconds:%d,
-                                HurtAwardState:%d,
-                                HurtAwardStateFamily:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.HurtTotal,
-                                self.HurtTotalPoint,
-                                self.FightSeconds,
-                                self.HurtAwardState,
-                                self.HurtAwardStateFamily
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
-
-
-#------------------------------------------------------
 # A5 21 家族变更 #tagMCFamilyChange
 
 class  tagMCFamilyChange(Structure):
@@ -13606,170 +10966,6 @@
 
 
 #------------------------------------------------------
-# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
-
-class  tagMCFamilyDayAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("GetState", c_ubyte),    #是否已领取
-                  ("MoneyDonateCount", c_ubyte),    #今日货币捐献次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x06
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x06
-        self.GetState = 0
-        self.MoneyDonateCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyDayAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                GetState:%d,
-                                MoneyDonateCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.GetState,
-                                self.MoneyDonateCount
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyDayAward=tagMCFamilyDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyDayAward.Cmd,m_NAtagMCFamilyDayAward.SubCmd))] = m_NAtagMCFamilyDayAward
-
-
-#------------------------------------------------------
-# A5 03 当日祈福信息 #tagMCFamilyPrayInfo
-
-class  tagMCFamilyPrayInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("PrayCntInfo", c_int),    # 当日祈福次数信息, 按位存储祈福类型对应次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x03
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x03
-        self.PrayCntInfo = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyPrayInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 03 当日祈福信息 //tagMCFamilyPrayInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                PrayCntInfo:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.PrayCntInfo
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
-
-
-#------------------------------------------------------
-# 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):
@@ -13782,6 +10978,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
@@ -13803,6 +11000,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)
@@ -13819,6 +11017,7 @@
         self.RealmLV = 0
         self.Face = 0
         self.FacePic = 0
+        self.TitleID = 0
         self.FightPower = 0
         self.FightPowerEx = 0
         self.ServerID = 0
@@ -13839,6 +11038,7 @@
         length += 4
         length += 4
         length += 4
+        length += 4
         length += 1
 
         return length
@@ -13854,6 +11054,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)
@@ -13871,6 +11072,7 @@
                                 RealmLV:%d,
                                 Face:%d,
                                 FacePic:%d,
+                                TitleID:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 ServerID:%d,
@@ -13886,6 +11088,7 @@
                                 self.RealmLV,
                                 self.Face,
                                 self.FacePic,
+                                self.TitleID,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.ServerID,
@@ -13961,22 +11164,205 @@
 
 
 #------------------------------------------------------
-# A5 11 打坐信息 #tagMCFamilySitInfo
+# A5 04 公会讨伐攻击结果 #tagSCFamilyTaofaAtkRet
 
-class  tagMCFamilySitInfo(Structure):
+class  tagSCFamilyTaofaAtkItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Count", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.ItemID = 0
+        self.Count = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCFamilyTaofaAtkItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+                                ItemID:%d,
+                                Count:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Count
+                                )
+        return DumpString
+
+
+class  tagSCFamilyTaofaAtkHurt(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("IsSuper", c_ubyte),    # 是否暴击
+                  ("HurtValue", c_int),    # 本次伤害,求余亿部分
+                  ("HurtValueEx", c_int),    # 本次伤害,整除亿部分
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.IsSuper = 0
+        self.HurtValue = 0
+        self.HurtValueEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCFamilyTaofaAtkHurt)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+                                IsSuper:%d,
+                                HurtValue:%d,
+                                HurtValueEx:%d
+                                '''\
+                                %(
+                                self.IsSuper,
+                                self.HurtValue,
+                                self.HurtValueEx
+                                )
+        return DumpString
+
+
+class  tagSCFamilyTaofaAtkRet(Structure):
+    Head = tagHead()
+    AtkType = 0    #(BYTE AtkType)// 攻击类型:0-常规;1-怒气攻击
+    HurtCount = 0    #(BYTE HurtCount)
+    HurtList = list()    #(vector<tagSCFamilyTaofaAtkHurt> HurtList)// 伤害次数列表,如怒气攻击有多次伤害
+    ItemCount = 0    #(BYTE ItemCount)
+    ItemList = list()    #(vector<tagSCFamilyTaofaAtkItem> ItemList)// 奖励物品列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.AtkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.HurtCount):
+            temHurtList = tagSCFamilyTaofaAtkHurt()
+            _pos = temHurtList.ReadData(_lpData, _pos)
+            self.HurtList.append(temHurtList)
+        self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemCount):
+            temItemList = tagSCFamilyTaofaAtkItem()
+            _pos = temItemList.ReadData(_lpData, _pos)
+            self.ItemList.append(temItemList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x04
+        self.AtkType = 0
+        self.HurtCount = 0
+        self.HurtList = list()
+        self.ItemCount = 0
+        self.ItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        for i in range(self.HurtCount):
+            length += self.HurtList[i].GetLength()
+        length += 1
+        for i in range(self.ItemCount):
+            length += self.ItemList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.AtkType)
+        data = CommFunc.WriteBYTE(data, self.HurtCount)
+        for i in range(self.HurtCount):
+            data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ItemCount)
+        for i in range(self.ItemCount):
+            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                AtkType:%d,
+                                HurtCount:%d,
+                                HurtList:%s,
+                                ItemCount:%d,
+                                ItemList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.AtkType,
+                                self.HurtCount,
+                                "...",
+                                self.ItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCFamilyTaofaAtkRet=tagSCFamilyTaofaAtkRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaAtkRet.Head.Cmd,m_NAtagSCFamilyTaofaAtkRet.Head.SubCmd))] = m_NAtagSCFamilyTaofaAtkRet
+
+
+#------------------------------------------------------
+# A5 03 公会讨伐信息 #tagSCFamilyTaofaInfo
+
+class  tagSCFamilyTaofaInfo(Structure):
     _pack_ = 1
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ExpRound", c_ushort),    # 已获得经验轮次
-                  ("Exp", c_int),    # 获得经验求余亿部分
-                  ("ExpPoint", c_int),    # 获得经验整除亿部分
+                  ("BuZhenState", c_ubyte),    # 是否已布阵
+                  ("AtkCount", c_ushort),    # 已斩杀次数,用于计算剩余次数=免费次数+道具增加次数-已斩杀次数
+                  ("ItemAddCount", c_ushort),    # 道具增加斩杀次数
+                  ("Anger", c_ushort),    # 当前怒气值
+                  ("BoxUnGetCount", c_ushort),    # 当前未领取的宝箱数,即可领取的
+                  ("BoxHurt", c_int),    # 宝箱奖励计算累计伤害,求余亿部分;个人今日累计伤害,换公会不会重置
+                  ("BoxHurtEx", c_int),    # 宝箱奖励计算累计伤害,整除亿部分
+                  ("BoxHurtHis", c_int),    # 宝箱奖励计算累计历史最高伤害,求余亿部分
+                  ("BoxHurtHisEx", c_int),    # 宝箱奖励计算累计历史最高伤害,整除亿部分
                   ]
 
     def __init__(self):
         self.Clear()
         self.Cmd = 0xA5
-        self.SubCmd = 0x11
+        self.SubCmd = 0x03
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -13986,44 +11372,63 @@
 
     def Clear(self):
         self.Cmd = 0xA5
-        self.SubCmd = 0x11
-        self.ExpRound = 0
-        self.Exp = 0
-        self.ExpPoint = 0
+        self.SubCmd = 0x03
+        self.BuZhenState = 0
+        self.AtkCount = 0
+        self.ItemAddCount = 0
+        self.Anger = 0
+        self.BoxUnGetCount = 0
+        self.BoxHurt = 0
+        self.BoxHurtEx = 0
+        self.BoxHurtHis = 0
+        self.BoxHurtHisEx = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCFamilySitInfo)
+        return sizeof(tagSCFamilyTaofaInfo)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
+        DumpString = '''// A5 03 公会讨伐信息 //tagSCFamilyTaofaInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                ExpRound:%d,
-                                Exp:%d,
-                                ExpPoint:%d
+                                BuZhenState:%d,
+                                AtkCount:%d,
+                                ItemAddCount:%d,
+                                Anger:%d,
+                                BoxUnGetCount:%d,
+                                BoxHurt:%d,
+                                BoxHurtEx:%d,
+                                BoxHurtHis:%d,
+                                BoxHurtHisEx:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.ExpRound,
-                                self.Exp,
-                                self.ExpPoint
+                                self.BuZhenState,
+                                self.AtkCount,
+                                self.ItemAddCount,
+                                self.Anger,
+                                self.BoxUnGetCount,
+                                self.BoxHurt,
+                                self.BoxHurtEx,
+                                self.BoxHurtHis,
+                                self.BoxHurtHisEx
                                 )
         return DumpString
 
 
-m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+m_NAtagSCFamilyTaofaInfo=tagSCFamilyTaofaInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaInfo.Cmd,m_NAtagSCFamilyTaofaInfo.SubCmd))] = m_NAtagSCFamilyTaofaInfo
 
 
 #------------------------------------------------------
 # 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
@@ -14035,6 +11440,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)//成员人数
@@ -14046,6 +11452,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)
@@ -14057,12 +11464,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 = ""
@@ -14074,6 +11483,7 @@
         self.JoinLVMin = 0
         self.ServerID = 0
         self.EmblemID = 0
+        self.EmblemWord = ""
         self.FightPower = 0
         self.FightPowerEx = 0
         self.MemberCount = 0
@@ -14081,6 +11491,7 @@
 
     def GetLength(self):
         length = 0
+        length += 2
         length += 4
         length += 1
         length += len(self.FamilyName)
@@ -14092,6 +11503,7 @@
         length += 2
         length += 4
         length += 4
+        length += 3
         length += 4
         length += 4
         length += 1
@@ -14100,6 +11512,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)
@@ -14111,6 +11524,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)
@@ -14118,6 +11532,7 @@
 
     def OutputString(self):
         DumpString = '''
+                                Rank:%d,
                                 FamilyID:%d,
                                 FamilyNameLen:%d,
                                 FamilyName:%s,
@@ -14129,11 +11544,13 @@
                                 JoinLVMin:%d,
                                 ServerID:%d,
                                 EmblemID:%d,
+                                EmblemWord:%s,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 MemberCount:%d
                                 '''\
                                 %(
+                                self.Rank,
                                 self.FamilyID,
                                 self.FamilyNameLen,
                                 self.FamilyName,
@@ -14145,6 +11562,7 @@
                                 self.JoinLVMin,
                                 self.ServerID,
                                 self.EmblemID,
+                                self.EmblemWord,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.MemberCount
@@ -14310,125 +11728,6 @@
 
 
 #------------------------------------------------------
-# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
-
-class  tagMCFamilyZhenfa(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ZhenfaType", c_ubyte),    # 阵法类型
-                  ("ZhenfaLV", c_ushort),    # 阵法等级
-                  ("ZhenfaExp", c_int),    # 阵法经验
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ZhenfaType = 0
-        self.ZhenfaLV = 0
-        self.ZhenfaExp = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyZhenfa)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo:
-                                ZhenfaType:%d,
-                                ZhenfaLV:%d,
-                                ZhenfaExp:%d
-                                '''\
-                                %(
-                                self.ZhenfaType,
-                                self.ZhenfaLV,
-                                self.ZhenfaExp
-                                )
-        return DumpString
-
-
-class  tagMCFamilyZhenfaInfo(Structure):
-    Head = tagHead()
-    PlayerID = 0    #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包
-    Count = 0    #(BYTE Count)
-    ZhenfaInfoList = list()    #(vector<tagMCFamilyZhenfa> ZhenfaInfoList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temZhenfaInfoList = tagMCFamilyZhenfa()
-            _pos = temZhenfaInfoList.ReadData(_lpData, _pos)
-            self.ZhenfaInfoList.append(temZhenfaInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA5
-        self.Head.SubCmd = 0x09
-        self.PlayerID = 0
-        self.Count = 0
-        self.ZhenfaInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.ZhenfaInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                PlayerID:%d,
-                                Count:%d,
-                                ZhenfaInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.PlayerID,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo
-
-
-#------------------------------------------------------
 #A5 01 已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
 
 class  tagMCNotifyRequestJoinFamilyInfo(Structure):
@@ -14496,114 +11795,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):
@@ -14617,11 +11808,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
 
@@ -14641,11 +11835,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
 
@@ -14660,11 +11857,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
 
@@ -14686,6 +11886,9 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 1
+        length += 4
 
         return length
 
@@ -14701,11 +11904,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
 
@@ -14721,11 +11927,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
                                 '''\
                                 %(
@@ -14739,11 +11948,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
@@ -14759,6 +11971,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)//公告
@@ -14785,6 +11998,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)
@@ -14810,6 +12024,7 @@
         self.JoinLVMin = 0
         self.ServerID = 0
         self.EmblemID = 0
+        self.EmblemWord = ""
         self.FightPower = 0
         self.FightPowerEx = 0
         self.BroadcastLen = 0
@@ -14830,6 +12045,7 @@
         length += 2
         length += 4
         length += 4
+        length += 3
         length += 4
         length += 4
         length += 2
@@ -14852,6 +12068,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)
@@ -14873,6 +12090,7 @@
                                 JoinLVMin:%d,
                                 ServerID:%d,
                                 EmblemID:%d,
+                                EmblemWord:%s,
                                 FightPower:%d,
                                 FightPowerEx:%d,
                                 BroadcastLen:%d,
@@ -14891,6 +12109,7 @@
                                 self.JoinLVMin,
                                 self.ServerID,
                                 self.EmblemID,
+                                self.EmblemWord,
                                 self.FightPower,
                                 self.FightPowerEx,
                                 self.BroadcastLen,
@@ -15485,122 +12704,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
 
 
 #------------------------------------------------------
@@ -16844,6 +13947,7 @@
     Face = 0    #(DWORD Face)
     FacePic = 0    #(DWORD FacePic)
     ModelMark = 0    #(DWORD ModelMark)//变形模型mark
+    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)//其他外观信息
     TitleID = 0    #(DWORD TitleID)//佩戴的称号
     ServerID = 0    #(DWORD ServerID)
     FightPower = 0    #(DWORD FightPower)
@@ -16851,6 +13955,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
@@ -16872,6 +13977,7 @@
         self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16879,6 +13985,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
@@ -16896,6 +14003,7 @@
         self.Face = 0
         self.FacePic = 0
         self.ModelMark = 0
+        self.EquipShowSwitch = 0
         self.TitleID = 0
         self.ServerID = 0
         self.FightPower = 0
@@ -16903,6 +14011,7 @@
         self.FamilyID = 0
         self.FamilyName = ""
         self.FamilyEmblemID = 0
+        self.FamilyEmblemWord = ""
         self.PlusDataSize = 0
         self.PlusData = ""
         return
@@ -16923,8 +14032,10 @@
         length += 4
         length += 4
         length += 4
+        length += 4
         length += 33
         length += 4
+        length += 3
         length += 4
         length += len(self.PlusData)
 
@@ -16941,6 +14052,7 @@
         data = CommFunc.WriteDWORD(data, self.Face)
         data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.ModelMark)
+        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
         data = CommFunc.WriteDWORD(data, self.TitleID)
         data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteDWORD(data, self.FightPower)
@@ -16948,6 +14060,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
@@ -16963,6 +14076,7 @@
                                 Face:%d,
                                 FacePic:%d,
                                 ModelMark:%d,
+                                EquipShowSwitch:%d,
                                 TitleID:%d,
                                 ServerID:%d,
                                 FightPower:%d,
@@ -16970,6 +14084,7 @@
                                 FamilyID:%d,
                                 FamilyName:%s,
                                 FamilyEmblemID:%d,
+                                FamilyEmblemWord:%s,
                                 PlusDataSize:%d,
                                 PlusData:%s
                                 '''\
@@ -16983,6 +14098,7 @@
                                 self.Face,
                                 self.FacePic,
                                 self.ModelMark,
+                                self.EquipShowSwitch,
                                 self.TitleID,
                                 self.ServerID,
                                 self.FightPower,
@@ -16990,6 +14106,7 @@
                                 self.FamilyID,
                                 self.FamilyName,
                                 self.FamilyEmblemID,
+                                self.FamilyEmblemWord,
                                 self.PlusDataSize,
                                 self.PlusData
                                 )
@@ -17699,373 +14816,6 @@
 
 
 #------------------------------------------------------
-# A8 11 商店购买结果 #tagMCShoppingResult
-
-class  tagMCShoppingResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemIndex", c_int),    
-                  ("ItemCnt", c_int),    #购买数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA8
-        self.SubCmd = 0x11
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA8
-        self.SubCmd = 0x11
-        self.ItemIndex = 0
-        self.ItemCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCShoppingResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 11 商店购买结果 //tagMCShoppingResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemIndex:%d,
-                                ItemCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemIndex,
-                                self.ItemCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCShoppingResult=tagMCShoppingResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
-
-
-#------------------------------------------------------
-# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
-
-class  tagMCMysticalShopGoods(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GoodsID", c_int),    # 商品ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.GoodsID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCMysticalShopGoods)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
-                                GoodsID:%d
-                                '''\
-                                %(
-                                self.GoodsID
-                                )
-        return DumpString
-
-
-class  tagMCMysticalShopInfo(Structure):
-    Head = tagHead()
-    RefreshCnt = 0    #(WORD RefreshCnt)// 刷新次数
-    Count = 0    #(BYTE Count)// 商品数
-    GoodsList = list()    #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x16
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temGoodsList = tagMCMysticalShopGoods()
-            _pos = temGoodsList.ReadData(_lpData, _pos)
-            self.GoodsList.append(temGoodsList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x16
-        self.RefreshCnt = 0
-        self.Count = 0
-        self.GoodsList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 1
-        for i in range(self.Count):
-            length += self.GoodsList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.RefreshCnt)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RefreshCnt:%d,
-                                Count:%d,
-                                GoodsList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RefreshCnt,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
-
-
-#------------------------------------------------------
-# A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
-
-class  tagMCMysticalShopTime(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GoodsID", c_int),    # 商品ID
-                  ("StartTime", c_int),    # 开卖时间
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.GoodsID = 0
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCMysticalShopTime)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 06 通知神秘限购商品时间 //tagMCMysticalShopTimeInfo:
-                                GoodsID:%d,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.GoodsID,
-                                self.StartTime
-                                )
-        return DumpString
-
-
-class  tagMCMysticalShopTimeInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(WORD Count)// 商品数
-    ShopTimeList = list()    #(vector<tagMCMysticalShopTime> ShopTimeList)// 商品开卖信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x06
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temShopTimeList = tagMCMysticalShopTime()
-            _pos = temShopTimeList.ReadData(_lpData, _pos)
-            self.ShopTimeList.append(temShopTimeList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x06
-        self.Count = 0
-        self.ShopTimeList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        for i in range(self.Count):
-            length += self.ShopTimeList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ShopTimeList[i].GetLength(), self.ShopTimeList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ShopTimeList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCMysticalShopTimeInfo=tagMCMysticalShopTimeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopTimeInfo.Head.Cmd,m_NAtagMCMysticalShopTimeInfo.Head.SubCmd))] = m_NAtagMCMysticalShopTimeInfo
-
-
-#------------------------------------------------------
-# A8 10 通知获得物品 #tagMCNotifyUseItemGetItem
-
-class  tagMCNotifyUseItemGetItem(Structure):
-    Head = tagHead()
-    UseItemID = 0    #(DWORD UseItemID)// 使用的物品ID
-    UseCount = 0    #(WORD UseCount)// 使用物品个数
-    GetItemLen = 0    #(WORD GetItemLen)
-    GetItemData = ""    #(String GetItemData)//  获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...] 
-    MoneyType = 0    #(BYTE MoneyType)// 获得货币类型
-    MoneyCount = 0    #(DWORD MoneyCount)// 获得货币数量
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x10
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.UseCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
-        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x10
-        self.UseItemID = 0
-        self.UseCount = 0
-        self.GetItemLen = 0
-        self.GetItemData = ""
-        self.MoneyType = 0
-        self.MoneyCount = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 2
-        length += 2
-        length += len(self.GetItemData)
-        length += 1
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.UseItemID)
-        data = CommFunc.WriteWORD(data, self.UseCount)
-        data = CommFunc.WriteWORD(data, self.GetItemLen)
-        data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
-        data = CommFunc.WriteBYTE(data, self.MoneyType)
-        data = CommFunc.WriteDWORD(data, self.MoneyCount)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                UseItemID:%d,
-                                UseCount:%d,
-                                GetItemLen:%d,
-                                GetItemData:%s,
-                                MoneyType:%d,
-                                MoneyCount:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.UseItemID,
-                                self.UseCount,
-                                self.GetItemLen,
-                                self.GetItemData,
-                                self.MoneyType,
-                                self.MoneyCount
-                                )
-        return DumpString
-
-
-m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
-
-
-#------------------------------------------------------
 # A8 17 宠物培养信息 #tagMCPetTrainInfo
 
 class  tagMCPetTrainInfo(Structure):
@@ -18143,14 +14893,13 @@
 
 
 #------------------------------------------------------
-# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
+# A8 02 商店物品已购买次数 #tagSCShopItemBuyCntInfo
 
-class  tagMCShopItemDayBuyCnt(Structure):
+class  tagSCShopItemBuyCnt(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("ItemIndex", c_int),    
-                  ("BuyCnt", c_int),    # 今日已购买次数
-                  ("IsReset", c_ubyte),    #是否重置
+                  ("ShopID", c_int),    # 商品ID
+                  ("BuyCnt", c_int),    # 已购买次数
                   ]
 
     def __init__(self):
@@ -18163,35 +14912,32 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.ItemIndex = 0
+        self.ShopID = 0
         self.BuyCnt = 0
-        self.IsReset = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCShopItemDayBuyCnt)
+        return sizeof(tagSCShopItemBuyCnt)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// A8 02 通知NPC商店物品今日已购买次数 //tagMCShopItemDayBuyCntInfo:
-                                ItemIndex:%d,
-                                BuyCnt:%d,
-                                IsReset:%d
+        DumpString = '''// A8 02 商店物品已购买次数 //tagSCShopItemBuyCntInfo:
+                                ShopID:%d,
+                                BuyCnt:%d
                                 '''\
                                 %(
-                                self.ItemIndex,
-                                self.BuyCnt,
-                                self.IsReset
+                                self.ShopID,
+                                self.BuyCnt
                                 )
         return DumpString
 
 
-class  tagMCShopItemDayBuyCntInfo(Structure):
+class  tagSCShopItemBuyCntInfo(Structure):
     Head = tagHead()
-    Count = 0    #(WORD Count)//通知个数,注意不限制每日购买次数的默认不通知
-    DayBuyCntList = list()    #(vector<tagMCShopItemDayBuyCnt> DayBuyCntList)
+    Count = 0    #(WORD Count)
+    BuyCntList = list()    #(vector<tagSCShopItemBuyCnt> BuyCntList)//仅通知有限购次数的商品
     data = None
 
     def __init__(self):
@@ -18205,9 +14951,9 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.Count):
-            temDayBuyCntList = tagMCShopItemDayBuyCnt()
-            _pos = temDayBuyCntList.ReadData(_lpData, _pos)
-            self.DayBuyCntList.append(temDayBuyCntList)
+            temBuyCntList = tagSCShopItemBuyCnt()
+            _pos = temBuyCntList.ReadData(_lpData, _pos)
+            self.BuyCntList.append(temBuyCntList)
         return _pos
 
     def Clear(self):
@@ -18216,7 +14962,7 @@
         self.Head.Cmd = 0xA8
         self.Head.SubCmd = 0x02
         self.Count = 0
-        self.DayBuyCntList = list()
+        self.BuyCntList = list()
         return
 
     def GetLength(self):
@@ -18224,7 +14970,7 @@
         length += self.Head.GetLength()
         length += 2
         for i in range(self.Count):
-            length += self.DayBuyCntList[i].GetLength()
+            length += self.BuyCntList[i].GetLength()
 
         return length
 
@@ -18233,14 +14979,14 @@
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteWORD(data, self.Count)
         for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.DayBuyCntList[i].GetLength(), self.DayBuyCntList[i].GetBuffer())
+            data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
                                 Count:%d,
-                                DayBuyCntList:%s
+                                BuyCntList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -18250,8 +14996,89 @@
         return DumpString
 
 
-m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
+m_NAtagSCShopItemBuyCntInfo=tagSCShopItemBuyCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopItemBuyCntInfo.Head.Cmd,m_NAtagSCShopItemBuyCntInfo.Head.SubCmd))] = m_NAtagSCShopItemBuyCntInfo
+
+
+#------------------------------------------------------
+# A8 03 商店刷新解锁的商品信息 #tagSCShopRefreshItemInfo
+
+class  tagSCShopRefreshItemInfo(Structure):
+    Head = tagHead()
+    ShopType = 0    #(WORD ShopType)// 商店类型
+    RefreshCnt = 0    #(BYTE RefreshCnt)// 今日已刷新次数
+    Count = 0    #(BYTE Count)
+    ShopIDList = list()    #(vector<DWORD> ShopIDList)// 对应刷新出来的商店表商品ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x03
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RefreshCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ShopIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x03
+        self.ShopType = 0
+        self.RefreshCnt = 0
+        self.Count = 0
+        self.ShopIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 1
+        length += 1
+        length += 4 * self.Count
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.ShopType)
+        data = CommFunc.WriteBYTE(data, self.RefreshCnt)
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteDWORD(data, self.ShopIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ShopType:%d,
+                                RefreshCnt:%d,
+                                Count:%d,
+                                ShopIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ShopType,
+                                self.RefreshCnt,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCShopRefreshItemInfo=tagSCShopRefreshItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopRefreshItemInfo.Head.Cmd,m_NAtagSCShopRefreshItemInfo.Head.SubCmd))] = m_NAtagSCShopRefreshItemInfo
 
 
 #------------------------------------------------------
@@ -18345,11 +15172,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):
@@ -18360,21 +15189,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):
@@ -18382,6 +15215,8 @@
         length += 4
         length += 33
         length += 2
+        length += 2
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -18393,31 +15228,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
 
@@ -19472,169 +16313,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):
@@ -19816,80 +16494,6 @@
 
 m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
-
-
-#------------------------------------------------------
-#A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
-
-class  tagGCOpenServerCampaignAwardCount(Structure):
-    Head = tagHead()
-    CampaignType = 0    #(BYTE CampaignType)//奖励类型
-    AwardTypeCount = 0    #(BYTE AwardTypeCount)//奖品种类数量
-    GotCountList = list()    #(vector<DWORD> GotCountList)//奖品已领取数量列表,根据种类索引依次
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x03
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.CampaignType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardTypeCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.GotCountList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0x03
-        self.CampaignType = 0
-        self.AwardTypeCount = 0
-        self.GotCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 4 * self.AwardTypeCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.CampaignType)
-        data = CommFunc.WriteBYTE(data, self.AwardTypeCount)
-        for i in range(self.AwardTypeCount):
-            data = CommFunc.WriteDWORD(data, self.GotCountList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                CampaignType:%d,
-                                AwardTypeCount:%d,
-                                GotCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.CampaignType,
-                                self.AwardTypeCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCOpenServerCampaignAwardCount=tagGCOpenServerCampaignAwardCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCOpenServerCampaignAwardCount.Head.Cmd,m_NAtagGCOpenServerCampaignAwardCount.Head.SubCmd))] = m_NAtagGCOpenServerCampaignAwardCount
 
 
 #------------------------------------------------------
@@ -20650,6 +17254,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):
@@ -20755,58 +17416,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
 
 
 #------------------------------------------------------
@@ -30581,6 +27190,7 @@
 class  tagSCFirstCharge(Structure):
     _pack_ = 1
     _fields_ = [
+                  ("FirstID", c_ubyte),    #首充ID
                   ("ChargeTime", c_int),    #充值该首充的时间戳
                   ("AwardRecord", c_ushort),    #首充奖励领奖记录,按二进制位记录首充第X天是否已领取
                   ]
@@ -30595,6 +27205,7 @@
         return _pos + self.GetLength()
 
     def Clear(self):
+        self.FirstID = 0
         self.ChargeTime = 0
         self.AwardRecord = 0
         return
@@ -30607,10 +27218,12 @@
 
     def OutputString(self):
         DumpString = '''// AA 02 首充信息 //tagSCFirstChargeInfo:
+                                FirstID:%d,
                                 ChargeTime:%d,
                                 AwardRecord:%d
                                 '''\
                                 %(
+                                self.FirstID,
                                 self.ChargeTime,
                                 self.AwardRecord
                                 )
@@ -33724,242 +30337,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):
-    _pack_ = 1
-    _fields_ = [
-                  ("CampaignType", c_ubyte),    #奖励类型
-                  ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
-                  ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
-                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
-                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表1亿
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.CampaignType = 0
-        self.BillAwardRecord = 0
-        self.TagAwardRecord = 0
-        self.RecordData = 0
-        self.RecordDataEx = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCOpenServerCampaignAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 17 开服活动奖励状态 //tagMCOpenServerCampaignAwardList:
-                                CampaignType:%d,
-                                BillAwardRecord:%d,
-                                TagAwardRecord:%d,
-                                RecordData:%d,
-                                RecordDataEx:%d
-                                '''\
-                                %(
-                                self.CampaignType,
-                                self.BillAwardRecord,
-                                self.TagAwardRecord,
-                                self.RecordData,
-                                self.RecordDataEx
-                                )
-        return DumpString
-
-
-class  tagMCOpenServerCampaignAwardList(Structure):
-    Head = tagHead()
-    OSCAwardCnt = 0    #(BYTE OSCAwardCnt)//奖励类型数
-    OSCAwardList = list()    #(vector<tagMCOpenServerCampaignAward> OSCAwardList)// 奖励状态列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x17
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.OSCAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.OSCAwardCnt):
-            temOSCAwardList = tagMCOpenServerCampaignAward()
-            _pos = temOSCAwardList.ReadData(_lpData, _pos)
-            self.OSCAwardList.append(temOSCAwardList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x17
-        self.OSCAwardCnt = 0
-        self.OSCAwardList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.OSCAwardCnt):
-            length += self.OSCAwardList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.OSCAwardCnt)
-        for i in range(self.OSCAwardCnt):
-            data = CommFunc.WriteString(data, self.OSCAwardList[i].GetLength(), self.OSCAwardList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                OSCAwardCnt:%d,
-                                OSCAwardList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.OSCAwardCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
-
-
-#------------------------------------------------------
-# AB 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
-
-
-#------------------------------------------------------
 # AB 19 炼制奖励信息 #tagMCRefineGiftInfo
 
 class  tagMCRefineGiftInfo(Structure):
@@ -34370,151 +30747,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):
@@ -34739,73 +30971,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
 
 
 #------------------------------------------------------
@@ -36487,6 +32652,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):
@@ -36606,6 +32887,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
 
 
 #------------------------------------------------------
@@ -37320,6 +33753,294 @@
 
 
 #------------------------------------------------------
+# B1 29 阵容推荐信息 #tagSCLineupRecommendInfo
+
+class  tagSCLineupRecommend(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("RecommendID", c_ubyte),    #推荐阵容表ID
+                  ("AwardState", c_int),    #推荐武将领奖状态,按武将配置的顺序位存储是否已领取
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.RecommendID = 0
+        self.AwardState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCLineupRecommend)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 29 阵容推荐信息 //tagSCLineupRecommendInfo:
+                                RecommendID:%d,
+                                AwardState:%d
+                                '''\
+                                %(
+                                self.RecommendID,
+                                self.AwardState
+                                )
+        return DumpString
+
+
+class  tagSCLineupRecommendInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    RecommendList = list()    #(vector<tagSCLineupRecommend> RecommendList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x29
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temRecommendList = tagSCLineupRecommend()
+            _pos = temRecommendList.ReadData(_lpData, _pos)
+            self.RecommendList.append(temRecommendList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x29
+        self.Count = 0
+        self.RecommendList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.RecommendList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.RecommendList[i].GetLength(), self.RecommendList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                RecommendList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCLineupRecommendInfo=tagSCLineupRecommendInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupRecommendInfo.Head.Cmd,m_NAtagSCLineupRecommendInfo.Head.SubCmd))] = m_NAtagSCLineupRecommendInfo
+
+
+#------------------------------------------------------
+# B1 28 历练秘笈信息 #tagSCLLMJInfo
+
+class  tagSCLLMJInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MJLV", c_ubyte),    # 秘笈等级,激活后从1开始
+                  ("Zhanchui", c_int),    # 秘笈累计消耗战锤
+                  ("ExpEx", c_int),    # 秘笈今日已额外获得经验
+                  ("DecomposeEx", c_int),    # 秘笈今日已额外获得分解货币
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x28
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB1
+        self.SubCmd = 0x28
+        self.MJLV = 0
+        self.Zhanchui = 0
+        self.ExpEx = 0
+        self.DecomposeEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCLLMJInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 28 历练秘笈信息 //tagSCLLMJInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MJLV:%d,
+                                Zhanchui:%d,
+                                ExpEx:%d,
+                                DecomposeEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MJLV,
+                                self.Zhanchui,
+                                self.ExpEx,
+                                self.DecomposeEx
+                                )
+        return DumpString
+
+
+m_NAtagSCLLMJInfo=tagSCLLMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
+
+
+#------------------------------------------------------
+# 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):
@@ -37377,80 +34098,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
 
 
 #------------------------------------------------------
@@ -38090,6 +34737,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
 
 
 #------------------------------------------------------
@@ -41656,6 +38419,74 @@
 
 
 #------------------------------------------------------
+# B4 19 对象最新生命刷新 #tagSCObjHPRefresh
+
+class  tagSCObjHPRefresh(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ObjID", c_int),    
+                  ("HP", c_int),    # 当前血量,求余20亿部分
+                  ("HPEx", c_int),    # 当前血量,整除20亿部分
+                  ("MaxHP", c_int),    # 最大血量,求余20亿部分
+                  ("MaxHPEx", c_int),    # 最大血量,整除20亿部分
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        self.SubCmd = 0x19
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB4
+        self.SubCmd = 0x19
+        self.ObjID = 0
+        self.HP = 0
+        self.HPEx = 0
+        self.MaxHP = 0
+        self.MaxHPEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCObjHPRefresh)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B4 19 对象最新生命刷新 //tagSCObjHPRefresh:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ObjID:%d,
+                                HP:%d,
+                                HPEx:%d,
+                                MaxHP:%d,
+                                MaxHPEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ObjID,
+                                self.HP,
+                                self.HPEx,
+                                self.MaxHP,
+                                self.MaxHPEx
+                                )
+        return DumpString
+
+
+m_NAtagSCObjHPRefresh=tagSCObjHPRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCObjHPRefresh.Cmd,m_NAtagSCObjHPRefresh.SubCmd))] = m_NAtagSCObjHPRefresh
+
+
+#------------------------------------------------------
 # B4 18 对象属性刷新展示 #tagSCObjPropertyRefreshView
 
 class  tagSCObjPropertyRefreshView(Structure):
@@ -43426,10 +40257,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
@@ -43449,6 +40281,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()
@@ -43467,6 +40300,7 @@
         self.CurHP = 0
         self.CurHPEx = 0
         self.SkillID = 0
+        self.RelatedSkillID = 0
         self.HurtCount = 0
         self.HurtList = list()
         return
@@ -43477,6 +40311,7 @@
         length += 4
         length += 1
         length += 1
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -43495,6 +40330,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())
@@ -43509,6 +40345,7 @@
                                 CurHP:%d,
                                 CurHPEx:%d,
                                 SkillID:%d,
+                                RelatedSkillID:%d,
                                 HurtCount:%d,
                                 HurtList:%s
                                 '''\
@@ -43520,6 +40357,7 @@
                                 self.CurHP,
                                 self.CurHPEx,
                                 self.SkillID,
+                                self.RelatedSkillID,
                                 self.HurtCount,
                                 "..."
                                 )
@@ -53019,4 +49857,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