From c3bbd3b0263fc6c2127cd9f072f497f46f98758b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 07 二月 2026 21:43:20 +0800
Subject: [PATCH] 389 流向记录(简化战斗流向记录,只统计出场的武将ID;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 4933 +++++++++++++++--------------------------------------------
 1 files changed, 1,259 insertions(+), 3,674 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 6740488..f140163 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -2386,6 +2386,127 @@
 
 
 #------------------------------------------------------
+# A1 31 前端自定义保存的设置内容信息 #tagSCSettingDataInfo
+
+class  tagSCSettingData(Structure):
+    KeyNum = 0    #(BYTE KeyNum)// 自定义key编号,后端使用数字key存储,前端自行进行转换定义,限制100个
+    DataLen = 0    #(BYTE DataLen)
+    SetData = ""    #(String SetData)//自定义保存的内容
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.KeyNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.DataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SetData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+        return _pos
+
+    def Clear(self):
+        self.KeyNum = 0
+        self.DataLen = 0
+        self.SetData = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += len(self.SetData)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.KeyNum)
+        data = CommFunc.WriteBYTE(data, self.DataLen)
+        data = CommFunc.WriteString(data, self.DataLen, self.SetData)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                KeyNum:%d,
+                                DataLen:%d,
+                                SetData:%s
+                                '''\
+                                %(
+                                self.KeyNum,
+                                self.DataLen,
+                                self.SetData
+                                )
+        return DumpString
+
+
+class  tagSCSettingDataInfo(Structure):
+    Head = tagHead()
+    DataCnt = 0    #(WORD DataCnt)
+    SettingDataList = list()    #(vector<tagSCSettingData> SettingDataList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA1
+        self.Head.SubCmd = 0x31
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.DataCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.DataCnt):
+            temSettingDataList = tagSCSettingData()
+            _pos = temSettingDataList.ReadData(_lpData, _pos)
+            self.SettingDataList.append(temSettingDataList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA1
+        self.Head.SubCmd = 0x31
+        self.DataCnt = 0
+        self.SettingDataList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        for i in range(self.DataCnt):
+            length += self.SettingDataList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.DataCnt)
+        for i in range(self.DataCnt):
+            data = CommFunc.WriteString(data, self.SettingDataList[i].GetLength(), self.SettingDataList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                DataCnt:%d,
+                                SettingDataList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.DataCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCSettingDataInfo=tagSCSettingDataInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSettingDataInfo.Head.Cmd,m_NAtagSCSettingDataInfo.Head.SubCmd))] = m_NAtagSCSettingDataInfo
+
+
+#------------------------------------------------------
 #A1 26 准备切换地图 #tagMCPrepareChangeMap
 
 class  tagMCPrepareChangeMap(Structure):
@@ -7419,80 +7540,6 @@
 
 
 #------------------------------------------------------
-# A3 1F 玩家符印信息 #tagMCRuneInfo
-
-class  tagMCRuneInfo(Structure):
-    Head = tagHead()
-    RuneHoleOpenState = 0    #(DWORD RuneHoleOpenState)//符印孔状态, 按索引表示激活状态
-    Count = 0    #(BYTE Count)// 符印孔信息数
-    RuneDataList = list()    #(vector<DWORD> RuneDataList)// 符印孔数据信息, 数据与背包数据相同
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1F
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RuneHoleOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.RuneDataList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x1F
-        self.RuneHoleOpenState = 0
-        self.Count = 0
-        self.RuneDataList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        length += 4 * self.Count
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RuneHoleOpenState)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteDWORD(data, self.RuneDataList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RuneHoleOpenState:%d,
-                                Count:%d,
-                                RuneDataList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RuneHoleOpenState,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCRuneInfo=tagMCRuneInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
-
-
-#------------------------------------------------------
 # A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
 
 class  tagMCSingleGoldGift(Structure):
@@ -8388,290 +8435,6 @@
 
 m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Head.Cmd,m_NAtagMCSyncRealmInfo.Head.SubCmd))] = m_NAtagMCSyncRealmInfo
-
-
-#------------------------------------------------------
-# A3 56 通天令信息 #tagMCTongTianLingInfo
-
-class  tagMCTongTianLingInfo(Structure):
-    Head = tagHead()
-    TTLBuyState = 0    #(BYTE TTLBuyState)//通天令是否已购买
-    TTLLV = 0    #(BYTE TTLLV)//通天令等级,从0开始
-    CurPoint = 0    #(DWORD CurPoint)//通天令当前等级经验积分点
-    AwardStateCount = 0    #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录   0-30, 31-61, ...
-    CommAwardStateList = list()    #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
-    XianAwardStateList = list()    #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
-    StartTime = 0    #(DWORD StartTime)//通天令本轮开始时间戳,秒
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x56
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardStateCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.CommAwardStateList.append(value)
-        for i in range(self.AwardStateCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.XianAwardStateList.append(value)
-        self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x56
-        self.TTLBuyState = 0
-        self.TTLLV = 0
-        self.CurPoint = 0
-        self.AwardStateCount = 0
-        self.CommAwardStateList = list()
-        self.XianAwardStateList = list()
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 4
-        length += 1
-        length += 4 * self.AwardStateCount
-        length += 4 * self.AwardStateCount
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TTLBuyState)
-        data = CommFunc.WriteBYTE(data, self.TTLLV)
-        data = CommFunc.WriteDWORD(data, self.CurPoint)
-        data = CommFunc.WriteBYTE(data, self.AwardStateCount)
-        for i in range(self.AwardStateCount):
-            data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
-        for i in range(self.AwardStateCount):
-            data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
-        data = CommFunc.WriteDWORD(data, self.StartTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                TTLBuyState:%d,
-                                TTLLV:%d,
-                                CurPoint:%d,
-                                AwardStateCount:%d,
-                                CommAwardStateList:%s,
-                                XianAwardStateList:%s,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.TTLBuyState,
-                                self.TTLLV,
-                                self.CurPoint,
-                                self.AwardStateCount,
-                                "...",
-                                "...",
-                                self.StartTime
-                                )
-        return DumpString
-
-
-m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
-
-
-#------------------------------------------------------
-# A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
-
-class  tagMCTongTianLingTaskAwardInfo(Structure):
-    Head = tagHead()
-    AwardStateCount = 0    #(BYTE AwardStateCount)
-    TaskAwardStateList = list()    #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录   0-30, 31-61, ...
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x58
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardStateCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.TaskAwardStateList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x58
-        self.AwardStateCount = 0
-        self.TaskAwardStateList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 4 * self.AwardStateCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.AwardStateCount)
-        for i in range(self.AwardStateCount):
-            data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                AwardStateCount:%d,
-                                TaskAwardStateList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.AwardStateCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
-
-
-#------------------------------------------------------
-# A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
-
-class  tagMCTongTianLingTaskValue(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TaskType", c_ubyte),    #成就类型
-                  ("IsDaily", c_ubyte),    #是否每日任务
-                  ("TaskValue", 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.TaskType = 0
-        self.IsDaily = 0
-        self.TaskValue = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCTongTianLingTaskValue)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
-                                TaskType:%d,
-                                IsDaily:%d,
-                                TaskValue:%d
-                                '''\
-                                %(
-                                self.TaskType,
-                                self.IsDaily,
-                                self.TaskValue
-                                )
-        return DumpString
-
-
-class  tagMCTongTianLingTaskValueInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//信息个数
-    TaskValueList = list()    #(vector<tagMCTongTianLingTaskValue> TaskValueList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x57
-        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):
-            temTaskValueList = tagMCTongTianLingTaskValue()
-            _pos = temTaskValueList.ReadData(_lpData, _pos)
-            self.TaskValueList.append(temTaskValueList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x57
-        self.Count = 0
-        self.TaskValueList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.TaskValueList[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.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                TaskValueList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
 
 
 #------------------------------------------------------
@@ -10725,6 +10488,158 @@
 
 
 #------------------------------------------------------
+# A5 05 公会跨服互通信息 #tagSCFamilyCrossInfo
+
+class  tagSCFamilyCrossInfo(Structure):
+    Head = tagHead()
+    ZoneID = 0    #(BYTE ZoneID)// 所属分区
+    ServerCnt = 0    #(WORD ServerCnt)
+    ServerIDList = list()    #(vector<DWORD> ServerIDList)// 互通服务器ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x05
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ServerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.ServerCnt):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ServerIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x05
+        self.ZoneID = 0
+        self.ServerCnt = 0
+        self.ServerIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 2
+        length += 4 * self.ServerCnt
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ZoneID)
+        data = CommFunc.WriteWORD(data, self.ServerCnt)
+        for i in range(self.ServerCnt):
+            data = CommFunc.WriteDWORD(data, self.ServerIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ZoneID:%d,
+                                ServerCnt:%d,
+                                ServerIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ZoneID,
+                                self.ServerCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCFamilyCrossInfo=tagSCFamilyCrossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyCrossInfo.Head.Cmd,m_NAtagSCFamilyCrossInfo.Head.SubCmd))] = m_NAtagSCFamilyCrossInfo
+
+
+#------------------------------------------------------
+# A5 24 公会成员删除 #tagSCFamilyMemDel
+
+class  tagSCFamilyMemDel(Structure):
+    Head = tagHead()
+    Type = 0    #(BYTE Type)// 0-踢出;1-主动退出
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x24
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Type,_pos = CommFunc.ReadBYTE(_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)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x24
+        self.Type = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 4
+        length += 1
+        length += len(self.Name)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Type)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Type:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Type,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name
+                                )
+        return DumpString
+
+
+m_NAtagSCFamilyMemDel=tagSCFamilyMemDel()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyMemDel.Head.Cmd,m_NAtagSCFamilyMemDel.Head.SubCmd))] = m_NAtagSCFamilyMemDel
+
+
+#------------------------------------------------------
 # A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
 
 class  tagMCFamilyReqJoinPlayer(Structure):
@@ -11194,6 +11109,7 @@
     LeaderID = 0    #(DWORD LeaderID)//族长ID
     LeaderNameLen = 0    #(BYTE LeaderNameLen)
     LeaderName = ""    #(String LeaderName)//size = LeaderNameLen
+    LeaderServerID = 0    #(DWORD LeaderServerID)//族长服务器ID
     FamilyLV = 0    #(BYTE FamilyLV)//家族等级
     JoinReview = 0    #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
     JoinLVMin = 0    #(WORD JoinLVMin)//限制最低可加入的玩家等级
@@ -11218,6 +11134,7 @@
         self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
+        self.LeaderServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -11237,6 +11154,7 @@
         self.LeaderID = 0
         self.LeaderNameLen = 0
         self.LeaderName = ""
+        self.LeaderServerID = 0
         self.FamilyLV = 0
         self.JoinReview = 0
         self.JoinLVMin = 0
@@ -11257,6 +11175,7 @@
         length += 4
         length += 1
         length += len(self.LeaderName)
+        length += 4
         length += 1
         length += 1
         length += 2
@@ -11278,6 +11197,7 @@
         data = CommFunc.WriteDWORD(data, self.LeaderID)
         data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
         data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
