From 6e0663eac07558bf0e680ef3470e7bc45e2d8c28 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 十月 2025 12:02:13 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复无法取非主线阵容进行战斗bug)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 1701 +++++++++++-----------------------------------------------
 1 files changed, 338 insertions(+), 1,363 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 465a0be..6366384 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4207,194 +4207,6 @@
 
 
 #------------------------------------------------------
-# A3 15 日常活动次数通知 #tagMCDailyActionCnt
-
-class  tagMCDailyActionInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActionID", c_int),    # ID
-                  ("DayFinishCnt", c_ushort),    # 今日已完成次数
-                  ("DayBuyTimes", c_ubyte),    # 今日购买次数
-                  ("DayItemTimes", c_ubyte),    # 今日物品增加次数
-                  ("WeekFinishCnt", c_int),    # 本周已完成次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ActionID = 0
-        self.DayFinishCnt = 0
-        self.DayBuyTimes = 0
-        self.DayItemTimes = 0
-        self.WeekFinishCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActionInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
-                                ActionID:%d,
-                                DayFinishCnt:%d,
-                                DayBuyTimes:%d,
-                                DayItemTimes:%d,
-                                WeekFinishCnt:%d
-                                '''\
-                                %(
-                                self.ActionID,
-                                self.DayFinishCnt,
-                                self.DayBuyTimes,
-                                self.DayItemTimes,
-                                self.WeekFinishCnt
-                                )
-        return DumpString
-
-
-class  tagMCDailyActionCnt(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)// 个数
-    ActionInfo = list()    #(vector<tagMCDailyActionInfo> ActionInfo)// 活动信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temActionInfo = tagMCDailyActionInfo()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        self.Count = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.ActionInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActionCnt=tagMCDailyActionCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActionCnt.Head.Cmd,m_NAtagMCDailyActionCnt.Head.SubCmd))] = m_NAtagMCDailyActionCnt
-
-
-#------------------------------------------------------
-#A3 33 玩家每日活跃度 #tagMCDailyActivityInfoList
-
-class  tagMCDailyActivityInfoList(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CurValue", c_int),    # 当前总活跃度
-                  ("RealmPoint", c_int),    # 可领取修行点
-                  ("StageIndex", c_ubyte),    # 当前阶段索引
-                  ("AwardRecord", c_int),    # 领奖记录 按位存储
-                  ("ExtraPoint", c_int),    # 多倍活动获得的额外修行点
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        self.CurValue = 0
-        self.RealmPoint = 0
-        self.StageIndex = 0
-        self.AwardRecord = 0
-        self.ExtraPoint = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActivityInfoList)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 33 玩家每日活跃度 //tagMCDailyActivityInfoList:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CurValue:%d,
-                                RealmPoint:%d,
-                                StageIndex:%d,
-                                AwardRecord:%d,
-                                ExtraPoint:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CurValue,
-                                self.RealmPoint,
-                                self.StageIndex,
-                                self.AwardRecord,
-                                self.ExtraPoint
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActivityInfoList=tagMCDailyActivityInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActivityInfoList.Cmd,m_NAtagMCDailyActivityInfoList.SubCmd))] = m_NAtagMCDailyActivityInfoList
-
-
-#------------------------------------------------------
 #A3 0D 玩家签到信息记录 # tagSCDaySignInfo
 
 class  tagSCDaySignInfo(Structure):
@@ -5953,58 +5765,6 @@
 
 m_NAtagMCGoldInvestInfo=tagMCGoldInvestInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGoldInvestInfo.Head.Cmd,m_NAtagMCGoldInvestInfo.Head.SubCmd))] = m_NAtagMCGoldInvestInfo
-
-
-#------------------------------------------------------
-# 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
 
 
 #------------------------------------------------------
@@ -8825,66 +8585,13 @@
 
 
 #------------------------------------------------------
-# A3 41  成就完成 #tagMCSuccessFinish
+# A3 42 成就领奖记录列表 #tagSCSuccessAwardRecordList
 
-class  tagMCSuccessFinish(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SuccID", c_int),    #成就id
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x41
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x41
-        self.SuccID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessFinish)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 41  成就完成 //tagMCSuccessFinish:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SuccID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SuccID
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessFinish=tagMCSuccessFinish()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinish.Cmd,m_NAtagMCSuccessFinish.SubCmd))] = m_NAtagMCSuccessFinish
-
-
-#------------------------------------------------------
-#A3 42  成就完成领奖记录列表 #tagMCSuccessFinishAwardRecordList
-
-class  tagMCSuccessFinishAwardRecord(Structure):
+class  tagSCSuccessAwardRecord(Structure):
     _pack_ = 1
     _fields_ = [
                   ("RecordIndex", c_ushort),    #第几个记录值 每个key存31个succid   0-30为0, 31-61为1..
-                  ("Record", c_int),    #对应是否领取值
-                  ("PassportRecord", c_int),    #通行证奖励是否领取值
+                  ("Record", c_int),    #根据成就ID位判断是否已领取
                   ]
 
     def __init__(self):
@@ -8899,33 +8606,30 @@
     def Clear(self):
         self.RecordIndex = 0
         self.Record = 0
-        self.PassportRecord = 0
         return
 
     def GetLength(self):
-        return sizeof(tagMCSuccessFinishAwardRecord)
+        return sizeof(tagSCSuccessAwardRecord)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''//A3 42  成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
+        DumpString = '''// A3 42 成就领奖记录列表 //tagSCSuccessAwardRecordList:
                                 RecordIndex:%d,
