From ff3e540bb725cccaff39d0582b53a2070ad47436 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 一月 2023 17:08:27 +0800
Subject: [PATCH] 9762 【BT8】【后端】藏宝阁(删除激活古宝技能字段)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  771 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 769 insertions(+), 2 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 0919513..c0c0ffb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -15140,6 +15140,118 @@
 
 
 #------------------------------------------------------
+# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
+
+class  tagGCCrossYaomoBossPlayerHurtInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("HurtTotal", c_int),    # 总伤害值,小于亿部分
+                  ("HurtTotalEx", c_int),    # 总伤害值,整除亿部分
+                  ("AwardState", c_int),    # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x11
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x11
+        self.HurtTotal = 0
+        self.HurtTotalEx = 0
+        self.AwardState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                HurtTotal:%d,
+                                HurtTotalEx:%d,
+                                AwardState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.HurtTotal,
+                                self.HurtTotalEx,
+                                self.AwardState
+                                )
+        return DumpString
+
+
+m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
+
+
+#------------------------------------------------------
+# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
+
+class  tagGCCrossZoneInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("CommZoneID", c_ubyte),    # 所属常规分区ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x10
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x10
+        self.CommZoneID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCCrossZoneInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 10 跨服所属分区信息 //tagGCCrossZoneInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                CommZoneID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.CommZoneID
+                                )
+        return DumpString
+
+
+m_NAtagGCCrossZoneInfo=tagGCCrossZoneInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossZoneInfo.Cmd,m_NAtagGCCrossZoneInfo.SubCmd))] = m_NAtagGCCrossZoneInfo
+
+
+#------------------------------------------------------
 # C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
 
 class  tagGCLuckyCloudBuyLotteryRec(Structure):
@@ -20633,6 +20745,118 @@
 
 
 #------------------------------------------------------
+# A3 C7 古宝信息 #tagMCGubaoInfo
+
+class  tagMCGubao(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("GubaoID", c_ushort),    
+                  ("GubaoStar", c_ubyte),    
+                  ("GubaoLV", 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.GubaoID = 0
+        self.GubaoStar = 0
+        self.GubaoLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGubao)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 C7 古宝信息 //tagMCGubaoInfo:
+                                GubaoID:%d,
+                                GubaoStar:%d,
+                                GubaoLV:%d
+                                '''\
+                                %(
+                                self.GubaoID,
+                                self.GubaoStar,
+                                self.GubaoLV
+                                )
+        return DumpString
+
+
+class  tagMCGubaoInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    GubaoInfoList = list()    #(vector<tagMCGubao> GubaoInfoList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0xC7
+        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):
+            temGubaoInfoList = tagMCGubao()
+            _pos = temGubaoInfoList.ReadData(_lpData, _pos)
+            self.GubaoInfoList.append(temGubaoInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0xC7
+        self.Count = 0
+        self.GubaoInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Count):
+            length += self.GubaoInfoList[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.GubaoInfoList[i].GetLength(), self.GubaoInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                GubaoInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCGubaoInfo=tagMCGubaoInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoInfo.Head.Cmd,m_NAtagMCGubaoInfo.Head.SubCmd))] = m_NAtagMCGubaoInfo
+
+
+#------------------------------------------------------
 # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
 
 class  tagMCHistoryReChargeAwardRecord(Structure):
@@ -20802,6 +21026,114 @@
 
 m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+
+
+#------------------------------------------------------
+# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
+
+class  tagMCHorseSkinTimeInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ID", c_int),    # 对应坐骑幻化表ID
+                  ("InvalidTime", 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.ID = 0
+        self.InvalidTime = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCHorseSkinTimeInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
+                                ID:%d,
+                                InvalidTime:%d
+                                '''\
+                                %(
+                                self.ID,
+                                self.InvalidTime
+                                )
+        return DumpString
+
+
+class  tagMCHorseSkinTimeInfoList(Structure):
+    Head = tagHead()
+    TimeCnt = 0    #(BYTE TimeCnt)//个数
+    TimeInfoList = list()    #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x10
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TimeCnt):
+            temTimeInfoList = tagMCHorseSkinTimeInfo()
+            _pos = temTimeInfoList.ReadData(_lpData, _pos)
+            self.TimeInfoList.append(temTimeInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x10
+        self.TimeCnt = 0
+        self.TimeInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.TimeCnt):
+            length += self.TimeInfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.TimeCnt)
+        for i in range(self.TimeCnt):
+            data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                TimeCnt:%d,
+                                TimeInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.TimeCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
 
 
 #------------------------------------------------------
@@ -23984,10 +24316,12 @@
     Head = tagHead()
     LV = 0    #(BYTE LV)//等阶
     EatItemCount = 0    #(DWORD EatItemCount)//当前阶已吃丹个数