+        data = CommFunc.WriteDWORD(data, self.LeaderServerID)
         data = CommFunc.WriteBYTE(data, self.FamilyLV)
         data = CommFunc.WriteBYTE(data, self.JoinReview)
         data = CommFunc.WriteWORD(data, self.JoinLVMin)
@@ -11298,6 +11218,7 @@
                                 LeaderID:%d,
                                 LeaderNameLen:%d,
                                 LeaderName:%s,
+                                LeaderServerID:%d,
                                 FamilyLV:%d,
                                 JoinReview:%d,
                                 JoinLVMin:%d,
@@ -11316,6 +11237,7 @@
                                 self.LeaderID,
                                 self.LeaderNameLen,
                                 self.LeaderName,
+                                self.LeaderServerID,
                                 self.FamilyLV,
                                 self.JoinReview,
                                 self.JoinLVMin,
@@ -11338,6 +11260,7 @@
     TotalPage = 0    #(BYTE TotalPage)//一共有多少页
     FamilyCount = 0    #(BYTE FamilyCount)
     FamilyList = list()    #(vector<tagMCFamilyView> FamilyList)//本页家族信息列表
+    Rank = 0    #(DWORD Rank)//玩家公会所在名次,0-没有公会或没有在榜上;>0-对应排名
     data = None
 
     def __init__(self):
@@ -11359,6 +11282,7 @@
             temFamilyList = tagMCFamilyView()
             _pos = temFamilyList.ReadData(_lpData, _pos)
             self.FamilyList.append(temFamilyList)
+        self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -11373,6 +11297,7 @@
         self.TotalPage = 0
         self.FamilyCount = 0
         self.FamilyList = list()
+        self.Rank = 0
         return
 
     def GetLength(self):
@@ -11386,6 +11311,7 @@
         length += 1
         for i in range(self.FamilyCount):
             length += self.FamilyList[i].GetLength()
+        length += 4
 
         return length
 
@@ -11400,6 +11326,7 @@
         data = CommFunc.WriteBYTE(data, self.FamilyCount)
         for i in range(self.FamilyCount):
             data = CommFunc.WriteString(data, self.FamilyList[i].GetLength(), self.FamilyList[i].GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.Rank)
         return data
 
     def OutputString(self):
@@ -11411,7 +11338,8 @@
                                 ShowCount:%d,
                                 TotalPage:%d,
                                 FamilyCount:%d,
-                                FamilyList:%s
+                                FamilyList:%s,
+                                Rank:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -11421,7 +11349,8 @@
                                 self.ShowCount,
                                 self.TotalPage,
                                 self.FamilyCount,
-                                "..."
+                                "...",
+                                self.Rank
                                 )
         return DumpString
 
@@ -11738,6 +11667,7 @@
     LeaderID = 0    #(DWORD LeaderID)//族长玩家ID
     MemberCount = 0    #(BYTE MemberCount)//人数
     MemberList = list()    #(vector<tagMCRoleFamilyMember> MemberList)//size = MemberCount
+    Extra1 = 0    #(DWORD Extra1)//附加字段1
     data = None
 
     def __init__(self):
@@ -11768,6 +11698,7 @@
             temMemberList = tagMCRoleFamilyMember()
             _pos = temMemberList.ReadData(_lpData, _pos)
             self.MemberList.append(temMemberList)
+        self.Extra1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -11791,6 +11722,7 @@
         self.LeaderID = 0
         self.MemberCount = 0
         self.MemberList = list()
+        self.Extra1 = 0
         return
 
     def GetLength(self):
@@ -11813,6 +11745,7 @@
         length += 1
         for i in range(self.MemberCount):
             length += self.MemberList[i].GetLength()
+        length += 4
 
         return length
 
@@ -11836,6 +11769,7 @@
         data = CommFunc.WriteBYTE(data, self.MemberCount)
         for i in range(self.MemberCount):
             data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.Extra1)
         return data
 
     def OutputString(self):
@@ -11856,7 +11790,8 @@
                                 Broadcast:%s,
                                 LeaderID:%d,
                                 MemberCount:%d,
-                                MemberList:%s
+                                MemberList:%s,
+                                Extra1:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -11875,13 +11810,183 @@
                                 self.Broadcast,
                                 self.LeaderID,
                                 self.MemberCount,
-                                "..."
+                                "...",
+                                self.Extra1
                                 )
         return DumpString
 
 
 m_NAtagMCRoleFamilyInfo=tagMCRoleFamilyInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRoleFamilyInfo.Head.Cmd,m_NAtagMCRoleFamilyInfo.Head.SubCmd))] = m_NAtagMCRoleFamilyInfo
+
+
+#------------------------------------------------------
+# A5 19 查看目标公会信息 #tagSCTagFamilyInfo
+
+class  tagSCTagFamilyInfo(Structure):
+    Head = tagHead()
+    FamilyID = 0    #(DWORD FamilyID)//家族ID
+    FamilyNameLen = 0    #(BYTE FamilyNameLen)
+    FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
+    LeaderID = 0    #(DWORD LeaderID)//族长ID
+    LeaderNameLen = 0    #(BYTE LeaderNameLen)
+    LeaderName = ""    #(String LeaderName)//size = LeaderNameLen
+    LeaderServerID = 0    #(DWORD LeaderServerID)//会长区服ID
+    FamilyLV = 0    #(BYTE FamilyLV)//家族等级
+    ServerID = 0    #(DWORD ServerID)//区服ID
+    EmblemID = 0    #(DWORD EmblemID)//徽章ID
+    EmblemWord = ""    #(char EmblemWord[3])//徽章文字
+    FightPower = 0    #(DWORD FightPower)//总战力,求余亿部分
+    FightPowerEx = 0    #(DWORD FightPowerEx)//总战力,整除亿部分
+    BroadcastLen = 0    #(WORD BroadcastLen)//公告
+    Broadcast = ""    #(String Broadcast)//size = BroadcastLen
+    MemberCount = 0    #(BYTE MemberCount)//成员人数
+    DataServerID = 0    #(DWORD DataServerID)//数据所在服务器ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x19
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_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)
+        self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
+        self.LeaderServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FamilyLV,_pos = CommFunc.ReadBYTE(_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)
+        self.Broadcast,_pos = CommFunc.ReadString(_lpData, _pos,self.BroadcastLen)
+        self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.DataServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0x19
+        self.FamilyID = 0
+        self.FamilyNameLen = 0
+        self.FamilyName = ""
+        self.LeaderID = 0
+        self.LeaderNameLen = 0
+        self.LeaderName = ""
+        self.LeaderServerID = 0
+        self.FamilyLV = 0
+        self.ServerID = 0
+        self.EmblemID = 0
+        self.EmblemWord = ""
+        self.FightPower = 0
+        self.FightPowerEx = 0
+        self.BroadcastLen = 0
+        self.Broadcast = ""
+        self.MemberCount = 0
+        self.DataServerID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += len(self.FamilyName)
+        length += 4
+        length += 1
+        length += len(self.LeaderName)
+        length += 4
+        length += 1
+        length += 4
+        length += 4
+        length += 3
+        length += 4
+        length += 4
+        length += 2
+        length += len(self.Broadcast)
+        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.FamilyID)
+        data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
+        data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
+        data = CommFunc.WriteDWORD(data, self.LeaderID)
+        data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
+        data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
+        data = CommFunc.WriteDWORD(data, self.LeaderServerID)
+        data = CommFunc.WriteBYTE(data, self.FamilyLV)
+        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)
+        data = CommFunc.WriteString(data, self.BroadcastLen, self.Broadcast)
+        data = CommFunc.WriteBYTE(data, self.MemberCount)
+        data = CommFunc.WriteDWORD(data, self.DataServerID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FamilyID:%d,
+                                FamilyNameLen:%d,
+                                FamilyName:%s,
+                                LeaderID:%d,
+                                LeaderNameLen:%d,
+                                LeaderName:%s,
+                                LeaderServerID:%d,
+                                FamilyLV:%d,
+                                ServerID:%d,
+                                EmblemID:%d,
+                                EmblemWord:%s,
+                                FightPower:%d,
+                                FightPowerEx:%d,
+                                BroadcastLen:%d,
+                                Broadcast:%s,
+                                MemberCount:%d,
+                                DataServerID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FamilyID,
+                                self.FamilyNameLen,
+                                self.FamilyName,
+                                self.LeaderID,
+                                self.LeaderNameLen,
+                                self.LeaderName,
+                                self.LeaderServerID,
+                                self.FamilyLV,
+                                self.ServerID,
+                                self.EmblemID,
+                                self.EmblemWord,
+                                self.FightPower,
+                                self.FightPowerEx,
+                                self.BroadcastLen,
+                                self.Broadcast,
+                                self.MemberCount,
+                                self.DataServerID
+                                )
+        return DumpString
+
+
+m_NAtagSCTagFamilyInfo=tagSCTagFamilyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTagFamilyInfo.Head.Cmd,m_NAtagSCTagFamilyInfo.Head.SubCmd))] = m_NAtagSCTagFamilyInfo
 
 
 #------------------------------------------------------
@@ -13715,6 +13820,7 @@
     FamilyName = ""    #(char FamilyName[33])
     FamilyEmblemID = 0    #(DWORD FamilyEmblemID)//仙盟徽章ID
     FamilyEmblemWord = ""    #(char FamilyEmblemWord[3])//徽章文字
+    FamilyDataServerID = 0    #(DWORD FamilyDataServerID)//公会数据所在服务器ID,A619查看公会用
     PlusDataSize = 0    #(DWORD PlusDataSize)
     PlusData = ""    #(String PlusData)//扩展记录	
     data = None
@@ -13745,6 +13851,7 @@
         self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
         self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FamilyEmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
+        self.FamilyDataServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
         return _pos
@@ -13771,6 +13878,7 @@
         self.FamilyName = ""
         self.FamilyEmblemID = 0
         self.FamilyEmblemWord = ""
+        self.FamilyDataServerID = 0
         self.PlusDataSize = 0
         self.PlusData = ""
         return
@@ -13796,6 +13904,7 @@
         length += 4
         length += 3
         length += 4
+        length += 4
         length += len(self.PlusData)
 
         return length
@@ -13820,6 +13929,7 @@
         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.FamilyDataServerID)
         data = CommFunc.WriteDWORD(data, self.PlusDataSize)
         data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
         return data
@@ -13844,6 +13954,7 @@
                                 FamilyName:%s,
                                 FamilyEmblemID:%d,
                                 FamilyEmblemWord:%s,