-                                Record:%d,
-                                PassportRecord:%d
+                                Record:%d
                                 '''\
                                 %(
                                 self.RecordIndex,
-                                self.Record,
-                                self.PassportRecord
+                                self.Record
                                 )
         return DumpString
 
 
-class  tagMCSuccessFinishAwardRecordList(Structure):
+class  tagSCSuccessAwardRecordList(Structure):
     Head = tagHead()
     RecordCnt = 0    #(WORD RecordCnt)//记录个数
-    RecordList = list()    #(vector<tagMCSuccessFinishAwardRecord> RecordList)//记录列表
+    RecordList = list()    #(vector<tagSCSuccessAwardRecord> RecordList)//记录列表
     data = None
 
     def __init__(self):
@@ -8939,7 +8643,7 @@
         _pos = self.Head.ReadData(_lpData, _pos)
         self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.RecordCnt):
-            temRecordList = tagMCSuccessFinishAwardRecord()
+            temRecordList = tagSCSuccessAwardRecord()
             _pos = temRecordList.ReadData(_lpData, _pos)
             self.RecordList.append(temRecordList)
         return _pos
@@ -8984,18 +8688,18 @@
         return DumpString
 
 
-m_NAtagMCSuccessFinishAwardRecordList=tagMCSuccessFinishAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessFinishAwardRecordList.Head.Cmd,m_NAtagMCSuccessFinishAwardRecordList.Head.SubCmd))] = m_NAtagMCSuccessFinishAwardRecordList
+m_NAtagSCSuccessAwardRecordList=tagSCSuccessAwardRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessAwardRecordList.Head.Cmd,m_NAtagSCSuccessAwardRecordList.Head.SubCmd))] = m_NAtagSCSuccessAwardRecordList
 
 
 #------------------------------------------------------
-# A3 40  成就信息列表 #tagMCSuccessInfoList
+# A3 40 成就信息列表 #tagSCSuccessInfoList
 
-class  tagMCSuccessInfo(Structure):
+class  tagSCSuccessInfo(Structure):
     SuccType = 0    #(WORD SuccType)//成就类型
-    Len = 0    #(WORD Len)//条件长度
-    Condition = ""    #(String Condition)//成就条件
-    CntValue = 0    #(DWORD CntValue)//当前完成进度值
+    CLen = 0    #(BYTE CLen)
+    Conds = list()    #(vector<DWORD> Conds)// 条件列表
+    CurValue = 0    #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
     data = None
 
     def __init__(self):
@@ -9005,23 +8709,25 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         self.SuccType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Condition,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
-        self.CntValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CLen):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.Conds.append(value)
+        self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
         self.SuccType = 0
-        self.Len = 0
-        self.Condition = ""
-        self.CntValue = 0
+        self.CLen = 0
+        self.Conds = list()
+        self.CurValue = 0
         return
 
     def GetLength(self):
         length = 0
         length += 2
-        length += 2
-        length += len(self.Condition)
+        length += 1
+        length += 4 * self.CLen
         length += 4
 
         return length
@@ -9029,31 +8735,32 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteWORD(data, self.SuccType)
-        data = CommFunc.WriteWORD(data, self.Len)
-        data = CommFunc.WriteString(data, self.Len, self.Condition)
-        data = CommFunc.WriteDWORD(data, self.CntValue)
+        data = CommFunc.WriteBYTE(data, self.CLen)
+        for i in range(self.CLen):
+            data = CommFunc.WriteDWORD(data, self.Conds[i])
+        data = CommFunc.WriteDWORD(data, self.CurValue)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 SuccType:%d,
-                                Len:%d,
-                                Condition:%s,
-                                CntValue:%d
+                                CLen:%d,
+                                Conds:%s,
+                                CurValue:%d
                                 '''\
                                 %(
                                 self.SuccType,
-                                self.Len,
-                                self.Condition,
-                                self.CntValue
+                                self.CLen,
+                                "...",
+                                self.CurValue
                                 )
         return DumpString
 
 
