From 6d2905e461b22a1184f21d9df139e38b2ace6825 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 三月 2021 10:13:26 +0800
Subject: [PATCH] 8807 【BT2】【后端】Part1 14、投资返利送充值券(A541领取投资奖励注册函数名修改);

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 1,261 insertions(+), 30 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index a1fbe33..ed0706d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
     Head = tagHead()
     Type = 0    #(BYTE Type)//类型
     Count = 0    #(WORD Count)//数量
-    UniversalGameRec = list()    #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count    
+    UniversalGameRec = list()    #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count	
     data = None
 
     def __init__(self):
@@ -1133,7 +1133,7 @@
     FamilyID = 0    #(DWORD FamilyID)//家族ID
     ActionType = 0    #(BYTE ActionType)//类型
     Count = 0    #(WORD Count)//数量
-    FamilyActionList = list()    #(vector<tagGCFamilyAction> FamilyActionList)//size = Count    
+    FamilyActionList = list()    #(vector<tagGCFamilyAction> FamilyActionList)//size = Count	
     data = None
 
     def __init__(self):
@@ -1402,7 +1402,7 @@
     Time = 0    #(DWORD Time)//时间
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
     MoneyType = 0    #(BYTE MoneyType)//金钱类型
-    MoneyNum = 0    #(WORD MoneyNum)//金钱数量
+    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     GetWay = 0    #(BYTE GetWay)//获得途径
     PacketCnt = 0    #(BYTE PacketCnt)//可抢个数
     State = 0    #(BYTE State)//0未发,1未领取,2已领取,3全部领完
@@ -1421,7 +1421,7 @@
         self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1450,7 +1450,7 @@
         length += 4
         length += 1
         length += 1
-        length += 2
+        length += 4
         length += 1
         length += 1
         length += 1
@@ -1466,7 +1466,7 @@
         data = CommFunc.WriteDWORD(data, self.Time)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
         data = CommFunc.WriteBYTE(data, self.MoneyType)
-        data = CommFunc.WriteWORD(data, self.MoneyNum)
+        data = CommFunc.WriteDWORD(data, self.MoneyNum)
         data = CommFunc.WriteBYTE(data, self.GetWay)
         data = CommFunc.WriteBYTE(data, self.PacketCnt)
         data = CommFunc.WriteBYTE(data, self.State)
@@ -3352,8 +3352,8 @@
     IsAlive = 0    #(BYTE IsAlive)// 是否存活
     RecordLen = 0    #(WORD RecordLen)// 长度
     KillRecord = ""    #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
-    RefreshSecond = 0    #(DWORD RefreshSecond)// 刷新倒计时, 秒    
-    RefreshCD = 0    #(DWORD RefreshCD)// 刷新总CD时, 秒    
+    RefreshSecond = 0    #(DWORD RefreshSecond)// 刷新倒计时, 秒	
+    RefreshCD = 0    #(DWORD RefreshCD)// 刷新总CD时, 秒	
     data = None
 
     def __init__(self):
@@ -3792,7 +3792,7 @@
     EvolveLV = 0    #(BYTE EvolveLV)//进化等级
     WashLV = 0    #(BYTE WashLV)//洗练等级
     WashValueCount = 0    #(BYTE WashValueCount)
-    WashValueList = list()    #(vector<WORD> WashValueList)//洗练值
+    WashValueList = list()    #(vector<DWORD> WashValueList)//洗练值
     StoneIDCount = 0    #(BYTE StoneIDCount)
     StoneIDList = list()    #(vector<DWORD> StoneIDList)//宝石
     ClassEquipCount = 0    #(BYTE ClassEquipCount)
@@ -3816,7 +3816,7 @@
         self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.WashValueCount):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.WashValueList.append(value)
         self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.StoneIDCount):
@@ -3858,7 +3858,7 @@
         length += 1
         length += 1
         length += 1
-        length += 2 * self.WashValueCount
+        length += 4 * self.WashValueCount
         length += 1
         length += 4 * self.StoneIDCount
         length += 1
@@ -3878,7 +3878,7 @@
         data = CommFunc.WriteBYTE(data, self.WashLV)
         data = CommFunc.WriteBYTE(data, self.WashValueCount)
         for i in range(self.WashValueCount):