+                                FamilyDataServerID:%d,
                                 PlusDataSize:%d,
                                 PlusData:%s
                                 '''\
@@ -13866,6 +13977,7 @@
                                 self.FamilyName,
                                 self.FamilyEmblemID,
                                 self.FamilyEmblemWord,
+                                self.FamilyDataServerID,
                                 self.PlusDataSize,
                                 self.PlusData
                                 )
@@ -21202,386 +21314,6 @@
 
 
 #------------------------------------------------------
-# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
-
-class  tagMCActRechargePrize(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("CTGID", c_ushort),    # 对应充值表充值ID
-                  ("GoldPrize", c_int),    #返利仙玉数
-                  ("PrizeCountLimit", 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.CTGID = 0
-        self.GoldPrize = 0
-        self.PrizeCountLimit = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActRechargePrize)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
-                                CTGID:%d,
-                                GoldPrize:%d,
-                                PrizeCountLimit:%d
-                                '''\
-                                %(
-                                self.CTGID,
-                                self.GoldPrize,
-                                self.PrizeCountLimit
-                                )
-        return DumpString
-
-
-class  tagMCActRechargePrizeDay(Structure):
-    Prizes = 0    #(BYTE Prizes)// 返利档数
-    PrizeInfo = list()    #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Prizes):
-            temPrizeInfo = tagMCActRechargePrize()
-            _pos = temPrizeInfo.ReadData(_lpData, _pos)
-            self.PrizeInfo.append(temPrizeInfo)
-        return _pos
-
-    def Clear(self):
-        self.Prizes = 0
-        self.PrizeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.Prizes):
-            length += self.PrizeInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.Prizes)
-        for i in range(self.Prizes):
-            data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Prizes:%d,
-                                PrizeInfo:%s
-                                '''\
-                                %(
-                                self.Prizes,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActRechargePrizeInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    PrizeDays = 0    #(BYTE PrizeDays)
-    PrizeDayInfo = list()    #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x27
-        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PrizeDays):
-            temPrizeDayInfo = tagMCActRechargePrizeDay()
-            _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
-            self.PrizeDayInfo.append(temPrizeDayInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x27
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.IsDayReset = 0
-        self.PrizeDays = 0
-        self.PrizeDayInfo = 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.PrizeDays):
-            length += self.PrizeDayInfo[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.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.PrizeDays)
-        for i in range(self.PrizeDays):
-            data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                IsDayReset:%d,
-                                PrizeDays:%d,
-                                PrizeDayInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.IsDayReset,
-                                self.PrizeDays,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
-
-
-#------------------------------------------------------
-# AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
-
-class  tagMCActRechargeRebate(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("RMBMin", c_int),    # 充值RMB最小值
-                  ("RMBMax", c_int),    # 充值RMB最大值,0代表无上限
-                  ("RebateRate", 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.RMBMin = 0
-        self.RMBMax = 0
-        self.RebateRate = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActRechargeRebate)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
-                                RMBMin:%d,
-                                RMBMax:%d,
-                                RebateRate:%d
-                                '''\
-                                %(
-                                self.RMBMin,
-                                self.RMBMax,
-                                self.RebateRate
-                                )
-        return DumpString
-
-
-class  tagMCActRechargeRebateDay(Structure):
-    Rebates = 0    #(BYTE Rebates)// 返利档数
-    RebateInfo = list()    #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Rebates):
-            temRebateInfo = tagMCActRechargeRebate()
-            _pos = temRebateInfo.ReadData(_lpData, _pos)
-            self.RebateInfo.append(temRebateInfo)
-        return _pos
-
-    def Clear(self):
-        self.Rebates = 0
-        self.RebateInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.Rebates):
-            length += self.RebateInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.Rebates)
-        for i in range(self.Rebates):
-            data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Rebates:%d,
-                                RebateInfo:%s
-                                '''\
-                                %(
-                                self.Rebates,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActRechargeRebateGoldInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    RebateDays = 0    #(BYTE RebateDays)
-    RebateDayInfo = list()    #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x29
-        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RebateDays):
-            temRebateDayInfo = tagMCActRechargeRebateDay()
-            _pos = temRebateDayInfo.ReadData(_lpData, _pos)
-            self.RebateDayInfo.append(temRebateDayInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x29
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.IsDayReset = 0
-        self.RebateDays = 0
-        self.RebateDayInfo = 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.RebateDays):
-            length += self.RebateDayInfo[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.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.RebateDays)
-        for i in range(self.RebateDays):
-            data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                IsDayReset:%d,
-                                RebateDays:%d,
-                                RebateDayInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.IsDayReset,
-                                self.RebateDays,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
-
-
-#------------------------------------------------------
 # AA 50 单笔累充活动信息 #tagMCActSingleRechargeInfo
 
 class  tagMCActSingleRechargeAwardItem(Structure):
@@ -23592,804 +23324,6 @@
 
 
 #------------------------------------------------------
-# AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo
-
-class  tagMCCACTGBillboardAwardItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    # 是否拍品
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCCACTGBillboardAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCCACTGBillboardDabiao(Structure):
-    AwardIndex = 0    #(BYTE AwardIndex)// 奖励索引 0~31
-    NeedRMB = 0    #(DWORD NeedRMB)// 所需充值RMB
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
-    AwardItemList = list()    #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItemList = tagMCCACTGBillboardAwardItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.AwardIndex = 0
-        self.NeedRMB = 0
-        self.AwardItemCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.AwardIndex)
-        data = CommFunc.WriteDWORD(data, self.NeedRMB)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                AwardIndex:%d,
-                                NeedRMB:%d,
-                                AwardItemCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.AwardIndex,
-                                self.NeedRMB,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCCACTGBillboardOrder(Structure):
-    OrderA = 0    #(BYTE OrderA)// 名次A
-    OrderB = 0    #(BYTE OrderB)// 至名次B
-    NeedRMB = 0    #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
-    AwardItemList = list()    #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItemList = tagMCCACTGBillboardAwardItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.OrderA = 0
-        self.OrderB = 0
-        self.NeedRMB = 0
-        self.AwardItemCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += 4
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.OrderA)
-        data = CommFunc.WriteBYTE(data, self.OrderB)
-        data = CommFunc.WriteDWORD(data, self.NeedRMB)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                OrderA:%d,
-                                OrderB:%d,
-                                NeedRMB:%d,
-                                AwardItemCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.OrderA,
-                                self.OrderB,
-                                self.NeedRMB,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCCACTGBillboardTempInfo(Structure):
-    TemplateID = 0    #(BYTE TemplateID)// 活动模板ID
-    DabiaoAwardCount = 0    #(BYTE DabiaoAwardCount)// 达标奖励档数
-    DabiaoAwardInfo = list()    #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息
-    OrderAwardCount = 0    #(BYTE OrderAwardCount)// 排行奖励档数
-    OrderAwardInfo = list()    #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DabiaoAwardCount):
-            temDabiaoAwardInfo = tagMCCACTGBillboardDabiao()
-            _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos)
-            self.DabiaoAwardInfo.append(temDabiaoAwardInfo)
-        self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.OrderAwardCount):
-            temOrderAwardInfo = tagMCCACTGBillboardOrder()
-            _pos = temOrderAwardInfo.ReadData(_lpData, _pos)
-            self.OrderAwardInfo.append(temOrderAwardInfo)
-        return _pos
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.DabiaoAwardCount = 0
-        self.DabiaoAwardInfo = list()
-        self.OrderAwardCount = 0
-        self.OrderAwardInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        for i in range(self.DabiaoAwardCount):
-            length += self.DabiaoAwardInfo[i].GetLength()
-        length += 1
-        for i in range(self.OrderAwardCount):
-            length += self.OrderAwardInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.TemplateID)
-        data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount)
-        for i in range(self.DabiaoAwardCount):
-            data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.OrderAwardCount)
-        for i in range(self.OrderAwardCount):
-            data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TemplateID:%d,
-                                DabiaoAwardCount:%d,
-                                DabiaoAwardInfo:%s,
-                                OrderAwardCount:%d,
-                                OrderAwardInfo:%s
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.DabiaoAwardCount,
-                                "...",
-                                self.OrderAwardCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCCACTGBillboardInfo(Structure):
-    Head = tagHead()
-    ServerInfoLen = 0    #(BYTE ServerInfoLen)
-    ServerIDRangeInfo = ""    #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
-    GroupValue1 = 0    #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    TemplateID = 0    #(BYTE TemplateID)// 当前活动模板ID
-    TemplateCount = 0    #(BYTE TemplateCount)
-    TempInfo = list()    #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x32
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
-        self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TemplateCount):
-            temTempInfo = tagMCCACTGBillboardTempInfo()
-            _pos = temTempInfo.ReadData(_lpData, _pos)
-            self.TempInfo.append(temTempInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x32
-        self.ServerInfoLen = 0
-        self.ServerIDRangeInfo = ""
-        self.GroupValue1 = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.TemplateID = 0
-        self.TemplateCount = 0
-        self.TempInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += len(self.ServerIDRangeInfo)
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        length += 1
-        for i in range(self.TemplateCount):
-            length += self.TempInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
-        data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
-        data = CommFunc.WriteBYTE(data, self.GroupValue1)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.TemplateID)
-        data = CommFunc.WriteBYTE(data, self.TemplateCount)
-        for i in range(self.TemplateCount):
-            data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ServerInfoLen:%d,
-                                ServerIDRangeInfo:%s,
-                                GroupValue1:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                TemplateID:%d,
-                                TemplateCount:%d,
-                                TempInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ServerInfoLen,
-                                self.ServerIDRangeInfo,
-                                self.GroupValue1,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.TemplateID,
-                                self.TemplateCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo
-
-
-#------------------------------------------------------
-# AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo
-
-class  tagMCCACTGBillboardPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CTGRMBTotal", c_int),    # 活动已累计充值RMB
-                  ("DabiaoAwardRecord", c_int),    # 达标奖励记录,与达标奖励索引位或运算判断是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        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 = 0xAA
-        self.SubCmd = 0x33
-        self.CTGRMBTotal = 0
-        self.DabiaoAwardRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCCACTGBillboardPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CTGRMBTotal:%d,
-                                DabiaoAwardRecord:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CTGRMBTotal,
-                                self.DabiaoAwardRecord
-                                )
-        return DumpString
-
-
-m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo
-
-
-#------------------------------------------------------
-# AA 09 消费返利活动信息 #tagMCCostRebateInfo
-
-class  tagMCCostRebateAwardItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_int),    
-                  ("IsBind", c_ubyte),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCCostRebateAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 09 消费返利活动信息 //tagMCCostRebateInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCCostRebateAward(Structure):
-    AwardIndex = 0    #(BYTE AwardIndex)// 奖励索引 0~31
-    NeedGold = 0    #(DWORD NeedGold)// 所需仙玉数
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
-    AwardItem = list()    #(vector<tagMCCostRebateAwardItem> AwardItem)// 奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItem = tagMCCostRebateAwardItem()
-            _pos = temAwardItem.ReadData(_lpData, _pos)
-            self.AwardItem.append(temAwardItem)
-        return _pos
-
-    def Clear(self):
-        self.AwardIndex = 0
-        self.NeedGold = 0
-        self.AwardItemCount = 0
-        self.AwardItem = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItem[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.AwardIndex)
-        data = CommFunc.WriteDWORD(data, self.NeedGold)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                AwardIndex:%d,
-                                NeedGold:%d,
-                                AwardItemCount:%d,
-                                AwardItem:%s
-                                '''\
-                                %(
-                                self.AwardIndex,
-                                self.NeedGold,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCCostRebateAwardDay(Structure):
-    AwardCount = 0    #(BYTE AwardCount)// 奖励档数
-    AwardInfo = list()    #(vector<tagMCCostRebateAward> AwardInfo)// 奖励档信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardCount):
-            temAwardInfo = tagMCCostRebateAward()
-            _pos = temAwardInfo.ReadData(_lpData, _pos)
-            self.AwardInfo.append(temAwardInfo)
-        return _pos
-
-    def Clear(self):
-        self.AwardCount = 0
-        self.AwardInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.AwardCount):
-            length += self.AwardInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.AwardCount)
-        for i in range(self.AwardCount):
-            data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                AwardCount:%d,
-                                AwardInfo:%s
-                                '''\
-                                %(
-                                self.AwardCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCCostRebateInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    AwardDays = 0    #(BYTE AwardDays)
-    AwardDayInfo = list()    #(vector<tagMCCostRebateAwardDay> AwardDayInfo)//每天对应返利信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.AwardDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardDays):
-            temAwardDayInfo = tagMCCostRebateAwardDay()
-            _pos = temAwardDayInfo.ReadData(_lpData, _pos)
-            self.AwardDayInfo.append(temAwardDayInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x09
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.AwardDays = 0
-        self.AwardDayInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.AwardDays):
-            length += self.AwardDayInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.AwardDays)
-        for i in range(self.AwardDays):
-            data = CommFunc.WriteString(data, self.AwardDayInfo[i].GetLength(), self.AwardDayInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                AwardDays:%d,
-                                AwardDayInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.AwardDays,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCCostRebateInfo=tagMCCostRebateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebateInfo.Head.Cmd,m_NAtagMCCostRebateInfo.Head.SubCmd))] = m_NAtagMCCostRebateInfo
-
-
-#------------------------------------------------------
-# AA 10 消费返利玩家活动信息 #tagMCCostRebatePlayerInfo
-
-class  tagMCCostRebatePlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    #活动编号
-                  ("CostGoldTotal", c_int),    #本次活动已累计消费仙玉数
-                  ("AwardRecord", c_int),    #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x10
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAA
-        self.SubCmd = 0x10
-        self.ActNum = 0
-        self.CostGoldTotal = 0
-        self.AwardRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCCostRebatePlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d,
-                                CostGoldTotal:%d,
-                                AwardRecord:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum,
-                                self.CostGoldTotal,
-                                self.AwardRecord
-                                )
-        return DumpString
-
-
-m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
-
-
-#------------------------------------------------------
-# AA 34 跨服全民充值活动玩家信息 #tagMCCrossActAllRechargePlayerInfo
-
-class  tagMCCrossActAllRechargePlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CTGRMBTotal", c_int),    # 活动已累计充值RMB
-                  ("AwardRecord", c_int),    # 奖励记录,根据奖励索引位或运算判断是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x34
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAA
-        self.SubCmd = 0x34
-        self.CTGRMBTotal = 0
-        self.AwardRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCCrossActAllRechargePlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 34 跨服全民充值活动玩家信息 //tagMCCrossActAllRechargePlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CTGRMBTotal:%d,
-                                AwardRecord:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CTGRMBTotal,
-                                self.AwardRecord
-                                )
-        return DumpString
-
-
-m_NAtagMCCrossActAllRechargePlayerInfo=tagMCCrossActAllRechargePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActAllRechargePlayerInfo.Cmd,m_NAtagMCCrossActAllRechargePlayerInfo.SubCmd))] = m_NAtagMCCrossActAllRechargePlayerInfo
-
-
-#------------------------------------------------------
 # AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
 
 class  tagMCCrossActLianqiItem(Structure):
@@ -25512,518 +24446,6 @@
 
 m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
-
-
-#------------------------------------------------------
-# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
-
-class  tagMCFeastWeekPartyItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("NeedPoint", c_ushort),    # 领奖需要积分
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.NeedPoint = 0
-        self.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWeekPartyItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
-                                NeedPoint:%d,
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.NeedPoint,
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFeastWeekPartyAction(Structure):
-    TemplateID = 0    #(DWORD TemplateID)// 模板ID
-    ActionType = 0    #(WORD ActionType)// 活动类别
-    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
-    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
-    Point = 0    #(DWORD Point)// 单次领奖积分
-    Count = 0    #(BYTE Count)// 物品数
-    ItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temItemInfo = tagMCFeastWeekPartyItem()
-            _pos = temItemInfo.ReadData(_lpData, _pos)
-            self.ItemInfo.append(temItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.ActionType = 0
-        self.TotalTimes = 0
-        self.SingleTimes = 0
-        self.Point = 0
-        self.Count = 0
-        self.ItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 2
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.ItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.TemplateID)
-        data = CommFunc.WriteWORD(data, self.ActionType)
-        data = CommFunc.WriteDWORD(data, self.TotalTimes)
-        data = CommFunc.WriteDWORD(data, self.SingleTimes)
-        data = CommFunc.WriteDWORD(data, self.Point)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TemplateID:%d,
-                                ActionType:%d,
-                                TotalTimes:%d,
-                                SingleTimes:%d,
-                                Point:%d,
-                                Count:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.ActionType,
-                                self.TotalTimes,
-                                self.SingleTimes,
-                                self.Point,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastWeekPartyDayInfo(Structure):
-    ActCnt = 0    #(BYTE ActCnt)// 数量
-    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
-    PCount = 0    #(BYTE PCount)// 物品数
-    PItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActCnt):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
-            self.TemplateList.append(value)
-        self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PCount):
-            temPItemInfo = tagMCFeastWeekPartyItem()
-            _pos = temPItemInfo.ReadData(_lpData, _pos)
-            self.PItemInfo.append(temPItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.ActCnt = 0
-        self.TemplateList = list()
-        self.PCount = 0
-        self.PItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.ActCnt
-        length += 1
-        for i in range(self.PCount):
-            length += self.PItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ActCnt)
-        for i in range(self.ActCnt):
-            data = CommFunc.WriteWORD(data, self.TemplateList[i])
-        data = CommFunc.WriteBYTE(data, self.PCount)
-        for i in range(self.PCount):
-            data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ActCnt:%d,
-                                TemplateList:%s,
-                                PCount:%d,
-                                PItemInfo:%s
-                                '''\
-                                %(
-                                self.ActCnt,
-                                "...",
-                                self.PCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastWeekPartyInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    DayCnt = 0    #(BYTE DayCnt)// 天数
-    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
-    TCount = 0    #(BYTE TCount)// 模板数
-    ActionInfo = list()    #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x20
-        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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DayCnt):
-            temDayInfoList = tagMCFeastWeekPartyDayInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TCount):
-            temActionInfo = tagMCFeastWeekPartyAction()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x20
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.DayCnt = 0
-        self.DayInfoList = list()
-        self.TCount = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.DayCnt):
-            length += self.DayInfoList[i].GetLength()
-        length += 1
-        for i in range(self.TCount):
-            length += self.ActionInfo[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.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.DayCnt)
-        for i in range(self.DayCnt):
-            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TCount)
-        for i in range(self.TCount):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                IsDayReset:%d,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                DayCnt:%d,
-                                DayInfoList:%s,
-                                TCount:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.IsDayReset,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.DayCnt,
-                                "...",
-                                self.TCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
-
-
-#------------------------------------------------------
-# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
-
-class  tagMCFeastWeekPartyTaskInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TemplateID", c_ushort),    # 模板ID
-                  ("CurTimes", c_int),    #已完成次数
-                  ("GotTimes", 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.TemplateID = 0
-        self.CurTimes = 0
-        self.GotTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWeekPartyTaskInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
-                                TemplateID:%d,
-                                CurTimes:%d,
-                                GotTimes:%d
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.CurTimes,
-                                self.GotTimes
-                                )
-        return DumpString
-
-
-class  tagMCFeastWeekPartyDayPlayerInfo(Structure):
-    DayIndex = 0    #(DWORD DayIndex)//第X天
-    Point = 0    #(DWORD Point)//积分
-    AwardRecord = 0    #(DWORD AwardRecord)//积分领奖记录
-    ACount = 0    #(DWORD ACount)//任务条目数
-    TaskList = list()    #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.ACount):
-            temTaskList = tagMCFeastWeekPartyTaskInfo()
-            _pos = temTaskList.ReadData(_lpData, _pos)
-            self.TaskList.append(temTaskList)
-        return _pos
-
-    def Clear(self):
-        self.DayIndex = 0
-        self.Point = 0
-        self.AwardRecord = 0
-        self.ACount = 0
-        self.TaskList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        for i in range(self.ACount):
-            length += self.TaskList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.DayIndex)
-        data = CommFunc.WriteDWORD(data, self.Point)
-        data = CommFunc.WriteDWORD(data, self.AwardRecord)
-        data = CommFunc.WriteDWORD(data, self.ACount)
-        for i in range(self.ACount):
-            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayIndex:%d,
-                                Point:%d,
-                                AwardRecord:%d,
-                                ACount:%d,
-                                TaskList:%s
-                                '''\
-                                %(
-                                self.DayIndex,
-                                self.Point,
-                                self.AwardRecord,
-                                self.ACount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastWeekPartyPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x21
-        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):
-            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x21
-        self.Count = 0
-        self.DayInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                DayInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
 
 
 #------------------------------------------------------
@@ -27850,166 +26272,6 @@
 
 
 #------------------------------------------------------
-# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
-
-class  tagMCRechargePrizeInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("CTGID", c_ushort),    # 对应充值表充值ID
-                  ("PrizeCount", 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.CTGID = 0
-        self.PrizeCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCRechargePrizeInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
-                                CTGID:%d,
-                                PrizeCount:%d
-                                '''\
-                                %(
-                                self.CTGID,
-                                self.PrizeCount
-                                )
-        return DumpString
-
-
-class  tagMCRechargePrizePlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    PlayerInfoList = list()    #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x28
-        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):
-            temPlayerInfoList = tagMCRechargePrizeInfo()
-            _pos = temPlayerInfoList.ReadData(_lpData, _pos)
-            self.PlayerInfoList.append(temPlayerInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x28
-        self.Count = 0
-        self.PlayerInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.PlayerInfoList[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.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                PlayerInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
-
-
-#------------------------------------------------------
-# AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
-
-class  tagMCRechargeRebateGoldPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("RechargeRMBTotal", c_int),    # 活动已累计充值RMB
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x30
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAA
-        self.SubCmd = 0x30
-        self.RechargeRMBTotal = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCRechargeRebateGoldPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                RechargeRMBTotal:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.RechargeRMBTotal
-                                )
-        return DumpString
-
-
-m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
-
-
-#------------------------------------------------------
 # AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
 
 class  tagMCSpringSaleItem(Structure):
@@ -28535,518 +26797,6 @@
 
 
 #------------------------------------------------------
-# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
-
-class  tagMCWeekPartyItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("NeedPoint", c_ushort),    # 领奖需要积分
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.NeedPoint = 0
-        self.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCWeekPartyItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
-                                NeedPoint:%d,
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.NeedPoint,
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCWeekPartyAction(Structure):
-    TemplateID = 0    #(DWORD TemplateID)// 模板ID
-    ActionType = 0    #(WORD ActionType)// 活动类别
-    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
-    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
-    Point = 0    #(DWORD Point)// 单次领奖积分
-    Count = 0    #(BYTE Count)// 物品数
-    ItemInfo = list()    #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temItemInfo = tagMCWeekPartyItem()
-            _pos = temItemInfo.ReadData(_lpData, _pos)
-            self.ItemInfo.append(temItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.ActionType = 0
-        self.TotalTimes = 0
-        self.SingleTimes = 0
-        self.Point = 0
-        self.Count = 0
-        self.ItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 2
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.ItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.TemplateID)
-        data = CommFunc.WriteWORD(data, self.ActionType)
-        data = CommFunc.WriteDWORD(data, self.TotalTimes)
-        data = CommFunc.WriteDWORD(data, self.SingleTimes)
-        data = CommFunc.WriteDWORD(data, self.Point)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TemplateID:%d,
-                                ActionType:%d,
-                                TotalTimes:%d,
-                                SingleTimes:%d,
-                                Point:%d,
-                                Count:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.ActionType,
-                                self.TotalTimes,
-                                self.SingleTimes,
-                                self.Point,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCWeekPartyDayInfo(Structure):
-    ActCnt = 0    #(BYTE ActCnt)// 数量
-    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
-    PCount = 0    #(BYTE PCount)// 物品数
-    PItemInfo = list()    #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActCnt):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
-            self.TemplateList.append(value)
-        self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PCount):
-            temPItemInfo = tagMCWeekPartyItem()
-            _pos = temPItemInfo.ReadData(_lpData, _pos)
-            self.PItemInfo.append(temPItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.ActCnt = 0
-        self.TemplateList = list()
-        self.PCount = 0
-        self.PItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.ActCnt
-        length += 1
-        for i in range(self.PCount):
-            length += self.PItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ActCnt)
-        for i in range(self.ActCnt):
-            data = CommFunc.WriteWORD(data, self.TemplateList[i])
-        data = CommFunc.WriteBYTE(data, self.PCount)
-        for i in range(self.PCount):
-            data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ActCnt:%d,
-                                TemplateList:%s,
-                                PCount:%d,
-                                PItemInfo:%s
-                                '''\
-                                %(
-                                self.ActCnt,
-                                "...",
-                                self.PCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCWeekPartyInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    DayCnt = 0    #(BYTE DayCnt)// 天数
-    DayInfoList = list()    #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
-    TCount = 0    #(BYTE TCount)// 模板数
-    ActionInfo = list()    #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0A
-        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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DayCnt):
-            temDayInfoList = tagMCWeekPartyDayInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TCount):
-            temActionInfo = tagMCWeekPartyAction()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0A
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.DayCnt = 0
-        self.DayInfoList = list()
-        self.TCount = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.DayCnt):
-            length += self.DayInfoList[i].GetLength()
-        length += 1
-        for i in range(self.TCount):
-            length += self.ActionInfo[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.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.DayCnt)
-        for i in range(self.DayCnt):
-            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TCount)
-        for i in range(self.TCount):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                IsDayReset:%d,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                DayCnt:%d,
-                                DayInfoList:%s,
-                                TCount:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.IsDayReset,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.DayCnt,
-                                "...",
-                                self.TCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
-
-
-#------------------------------------------------------
-# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
-
-class  tagMCWeekPartyTaskInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TemplateID", c_ushort),    # 模板ID
-                  ("CurTimes", c_int),    #已完成次数
-                  ("GotTimes", 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.TemplateID = 0
-        self.CurTimes = 0
-        self.GotTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCWeekPartyTaskInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
-                                TemplateID:%d,
-                                CurTimes:%d,
-                                GotTimes:%d
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.CurTimes,
-                                self.GotTimes
-                                )
-        return DumpString
-
-
-class  tagMCWeekPartyDayPlayerInfo(Structure):
-    DayIndex = 0    #(DWORD DayIndex)//第X天
-    Point = 0    #(DWORD Point)//积分
-    AwardRecord = 0    #(DWORD AwardRecord)//积分领奖记录
-    ACount = 0    #(DWORD ACount)//任务条目数
-    TaskList = list()    #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.ACount):
-            temTaskList = tagMCWeekPartyTaskInfo()
-            _pos = temTaskList.ReadData(_lpData, _pos)
-            self.TaskList.append(temTaskList)
-        return _pos
-
-    def Clear(self):
-        self.DayIndex = 0
-        self.Point = 0
-        self.AwardRecord = 0
-        self.ACount = 0
-        self.TaskList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        length += 4
-        length += 4
-        for i in range(self.ACount):
-            length += self.TaskList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.DayIndex)
-        data = CommFunc.WriteDWORD(data, self.Point)
-        data = CommFunc.WriteDWORD(data, self.AwardRecord)
-        data = CommFunc.WriteDWORD(data, self.ACount)
-        for i in range(self.ACount):
-            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayIndex:%d,
-                                Point:%d,
-                                AwardRecord:%d,
-                                ACount:%d,
-                                TaskList:%s
-                                '''\
-                                %(
-                                self.DayIndex,
-                                self.Point,
-                                self.AwardRecord,
-                                self.ACount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCWeekPartyPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0B
-        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):
-            temDayInfoList = tagMCWeekPartyDayPlayerInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0B
-        self.Count = 0
-        self.DayInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                DayInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
-
-
-#------------------------------------------------------
 # AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
 
 class  tagMCXJSDRecharge(Structure):