-class  tagMCSuccessInfoList(Structure):
+class  tagSCSuccessInfoList(Structure):
     Head = tagHead()
-    count = 0    #(WORD count)//信息个数
-    SuccessInfoList = list()    #(vector<tagMCSuccessInfo> SuccessInfoList)
+    Count = 0    #(WORD Count)//信息个数
+    SuccessInfoList = list()    #(vector<tagSCSuccessInfo> SuccessInfoList)
     data = None
 
     def __init__(self):
@@ -9065,9 +8772,9 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.count):
-            temSuccessInfoList = tagMCSuccessInfo()
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temSuccessInfoList = tagSCSuccessInfo()
             _pos = temSuccessInfoList.ReadData(_lpData, _pos)
             self.SuccessInfoList.append(temSuccessInfoList)
         return _pos
@@ -9077,7 +8784,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xA3
         self.Head.SubCmd = 0x40
-        self.count = 0
+        self.Count = 0
         self.SuccessInfoList = list()
         return
 
@@ -9085,7 +8792,7 @@
         length = 0
         length += self.Head.GetLength()
         length += 2
-        for i in range(self.count):
+        for i in range(self.Count):
             length += self.SuccessInfoList[i].GetLength()
 
         return length
@@ -9093,79 +8800,27 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.count)
-        for i in range(self.count):
+        data = CommFunc.WriteWORD(data, self.Count)
+        for i in range(self.Count):
             data = CommFunc.WriteString(data, self.SuccessInfoList[i].GetLength(), self.SuccessInfoList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                count:%d,
+                                Count:%d,
                                 SuccessInfoList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.count,
+                                self.Count,
                                 "..."
                                 )
         return DumpString
 
 
-m_NAtagMCSuccessInfoList=tagMCSuccessInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessInfoList.Head.Cmd,m_NAtagMCSuccessInfoList.Head.SubCmd))] = m_NAtagMCSuccessInfoList
-
-
-#------------------------------------------------------
-# A3 43  成就积分信息 #tagMCSuccessScoreInfo
-
-class  tagMCSuccessScoreInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ScoreAwardState", c_int),    #成就积分领奖记录,按奖励索引位记录是否领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x43
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x43
-        self.ScoreAwardState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSuccessScoreInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 43  成就积分信息 //tagMCSuccessScoreInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ScoreAwardState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ScoreAwardState
-                                )
-        return DumpString
-
-
-m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
+m_NAtagSCSuccessInfoList=tagSCSuccessInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSuccessInfoList.Head.Cmd,m_NAtagSCSuccessInfoList.Head.SubCmd))] = m_NAtagSCSuccessInfoList
 
 
 #------------------------------------------------------
