From f635dca5e37347109d15b4ba47f4721a83c16513 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 22 八月 2018 16:17:33 +0800
Subject: [PATCH] fix:BUFF类:攻击附加真实伤害百分比

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  661 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 553 insertions(+), 108 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index efe69f1..610934e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -2667,6 +2667,114 @@
 
 
 #------------------------------------------------------
+# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
+
+class  tagDogzTimeInfoObj(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("NPCID", c_int),    # npcid
+                  ("RefreshSecond", 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.NPCID = 0
+        self.RefreshSecond = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagDogzTimeInfoObj)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
+                                NPCID:%d,
+                                RefreshSecond:%d
+                                '''\
+                                %(
+                                self.NPCID,
+                                self.RefreshSecond
+                                )
+        return DumpString
+
+
+class  tagGCDogzNPCRefreshTime(Structure):
+    Head = tagHead()
+    Cnt = 0    #(BYTE Cnt)//信息个数
+    InfoList = list()    #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Cnt):
+            temInfoList = tagDogzTimeInfoObj()
+            _pos = temInfoList.ReadData(_lpData, _pos)
+            self.InfoList.append(temInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x04
+        self.Cnt = 0
+        self.InfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Cnt):
+            length += self.InfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Cnt)
+        for i in range(self.Cnt):
+            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Cnt:%d,
+                                InfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Cnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
+
+
+#------------------------------------------------------
 # A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
 
 class  tagGCFriendSendEnergyInfo(Structure):
@@ -4129,84 +4237,6 @@
 
 
 #------------------------------------------------------
-# AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
-
-class  tagGCBossRebornInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    WorldLV = 0    #(WORD WorldLV)// 世界等级
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x07
-        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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x07
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.WorldLV = 0
-        self.LimitLV = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 2
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.WorldLV)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                WorldLV:%d,
-                                LimitLV:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.WorldLV,
-                                self.LimitLV
-                                )
-        return DumpString
-
-
-m_NAtagGCBossRebornInfo=tagGCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornInfo.Head.Cmd,m_NAtagGCBossRebornInfo.Head.SubCmd))] = m_NAtagGCBossRebornInfo
-
-
-#------------------------------------------------------
 # AC 08 boss复活点数通知 #tagGCBossRebornPoint
 
 class  tagGCBossRebornPoint(Structure):
@@ -4215,6 +4245,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("Point", c_int),    # 复活点数
+                  ("TotalPoint", c_int),    # 复活总点数
                   ]
 
     def __init__(self):
@@ -4232,6 +4263,7 @@
         self.Cmd = 0xAC
         self.SubCmd = 0x08
         self.Point = 0
+        self.TotalPoint = 0
         return
 
     def GetLength(self):
@@ -4244,12 +4276,14 @@
         DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                Point:%d
+                                Point:%d,
+                                TotalPoint:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.Point
+                                self.Point,
+                                self.TotalPoint
                                 )
         return DumpString
 
@@ -10736,6 +10770,114 @@
 
 
 #------------------------------------------------------
+# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
+
+class  tagMCDogzHelpbattleState(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("DogzID", c_ubyte),    # 神兽ID
+                  ("BatteState", c_ubyte),    #是否已助战, 0否1是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0xC1
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA3
+        self.SubCmd = 0xC1
+        self.DogzID = 0
+        self.BatteState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCDogzHelpbattleState)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                DogzID:%d,
+                                BatteState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.DogzID,
+                                self.BatteState
+                                )
+        return DumpString
+
+
+m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
+
+
+#------------------------------------------------------
+# A3 C0 神兽信息 #tagMCDogzInfo
+
+class  tagMCDogzInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("BuyHelpbattleCount", c_ubyte),    #额外购买的助战数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0xC0
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA3
+        self.SubCmd = 0xC0
+        self.BuyHelpbattleCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCDogzInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                BuyHelpbattleCount:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.BuyHelpbattleCount
+                                )
+        return DumpString
+
+
+m_NAtagMCDogzInfo=tagMCDogzInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
+
+
+#------------------------------------------------------
 # A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
 
 class  tagMCEquipDecomposeInfo(Structure):
@@ -12703,6 +12845,7 @@
     _pack_ = 1
     _fields_ = [
                   ("PriID", c_int),    # 特权ID
+                  ("State", c_ubyte),    #激活状态
                   ("CurValue", c_int),    #当前总进度
                   ("GotValue", c_int),    #已领取进度
                   ("ItemAwardState", c_ubyte),    #物品奖励是否已领取
@@ -12719,6 +12862,7 @@
 
     def Clear(self):
         self.PriID = 0
+        self.State = 0
         self.CurValue = 0
         self.GotValue = 0
         self.ItemAwardState = 0
@@ -12733,12 +12877,14 @@
     def OutputString(self):
         DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
                                 PriID:%d,
+                                State:%d,
                                 CurValue:%d,
                                 GotValue:%d,
                                 ItemAwardState:%d
                                 '''\
                                 %(
                                 self.PriID,
+                                self.State,
                                 self.CurValue,
                                 self.GotValue,
                                 self.ItemAwardState
@@ -12818,16 +12964,12 @@
 class  tagMCNPCIDCollectionCnt(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
                   ("NPCID", c_int),    #NPCID
                   ("CollectionCnt", c_ubyte),    #已采集次数
                   ]
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x26
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -12836,8 +12978,6 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x26
         self.NPCID = 0
         self.CollectionCnt = 0
         return
@@ -12850,14 +12990,10 @@
 
     def OutputString(self):
         DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
                                 NPCID:%d,
                                 CollectionCnt:%d
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
                                 self.NPCID,
                                 self.CollectionCnt
                                 )
@@ -16388,6 +16524,121 @@
 
 
 #------------------------------------------------------
+# A7 14 通知查询的NPC数量 #tagMCNPCCntList
+
+class  tagMCNPCCntInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("NPCID", c_int),    
+                  ("Cnt", 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.NPCID = 0
+        self.Cnt = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCNPCCntInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList:
+                                NPCID:%d,
+                                Cnt:%d
+                                '''\
+                                %(
+                                self.NPCID,
+                                self.Cnt
+                                )
+        return DumpString
+
+
+class  tagMCNPCCntList(Structure):
+    Head = tagHead()
+    MapID = 0    #(DWORD MapID)
+    NPCInfoCnt = 0    #(BYTE NPCInfoCnt)
+    NPCInfoList = list()    #(vector<tagMCNPCCntInfo> NPCInfoList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA7
+        self.Head.SubCmd = 0x14
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.NPCInfoCnt):
+            temNPCInfoList = tagMCNPCCntInfo()
+            _pos = temNPCInfoList.ReadData(_lpData, _pos)
+            self.NPCInfoList.append(temNPCInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA7
+        self.Head.SubCmd = 0x14
+        self.MapID = 0
+        self.NPCInfoCnt = 0
+        self.NPCInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        for i in range(self.NPCInfoCnt):
+            length += self.NPCInfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteBYTE(data, self.NPCInfoCnt)
+        for i in range(self.NPCInfoCnt):
+            data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                MapID:%d,
+                                NPCInfoCnt:%d,
+                                NPCInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.MapID,
+                                self.NPCInfoCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCNPCCntList=tagMCNPCCntList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList
+
+
+#------------------------------------------------------
 #A7 01 通知选中对象 # tagMCNotifySelectObj
 
 class  tagMCNotifySelectObj(Structure):
@@ -16453,8 +16704,6 @@
 class  tagMCNPCInfo(Structure):
     _pack_ = 1
     _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
                   ("ObjID", c_int),    
                   ("NPCID", c_int),    
                   ("NPCHP", c_int),    
@@ -16467,8 +16716,6 @@
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xA7
-        self.SubCmd = 0x06
         return
 
     def ReadData(self, stringData, _pos=0, _len=0):
@@ -16477,8 +16724,6 @@
         return _pos + self.GetLength()
 
     def Clear(self):
-        self.Cmd = 0xA7
-        self.SubCmd = 0x06
         self.ObjID = 0
         self.NPCID = 0
         self.NPCHP = 0
@@ -16497,8 +16742,6 @@
 
     def OutputString(self):
         DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList:
-                                Cmd:%s,
-                                SubCmd:%s,
                                 ObjID:%d,
                                 NPCID:%d,
                                 NPCHP:%d,
@@ -16509,8 +16752,6 @@
                                 RefreshSecond:%d
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
                                 self.ObjID,
                                 self.NPCID,
                                 self.NPCHP,
@@ -18814,6 +19055,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("FirstGoldRewardState", c_ubyte),    #首充奖励是否已领奖
+                  ("FirstGoldTry", c_ubyte),    #首充试用状态0-不可试用 1-可试用 2-已试用
                   ]
 
     def __init__(self):
@@ -18831,6 +19073,7 @@
         self.Cmd = 0xAA
         self.SubCmd = 0x02
         self.FirstGoldRewardState = 0
+        self.FirstGoldTry = 0
         return
 
     def GetLength(self):
@@ -18843,12 +19086,14 @@
         DumpString = '''// AA 02 首充信息 //tagMCFirstGoldInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                FirstGoldRewardState:%d
+                                FirstGoldRewardState:%d,
+                                FirstGoldTry:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.FirstGoldRewardState
+                                self.FirstGoldRewardState,
+                                self.FirstGoldTry
                                 )
         return DumpString
 
@@ -18866,7 +19111,6 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("FirstGoldRemainTime", c_int),    #首充提示剩余时间
-                  ("FirstGoldTry", c_ubyte),    #首充试用状态0-不可试用 1-可试用 2-已试用
                   ]
 
     def __init__(self):