-            data = CommFunc.WriteWORD(data, self.WashValueList[i])
+            data = CommFunc.WriteDWORD(data, self.WashValueList[i])
         data = CommFunc.WriteBYTE(data, self.StoneIDCount)
         for i in range(self.StoneIDCount):
             data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
@@ -4318,7 +4318,7 @@
     Count = 0    #(DWORD Count)//数量
     IsBind = 0    #(BYTE IsBind)//是否绑定
     UserDataLen = 0    #(DWORD UserDataLen)
-    UserData = ""    #(String UserData)//自定义数据    
+    UserData = ""    #(String UserData)//自定义数据	
     data = None
 
     def __init__(self):
@@ -4559,7 +4559,7 @@
     Name = ""    #(char Name[33])
     LV = 0    #(DWORD LV)//等级
     Job = 0    #(BYTE Job)
-    RealmLV = 0    #(WORD RealmLV)//境界    
+    RealmLV = 0    #(WORD RealmLV)//境界	
     data = None
 
     def __init__(self):
@@ -6650,7 +6650,7 @@
 class  tagFamilyArrestOverStateInfo(Structure):
     Head = tagHead()
     Count = 0    #(WORD Count)
-    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count    
+    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count	
     data = None
 
     def __init__(self):
@@ -7717,7 +7717,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
-                  ("RefreshType", c_ubyte),    #参考CDBPlayerRefresh__    
+                  ("RefreshType", c_ubyte),    #参考CDBPlayerRefresh__	
                   ("Value", c_int),    
                   ]
 
@@ -7773,7 +7773,7 @@
 
 class  tagGCVoiceChat(Structure):
     Head = tagHead()
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域    
+    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域	
     SrcNameLen = 0    #(BYTE SrcNameLen)
     SrcName = ""    #(String SrcName)//size = SrcNameLen
     PlayerID = 0    #(DWORD PlayerID)
@@ -9513,7 +9513,7 @@
     ItemGUID = ""    #(char ItemGUID[40])
     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
     AddTime = ""    #(char AddTime[19])//上架时间
-    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID    
+    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID	
     BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
     BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
     data = None
@@ -11379,8 +11379,8 @@
 
 class  tagGCCrossRealmPKBillboardInfo(Structure):
     Head = tagHead()
-    ZoneID = 0    #(BYTE ZoneID)// 赛区ID    
-    SeasonID = 0    #(BYTE SeasonID)// 赛季ID    
+    ZoneID = 0    #(BYTE ZoneID)// 赛区ID	
+    SeasonID = 0    #(BYTE SeasonID)// 赛季ID	
     Count = 0    #(WORD Count)
     PKBillboardList = list()    #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
     data = None
@@ -12397,7 +12397,7 @@
     BackpackLV = 0    #(BYTE BackpackLV)//背包等级
     WarehouseLV = 0    #(BYTE WarehouseLV)//仓库等级
     TeamID = 0    #(DWORD TeamID)//队伍ID
-    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票        类型为MoneyType
+    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票		类型为MoneyType
     UseSilverType = 0    #(BYTE UseSilverType)//默认用的银子/银票
     AttackMode = 0    #(BYTE AttackMode)//攻击模式
     LastWeekOnlineTime = 0    #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -15591,7 +15591,7 @@
 
 
 class  tagMCEquipPartXLAttr(Structure):
-    EquipPlace = 0    #(BYTE EquipPlace)// 装备位    
+    EquipPlace = 0    #(BYTE EquipPlace)// 装备位	
     XLAttrLV = 0    #(BYTE XLAttrLV)// 洗练等级
     XLAttrCnt = 0    #(BYTE XLAttrCnt)// 属性条数
     XLAttrList = list()    #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -17134,6 +17134,97 @@
 
 
 #------------------------------------------------------