@@ -10976,374 +10631,6 @@
 
 
 #------------------------------------------------------
-# A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
-
-class  tagFGrabRedPacketInfo(Structure):
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//名字
-    PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
-    Face = 0    #(DWORD Face)//基本脸型
-    FacePic = 0    #(DWORD FacePic)//头像框
-    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.NameLen = 0
-        self.Name = ""
-        self.PlayeJob = 0
-        self.Face = 0
-        self.FacePic = 0
-        self.MoneyNum = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += len(self.Name)
-        length += 1
-        length += 4
-        length += 4
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteBYTE(data, self.PlayeJob)
-        data = CommFunc.WriteDWORD(data, self.Face)
-        data = CommFunc.WriteDWORD(data, self.FacePic)
-        data = CommFunc.WriteDWORD(data, self.MoneyNum)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                NameLen:%d,
-                                Name:%s,
-                                PlayeJob:%d,
-                                Face:%d,
-                                FacePic:%d,
-                                MoneyNum:%d
-                                '''\
-                                %(
-                                self.NameLen,
-                                self.Name,
-                                self.PlayeJob,
-                                self.Face,
-                                self.FacePic,
-                                self.MoneyNum
-                                )
-        return DumpString
-
-
-class  tagGCFamilyRedPacketGrabInfo(Structure):
-    Head = tagHead()
-    RedPacketID = 0    #(DWORD RedPacketID)//红包唯一ID
-    Count = 0    #(BYTE Count)//数量
-    GrabInfo = list()    #(vector<tagFGrabRedPacketInfo> GrabInfo)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temGrabInfo = tagFGrabRedPacketInfo()
-            _pos = temGrabInfo.ReadData(_lpData, _pos)
-            self.GrabInfo.append(temGrabInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x05
-        self.RedPacketID = 0
-        self.Count = 0
-        self.GrabInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.GrabInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.GrabInfo[i].GetLength(), self.GrabInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RedPacketID:%d,
-                                Count:%d,
-                                GrabInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RedPacketID,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyRedPacketGrabInfo=tagGCFamilyRedPacketGrabInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketGrabInfo.Head.Cmd,m_NAtagGCFamilyRedPacketGrabInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketGrabInfo
-
-
-#------------------------------------------------------
-# A4 04 家族红包总信息 #tagGCFamilyRedPacketInfo
-
-class  tagFRedPacketInfo(Structure):
-    RedPacketID = 0    #(DWORD RedPacketID)//红包唯一ID
-    PlayerID = 0    #(DWORD PlayerID)//玩家ID
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//玩家名字
-    Time = 0    #(DWORD Time)//时间
-    PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
-    Face = 0    #(DWORD Face)//基本脸型
-    FacePic = 0    #(DWORD FacePic)//头像框
-    MoneyType = 0    #(BYTE MoneyType)//金钱类型
-    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
-    GetWay = 0    #(BYTE GetWay)//获得途径
-    PacketCnt = 0    #(BYTE PacketCnt)//可抢个数
-    State = 0    #(BYTE State)//0未发,1未领取,2已领取,3全部领完
-    WishLen = 0    #(BYTE WishLen)
-    Wish = ""    #(String Wish)//祝福语
-    IsAnonymous = 0    #(BYTE IsAnonymous)//是否匿名
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
-        self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.RedPacketID = 0
-        self.PlayerID = 0
-        self.NameLen = 0
-        self.Name = ""
-        self.Time = 0
-        self.PlayeJob = 0
-        self.Face = 0
-        self.FacePic = 0
-        self.MoneyType = 0
-        self.MoneyNum = 0
-        self.GetWay = 0
-        self.PacketCnt = 0
-        self.State = 0
-        self.WishLen = 0
-        self.Wish = ""
-        self.IsAnonymous = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        length += 1
-        length += len(self.Name)
-        length += 4
-        length += 1
-        length += 4
-        length += 4
-        length += 1
-        length += 4
-        length += 1
-        length += 1
-        length += 1
-        length += 1
-        length += len(self.Wish)
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteBYTE(data, self.PlayeJob)
-        data = CommFunc.WriteDWORD(data, self.Face)
-        data = CommFunc.WriteDWORD(data, self.FacePic)
-        data = CommFunc.WriteBYTE(data, self.MoneyType)
-        data = CommFunc.WriteDWORD(data, self.MoneyNum)
-        data = CommFunc.WriteBYTE(data, self.GetWay)
-        data = CommFunc.WriteBYTE(data, self.PacketCnt)
-        data = CommFunc.WriteBYTE(data, self.State)
-        data = CommFunc.WriteBYTE(data, self.WishLen)
-        data = CommFunc.WriteString(data, self.WishLen, self.Wish)
-        data = CommFunc.WriteBYTE(data, self.IsAnonymous)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                RedPacketID:%d,
-                                PlayerID:%d,
-                                NameLen:%d,
-                                Name:%s,
-                                Time:%d,
-                                PlayeJob:%d,
-                                Face:%d,
-                                FacePic:%d,
-                                MoneyType:%d,
-                                MoneyNum:%d,
-                                GetWay:%d,
-                                PacketCnt:%d,
-                                State:%d,
-                                WishLen:%d,
-                                Wish:%s,
-                                IsAnonymous:%d
-                                '''\
-                                %(
-                                self.RedPacketID,
-                                self.PlayerID,
-                                self.NameLen,
-                                self.Name,
-                                self.Time,
-                                self.PlayeJob,
-                                self.Face,
-                                self.FacePic,
-                                self.MoneyType,
-                                self.MoneyNum,
-                                self.GetWay,
-                                self.PacketCnt,
-                                self.State,
-                                self.WishLen,
-                                self.Wish,
-                                self.IsAnonymous
-                                )
-        return DumpString
-
-
-class  tagGCFamilyRedPacketInfo(Structure):
-    Head = tagHead()
-    IsAll = 0    #(BYTE IsAll)//是否全部红包
-    Count = 0    #(BYTE Count)//红包数量
-    RedPacketInfo = list()    #(vector<tagFRedPacketInfo> RedPacketInfo)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temRedPacketInfo = tagFRedPacketInfo()
-            _pos = temRedPacketInfo.ReadData(_lpData, _pos)
-            self.RedPacketInfo.append(temRedPacketInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA4
-        self.Head.SubCmd = 0x04
-        self.IsAll = 0
-        self.Count = 0
-        self.RedPacketInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        for i in range(self.Count):
-            length += self.RedPacketInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsAll)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.RedPacketInfo[i].GetLength(), self.RedPacketInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                IsAll:%d,
-                                Count:%d,
-                                RedPacketInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.IsAll,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFamilyRedPacketInfo=tagGCFamilyRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketInfo.Head.Cmd,m_NAtagGCFamilyRedPacketInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketInfo
-
-
-#------------------------------------------------------
 # A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
 
 class  tagGCFamilyStoreItem(Structure):