@@ -29164,224 +26914,6 @@
 
 m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
-
-
-#------------------------------------------------------
-# AC 13 跨服全民充值活动信息 #tagGCCrossActAllRechargeInfo
-
-class  tagGCCrossActAllRechargeItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    # 是否拍品
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCCrossActAllRechargeItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AC 13 跨服全民充值活动信息 //tagGCCrossActAllRechargeInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagGCCrossActAllRechargeAward(Structure):
-    AwardIndex = 0    #(BYTE AwardIndex)// 奖励索引 0~31
-    NeedRMB = 0    #(DWORD NeedRMB)// 所需全民充值RMB
-    NeedPlayerCount = 0    #(WORD NeedPlayerCount)// 所需充值达到该档玩家数
-    NowPlayerCount = 0    #(WORD NowPlayerCount)// 当前充值达到该档玩家数
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
-    AwardItemList = list()    #(vector<tagGCCrossActAllRechargeItem> AwardItemList)// 奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.NeedPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.NowPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItemList = tagGCCrossActAllRechargeItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.AwardIndex = 0
-        self.NeedRMB = 0
-        self.NeedPlayerCount = 0
-        self.NowPlayerCount = 0
-        self.AwardItemCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 4
-        length += 2
-        length += 2
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.AwardIndex)
-        data = CommFunc.WriteDWORD(data, self.NeedRMB)
-        data = CommFunc.WriteWORD(data, self.NeedPlayerCount)
-        data = CommFunc.WriteWORD(data, self.NowPlayerCount)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                AwardIndex:%d,
-                                NeedRMB:%d,
-                                NeedPlayerCount:%d,
-                                NowPlayerCount:%d,
-                                AwardItemCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.AwardIndex,
-                                self.NeedRMB,
-                                self.NeedPlayerCount,
-                                self.NowPlayerCount,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagGCCrossActAllRechargeInfo(Structure):
-    Head = tagHead()
-    ServerInfoLen = 0    #(BYTE ServerInfoLen)
-    ServerIDRangeInfo = ""    #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AwardCount = 0    #(BYTE AwardCount)
-    AwardList = list()    #(vector<tagGCCrossActAllRechargeAward> AwardList)// 奖励档次信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x13
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardCount):
-            temAwardList = tagGCCrossActAllRechargeAward()
-            _pos = temAwardList.ReadData(_lpData, _pos)
-            self.AwardList.append(temAwardList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x13
-        self.ServerInfoLen = 0
-        self.ServerIDRangeInfo = ""
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AwardCount = 0
-        self.AwardList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += len(self.ServerIDRangeInfo)
-        length += 10
-        length += 10
-        length += 1
-        for i in range(self.AwardCount):
-            length += self.AwardList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
-        data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.AwardCount)
-        for i in range(self.AwardCount):
-            data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ServerInfoLen:%d,
-                                ServerIDRangeInfo:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AwardCount:%d,
-                                AwardList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ServerInfoLen,
-                                self.ServerIDRangeInfo,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AwardCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCCrossActAllRechargeInfo=tagGCCrossActAllRechargeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActAllRechargeInfo.Head.Cmd,m_NAtagGCCrossActAllRechargeInfo.Head.SubCmd))] = m_NAtagGCCrossActAllRechargeInfo
 
 
 #------------------------------------------------------