+# A3 38 投资理财信息 #tagMCInvestInfo
+
+class  tagMCInvestInfo(Structure):
+    Head = tagHead()
+    InvestType = 0    #(BYTE InvestType)// 投资类型
+    CurDay = 0    #(WORD CurDay)// 当前天数,投资第一天为1
+    ValueCount = 0    #(BYTE ValueCount)
+    RewardValue = list()    #(vector<DWORD> RewardValue)//领奖记录值,按投资回报索引位记录是否已领取
+    ProgressValue = list()    #(vector<DWORD> ProgressValue)//投资相关可领取进度记录值:  9登录投资-记录已登录天数;11Boss投资-按回报索引位记录是否已击杀该boss
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x38
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.CurDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ValueCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.RewardValue.append(value)
+        for i in range(self.ValueCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ProgressValue.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x38
+        self.InvestType = 0
+        self.CurDay = 0
+        self.ValueCount = 0
+        self.RewardValue = list()
+        self.ProgressValue = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 2
+        length += 1
+        length += 4 * self.ValueCount
+        length += 4 * self.ValueCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.InvestType)
+        data = CommFunc.WriteWORD(data, self.CurDay)
+        data = CommFunc.WriteBYTE(data, self.ValueCount)
+        for i in range(self.ValueCount):
+            data = CommFunc.WriteDWORD(data, self.RewardValue[i])
+        for i in range(self.ValueCount):
+            data = CommFunc.WriteDWORD(data, self.ProgressValue[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                InvestType:%d,
+                                CurDay:%d,
+                                ValueCount:%d,
+                                RewardValue:%s,
+                                ProgressValue:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.InvestType,
+                                self.CurDay,
+                                self.ValueCount,
+                                "...",
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCInvestInfo=tagMCInvestInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCInvestInfo.Head.Cmd,m_NAtagMCInvestInfo.Head.SubCmd))] = m_NAtagMCInvestInfo
+
+
+#------------------------------------------------------
 # A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
 
 class  tagMCMagicWeaponInfo(Structure):
@@ -18078,7 +18169,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("Record", c_ubyte),    #0-未领取 1-已领取    
+                  ("Record", c_ubyte),    #0-未领取 1-已领取	
                   ]
 
     def __init__(self):
@@ -22719,7 +22810,7 @@
     PlayerID = 0    #(DWORD PlayerID)//玩家ID
     EquipClassLV = 0    #(BYTE EquipClassLV)
     ItemDataSize = 0    #(WORD ItemDataSize)
-    ItemData = ""    #(String ItemData)//物品记录    
+    ItemData = ""    #(String ItemData)//物品记录	
     data = None
 
     def __init__(self):
@@ -23018,7 +23109,7 @@
     ItemDataSize = 0    #(DWORD ItemDataSize)
     ItemData = ""    #(String ItemData)//物品记录
     PlusDataSize = 0    #(DWORD PlusDataSize)
-    PlusData = ""    #(String PlusData)//扩展记录    
+    PlusData = ""    #(String PlusData)//扩展记录	
     data = None
 
     def __init__(self):
@@ -23515,7 +23606,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MakeType", c_ubyte),    #类型        TMakeItemType
+                  ("MakeType", c_ubyte),    #类型		TMakeItemType
                   ("Result", c_ubyte),    #是否成功
                   ("MakeItemID", c_int),    #合成的物品ID
                   ]
@@ -24179,7 +24270,7 @@
 
 class  tagMCActCollectWordsExchangeItem(Structure):
     ExchangeNum = 0    #(BYTE ExchangeNum)//兑换编号
-    ExchangeCountMax = 0    #(BYTE ExchangeCountMax)//最大兑换次数,0不限制
+    ExchangeCountMax = 0    #(WORD ExchangeCountMax)//最大兑换次数,0不限制
     ItemID = 0    #(DWORD ItemID)//目标物品
     ItemCount = 0    #(WORD ItemCount)
     IsBind = 0    #(BYTE IsBind)
@@ -24194,7 +24285,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ExchangeCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -24218,7 +24309,7 @@
     def GetLength(self):
         length = 0
         length += 1
-        length += 1
+        length += 2
         length += 4
         length += 2
         length += 1
@@ -24231,7 +24322,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteBYTE(data, self.ExchangeNum)
-        data = CommFunc.WriteBYTE(data, self.ExchangeCountMax)
+        data = CommFunc.WriteWORD(data, self.ExchangeCountMax)
         data = CommFunc.WriteDWORD(data, self.ItemID)
         data = CommFunc.WriteWORD(data, self.ItemCount)
         data = CommFunc.WriteBYTE(data, self.IsBind)