@@ -12953,62 +12240,6 @@
 
 
 #------------------------------------------------------
-# A5 05 通知家族钻石红包已用额度 #tagMCFamilyRedPacketGoldLimit
-
-class  tagMCFamilyRedPacketGoldLimit(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("HasSendGold", c_int),    # 已用额度
-                  ("ServerGrabCnt", c_int),    # 全服红包已抢次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x05
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x05
-        self.HasSendGold = 0
-        self.ServerGrabCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFamilyRedPacketGoldLimit)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                HasSendGold:%d,
-                                ServerGrabCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.HasSendGold,
-                                self.ServerGrabCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
-
-
-#------------------------------------------------------
 # A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
 
 class  tagMCFamilyReqJoinPlayer(Structure):
@@ -13270,6 +12501,7 @@
 # A5 23 搜索家族返回列表 #tagMCFamilyViewList
 
 class  tagMCFamilyView(Structure):
+    Rank = 0    #(WORD Rank)//名次,从1开始
     FamilyID = 0    #(DWORD FamilyID)//家族ID
     FamilyNameLen = 0    #(BYTE FamilyNameLen)
     FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
@@ -13293,6 +12525,7 @@
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
+        self.Rank,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyNameLen)
@@ -13311,6 +12544,7 @@
         return _pos
 
     def Clear(self):