@@ -30183,6 +27715,114 @@
 
 m_NAtagSCTravelInfo=tagSCTravelInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
+
+
+#------------------------------------------------------
+# B1 63 战斗预设切换信息 #tagSCBatPresetSwitchInfo
+
+class  tagSCBatPresetSwitch(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("BatPresetType", c_ubyte),    #战斗预设类型:1-主线战斗;2-演武场防守;
+                  ("BatPresetID", c_ubyte),    #该战斗功能所使用的战斗预设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.BatPresetType = 0
+        self.BatPresetID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCBatPresetSwitch)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 63 战斗预设切换信息 //tagSCBatPresetSwitchInfo:
+                                BatPresetType:%d,
+                                BatPresetID:%d
+                                '''\
+                                %(
+                                self.BatPresetType,
+                                self.BatPresetID
+                                )
+        return DumpString
+
+
+class  tagSCBatPresetSwitchInfo(Structure):
+    Head = tagHead()
+    BatFuncCnt = 0    #(BYTE BatFuncCnt)
+    BatPresetList = list()    #(vector<tagSCBatPresetSwitch> BatPresetList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x63
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.BatFuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.BatFuncCnt):
+            temBatPresetList = tagSCBatPresetSwitch()
+            _pos = temBatPresetList.ReadData(_lpData, _pos)
+            self.BatPresetList.append(temBatPresetList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x63
+        self.BatFuncCnt = 0
+        self.BatPresetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.BatFuncCnt):
+            length += self.BatPresetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.BatFuncCnt)
+        for i in range(self.BatFuncCnt):
+            data = CommFunc.WriteString(data, self.BatPresetList[i].GetLength(), self.BatPresetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                BatFuncCnt:%d,
+                                BatPresetList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.BatFuncCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCBatPresetSwitchInfo=tagSCBatPresetSwitchInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCBatPresetSwitchInfo.Head.Cmd,m_NAtagSCBatPresetSwitchInfo.Head.SubCmd))] = m_NAtagSCBatPresetSwitchInfo
 
 
 #------------------------------------------------------
@@ -31117,6 +28757,356 @@
 
 
 #------------------------------------------------------
+# B1 61 功能预设信息 #tagSCFuncPresetInfoList
+
+class  tagSCFuncPreset(Structure):
+    PresetID = 0    #(BYTE PresetID)//预设方案ID
+    NameLen = 0    #(BYTE NameLen)
+    PresetName = ""    #(String PresetName)//预设名称
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PresetName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        return _pos
+
+    def Clear(self):
+        self.PresetID = 0
+        self.NameLen = 0
+        self.PresetName = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += len(self.PresetName)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.PresetID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.PresetName)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                PresetID:%d,
+                                NameLen:%d,
+                                PresetName:%s
+                                '''\
+                                %(
+                                self.PresetID,
+                                self.NameLen,
+                                self.PresetName
+                                )
+        return DumpString
+
+
+class  tagSCFuncPresetInfo(Structure):
+    FuncPresetType = 0    #(BYTE FuncPresetType)//预设类型,1-全局战斗;2-阵容;3-命格;
+    UnlockState = 0    #(DWORD UnlockState)//该功能预设解锁状态,按预设ID二进制位运算记录是否已解锁
+    PresetCnt = 0    #(BYTE PresetCnt)
+    PresetList = list()    #(vector<tagSCFuncPreset> PresetList)//本功能下预设列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.FuncPresetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.UnlockState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PresetCnt):
+            temPresetList = tagSCFuncPreset()
+            _pos = temPresetList.ReadData(_lpData, _pos)
+            self.PresetList.append(temPresetList)
+        return _pos
+
+    def Clear(self):
+        self.FuncPresetType = 0
+        self.UnlockState = 0
+        self.PresetCnt = 0
+        self.PresetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 4
+        length += 1
+        for i in range(self.PresetCnt):
+            length += self.PresetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.FuncPresetType)
+        data = CommFunc.WriteDWORD(data, self.UnlockState)
+        data = CommFunc.WriteBYTE(data, self.PresetCnt)
+        for i in range(self.PresetCnt):
+            data = CommFunc.WriteString(data, self.PresetList[i].GetLength(), self.PresetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                FuncPresetType:%d,
+                                UnlockState:%d,
+                                PresetCnt:%d,
+                                PresetList:%s
+                                '''\
+                                %(
+                                self.FuncPresetType,
+                                self.UnlockState,
+                                self.PresetCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagSCFuncPresetInfoList(Structure):
+    Head = tagHead()
+    FuncCnt = 0    #(BYTE FuncCnt)
+    FuncPresetList = list()    #(vector<tagSCFuncPresetInfo> FuncPresetList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x61
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.FuncCnt):
+            temFuncPresetList = tagSCFuncPresetInfo()
+            _pos = temFuncPresetList.ReadData(_lpData, _pos)
+            self.FuncPresetList.append(temFuncPresetList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x61
+        self.FuncCnt = 0
+        self.FuncPresetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.FuncCnt):
+            length += self.FuncPresetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.FuncCnt)
+        for i in range(self.FuncCnt):
+            data = CommFunc.WriteString(data, self.FuncPresetList[i].GetLength(), self.FuncPresetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FuncCnt:%d,
+                                FuncPresetList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FuncCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCFuncPresetInfoList=tagSCFuncPresetInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFuncPresetInfoList.Head.Cmd,m_NAtagSCFuncPresetInfoList.Head.SubCmd))] = m_NAtagSCFuncPresetInfoList
+
+
+#------------------------------------------------------
+# B1 62 功能预设切换信息 #tagSCFuncPresetSwitchInfo
+
+class  tagSCFuncPresetFunc(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("FuncPresetType", c_ubyte),    #预设类型,2-阵容;3-命格;
+                  ("FuncPresetID", c_ubyte),    #该全局战斗预设下本功能使用的预设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.FuncPresetType = 0
+        self.FuncPresetID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCFuncPresetFunc)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 62 功能预设切换信息 //tagSCFuncPresetSwitchInfo:
+                                FuncPresetType:%d,
+                                FuncPresetID:%d
+                                '''\
+                                %(
+                                self.FuncPresetType,
+                                self.FuncPresetID
+                                )
+        return DumpString
+
+
+class  tagSCFuncPresetBat(Structure):
+    BatPresetID = 0    #(BYTE BatPresetID)//所属全局战斗预设ID
+    FuncCnt = 0    #(BYTE FuncCnt)
+    FuncPresetList = list()    #(vector<tagSCFuncPresetFunc> FuncPresetList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.BatPresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.FuncCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.FuncCnt):
+            temFuncPresetList = tagSCFuncPresetFunc()
+            _pos = temFuncPresetList.ReadData(_lpData, _pos)
+            self.FuncPresetList.append(temFuncPresetList)
+        return _pos
+
+    def Clear(self):
+        self.BatPresetID = 0
+        self.FuncCnt = 0
+        self.FuncPresetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        for i in range(self.FuncCnt):
+            length += self.FuncPresetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.BatPresetID)
+        data = CommFunc.WriteBYTE(data, self.FuncCnt)
+        for i in range(self.FuncCnt):
+            data = CommFunc.WriteString(data, self.FuncPresetList[i].GetLength(), self.FuncPresetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                BatPresetID:%d,
+                                FuncCnt:%d,
+                                FuncPresetList:%s
+                                '''\
+                                %(
+                                self.BatPresetID,
+                                self.FuncCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagSCFuncPresetSwitchInfo(Structure):
+    Head = tagHead()
+    BatPresetCnt = 0    #(BYTE BatPresetCnt)
+    BatPresetList = list()    #(vector<tagSCFuncPresetBat> BatPresetList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x62
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.BatPresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.BatPresetCnt):
+            temBatPresetList = tagSCFuncPresetBat()
+            _pos = temBatPresetList.ReadData(_lpData, _pos)
+            self.BatPresetList.append(temBatPresetList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x62
+        self.BatPresetCnt = 0
+        self.BatPresetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.BatPresetCnt):
+            length += self.BatPresetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.BatPresetCnt)
+        for i in range(self.BatPresetCnt):
+            data = CommFunc.WriteString(data, self.BatPresetList[i].GetLength(), self.BatPresetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                BatPresetCnt:%d,
+                                BatPresetList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.BatPresetCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCFuncPresetSwitchInfo=tagSCFuncPresetSwitchInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFuncPresetSwitchInfo.Head.Cmd,m_NAtagSCFuncPresetSwitchInfo.Head.SubCmd))] = m_NAtagSCFuncPresetSwitchInfo
+
+
+#------------------------------------------------------
 # B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
 
 class  tagMCFuncSysPrivilegeInfo(Structure):
@@ -31469,11 +29459,10 @@
 
 
 #------------------------------------------------------
-# B1 24 阵容信息 #tagSCLineupInfo
+# B1 24 武将预设信息 #tagSCHeroPresetInfo
 
-class  tagSCLineup(Structure):
-    LineupID = 0    #(BYTE LineupID)// 阵容ID
-    ShapeType = 0    #(BYTE ShapeType)// 阵型
+class  tagSCHeroPreset(Structure):
+    PresetID = 0    #(BYTE PresetID)//阵容方案预设ID
     HeroCnt = 0    #(BYTE HeroCnt)
     HeroItemIndexList = list()    #(vector<WORD> HeroItemIndexList)// 所在武将背包索引+1列表 [站位1物品索引+1, 站位2, ...],站位无武将时为0
     data = None
@@ -31484,8 +29473,7 @@
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        self.LineupID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ShapeType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PresetID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.HeroCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.HeroCnt):
             value,_pos=CommFunc.ReadWORD(_lpData,_pos)
@@ -31493,8 +29481,7 @@
         return _pos
 
     def Clear(self):
-        self.LineupID = 0
-        self.ShapeType = 0
+        self.PresetID = 0
         self.HeroCnt = 0
         self.HeroItemIndexList = list()
         return
@@ -31503,15 +29490,13 @@
         length = 0
         length += 1
         length += 1
-        length += 1
         length += 2 * self.HeroCnt
 
         return length
 
     def GetBuffer(self):
         data = ''
-        data = CommFunc.WriteBYTE(data, self.LineupID)
-        data = CommFunc.WriteBYTE(data, self.ShapeType)
+        data = CommFunc.WriteBYTE(data, self.PresetID)
         data = CommFunc.WriteBYTE(data, self.HeroCnt)
         for i in range(self.HeroCnt):
             data = CommFunc.WriteWORD(data, self.HeroItemIndexList[i])
@@ -31519,24 +29504,22 @@
 
     def OutputString(self):
         DumpString = '''
-                                LineupID:%d,
-                                ShapeType:%d,
+                                PresetID:%d,
                                 HeroCnt:%d,
                                 HeroItemIndexList:%s
                                 '''\
                                 %(
-                                self.LineupID,
-                                self.ShapeType,
+                                self.PresetID,
                                 self.HeroCnt,
                                 "..."
                                 )
         return DumpString
 
 
-class  tagSCLineupInfo(Structure):
+class  tagSCHeroPresetInfo(Structure):
     Head = tagHead()
-    LineupCnt = 0    #(BYTE LineupCnt)
-    LineupList = list()    #(vector<tagSCLineup> LineupList)
+    PresetCnt = 0    #(BYTE PresetCnt)
+    PresetList = list()    #(vector<tagSCHeroPreset> PresetList)
     data = None
 
     def __init__(self):
@@ -31548,11 +29531,11 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.LineupCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.LineupCnt):
-            temLineupList = tagSCLineup()
-            _pos = temLineupList.ReadData(_lpData, _pos)
-            self.LineupList.append(temLineupList)
+        self.PresetCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PresetCnt):
+            temPresetList = tagSCHeroPreset()
+            _pos = temPresetList.ReadData(_lpData, _pos)
+            self.PresetList.append(temPresetList)
         return _pos
 
     def Clear(self):
@@ -31560,43 +29543,43 @@
         self.Head.Clear()
         self.Head.Cmd = 0xB1
         self.Head.SubCmd = 0x24
-        self.LineupCnt = 0
-        self.LineupList = list()
+        self.PresetCnt = 0
+        self.PresetList = list()
         return
 
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
         length += 1
-        for i in range(self.LineupCnt):
-            length += self.LineupList[i].GetLength()
+        for i in range(self.PresetCnt):
+            length += self.PresetList[i].GetLength()
 
         return length
 
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.LineupCnt)
-        for i in range(self.LineupCnt):
-            data = CommFunc.WriteString(data, self.LineupList[i].GetLength(), self.LineupList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.PresetCnt)
+        for i in range(self.PresetCnt):
+            data = CommFunc.WriteString(data, self.PresetList[i].GetLength(), self.PresetList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                LineupCnt:%d,
-                                LineupList:%s
+                                PresetCnt:%d,
+                                PresetList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.LineupCnt,
+                                self.PresetCnt,
                                 "..."
                                 )
         return DumpString
 
 
-m_NAtagSCLineupInfo=tagSCLineupInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupInfo.Head.Cmd,m_NAtagSCLineupInfo.Head.SubCmd))] = m_NAtagSCLineupInfo
+m_NAtagSCHeroPresetInfo=tagSCHeroPresetInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroPresetInfo.Head.Cmd,m_NAtagSCHeroPresetInfo.Head.SubCmd))] = m_NAtagSCHeroPresetInfo
 
 
 #------------------------------------------------------
@@ -31769,6 +29752,66 @@
 
 m_NAtagSCLLMJInfo=tagSCLLMJInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
+
+
+#------------------------------------------------------
+# B1 32 命格信息 #tagSCMinggeInfo
+
+class  tagSCMinggeInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GanwuLV", c_ushort),    #感悟等级,从1开始
+                  ("GanwuExp", c_int),    #当前感悟等级经验,每级从0开始
+                  ("Lingying", c_int),    #当前灵应值
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x32
+        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 = 0x32
+        self.GanwuLV = 0
+        self.GanwuExp = 0
+        self.Lingying = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSCMinggeInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 32 命格信息 //tagSCMinggeInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GanwuLV:%d,
+                                GanwuExp:%d,
+                                Lingying:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GanwuLV,
+                                self.GanwuExp,
+                                self.Lingying
+                                )
+        return DumpString
+
+
+m_NAtagSCMinggeInfo=tagSCMinggeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCMinggeInfo.Cmd,m_NAtagSCMinggeInfo.SubCmd))] = m_NAtagSCMinggeInfo
 
 
 #------------------------------------------------------
@@ -45136,66 +43179,6 @@
 
 
 #------------------------------------------------------
-# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
-
-class  tagGCCrossYaomoBossPlayerHurtInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("HurtTotal", c_int),    # 总伤害值,小于亿部分
-                  ("HurtTotalEx", c_int),    # 总伤害值,整除亿部分
-                  ("AwardState", c_int),    # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC0
-        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 = 0xC0
-        self.SubCmd = 0x11
-        self.HurtTotal = 0
-        self.HurtTotalEx = 0
-        self.AwardState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                HurtTotal:%d,
-                                HurtTotalEx:%d,
-                                AwardState:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.HurtTotal,
-                                self.HurtTotalEx,
-                                self.AwardState
-                                )
-        return DumpString
-
-
-m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
-
-
-#------------------------------------------------------
 # C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
 
 class  tagGCCrossZoneInfo(Structure):
@@ -47073,572 +45056,6 @@
 
 
 #------------------------------------------------------
-# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
-
-class  tagGCLuckyCloudBuyLotteryRec(Structure):
-    SuperItemID = 0    #(DWORD SuperItemID)// 大奖物品ID
-    SuperItemCount = 0    #(BYTE SuperItemCount)// 大奖物品个数
-    NameLen = 0    #(BYTE NameLen)
-    PlayerName = ""    #(String PlayerName)// 中奖玩家名
-    LotteryNum = 0    #(WORD LotteryNum)// 开奖号码
-    LotteryTime = 0    #(DWORD LotteryTime)// 开奖时间戳,秒
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.LotteryNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.LotteryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.SuperItemID = 0
-        self.SuperItemCount = 0
-        self.NameLen = 0
-        self.PlayerName = ""
-        self.LotteryNum = 0
-        self.LotteryTime = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 1
-        length += 1
-        length += len(self.PlayerName)
-        length += 2
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.SuperItemID)
-        data = CommFunc.WriteBYTE(data, self.SuperItemCount)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
-        data = CommFunc.WriteWORD(data, self.LotteryNum)
-        data = CommFunc.WriteDWORD(data, self.LotteryTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                SuperItemID:%d,
-                                SuperItemCount:%d,
-                                NameLen:%d,
-                                PlayerName:%s,
-                                LotteryNum:%d,
-                                LotteryTime:%d
-                                '''\
-                                %(
-                                self.SuperItemID,
-                                self.SuperItemCount,
-                                self.NameLen,
-                                self.PlayerName,
-                                self.LotteryNum,
-                                self.LotteryTime
-                                )
-        return DumpString
-
-
-class  tagGCLuckyCloudBuyLotteryRecInfo(Structure):
-    Head = tagHead()
-    ZoneCount = 0    #(BYTE ZoneCount)// 分区数
-    ZoneIDList = list()    #(vector<BYTE> ZoneIDList)// 所有分区ID列表
-    ZoneID = 0    #(BYTE ZoneID)// 返回记录分区ID
-    Count = 0    #(WORD Count)
-    LotteryRecList = list()    #(vector<tagGCLuckyCloudBuyLotteryRec> LotteryRecList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x14
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ZoneCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.ZoneIDList.append(value)
-        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temLotteryRecList = tagGCLuckyCloudBuyLotteryRec()
-            _pos = temLotteryRecList.ReadData(_lpData, _pos)
-            self.LotteryRecList.append(temLotteryRecList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x14
-        self.ZoneCount = 0
-        self.ZoneIDList = list()
-        self.ZoneID = 0
-        self.Count = 0
-        self.LotteryRecList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1 * self.ZoneCount
-        length += 1
-        length += 2
-        for i in range(self.Count):
-            length += self.LotteryRecList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ZoneCount)
-        for i in range(self.ZoneCount):
-            data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
-        data = CommFunc.WriteBYTE(data, self.ZoneID)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.LotteryRecList[i].GetLength(), self.LotteryRecList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ZoneCount:%d,
-                                ZoneIDList:%s,
-                                ZoneID:%d,
-                                Count:%d,
-                                LotteryRecList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ZoneCount,
-                                "...",
-                                self.ZoneID,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCLuckyCloudBuyLotteryRecInfo=tagGCLuckyCloudBuyLotteryRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyLotteryRecInfo
-
-
-#------------------------------------------------------
-# C0 13 幸运云购购买号码记录 #tagGCLuckyCloudBuyNumRecInfo
-
-class  tagGCLuckyCloudBuyNumRec(Structure):
-    NameLen = 0    #(BYTE NameLen)
-    PlayerName = ""    #(String PlayerName)
-    BuyNum = 0    #(WORD BuyNum)
-    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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.BuyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.NameLen = 0
-        self.PlayerName = ""
-        self.BuyNum = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += len(self.PlayerName)
-        length += 2
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
-        data = CommFunc.WriteWORD(data, self.BuyNum)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                NameLen:%d,
-                                PlayerName:%s,
-                                BuyNum:%d
-                                '''\
-                                %(
-                                self.NameLen,
-                                self.PlayerName,
-                                self.BuyNum
-                                )
-        return DumpString
-
-
-class  tagGCLuckyCloudBuyNumRecInfo(Structure):
-    Head = tagHead()
-    RemainCount = 0    #(WORD RemainCount)// 开奖剩余份数
-    Count = 0    #(WORD Count)
-    BuyNumRecList = list()    #(vector<tagGCLuckyCloudBuyNumRec> BuyNumRecList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x13
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.RemainCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temBuyNumRecList = tagGCLuckyCloudBuyNumRec()
-            _pos = temBuyNumRecList.ReadData(_lpData, _pos)
-            self.BuyNumRecList.append(temBuyNumRecList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x13
-        self.RemainCount = 0
-        self.Count = 0
-        self.BuyNumRecList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 2
-        for i in range(self.Count):
-            length += self.BuyNumRecList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.RemainCount)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.BuyNumRecList[i].GetLength(), self.BuyNumRecList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                RemainCount:%d,
-                                Count:%d,
-                                BuyNumRecList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.RemainCount,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCLuckyCloudBuyNumRecInfo=tagGCLuckyCloudBuyNumRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyNumRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyNumRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyNumRecInfo
-
-
-#------------------------------------------------------
-# C0 12 幸运云购轮次信息 #tagGCLuckyCloudBuyRoundInfo
-
-class  tagGCLuckyCloudBuyRoundItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    # 是否拍品
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCLuckyCloudBuyRoundItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C0 12 幸运云购轮次信息 //tagGCLuckyCloudBuyRoundInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagGCLuckyCloudBuyRoundTime(Structure):
-    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
-    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
-    RoundMax = 0    #(BYTE RoundMax)// 本时段最大轮次
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.StartTime = ""
-        self.EndtTime = ""
-        self.RoundMax = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 5
-        length += 5
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, 5, self.StartTime)
-        data = CommFunc.WriteString(data, 5, self.EndtTime)
-        data = CommFunc.WriteBYTE(data, self.RoundMax)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                StartTime:%s,
-                                EndtTime:%s,
-                                RoundMax:%d
-                                '''\
-                                %(
-                                self.StartTime,
-                                self.EndtTime,
-                                self.RoundMax
-                                )
-        return DumpString
-
-
-class  tagGCLuckyCloudBuyRoundInfo(Structure):
-    Head = tagHead()
-    ZoneID = 0    #(BYTE ZoneID)// 所属分区ID
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    RoundTimeCount = 0    #(BYTE RoundTimeCount)
-    RoundTimeList = list()    #(vector<tagGCLuckyCloudBuyRoundTime> RoundTimeList)//轮次时间段
-    RoundID = 0    #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存
-    RoundNum = 0    #(BYTE RoundNum)// 当前时段第几轮
-    SuperItemID = 0    #(DWORD SuperItemID)// 大奖物品ID
-    SuperItemCount = 0    #(BYTE SuperItemCount)// 大奖物品个数
-    SuperItemMoneyType = 0    #(BYTE SuperItemMoneyType)// 大奖价值货币类型
-    SuperItemMoneyValue = 0    #(DWORD SuperItemMoneyValue)// 大奖价值
-    LVLimit = 0    #(WORD LVLimit)//开启等级
-    BaseItemCount = 0    #(BYTE BaseItemCount)// 每次购买固定奖励物品数
-    BaseItemList = list()    #(vector<tagGCLuckyCloudBuyRoundItem> BaseItemList)// 每次购买固定奖励物品信息
-    RandItemCount = 0    #(BYTE RandItemCount)// 每次购买随机奖励物品数
-    RandItemList = list()    #(vector<tagGCLuckyCloudBuyRoundItem> RandItemList)// 每次购买随机奖励物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.RoundTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RoundTimeCount):
-            temRoundTimeList = tagGCLuckyCloudBuyRoundTime()
-            _pos = temRoundTimeList.ReadData(_lpData, _pos)
-            self.RoundTimeList.append(temRoundTimeList)
-        self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SuperItemMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SuperItemMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.LVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.BaseItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BaseItemCount):
-            temBaseItemList = tagGCLuckyCloudBuyRoundItem()
-            _pos = temBaseItemList.ReadData(_lpData, _pos)
-            self.BaseItemList.append(temBaseItemList)
-        self.RandItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.RandItemCount):
-            temRandItemList = tagGCLuckyCloudBuyRoundItem()
-            _pos = temRandItemList.ReadData(_lpData, _pos)
-            self.RandItemList.append(temRandItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xC0
-        self.Head.SubCmd = 0x12
-        self.ZoneID = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.RoundTimeCount = 0
-        self.RoundTimeList = list()
-        self.RoundID = 0
-        self.RoundNum = 0
-        self.SuperItemID = 0
-        self.SuperItemCount = 0
-        self.SuperItemMoneyType = 0
-        self.SuperItemMoneyValue = 0
-        self.LVLimit = 0
-        self.BaseItemCount = 0
-        self.BaseItemList = list()
-        self.RandItemCount = 0
-        self.RandItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        for i in range(self.RoundTimeCount):
-            length += self.RoundTimeList[i].GetLength()
-        length += 4
-        length += 1
-        length += 4
-        length += 1
-        length += 1
-        length += 4
-        length += 2
-        length += 1
-        for i in range(self.BaseItemCount):
-            length += self.BaseItemList[i].GetLength()
-        length += 1
-        for i in range(self.RandItemCount):
-            length += self.RandItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ZoneID)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.RoundTimeCount)
-        for i in range(self.RoundTimeCount):
-            data = CommFunc.WriteString(data, self.RoundTimeList[i].GetLength(), self.RoundTimeList[i].GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.RoundID)
-        data = CommFunc.WriteBYTE(data, self.RoundNum)
-        data = CommFunc.WriteDWORD(data, self.SuperItemID)
-        data = CommFunc.WriteBYTE(data, self.SuperItemCount)
-        data = CommFunc.WriteBYTE(data, self.SuperItemMoneyType)
-        data = CommFunc.WriteDWORD(data, self.SuperItemMoneyValue)
-        data = CommFunc.WriteWORD(data, self.LVLimit)
-        data = CommFunc.WriteBYTE(data, self.BaseItemCount)
-        for i in range(self.BaseItemCount):
-            data = CommFunc.WriteString(data, self.BaseItemList[i].GetLength(), self.BaseItemList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.RandItemCount)
-        for i in range(self.RandItemCount):
-            data = CommFunc.WriteString(data, self.RandItemList[i].GetLength(), self.RandItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ZoneID:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                RoundTimeCount:%d,
-                                RoundTimeList:%s,
-                                RoundID:%d,
-                                RoundNum:%d,
-                                SuperItemID:%d,
-                                SuperItemCount:%d,
-                                SuperItemMoneyType:%d,
-                                SuperItemMoneyValue:%d,
-                                LVLimit:%d,
-                                BaseItemCount:%d,
-                                BaseItemList:%s,
-                                RandItemCount:%d,
-                                RandItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ZoneID,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.RoundTimeCount,
-                                "...",
-                                self.RoundID,
-                                self.RoundNum,
-                                self.SuperItemID,
-                                self.SuperItemCount,
-                                self.SuperItemMoneyType,
-                                self.SuperItemMoneyValue,
-                                self.LVLimit,
-                                self.BaseItemCount,
-                                "...",
-                                self.RandItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCLuckyCloudBuyRoundInfo=tagGCLuckyCloudBuyRoundInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyRoundInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyRoundInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyRoundInfo
-
-
-#------------------------------------------------------
 # C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo
 
 class  tagMCChampionshipPlayerInfo(Structure):
@@ -48194,58 +45611,6 @@
 
 
 #------------------------------------------------------
-# C1 08 幸运云购玩家信息 #tagMCLuckyCloudBuyPlayerInfo
-
-class  tagMCLuckyCloudBuyPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("BuyCount", c_ushort),    # 本轮已购买份数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xC1
-        self.SubCmd = 0x08
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xC1
-        self.SubCmd = 0x08
-        self.BuyCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCLuckyCloudBuyPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// C1 08 幸运云购玩家信息 //tagMCLuckyCloudBuyPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                BuyCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.BuyCount
-                                )
-        return DumpString
-
-
-m_NAtagMCLuckyCloudBuyPlayerInfo=tagMCLuckyCloudBuyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyCloudBuyPlayerInfo.Cmd,m_NAtagMCLuckyCloudBuyPlayerInfo.SubCmd))] = m_NAtagMCLuckyCloudBuyPlayerInfo
-
-
-#------------------------------------------------------
 # C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
 
 class  tagMCPrepareEnterCrossServer(Structure):