@@ -18884,7 +19128,6 @@
         self.Cmd = 0xAA
         self.SubCmd = 0x08
         self.FirstGoldRemainTime = 0
-        self.FirstGoldTry = 0
         return
 
     def GetLength(self):
@@ -18897,14 +19140,12 @@
         DumpString = '''// AA 08 首充提示剩余时间 //tagMCFirstGoldTime:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                FirstGoldRemainTime:%d,
-                                FirstGoldTry:%d
+                                FirstGoldRemainTime:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.FirstGoldRemainTime,
-                                self.FirstGoldTry
+                                self.FirstGoldRemainTime
                                 )
         return DumpString
 
@@ -20431,6 +20672,210 @@
 
 
 #------------------------------------------------------
+# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
+
+class  tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
+                                ItemID:%d,
+                                ItemCount:%d,
+                                IsBind:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.ItemCount,
+                                self.IsBind
+                                )
+        return DumpString
+
+
+class  tagMCBossRebornTaskInfo(Structure):
+    TaskID = 0    #(BYTE TaskID)// id
+    TotalTimes = 0    #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
+    SingleTimes = 0    #(BYTE SingleTimes)// 单次领奖需要次数
+    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
+    AwardItem = list()    #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AwardItemCount):
+            temAwardItem = tagMCBossRebornAwardItem()
+            _pos = temAwardItem.ReadData(_lpData, _pos)
+            self.AwardItem.append(temAwardItem)
+        return _pos
+
+    def Clear(self):
+        self.TaskID = 0
+        self.TotalTimes = 0
+        self.SingleTimes = 0
+        self.AwardItemCount = 0
+        self.AwardItem = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += 1
+        length += 1
+        for i in range(self.AwardItemCount):
+            length += self.AwardItem[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.TaskID)
+        data = CommFunc.WriteBYTE(data, self.TotalTimes)
+        data = CommFunc.WriteBYTE(data, self.SingleTimes)
+        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+        for i in range(self.AwardItemCount):
+            data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                TaskID:%d,
+                                TotalTimes:%d,
+                                SingleTimes:%d,
+                                AwardItemCount:%d,
+                                AwardItem:%s
+                                '''\
+                                %(
+                                self.TaskID,
+                                self.TotalTimes,
+                                self.SingleTimes,
+                                self.AwardItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagMCBossRebornInfo(Structure):
+    Head = tagHead()
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    LimitLV = 0    #(WORD LimitLV)// 限制等级
+    TaskCnt = 0    #(BYTE TaskCnt)
+    TaskInfo = list()    #(vector<tagMCBossRebornTaskInfo> TaskInfo)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAB
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TaskCnt):
+            temTaskInfo = tagMCBossRebornTaskInfo()
+            _pos = temTaskInfo.ReadData(_lpData, _pos)
+            self.TaskInfo.append(temTaskInfo)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAB
+        self.Head.SubCmd = 0x04
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.LimitLV = 0
+        self.TaskCnt = 0
+        self.TaskInfo = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 10
+        length += 10
+        length += 2
+        length += 1
+        for i in range(self.TaskCnt):
+            length += self.TaskInfo[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 10, self.StartDate)
+        data = CommFunc.WriteString(data, 10, self.EndtDate)
+        data = CommFunc.WriteWORD(data, self.LimitLV)
+        data = CommFunc.WriteBYTE(data, self.TaskCnt)
+        for i in range(self.TaskCnt):
+            data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                LimitLV:%d,
+                                TaskCnt:%d,
+                                TaskInfo:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.StartDate,
+                                self.EndtDate,
+                                self.LimitLV,
+                                self.TaskCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
+
+
+#------------------------------------------------------
 # AB 23 摇骰子奖励回包 #tagMCDiceAward
 
 class  tagMCDiceAward(Structure):

--
Gitblit v1.8.0