+        self.Rank = 0
         self.FamilyID = 0
         self.FamilyNameLen = 0
         self.FamilyName = ""
@@ -13330,6 +12564,7 @@
 
     def GetLength(self):
         length = 0
+        length += 2
         length += 4
         length += 1
         length += len(self.FamilyName)
@@ -13350,6 +12585,7 @@
 
     def GetBuffer(self):
         data = ''
+        data = CommFunc.WriteWORD(data, self.Rank)
         data = CommFunc.WriteDWORD(data, self.FamilyID)
         data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
         data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
@@ -13369,6 +12605,7 @@
 
     def OutputString(self):
         DumpString = '''
+                                Rank:%d,
                                 FamilyID:%d,
                                 FamilyNameLen:%d,
                                 FamilyName:%s,
@@ -13386,6 +12623,7 @@
                                 MemberCount:%d
                                 '''\
                                 %(
+                                self.Rank,
                                 self.FamilyID,
                                 self.FamilyNameLen,
                                 self.FamilyName,
@@ -17409,6 +16647,7 @@
 class  tagSCArenaMatchInfo(Structure):
     PlayerID = 0    #(DWORD PlayerID)//目标玩家ID
     PlayerName = ""    #(char PlayerName[33])
+    LV = 0    #(WORD LV)// 玩家等级
     RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
     FightPower = 0    #(DWORD FightPower)//战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)//战力整除亿部分
@@ -17425,6 +16664,7 @@
         self.Clear()
         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -17436,6 +16676,7 @@
     def Clear(self):
         self.PlayerID = 0
         self.PlayerName = ""
+        self.LV = 0
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
@@ -17449,6 +16690,7 @@
         length += 4
         length += 33
         length += 2
+        length += 2
         length += 4
         length += 4
         length += 4
@@ -17461,6 +16703,7 @@
         data = ''
         data = CommFunc.WriteDWORD(data, self.PlayerID)
         data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
@@ -17473,6 +16716,7 @@
         DumpString = '''
                                 PlayerID:%d,
                                 PlayerName:%s,
+                                LV:%d,
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
@@ -17483,6 +16727,7 @@
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
+                                self.LV,
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
@@ -18543,169 +17788,6 @@
 
 
 #------------------------------------------------------
-# A9 A7 通知可抢的红包信息 #tagGCGrabRedPacketInfo
-
-class  tagGCGrabRedPacketInfo(Structure):
-    Head = tagHead()
-    RedPacketCnt = 0    #(DWORD RedPacketCnt)//可抢红包个数
-    StrLen = 0    #(WORD StrLen)//字符串长度
-    OwnerName = ""    #(String OwnerName)//红包主人名字
-    RedPacketID = 0    #(DWORD RedPacketID)//可抢红包ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RedPacketCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
-        self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA7
-        self.RedPacketCnt = 0
-        self.StrLen = 0
-        self.OwnerName = ""
-        self.RedPacketID = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 2
-        length += len(self.OwnerName)
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RedPacketCnt)
-        data = CommFunc.WriteWORD(data, self.StrLen)
-        data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
-        data = CommFunc.WriteDWORD(data, self.RedPacketID)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RedPacketCnt:%d,
-                                StrLen:%d,
-                                OwnerName:%s,
-                                RedPacketID:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RedPacketCnt,
-                                self.StrLen,
-                                self.OwnerName,
-                                self.RedPacketID
-                                )
-        return DumpString
-
-
-m_NAtagGCGrabRedPacketInfo=tagGCGrabRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketInfo.Head.Cmd,m_NAtagGCGrabRedPacketInfo.Head.SubCmd))] = m_NAtagGCGrabRedPacketInfo
-
-
-#------------------------------------------------------
-# A9 A6 通知抢红包结果 #tagGCGrabRedPacketResult
-
-class  tagGCGrabRedPacketResult(Structure):
-    Head = tagHead()
-    StrLen = 0    #(WORD StrLen)//字符串长度
-    OwnerName = ""    #(String OwnerName)//红包主人名字
-    TotalMoney = 0    #(DWORD TotalMoney)//红包总额
-    DataSize = 0    #(DWORD DataSize)
-    GrabInfo = ""    #(String GrabInfo)//抢红包具体结果
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
-        self.TotalMoney,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GrabInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA9
-        self.Head.SubCmd = 0xA6
-        self.StrLen = 0
-        self.OwnerName = ""
-        self.TotalMoney = 0
-        self.DataSize = 0
-        self.GrabInfo = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += len(self.OwnerName)
-        length += 4
-        length += 4
-        length += len(self.GrabInfo)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.StrLen)
-        data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
-        data = CommFunc.WriteDWORD(data, self.TotalMoney)
-        data = CommFunc.WriteDWORD(data, self.DataSize)
-        data = CommFunc.WriteString(data, self.DataSize, self.GrabInfo)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StrLen:%d,
-                                OwnerName:%s,
-                                TotalMoney:%d,
-                                DataSize:%d,
-                                GrabInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StrLen,
-                                self.OwnerName,
-                                self.TotalMoney,
-                                self.DataSize,
-                                self.GrabInfo
-                                )
-        return DumpString
-
-
-m_NAtagGCGrabRedPacketResult=tagGCGrabRedPacketResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketResult.Head.Cmd,m_NAtagGCGrabRedPacketResult.Head.SubCmd))] = m_NAtagGCGrabRedPacketResult
-
-
-#------------------------------------------------------
 # A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
 
 class  tagGCNotifyEquipClassEquip(Structure):
@@ -19721,6 +18803,63 @@
 
 
 #------------------------------------------------------
+# A9 21 角色改名结果 #tagSCRenameResult
+
+class  tagSCRenameResult(Structure):
+    Head = tagHead()
+    PlayerName = ""    #(char PlayerName[33])// 新名字
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x21
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x21
+        self.PlayerName = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 33
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PlayerName:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PlayerName
+                                )
+        return DumpString
+
+
+m_NAtagSCRenameResult=tagSCRenameResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCRenameResult.Head.Cmd,m_NAtagSCRenameResult.Head.SubCmd))] = m_NAtagSCRenameResult
+
+
+#------------------------------------------------------
 # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
 
 class  tagGCStoreServerBuyCnt(Structure):
@@ -19826,58 +18965,6 @@
 
 m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
-
-
-#------------------------------------------------------
-#A9 21 角色改名结果 #tagUpdatePlayerNameResult
-
-class  tagUpdatePlayerNameResult(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Result", c_ubyte),    #角色改名结果
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA9
-        self.SubCmd = 0x21
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA9
-        self.SubCmd = 0x21
-        self.Result = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagUpdatePlayerNameResult)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A9 21 角色改名结果 //tagUpdatePlayerNameResult:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Result:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Result
-                                )
-        return DumpString
-
-
-m_NAtagUpdatePlayerNameResult=tagUpdatePlayerNameResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUpdatePlayerNameResult.Cmd,m_NAtagUpdatePlayerNameResult.SubCmd))] = m_NAtagUpdatePlayerNameResult
 
 
 #------------------------------------------------------
@@ -32799,62 +31886,6 @@
 
 
 #------------------------------------------------------
-# AB 25 节日红包信息 #tagMCFeastRedPackInfo
-
-class  tagMCFeastRedPackInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MoneyNum", c_int),    # 累积抢到多少钱
-                  ("GrabCnt", c_ushort),    # 已抢红包次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        self.SubCmd = 0x25
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAB
-        self.SubCmd = 0x25
-        self.MoneyNum = 0
-        self.GrabCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastRedPackInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MoneyNum:%d,
-                                GrabCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MoneyNum,
-                                self.GrabCnt
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
-
-
-#------------------------------------------------------
 # AB 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
 
 class  tagMCOpenServerCampaignAward(Structure):
@@ -32972,66 +32003,6 @@
 
 m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
-
-
-#------------------------------------------------------
-# AB 24 开服红包信息 #tagMCOpenServerRedPacketInfo
-
-class  tagMCOpenServerRedPacketInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MoneyNum", c_int),    # 累积抢到多少钱
-                  ("GrabCnt", c_ushort),    # 已抢红包次数
-                  ("StartTime", c_int),    # 开始倒计时时间
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        self.SubCmd = 0x24
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAB
-        self.SubCmd = 0x24
-        self.MoneyNum = 0
-        self.GrabCnt = 0
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCOpenServerRedPacketInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 24 开服红包信息 //tagMCOpenServerRedPacketInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MoneyNum:%d,
-                                GrabCnt:%d,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MoneyNum,
-                                self.GrabCnt,
-                                self.StartTime
-                                )
-        return DumpString
-
-
-m_NAtagMCOpenServerRedPacketInfo=tagMCOpenServerRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerRedPacketInfo.Cmd,m_NAtagMCOpenServerRedPacketInfo.SubCmd))] = m_NAtagMCOpenServerRedPacketInfo
 
 
 #------------------------------------------------------
@@ -33445,151 +32416,6 @@
 
 
 #------------------------------------------------------
-# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
-
-class  tagGCFeastRedPacketDay(Structure):
-    RedPacketCount = 0    #(BYTE RedPacketCount)
-    RedPacketIDList = list()    #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RedPacketCount):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
-            self.RedPacketIDList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.RedPacketCount = 0
-        self.RedPacketIDList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.RedPacketCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.RedPacketCount)
-        for i in range(self.RedPacketCount):
-            data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                RedPacketCount:%d,
-                                RedPacketIDList:%s
-                                '''\
-                                %(
-                                self.RedPacketCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagGCFeastRedPacketInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
-    RedPacketDays = 0    #(BYTE RedPacketDays)
-    RedPacketDayList = list()    #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x11
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RedPacketDays):
-            temRedPacketDayList = tagGCFeastRedPacketDay()
-            _pos = temRedPacketDayList.ReadData(_lpData, _pos)
-            self.RedPacketDayList.append(temRedPacketDayList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x11
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.ResetType = 0
-        self.RedPacketDays = 0
-        self.RedPacketDayList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        for i in range(self.RedPacketDays):
-            length += self.RedPacketDayList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteBYTE(data, self.RedPacketDays)
-        for i in range(self.RedPacketDays):
-            data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                ResetType:%d,
-                                RedPacketDays:%d,
-                                RedPacketDayList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.ResetType,
-                                self.RedPacketDays,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
-
-
-#------------------------------------------------------
 # AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
 
 class  tagGCMultiExpRateTime(Structure):
@@ -33814,73 +32640,6 @@
 
 m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
-
-
-#------------------------------------------------------
-# AC 05 红包删除 #tagGCRedPacketDel
-
-class  tagGCRedPacketDel(Structure):
-    Head = tagHead()
-    Cnt = 0    #(DWORD Cnt)// 个数
-    DelRedPacketID = list()    #(vector<DWORD> DelRedPacketID)// 红包ID
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x05
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.Cnt):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.DelRedPacketID.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x05
-        self.Cnt = 0
-        self.DelRedPacketID = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4 * self.Cnt
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteDWORD(data, self.DelRedPacketID[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                DelRedPacketID:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCRedPacketDel=tagGCRedPacketDel()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRedPacketDel.Head.Cmd,m_NAtagGCRedPacketDel.Head.SubCmd))] = m_NAtagGCRedPacketDel
 
 
 #------------------------------------------------------
@@ -35800,6 +34559,158 @@
 
 
 #------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
 # B1 23 每日掉落战利品信息 #tagSCDropBootyInfo
 
 class  tagSCDropBooty(Structure):
@@ -36511,6 +35422,70 @@
 
 
 #------------------------------------------------------
+# 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):

--
Gitblit v1.8.0