@@ -48346,12 +45711,218 @@
 
 
 #------------------------------------------------------
-# C2 02 跨服通用信息包 #tagSSCommMsg
+# C2 03 跨服中心事件同步 #tagSSCrossCenterEvent
+
+class  tagSSCrossCenterEvent(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ServerID", c_int),    
+                  ("ServerType", c_ubyte),    #服务器类型
+                  ("EventValue", c_int),    #事件值,yyyyMMddhh用于判断过天等
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC2
+        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 = 0xC2
+        self.SubCmd = 0x03
+        self.ServerID = 0
+        self.ServerType = 0
+        self.EventValue = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSSCrossCenterEvent)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C2 03 跨服中心事件同步 //tagSSCrossCenterEvent:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ServerID:%d,
+                                ServerType:%d,
+                                EventValue:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ServerID,
+                                self.ServerType,
+                                self.EventValue
+                                )
+        return DumpString
+
+
+m_NAtagSSCrossCenterEvent=tagSSCrossCenterEvent()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Cmd,m_NAtagSSCrossCenterEvent.SubCmd))] = m_NAtagSSCrossCenterEvent
+
+
+#------------------------------------------------------
+# C2 04 跨服GM命令 #tagSSGMCMD
+
+class  tagSSGMCMD(Structure):
+    Head = tagHead()
+    FromServerID = 0    #(DWORD FromServerID)//哪个服发的
+    ServerType = 0    #(BYTE ServerType)//服务器类型
+    PlayerID = 0    #(DWORD PlayerID)//哪个玩家触发发送的
+    CMDLen = 0    #(BYTE CMDLen)
+    CMDStr = ""    #(String CMDStr)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CMDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.CMDStr,_pos = CommFunc.ReadString(_lpData, _pos,self.CMDLen)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x04
+        self.FromServerID = 0
+        self.ServerType = 0
+        self.PlayerID = 0
+        self.CMDLen = 0
+        self.CMDStr = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 4
+        length += 1
+        length += len(self.CMDStr)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.FromServerID)
+        data = CommFunc.WriteBYTE(data, self.ServerType)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.CMDLen)
+        data = CommFunc.WriteString(data, self.CMDLen, self.CMDStr)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FromServerID:%d,
+                                ServerType:%d,
+                                PlayerID:%d,
+                                CMDLen:%d,
+                                CMDStr:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FromServerID,
+                                self.ServerType,
+                                self.PlayerID,
+                                self.CMDLen,
+                                self.CMDStr
+                                )
+        return DumpString
+
+
+m_NAtagSSGMCMD=tagSSGMCMD()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSGMCMD.Head.Cmd,m_NAtagSSGMCMD.Head.SubCmd))] = m_NAtagSSGMCMD
+
+
+#------------------------------------------------------
+# C2 02 服务器连接跨服成功 #tagSSServerConnOK
+
+class  tagSSServerConnOK(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ServerID", c_int),    
+                  ("ServerType", c_ubyte),    #服务器类型
+                  ("IsReconn", c_ubyte),    #是否重连的
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC2
+        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 = 0xC2
+        self.SubCmd = 0x02
+        self.ServerID = 0
+        self.ServerType = 0
+        self.IsReconn = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagSSServerConnOK)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C2 02 服务器连接跨服成功 //tagSSServerConnOK:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ServerID:%d,
+                                ServerType:%d,
+                                IsReconn:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ServerID,
+                                self.ServerType,
+                                self.IsReconn
+                                )
+        return DumpString
+
+
+m_NAtagSSServerConnOK=tagSSServerConnOK()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSServerConnOK.Cmd,m_NAtagSSServerConnOK.SubCmd))] = m_NAtagSSServerConnOK
+
+
+#------------------------------------------------------
+# C2 10 跨服通用信息包 #tagSSCommMsg
 
 class  tagSSCommMsg(Structure):
     Head = tagHead()
     FromServerID = 0    #(DWORD FromServerID)//哪个服发的
