From 33afb14fa1def4e211793532bbeb463f9a0deaf8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 11 二月 2026 20:05:46 +0800
Subject: [PATCH] 16 卡牌服务端(删除旧的七天登录、活动登录、节日登录、节日祝福、等级奖励;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 1672 +++++++++++++++-------------------------------------------
 1 files changed, 443 insertions(+), 1,229 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 1068d12..6f221a9 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):
@@ -7043,62 +7164,6 @@
 
 
 #------------------------------------------------------
-#A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
-
-class  tagMCPlayerLVAwardGetRecord(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LVAwardGetRecord", c_int),    # 按二进制位标示领取记录,每位对应的等级在配表中配置,服务端客户端对应
-                  ("VIPAwardRecord", c_int),    # 按二进制位标示vip领取记录,每位对应的等级在配表中配置,服务端客户端对应
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x0B
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x0B
-        self.LVAwardGetRecord = 0
-        self.VIPAwardRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPlayerLVAwardGetRecord)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 0B 玩家等级奖励领取记录信息 //tagMCPlayerLVAwardGetRecord:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LVAwardGetRecord:%d,
-                                VIPAwardRecord:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LVAwardGetRecord,
-                                self.VIPAwardRecord
-                                )
-        return DumpString
-
-
-m_NAtagMCPlayerLVAwardGetRecord=tagMCPlayerLVAwardGetRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerLVAwardGetRecord.Cmd,m_NAtagMCPlayerLVAwardGetRecord.SubCmd))] = m_NAtagMCPlayerLVAwardGetRecord
-
-
-#------------------------------------------------------
 #A3 0C 玩家各奖励类型领取记录信息 #tagMCPlayerRewardGetRecord
 
 class  tagMCPlayerRewardGetRecord(Structure):
@@ -10988,6 +11053,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)//限制最低可加入的玩家等级
@@ -11012,6 +11078,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)
@@ -11031,6 +11098,7 @@
         self.LeaderID = 0
         self.LeaderNameLen = 0
         self.LeaderName = ""
+        self.LeaderServerID = 0
         self.FamilyLV = 0
         self.JoinReview = 0
         self.JoinLVMin = 0
@@ -11051,6 +11119,7 @@
         length += 4
         length += 1
         length += len(self.LeaderName)
+        length += 4
         length += 1
         length += 1
         length += 2
@@ -11072,6 +11141,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)
@@ -11092,6 +11162,7 @@
                                 LeaderID:%d,
                                 LeaderNameLen:%d,
                                 LeaderName:%s,
+                                LeaderServerID:%d,
                                 FamilyLV:%d,
                                 JoinReview:%d,
                                 JoinLVMin:%d,
@@ -11110,6 +11181,7 @@
                                 self.LeaderID,
                                 self.LeaderNameLen,
                                 self.LeaderName,
+                                self.LeaderServerID,
                                 self.FamilyLV,
                                 self.JoinReview,
                                 self.JoinLVMin,
@@ -11690,6 +11762,175 @@
 
 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
 
 
 #------------------------------------------------------
@@ -13523,6 +13764,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
@@ -13553,6 +13795,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
@@ -13579,6 +13822,7 @@
         self.FamilyName = ""
         self.FamilyEmblemID = 0
         self.FamilyEmblemWord = ""
+        self.FamilyDataServerID = 0
         self.PlusDataSize = 0
         self.PlusData = ""
         return
@@ -13604,6 +13848,7 @@
         length += 4
         length += 3
         length += 4
+        length += 4
         length += len(self.PlusData)
 
         return length
@@ -13628,6 +13873,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
@@ -13652,6 +13898,7 @@
                                 FamilyName:%s,
                                 FamilyEmblemID:%d,
                                 FamilyEmblemWord:%s,