@@ -26741,6 +26832,7 @@
 
 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)//是否每天重置
@@ -26758,6 +26850,7 @@
     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)
@@ -26774,6 +26867,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x09
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.IsDayReset = 0
@@ -26785,6 +26879,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 1
@@ -26798,6 +26893,7 @@
     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)
@@ -26810,6 +26906,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 IsDayReset:%d,
@@ -26819,6 +26916,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.IsDayReset,
@@ -26841,6 +26939,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号
                   ("CostGoldTotal", c_int),    #本次活动已累计消费仙玉数
                   ("AwardRecord", c_int),    #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
                   ]
@@ -26859,6 +26958,7 @@
     def Clear(self):
         self.Cmd = 0xAA
         self.SubCmd = 0x10
+        self.ActNum = 0
         self.CostGoldTotal = 0
         self.AwardRecord = 0
         return
@@ -26873,12 +26973,14 @@
         DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
+                                ActNum:%d,
                                 CostGoldTotal:%d,
                                 AwardRecord:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
+                                self.ActNum,
                                 self.CostGoldTotal,
                                 self.AwardRecord
                                 )
@@ -27240,6 +27342,692 @@
 
 m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
+
+
+#------------------------------------------------------
+# 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
+    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.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.DayCount = 0
+        self.DayAwardList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 10
+        length += 10
+        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.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,
+                                DayCount:%d,
+                                DayAwardList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.StartDate,
+                                self.EndtDate,
+                                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 46 节日游历活动信息 #tagMCFeastTravelInfo
+
+class  tagMCFeastTravelAwardItem(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(tagMCFeastTravelAwardItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+                                ItemID:%d,
+                                ItemCount:%d,
+                                IsBind:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.ItemCount,
+                                self.IsBind
+                                )
+        return DumpString
+
+
+class  tagMCFeastTravelAward(Structure):
+    AwardIndex = 0    #(BYTE AwardIndex)//游历奖励索引
+    NeedTravelPoint = 0    #(WORD NeedTravelPoint)//单次领奖所需游历值
+    AwardCountMax = 0    #(WORD AwardCountMax)//最大可领取次数,0代表不限
+    AwardItemCount = 0    #(BYTE AwardItemCount)//奖励物品数
+    AwardItemList = list()    #(vector<tagMCFeastTravelAwardItem> 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.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AwardItemCount):
+            temAwardItemList = tagMCFeastTravelAwardItem()
+            _pos = temAwardItemList.ReadData(_lpData, _pos)
+            self.AwardItemList.append(temAwardItemList)
+        return _pos
+
+    def Clear(self):
+        self.AwardIndex = 0
+        self.NeedTravelPoint = 0
+        self.AwardCountMax = 0
+        self.AwardItemCount = 0
+        self.AwardItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        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.WriteWORD(data, self.NeedTravelPoint)
+        data = CommFunc.WriteWORD(data, self.AwardCountMax)
+        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,
+                                NeedTravelPoint:%d,
+                                AwardCountMax:%d,
+                                AwardItemCount:%d,
+                                AwardItemList:%s
+                                '''\
+                                %(
+                                self.AwardIndex,
+                                self.NeedTravelPoint,
+                                self.AwardCountMax,
+                                self.AwardItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagMCFeastTravelTask(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("TravelTaskID", c_ubyte),    #游历任务ID
+                  ("FinishNeedValue", c_ushort),    #单次完成所需进度
+                  ("FinishTimeMax", c_ushort),    #最大可完成次数,0代表不限
+                  ("AddTravelPoint", 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.TravelTaskID = 0
+        self.FinishNeedValue = 0
+        self.FinishTimeMax = 0
+        self.AddTravelPoint = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFeastTravelTask)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+                                TravelTaskID:%d,
+                                FinishNeedValue:%d,
+                                FinishTimeMax:%d,
+                                AddTravelPoint:%d
+                                '''\
+                                %(
+                                self.TravelTaskID,
+                                self.FinishNeedValue,
+                                self.FinishTimeMax,
+                                self.AddTravelPoint
+                                )
+        return DumpString
+
+
+class  tagMCFeastTravelInfo(Structure):
+    Head = tagHead()
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+    TravelTaskCount = 0    #(BYTE TravelTaskCount)// 游历任务数
+    TravelTaskList = list()    #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
+    TravelAwardCount = 0    #(BYTE TravelAwardCount)// 游历奖励数
+    TravelAwardList = list()    #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x46
+        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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TravelTaskCount):
+            temTravelTaskList = tagMCFeastTravelTask()
+            _pos = temTravelTaskList.ReadData(_lpData, _pos)
+            self.TravelTaskList.append(temTravelTaskList)
+        self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TravelAwardCount):
+            temTravelAwardList = tagMCFeastTravelAward()
+            _pos = temTravelAwardList.ReadData(_lpData, _pos)
+            self.TravelAwardList.append(temTravelAwardList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x46
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.ResetType = 0
+        self.TravelTaskCount = 0
+        self.TravelTaskList = list()
+        self.TravelAwardCount = 0
+        self.TravelAwardList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 10
+        length += 10
+        length += 1
+        length += 1
+        for i in range(self.TravelTaskCount):
+            length += self.TravelTaskList[i].GetLength()
+        length += 1
+        for i in range(self.TravelAwardCount):
+            length += self.TravelAwardList[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.WriteBYTE(data, self.ResetType)
+        data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
+        for i in range(self.TravelTaskCount):
+            data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
+        for i in range(self.TravelAwardCount):
+            data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                ResetType:%d,
+                                TravelTaskCount:%d,
+                                TravelTaskList:%s,
+                                TravelAwardCount:%d,
+                                TravelAwardList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.StartDate,
+                                self.EndtDate,
+                                self.ResetType,
+                                self.TravelTaskCount,
+                                "...",
+                                self.TravelAwardCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
+
+
+#------------------------------------------------------
+# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
+
+class  tagMCFeastTravelPlayerAward(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("AwardIndex", c_ubyte),    #游历奖励索引
+                  ("GetAwardCount", c_ubyte),    #已领取次数;前端判断是否可领取: 总游历值 >=  (已领取次数 + 1)  * 单次所需游历值
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.AwardIndex = 0
+        self.GetAwardCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFeastTravelPlayerAward)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+                                AwardIndex:%d,
+                                GetAwardCount:%d
+                                '''\
+                                %(
+                                self.AwardIndex,
+                                self.GetAwardCount
+                                )
+        return DumpString
+
+
+class  tagMCFeastTravelPlayerTask(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("TravelTaskID", c_ubyte),    #游历任务ID
+                  ("TravelValue", c_int),    #当前进度值,一直累加
+                  ("FinishCount", c_ubyte),    #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
+                  ]
+
+    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.TravelTaskID = 0
+        self.TravelValue = 0
+        self.FinishCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFeastTravelPlayerTask)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+                                TravelTaskID:%d,
+                                TravelValue:%d,
+                                FinishCount:%d
+                                '''\
+                                %(
+                                self.TravelTaskID,
+                                self.TravelValue,
+                                self.FinishCount
+                                )
+        return DumpString
+
+
+class  tagMCFeastTravelPlayerInfo(Structure):
+    Head = tagHead()
+    TravelPoint = 0    #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
+    TravelPlayerTaskCount = 0    #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
+    TravelPlayerTaskList = list()    #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
+    TravelPlayerAwardCount = 0    #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
+    TravelPlayerAwardList = list()    #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x47
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TravelPlayerTaskCount):
+            temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
+            _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
+            self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
+        self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TravelPlayerAwardCount):
+            temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
+            _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
+            self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x47
+        self.TravelPoint = 0
+        self.TravelPlayerTaskCount = 0
+        self.TravelPlayerTaskList = list()
+        self.TravelPlayerAwardCount = 0
+        self.TravelPlayerAwardList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        for i in range(self.TravelPlayerTaskCount):
+            length += self.TravelPlayerTaskList[i].GetLength()
+        length += 1
+        for i in range(self.TravelPlayerAwardCount):
+            length += self.TravelPlayerAwardList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.TravelPoint)
+        data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
+        for i in range(self.TravelPlayerTaskCount):
+            data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
+        for i in range(self.TravelPlayerAwardCount):
+            data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                TravelPoint:%d,
+                                TravelPlayerTaskCount:%d,
+                                TravelPlayerTaskList:%s,
+                                TravelPlayerAwardCount:%d,
+                                TravelPlayerAwardList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.TravelPoint,
+                                self.TravelPlayerTaskCount,
+                                "...",
+                                self.TravelPlayerAwardCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
 
 
 #------------------------------------------------------