-    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位
+    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
     TrainTypes = 0    #(BYTE TrainTypes)//培养类型数
     TrainLVList = list()    #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
     TrainItemCountList = list()    #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+    SkinPlusStateCount = 0    #(BYTE SkinPlusStateCount)//幻化激活状态值数
+    SkinPlusStateList = list()    #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
     data = None
 
     def __init__(self):
@@ -24009,6 +24343,10 @@
         for i in range(self.TrainTypes):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.TrainItemCountList.append(value)
+        self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.SkinPlusStateCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.SkinPlusStateList.append(value)
         return _pos
 
     def Clear(self):
@@ -24022,6 +24360,8 @@
         self.TrainTypes = 0
         self.TrainLVList = list()
         self.TrainItemCountList = list()
+        self.SkinPlusStateCount = 0
+        self.SkinPlusStateList = list()
         return
 
     def GetLength(self):
@@ -24033,6 +24373,8 @@
         length += 1
         length += 4 * self.TrainTypes
         length += 4 * self.TrainTypes
+        length += 1
+        length += 4 * self.SkinPlusStateCount
 
         return length
 
@@ -24047,6 +24389,9 @@
             data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
         for i in range(self.TrainTypes):
             data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+        data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
+        for i in range(self.SkinPlusStateCount):
+            data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
         return data
 
     def OutputString(self):
@@ -24057,7 +24402,9 @@
                                 SkinPlusState:%d,
                                 TrainTypes:%d,
                                 TrainLVList:%s,
-                                TrainItemCountList:%s
+                                TrainItemCountList:%s,
+                                SkinPlusStateCount:%d,
+                                SkinPlusStateList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -24066,6 +24413,8 @@
                                 self.SkinPlusState,
                                 self.TrainTypes,
                                 "...",
+                                "...",
+                                self.SkinPlusStateCount,
                                 "..."
                                 )
         return DumpString
@@ -29074,6 +29423,424 @@
 
 
 #------------------------------------------------------
+# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
+
+class  tagMCActGodGiftItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemNum", c_ubyte),    # 物品在本库中的编号
+                  ("ItemID", c_int),    
+                  ("ItemCount", c_ushort),    
+                  ("IsBind", c_ubyte),    
+                  ("CanChooseTimes", c_ubyte),    #可选择次数,0代表不限次数
+                  ("ChooseTimes", c_ubyte),    #已选次数
+                  ("IsChoose", 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.ItemNum = 0
+        self.ItemID = 0
+        self.ItemCount = 0
+        self.IsBind = 0
+        self.CanChooseTimes = 0
+        self.ChooseTimes = 0
+        self.IsChoose = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCActGodGiftItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
+                                ItemNum:%d,
+                                ItemID:%d,
+                                ItemCount:%d,
+                                IsBind:%d,
+                                CanChooseTimes:%d,
+                                ChooseTimes:%d,
+                                IsChoose:%d
+                                '''\
+                                %(
+                                self.ItemNum,
+                                self.ItemID,
+                                self.ItemCount,
+                                self.IsBind,
+                                self.CanChooseTimes,
+                                self.ChooseTimes,
+                                self.IsChoose
+                                )
+        return DumpString
+
+
+class  tagMCActGodGiftItemLib(Structure):
+    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
+    NeedChooseCount = 0    #(BYTE NeedChooseCount)//需要选择个数
+    GodGiftItemCount = 0    #(BYTE GodGiftItemCount)//可选择物品个数
+    GodGiftItemList = list()    #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.GodGiftItemCount):
+            temGodGiftItemList = tagMCActGodGiftItem()
+            _pos = temGodGiftItemList.ReadData(_lpData, _pos)
+            self.GodGiftItemList.append(temGodGiftItemList)
+        return _pos
+
+    def Clear(self):
+        self.ItemLibType = 0
+        self.NeedChooseCount = 0
+        self.GodGiftItemCount = 0
+        self.GodGiftItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += 1
+        for i in range(self.GodGiftItemCount):
+            length += self.GodGiftItemList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.ItemLibType)
+        data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
+        data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
+        for i in range(self.GodGiftItemCount):
+            data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ItemLibType:%d,
+                                NeedChooseCount:%d,
+                                GodGiftItemCount:%d,
+                                GodGiftItemList:%s
+                                '''\
+                                %(
+                                self.ItemLibType,
+                                self.NeedChooseCount,
+                                self.GodGiftItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagMCActGodGiftInfo(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)// 活动编号
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    IsDayReset = 0    #(BYTE IsDayReset)// 是否每日重置
+    LimitLV = 0    #(WORD LimitLV)// 限制等级
+    CostMoneyType = 0    #(BYTE CostMoneyType)//消耗货币类型
+    CostMoneyValueCount = 0    #(BYTE CostMoneyValueCount)
+    CostMoneyValueList = list()    #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
+    PrizeMoneyType = 0    #(BYTE PrizeMoneyType)//奖励货币类型
+    PrizeMoneyValueCount = 0    #(BYTE PrizeMoneyValueCount)
+    PrizeMoneyValueList = list()    #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
+    ResetLimitTimes = 0    #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
+    ResetCountMax = 0    #(BYTE ResetCountMax)//最大可重置奖池次数
+    IsAwardPoolOK = 0    #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
+    ItemLibCount = 0    #(BYTE ItemLibCount)//奖池库个数	
+    ItemLibList = list()    #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x60
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CostMoneyValueCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.CostMoneyValueList.append(value)
+        self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PrizeMoneyValueCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.PrizeMoneyValueList.append(value)
+        self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemLibCount):
+            temItemLibList = tagMCActGodGiftItemLib()
+            _pos = temItemLibList.ReadData(_lpData, _pos)
+            self.ItemLibList.append(temItemLibList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x60
+        self.ActNum = 0
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.IsDayReset = 0
+        self.LimitLV = 0
+        self.CostMoneyType = 0
+        self.CostMoneyValueCount = 0
+        self.CostMoneyValueList = list()
+        self.PrizeMoneyType = 0
+        self.PrizeMoneyValueCount = 0
+        self.PrizeMoneyValueList = list()
+        self.ResetLimitTimes = 0
+        self.ResetCountMax = 0
+        self.IsAwardPoolOK = 0
+        self.ItemLibCount = 0
+        self.ItemLibList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 10
+        length += 10
+        length += 1
+        length += 2
+        length += 1
+        length += 1
+        length += 4 * self.CostMoneyValueCount
+        length += 1
+        length += 1
+        length += 4 * self.PrizeMoneyValueCount
+        length += 1
+        length += 1
+        length += 1
+        length += 1
+        for i in range(self.ItemLibCount):
+            length += self.ItemLibList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteString(data, 10, self.StartDate)
+        data = CommFunc.WriteString(data, 10, self.EndtDate)
+        data = CommFunc.WriteBYTE(data, self.IsDayReset)
+        data = CommFunc.WriteWORD(data, self.LimitLV)
+        data = CommFunc.WriteBYTE(data, self.CostMoneyType)
+        data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
+        for i in range(self.CostMoneyValueCount):
+            data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
+        data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
+        data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
+        for i in range(self.PrizeMoneyValueCount):
+            data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
+        data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
+        data = CommFunc.WriteBYTE(data, self.ResetCountMax)
+        data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
+        data = CommFunc.WriteBYTE(data, self.ItemLibCount)
+        for i in range(self.ItemLibCount):
+            data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                IsDayReset:%d,
+                                LimitLV:%d,
+                                CostMoneyType:%d,
+                                CostMoneyValueCount:%d,
+                                CostMoneyValueList:%s,
+                                PrizeMoneyType:%d,
+                                PrizeMoneyValueCount:%d,
+                                PrizeMoneyValueList:%s,
+                                ResetLimitTimes:%d,
+                                ResetCountMax:%d,
+                                IsAwardPoolOK:%d,
+                                ItemLibCount:%d,
+                                ItemLibList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.StartDate,
+                                self.EndtDate,
+                                self.IsDayReset,
+                                self.LimitLV,
+                                self.CostMoneyType,
+                                self.CostMoneyValueCount,
+                                "...",
+                                self.PrizeMoneyType,
+                                self.PrizeMoneyValueCount,
+                                "...",
+                                self.ResetLimitTimes,
+                                self.ResetCountMax,
+                                self.IsAwardPoolOK,
+                                self.ItemLibCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
+
+
+#------------------------------------------------------
+# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
+
+class  tagMCActGodGiftAwardItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemLibType", c_ubyte),    #物品库类型
+                  ("ItemNum", 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.ItemLibType = 0
+        self.ItemNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCActGodGiftAwardItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
+                                ItemLibType:%d,
+                                ItemNum:%d
+                                '''\
+                                %(
+                                self.ItemLibType,
+                                self.ItemNum
+                                )
+        return DumpString
+
+
+class  tagMCActGodGiftPlayerInfo(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)// 活动编号
+    ResetCount = 0    #(BYTE ResetCount)// 本次活动已重置次数
+    AwardItemCount = 0    #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
+    AwardItemList = list()    #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x61
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AwardItemCount):
+            temAwardItemList = tagMCActGodGiftAwardItem()
+            _pos = temAwardItemList.ReadData(_lpData, _pos)
+            self.AwardItemList.append(temAwardItemList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x61
+        self.ActNum = 0
+        self.ResetCount = 0
+        self.AwardItemCount = 0
+        self.AwardItemList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 1
+        for i in range(self.AwardItemCount):
+            length += self.AwardItemList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteBYTE(data, self.ResetCount)
+        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 = '''
+                                Head:%s,
+                                ActNum:%d,
+                                ResetCount:%d,
+                                AwardItemCount:%d,
+                                AwardItemList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.ResetCount,
+                                self.AwardItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
+
+
+#------------------------------------------------------
 # AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
 
 class  tagMCActGrowupBuyCTGItem(Structure):

--
Gitblit v1.8.0