+                                FamilyDataServerID:%d,
                                 PlusDataSize:%d,
                                 PlusData:%s
                                 '''\
@@ -13674,6 +13921,7 @@
                                 self.FamilyName,
                                 self.FamilyEmblemID,
                                 self.FamilyEmblemWord,
+                                self.FamilyDataServerID,
                                 self.PlusDataSize,
                                 self.PlusData
                                 )
@@ -19304,433 +19552,6 @@
 
 
 #------------------------------------------------------
-# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
-
-class  tagMCActLoginAwardAction(Structure):
-    TemplateID = 0    #(DWORD TemplateID)// 模板ID
-    ActionType = 0    #(WORD ActionType)// 活动类别
-    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
-    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
-    Count = 0    #(WORD Count)// 物品配置长度
-    ItemInfo = ""    #(String 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.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
-        return _pos
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.ActionType = 0
-        self.TotalTimes = 0
-        self.SingleTimes = 0
-        self.Count = 0
-        self.ItemInfo = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 2
-        length += 4
-        length += 4
-        length += 2
-        length += len(self.ItemInfo)
-
-        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.WriteWORD(data, self.Count)
-        data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TemplateID:%d,
-                                ActionType:%d,
-                                TotalTimes:%d,
-                                SingleTimes:%d,
-                                Count:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.ActionType,
-                                self.TotalTimes,
-                                self.SingleTimes,
-                                self.Count,
-                                self.ItemInfo
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardDayInfo(Structure):
-    ActCnt = 0    #(BYTE ActCnt)// 数量
-    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
-    WorldLV = 0    #(WORD WorldLV)// 世界等级
-    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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.ActCnt = 0
-        self.TemplateList = list()
-        self.WorldLV = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.ActCnt
-        length += 2
-
-        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.WriteWORD(data, self.WorldLV)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ActCnt:%d,
-                                TemplateList:%s,
-                                WorldLV:%d
-                                '''\
-                                %(
-                                self.ActCnt,
-                                "...",
-                                self.WorldLV
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardInfo(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<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
-    TCount = 0    #(BYTE TCount)// 模板数
-    ActionInfo = list()    #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0C
-        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 = tagMCActLoginAwardDayInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TCount):
-            temActionInfo = tagMCActLoginAwardAction()
-            _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 = 0x0C
-        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_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
-
-
-#------------------------------------------------------
-# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
-
-class  tagMCActLoginAwardTaskInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TemplateID", c_ushort),    # 模板ID
-                  ("CurTimes", c_ushort),    #已完成次数
-                  ("GotTimes", c_ushort),    #已领取次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.CurTimes = 0
-        self.GotTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActLoginAwardTaskInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
-                                TemplateID:%d,
-                                CurTimes:%d,
-                                GotTimes:%d
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.CurTimes,
-                                self.GotTimes
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardDayPlayerInfo(Structure):
-    DayIndex = 0    #(DWORD DayIndex)//第X天
-    ACount = 0    #(DWORD ACount)//任务条目数
-    TaskList = list()    #(vector<tagMCActLoginAwardTaskInfo> 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.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.ACount):
-            temTaskList = tagMCActLoginAwardTaskInfo()
-            _pos = temTaskList.ReadData(_lpData, _pos)
-            self.TaskList.append(temTaskList)
-        return _pos
-
-    def Clear(self):
-        self.DayIndex = 0
-        self.ACount = 0
-        self.TaskList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        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.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,
-                                ACount:%d,
-                                TaskList:%s
-                                '''\
-                                %(
-                                self.DayIndex,
-                                self.ACount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0D
-        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 = tagMCActLoginAwardDayPlayerInfo()
-            _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 = 0x0D
-        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_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
-
-
-#------------------------------------------------------
 # AA 69 登录活动信息新 #tagMCActLoginNew
 
 class  tagMCActLoginNewItem(Structure):
@@ -23899,667 +23720,6 @@
 
 
 #------------------------------------------------------
-# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
-
-class  tagMCFeastLoginDayAwardItem(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(tagMCFeastLoginDayAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFeastLoginDayAward(Structure):
-    DayNum = 0    #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励
-    AwardCount = 0    #(BYTE AwardCount)
-    AwardItemList = list()    #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardCount):
-            temAwardItemList = tagMCFeastLoginDayAwardItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.DayNum = 0
-        self.AwardCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        for i in range(self.AwardCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.DayNum)
-        data = CommFunc.WriteBYTE(data, self.AwardCount)
-        for i in range(self.AwardCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayNum:%d,
-                                AwardCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.DayNum,
-                                self.AwardCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastLoginInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    DayCount = 0    #(BYTE DayCount)// 总共几天
-    DayAwardList = list()    #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x42
-        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.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DayCount):
-            temDayAwardList = tagMCFeastLoginDayAward()
-            _pos = temDayAwardList.ReadData(_lpData, _pos)
-            self.DayAwardList.append(temDayAwardList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x42
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.DayCount = 0
-        self.DayAwardList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.DayCount):
-            length += self.DayAwardList[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.DayCount)
-        for i in range(self.DayCount):
-            data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                DayCount:%d,
-                                DayAwardList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.DayCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo
-
-
-#------------------------------------------------------
-# AA 39 节日登录奖励活动玩家信息 #tagMCFeastLoginPlayerInfo
-
-class  tagMCFeastLoginPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LoginState", c_int),    # 是否已登录,按天索引0代表第1天记录当天是否已登录
-                  ("LoginAward", c_int),    # 是否已领取,按天索引0代表第1天记录当天是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x39
-        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 = 0x39
-        self.LoginState = 0
-        self.LoginAward = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastLoginPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 39 节日登录奖励活动玩家信息 //tagMCFeastLoginPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LoginState:%d,
-                                LoginAward:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LoginState,
-                                self.LoginAward
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
-
-
-#------------------------------------------------------
-# AA 43 节日祝福活动信息 #tagMCFeastWishInfo
-
-class  tagMCFeastWishBottleItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
-                  ("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.RecordIndex = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWishBottleItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo:
-                                RecordIndex:%d,
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.RecordIndex,
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishBottleInfo(Structure):
-    BottleNum = 0    #(BYTE BottleNum)//瓶子编号
-    NeedWishValue = 0    #(WORD NeedWishValue)//单次领奖所需祝福值
-    ChooseTimeMax = 0    #(BYTE ChooseTimeMax)//最大可领奖次数
-    ChoosePrizeCount = 0    #(BYTE ChoosePrizeCount)//可选择奖励个数
-    ChoosePrizeList = list()    #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ChoosePrizeCount):
-            temChoosePrizeList = tagMCFeastWishBottleItem()
-            _pos = temChoosePrizeList.ReadData(_lpData, _pos)
-            self.ChoosePrizeList.append(temChoosePrizeList)
-        return _pos
-
-    def Clear(self):
-        self.BottleNum = 0
-        self.NeedWishValue = 0
-        self.ChooseTimeMax = 0
-        self.ChoosePrizeCount = 0
-        self.ChoosePrizeList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2
-        length += 1
-        length += 1
-        for i in range(self.ChoosePrizeCount):
-            length += self.ChoosePrizeList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.BottleNum)
-        data = CommFunc.WriteWORD(data, self.NeedWishValue)
-        data = CommFunc.WriteBYTE(data, self.ChooseTimeMax)
-        data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount)
-        for i in range(self.ChoosePrizeCount):
-            data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                BottleNum:%d,
-                                NeedWishValue:%d,
-                                ChooseTimeMax:%d,
-                                ChoosePrizeCount:%d,
-                                ChoosePrizeList:%s
-                                '''\
-                                %(
-                                self.BottleNum,
-                                self.NeedWishValue,
-                                self.ChooseTimeMax,
-                                self.ChoosePrizeCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
-    WishPoolShowCount = 0    #(BYTE WishPoolShowCount)//祝福池展示物品数
-    WishPoolShowItemList = list()    #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
-    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
-    BottleInfoList = list()    #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x43
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.WishPoolShowCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.WishPoolShowItemList.append(value)
-        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BottleCount):
-            temBottleInfoList = tagMCFeastWishBottleInfo()
-            _pos = temBottleInfoList.ReadData(_lpData, _pos)
-            self.BottleInfoList.append(temBottleInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x43
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.ResetType = 0
-        self.WishPoolShowCount = 0
-        self.WishPoolShowItemList = list()
-        self.BottleCount = 0
-        self.BottleInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        length += 4 * self.WishPoolShowCount
-        length += 1
-        for i in range(self.BottleCount):
-            length += self.BottleInfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
-        for i in range(self.WishPoolShowCount):
-            data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
-        data = CommFunc.WriteBYTE(data, self.BottleCount)
-        for i in range(self.BottleCount):
-            data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                ResetType:%d,
-                                WishPoolShowCount:%d,
-                                WishPoolShowItemList:%s,
-                                BottleCount:%d,
-                                BottleInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.ResetType,
-                                self.WishPoolShowCount,
-                                "...",
-                                self.BottleCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishInfo=tagMCFeastWishInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo
-
-
-#------------------------------------------------------
-# AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo
-
-class  tagMCFeastWishPlayerBottle(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("BottleNum", c_ubyte),    #瓶子编号
-                  ("WishValue", c_ushort),    #当前可用祝福值
-                  ("ChooseRecord", 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.BottleNum = 0
-        self.WishValue = 0
-        self.ChooseRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWishPlayerBottle)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo:
-                                BottleNum:%d,
-                                WishValue:%d,
-                                ChooseRecord:%d
-                                '''\
-                                %(
-                                self.BottleNum,
-                                self.WishValue,
-                                self.ChooseRecord
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishPlayerInfo(Structure):
-    Head = tagHead()
-    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
-    PlayerBottleInfo = list()    #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x44
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BottleCount):
-            temPlayerBottleInfo = tagMCFeastWishPlayerBottle()
-            _pos = temPlayerBottleInfo.ReadData(_lpData, _pos)
-            self.PlayerBottleInfo.append(temPlayerBottleInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x44
-        self.BottleCount = 0
-        self.PlayerBottleInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.BottleCount):
-            length += self.PlayerBottleInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.BottleCount)
-        for i in range(self.BottleCount):
-            data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                BottleCount:%d,
-                                PlayerBottleInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.BottleCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo
-
-
-#------------------------------------------------------
-# AA 45 节日祝福祝福结果 #tagMCFeastWishResult
-
-class  tagMCFeastWishResult(Structure):
-    Head = tagHead()
-    AddWishValue = 0    #(WORD AddWishValue)// 本次增加的祝福值
-    WishResultLen = 0    #(WORD WishResultLen)
-    WishResult = ""    #(String WishResult)//  获得物品结果[[物品ID,个数,是否绑定], ...]
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x45
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x45
-        self.AddWishValue = 0
-        self.WishResultLen = 0
-        self.WishResult = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 2
-        length += len(self.WishResult)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.AddWishValue)
-        data = CommFunc.WriteWORD(data, self.WishResultLen)
-        data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                AddWishValue:%d,
-                                WishResultLen:%d,
-                                WishResult:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.AddWishValue,
-                                self.WishResultLen,
-                                self.WishResult
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishResult=tagMCFeastWishResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult
-
-
-#------------------------------------------------------
 # AA 02 首充信息 #tagSCFirstChargeInfo
 
 class  tagSCFirstCharge(Structure):
@@ -26377,62 +25537,6 @@
 
 
 #------------------------------------------------------
-#AA 01 累计登陆天数信息 #tagMCTotalLoginDayCntInfo
-
-class  tagMCTotalLoginDayCntInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("DayCnt", c_ushort),    #累计登陆天数
-                  ("AwardInfo", c_ushort),    #登陆领取情况
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x01
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xAA
-        self.SubCmd = 0x01
-        self.DayCnt = 0
-        self.AwardInfo = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCTotalLoginDayCntInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//AA 01 累计登陆天数信息 //tagMCTotalLoginDayCntInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                DayCnt:%d,
-                                AwardInfo:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.DayCnt,
-                                self.AwardInfo
-                                )
-        return DumpString
-
-
-m_NAtagMCTotalLoginDayCntInfo=tagMCTotalLoginDayCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalLoginDayCntInfo.Cmd,m_NAtagMCTotalLoginDayCntInfo.SubCmd))] = m_NAtagMCTotalLoginDayCntInfo
-
-
-#------------------------------------------------------
 # AA 1C 累计充值玩家活动信息 #tagMCTotalRechargePlayerInfo
 
 class  tagMCTotalRechargePlayerInfo(Structure):
@@ -27293,7 +26397,7 @@
 
 class  tagSCTravelInfo(Structure):
     Head = tagHead()
-    Energy = 0    #(BYTE Energy)//剩余体力
+    Energy = 0    #(DWORD Energy)//剩余体力
     EnergyTime = 0    #(DWORD EnergyTime)//上次恢复体力时间戳
     TravelCnt = 0    #(DWORD TravelCnt)//累计游历次数
     SceneryType = 0    #(BYTE SceneryType)//景观类型
@@ -27314,7 +26418,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -27349,7 +26453,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
-        length += 1
+        length += 4
         length += 4
         length += 4
         length += 1
@@ -27366,7 +26470,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Energy)
+        data = CommFunc.WriteDWORD(data, self.Energy)
         data = CommFunc.WriteDWORD(data, self.EnergyTime)
         data = CommFunc.WriteDWORD(data, self.TravelCnt)
         data = CommFunc.WriteBYTE(data, self.SceneryType)
@@ -45410,60 +44514,170 @@
 # 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用于判断过天等
-                  ]
+    Head = tagHead()
+    ServerID = 0    #(DWORD ServerID)
+    ServerType = 0    #(BYTE ServerType)//服务器类型
+    EventValue = 0    #(DWORD EventValue)//事件值,yyyyMMddhh用于判断过天等
+    GMLen = 0    #(BYTE GMLen)
+    GMEvent = ""    #(String GMEvent)
+    data = None
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xC2
-        self.SubCmd = 0x03
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x03
         return
 
-    def ReadData(self, stringData, _pos=0, _len=0):
+    def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.EventValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.GMLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.GMEvent,_pos = CommFunc.ReadString(_lpData, _pos,self.GMLen)
+        return _pos
 
     def Clear(self):
-        self.Cmd = 0xC2
-        self.SubCmd = 0x03
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xC2
+        self.Head.SubCmd = 0x03
         self.ServerID = 0
         self.ServerType = 0
         self.EventValue = 0
+        self.GMLen = 0
+        self.GMEvent = ""
         return
 
     def GetLength(self):
-        return sizeof(tagSSCrossCenterEvent)
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 4
+        length += 1
+        length += len(self.GMEvent)
+
+        return length
 
     def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteBYTE(data, self.ServerType)
+        data = CommFunc.WriteDWORD(data, self.EventValue)
+        data = CommFunc.WriteBYTE(data, self.GMLen)
+        data = CommFunc.WriteString(data, self.GMLen, self.GMEvent)
+        return data
 
     def OutputString(self):
-        DumpString = '''// C2 03 跨服中心事件同步 //tagSSCrossCenterEvent:
-                                Cmd:%s,
-                                SubCmd:%s,
+        DumpString = '''
+                                Head:%s,
                                 ServerID:%d,
                                 ServerType:%d,
-                                EventValue:%d
+                                EventValue:%d,
+                                GMLen:%d,
+                                GMEvent:%s
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
+                                self.Head.OutputString(),
                                 self.ServerID,
                                 self.ServerType,
-                                self.EventValue
+                                self.EventValue,
+                                self.GMLen,
+                                self.GMEvent
                                 )
         return DumpString
 
 
 m_NAtagSSCrossCenterEvent=tagSSCrossCenterEvent()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Cmd,m_NAtagSSCrossCenterEvent.SubCmd))] = m_NAtagSSCrossCenterEvent
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Head.Cmd,m_NAtagSSCrossCenterEvent.Head.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
 
 
 #------------------------------------------------------

--
Gitblit v1.8.0