-    ServerTime = 0    #(DWORD ServerTime)//来源服务器时间戳
+    ServerType = 0    #(BYTE ServerType)//服务器类型
+    PlayerID = 0    #(DWORD PlayerID)//哪个玩家触发发送的
     TypeLen = 0    #(BYTE TypeLen)
     MsgType = ""    #(String MsgType)
     Len = 0    #(DWORD Len)
@@ -48361,14 +45932,15 @@
     def __init__(self):
         self.Clear()
         self.Head.Cmd = 0xC2
-        self.Head.SubCmd = 0x02
+        self.Head.SubCmd = 0x10
         return
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
         self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
         self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -48379,9 +45951,10 @@
         self.Head = tagHead()
         self.Head.Clear()
         self.Head.Cmd = 0xC2
-        self.Head.SubCmd = 0x02
+        self.Head.SubCmd = 0x10
         self.FromServerID = 0
-        self.ServerTime = 0
+        self.ServerType = 0
+        self.PlayerID = 0
         self.TypeLen = 0
         self.MsgType = ""
         self.Len = 0
@@ -48392,6 +45965,7 @@
         length = 0
         length += self.Head.GetLength()
         length += 4
+        length += 1
         length += 4
         length += 1
         length += len(self.MsgType)
@@ -48404,7 +45978,8 @@
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteDWORD(data, self.FromServerID)
-        data = CommFunc.WriteDWORD(data, self.ServerTime)
+        data = CommFunc.WriteBYTE(data, self.ServerType)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
         data = CommFunc.WriteBYTE(data, self.TypeLen)
         data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
         data = CommFunc.WriteDWORD(data, self.Len)