@@ -27755,6 +28543,414 @@
 
 
 #------------------------------------------------------
+# 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
+    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.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.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 += 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.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,
+                                ResetType:%d,
+                                WishPoolShowCount:%d,
+                                WishPoolShowItemList:%s,
+                                BottleCount:%d,
+                                BottleInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.StartDate,
+                                self.EndtDate,
+                                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 首充信息 #tagMCFirstGoldInfo
 
 class  tagMCFirstGoldInfo(Structure):
@@ -28105,6 +29301,7 @@
 
 class  tagMCFlashGiftbagInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
@@ -28125,6 +29322,7 @@
     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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -28147,6 +29345,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x12
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.AdvanceMinutes = 0
@@ -28161,6 +29360,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 2
@@ -28178,6 +29378,7 @@
     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.WriteWORD(data, self.AdvanceMinutes)
@@ -28194,6 +29395,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 AdvanceMinutes:%d,
@@ -28206,6 +29408,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.AdvanceMinutes,
@@ -28267,6 +29470,7 @@
 
 class  tagMCFlashGiftbagPlayerInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
     Count = 0    #(BYTE Count)
     BuyCountList = list()    #(vector<tagMCFlashGiftbagBuyCount> BuyCountList)//礼包购买次数信息
     data = None