@@ -48415,7 +45990,8 @@
         DumpString = '''
                                 Head:%s,
                                 FromServerID:%d,
-                                ServerTime:%d,
+                                ServerType:%d,
+                                PlayerID:%d,
                                 TypeLen:%d,
                                 MsgType:%s,
                                 Len:%d,
@@ -48424,7 +46000,8 @@
                                 %(
                                 self.Head.OutputString(),
                                 self.FromServerID,
-                                self.ServerTime,
+                                self.ServerType,
+                                self.PlayerID,
                                 self.TypeLen,
                                 self.MsgType,
                                 self.Len,
@@ -48438,14 +46015,16 @@
 
 
 #------------------------------------------------------
-# C2 01 跨服服务器间的测试包 #tagSSTest
+# C2 01 跨服服务器心跳包 #tagSSHeart
 
-class  tagSSTest(Structure):
+class  tagSSHeart(Structure):
     _pack_ = 1
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("Data", c_int),    #测试
+                  ("ServerID", c_int),    
+                  ("ServerType", c_ubyte),    #服务器类型
+                  ("ServerTime", c_int),    #服务器时间戳
                   ]
 
     def __init__(self):
@@ -48462,28 +46041,34 @@
     def Clear(self):
         self.Cmd = 0xC2
         self.SubCmd = 0x01
-        self.Data = 0
+        self.ServerID = 0
+        self.ServerType = 0
+        self.ServerTime = 0
         return
 
     def GetLength(self):
-        return sizeof(tagSSTest)
+        return sizeof(tagSSHeart)
 
     def GetBuffer(self):
         return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''// C2 01 跨服服务器间的测试包 //tagSSTest:
+        DumpString = '''// C2 01 跨服服务器心跳包 //tagSSHeart:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                Data:%d
+                                ServerID:%d,
+                                ServerType:%d,
+                                ServerTime:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.Data
+                                self.ServerID,
+                                self.ServerType,
+                                self.ServerTime
                                 )
         return DumpString
 
 
-m_NAtagSSTest=tagSSTest()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSTest.Cmd,m_NAtagSSTest.SubCmd))] = m_NAtagSSTest
\ No newline at end of file
+m_NAtagSSHeart=tagSSHeart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSHeart.Cmd,m_NAtagSSHeart.SubCmd))] = m_NAtagSSHeart
\ No newline at end of file

--
Gitblit v1.8.0