@@ -28280,6 +29484,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.Count):
             temBuyCountList = tagMCFlashGiftbagBuyCount()
@@ -28292,6 +29497,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x13
+        self.ActNum = 0
         self.Count = 0
         self.BuyCountList = list()
         return
@@ -28299,6 +29505,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 1
         for i in range(self.Count):
             length += self.BuyCountList[i].GetLength()
@@ -28308,6 +29515,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
         data = CommFunc.WriteBYTE(data, self.Count)
         for i in range(self.Count):
             data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
@@ -28316,11 +29524,13 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 Count:%d,
                                 BuyCountList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.Count,
                                 "..."
                                 )
@@ -28375,6 +29585,7 @@
 
 class  tagMCFlashSaleAppointmentInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
     IsAll = 0    #(BYTE IsAll)// 是否全部
     GoodsCount = 0    #(WORD GoodsCount)// 商品数
     GoodsList = list()    #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
@@ -28389,6 +29600,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
         for i in range(self.GoodsCount):
@@ -28402,6 +29614,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x18
+        self.ActNum = 0
         self.IsAll = 0
         self.GoodsCount = 0
         self.GoodsList = list()
@@ -28410,6 +29623,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 1
         length += 2
         for i in range(self.GoodsCount):
@@ -28420,6 +29634,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
         data = CommFunc.WriteBYTE(data, self.IsAll)
         data = CommFunc.WriteWORD(data, self.GoodsCount)
         for i in range(self.GoodsCount):
@@ -28429,12 +29644,14 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 IsAll:%d,
                                 GoodsCount:%d,
                                 GoodsList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.IsAll,
                                 self.GoodsCount,
                                 "..."
@@ -28627,6 +29844,7 @@
 
 class  tagMCFlashSaleInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
@@ -28647,6 +29865,7 @@
     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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -28669,6 +29888,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x17
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.AdvanceMinutes = 0
@@ -28683,6 +29903,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 2
@@ -28700,6 +29921,7 @@
     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.WriteWORD(data, self.AdvanceMinutes)
@@ -28716,6 +29938,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 AdvanceMinutes:%d,
@@ -28728,6 +29951,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.AdvanceMinutes,
@@ -29474,6 +30698,7 @@
 
 class  tagMCSpringSaleInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
     AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
@@ -29494,6 +30719,7 @@
     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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -29516,6 +30742,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x11
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.AdvanceMinutes = 0
@@ -29530,6 +30757,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 2
@@ -29547,6 +30775,7 @@
     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.WriteWORD(data, self.AdvanceMinutes)
@@ -29563,6 +30792,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 AdvanceMinutes:%d,
@@ -29575,6 +30805,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.AdvanceMinutes,

--
Gitblit v1.8.0