From f089bf39d557fc228f7bd3b2eb8c85c7b402e7dc Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 02 十一月 2018 18:40:13 +0800
Subject: [PATCH] 4575 脱机挂测试

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  859 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 821 insertions(+), 38 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c9d94d8..ddf5afc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4234,6 +4234,114 @@
 
 
 #------------------------------------------------------
+# A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
+
+class  tagGCStoreServerBuyCnt(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("GoodsID", c_int),    #商品标识
+                  ("BuyCnt", 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.GoodsID = 0
+        self.BuyCnt = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCStoreServerBuyCnt)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 06 商城全服购买次数通知 //tagGCStoreServerBuyCntInfo:
+                                GoodsID:%d,
+                                BuyCnt:%d
+                                '''\
+                                %(
+                                self.GoodsID,
+                                self.BuyCnt
+                                )
+        return DumpString
+
+
+class  tagGCStoreServerBuyCntInfo(Structure):
+    Head = tagHead()
+    Count = 0    #(WORD Count)//数量
+    InfoList = list()    #(vector<tagGCStoreServerBuyCnt> InfoList)//次数信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x06
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temInfoList = tagGCStoreServerBuyCnt()
+            _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 = 0x06
+        self.Count = 0
+        self.InfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        for i in range(self.Count):
+            length += self.InfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                InfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
+
+
+#------------------------------------------------------
 #A9 21 角色改名结果 #tagUpdatePlayerNameResult
 
 class  tagUpdatePlayerNameResult(Structure):
@@ -6474,6 +6582,66 @@
 
 m_NAtagGCVoiceChat=tagGCVoiceChat()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B9 13 进入组队副本失败原因 #tagGCEnterTeamFBFailReason
+
+class  tagGCEnterTeamFBFailReason(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    # 请求进入的地图ID
+                  ("AskType", c_ubyte),    # 请求类型: 0-匹配请求;1-进入请求
+                  ("Reason", c_ubyte),    # 失败原因:2-次数不足;3-进入CD中;6-门票不足
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x13
+        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 = 0xB9
+        self.SubCmd = 0x13
+        self.MapID = 0
+        self.AskType = 0
+        self.Reason = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCEnterTeamFBFailReason)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 13 进入组队副本失败原因 //tagGCEnterTeamFBFailReason:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MapID:%d,
+                                AskType:%d,
+                                Reason:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MapID,
+                                self.AskType,
+                                self.Reason
+                                )
+        return DumpString
+
+
+m_NAtagGCEnterTeamFBFailReason=tagGCEnterTeamFBFailReason()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEnterTeamFBFailReason.Cmd,m_NAtagGCEnterTeamFBFailReason.SubCmd))] = m_NAtagGCEnterTeamFBFailReason
 
 
 #------------------------------------------------------
@@ -12063,6 +12231,7 @@
     _fields_ = [
                   ("FuncID", c_ubyte),    # 功能ID
                   ("State", c_ubyte),    # 是否开启
+                  ("AwardState", c_ubyte),    # 是否已领奖励
                   ]
 
     def __init__(self):
@@ -12077,6 +12246,7 @@
     def Clear(self):
         self.FuncID = 0
         self.State = 0
+        self.AwardState = 0
         return
 
     def GetLength(self):
@@ -12088,11 +12258,13 @@
     def OutputString(self):
         DumpString = '''//A3 02 功能开通状态 //tagMCFuncOpenStateList:
                                 FuncID:%d,
-                                State:%d
+                                State:%d,
+                                AwardState:%d
                                 '''\
                                 %(
                                 self.FuncID,
-                                self.State
+                                self.State,
+                                self.AwardState
                                 )
         return DumpString
 
@@ -16606,6 +16778,58 @@
 
 
 #------------------------------------------------------
+# A7 17 聊天气泡框状态 #tagMCChatBubbleBoxState
+
+class  tagMCChatBubbleBoxState(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("BoxState", c_int),    # 按二进制位存储代表是否已开启,暂支持31位,以后有需要再加
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA7
+        self.SubCmd = 0x17
+        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 = 0xA7
+        self.SubCmd = 0x17
+        self.BoxState = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCChatBubbleBoxState)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A7 17 聊天气泡框状态 //tagMCChatBubbleBoxState:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                BoxState:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.BoxState
+                                )
+        return DumpString
+
+
+m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
+
+
+#------------------------------------------------------
 # A7 13 动态障碍物状态 #tagMCDynamicBarrierState
 
 class  tagMCDynamicBarrier(Structure):
@@ -17078,6 +17302,134 @@
 
 m_NAtagMCGuideState=tagMCGuideState()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGuideState.Head.Cmd,m_NAtagMCGuideState.Head.SubCmd))] = m_NAtagMCGuideState
+
+
+#------------------------------------------------------
+# A7 16 小助手设置 #tagMCLittleHelperSet
+
+class  tagMCLittleHelperFuncSet(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("SetNum", c_ubyte),    # 托管功能设置编号1~20,每个编号对应的托管功能前端自定义
+                  ("Value1", c_int),    # 自定义值1,如果存储的是勾选信息, 按二进制位存储代表是否勾选,支持31位,每位代表的含义前端自定义
+                  ("Value2", c_int),    # 自定义值2
+                  ("Value3", c_int),    # 自定义值3
+                  ("Value4", c_int),    # 自定义值4
+                  ("Value5", c_int),    # 自定义值5
+                  ("Value6", c_int),    # 自定义值6
+                  ]
+
+    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.SetNum = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.Value3 = 0
+        self.Value4 = 0
+        self.Value5 = 0
+        self.Value6 = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCLittleHelperFuncSet)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A7 16 小助手设置 //tagMCLittleHelperSet:
+                                SetNum:%d,
+                                Value1:%d,
+                                Value2:%d,
+                                Value3:%d,
+                                Value4:%d,
+                                Value5:%d,
+                                Value6:%d
+                                '''\
+                                %(
+                                self.SetNum,
+                                self.Value1,
+                                self.Value2,
+                                self.Value3,
+                                self.Value4,
+                                self.Value5,
+                                self.Value6
+                                )
+        return DumpString
+
+
+class  tagMCLittleHelperSet(Structure):
+    Head = tagHead()
+    FuncSetCount = 0    #(BYTE FuncSetCount)// 托管功能设置数,暂支持20个
+    FuncSetList = list()    #(vector<tagMCLittleHelperFuncSet> FuncSetList)// 托管功能设置列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA7
+        self.Head.SubCmd = 0x16
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FuncSetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.FuncSetCount):
+            temFuncSetList = tagMCLittleHelperFuncSet()
+            _pos = temFuncSetList.ReadData(_lpData, _pos)
+            self.FuncSetList.append(temFuncSetList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA7
+        self.Head.SubCmd = 0x16
+        self.FuncSetCount = 0
+        self.FuncSetList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.FuncSetCount):
+            length += self.FuncSetList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.FuncSetCount)
+        for i in range(self.FuncSetCount):
+            data = CommFunc.WriteString(data, self.FuncSetList[i].GetLength(), self.FuncSetList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FuncSetCount:%d,
+                                FuncSetList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FuncSetCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCLittleHelperSet=tagMCLittleHelperSet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLittleHelperSet.Head.Cmd,m_NAtagMCLittleHelperSet.Head.SubCmd))] = m_NAtagMCLittleHelperSet
 
 
 #------------------------------------------------------
@@ -18935,6 +19287,449 @@
 
 m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
+
+
+#------------------------------------------------------
+# AA 1B 许愿池拖动结果 #tagMCActWishingDragResult
+
+class  tagMCPlayerWishingDragInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("WellType", c_ubyte),    # 库 0-可选库 1-结果库
+                  ("Index", c_ubyte),    # 索引
+                  ("ItemID", c_int),    # 物品ID
+                  ("ItemCnt", c_ushort),    # 物品数量
+                  ("IsBind", c_ubyte),    # 是否绑定
+                  ("IsSpecial", 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.WellType = 0
+        self.Index = 0
+        self.ItemID = 0
+        self.ItemCnt = 0
+        self.IsBind = 0
+        self.IsSpecial = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCPlayerWishingDragInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 1B 许愿池拖动结果 //tagMCActWishingDragResult:
+                                WellType:%d,
+                                Index:%d,
+                                ItemID:%d,
+                                ItemCnt:%d,
+                                IsBind:%d,
+                                IsSpecial:%d
+                                '''\
+                                %(
+                                self.WellType,
+                                self.Index,
+                                self.ItemID,
+                                self.ItemCnt,
+                                self.IsBind,
+                                self.IsSpecial
+                                )
+        return DumpString
+
+
+class  tagMCActWishingDragResult(Structure):
+    Head = tagHead()
+    Cnt = 0    #(BYTE Cnt)
+    InfoList = list()    #(vector<tagMCPlayerWishingDragInfo> InfoList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x1B
+        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 = tagMCPlayerWishingDragInfo()
+            _pos = temInfoList.ReadData(_lpData, _pos)
+            self.InfoList.append(temInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x1B
+        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_NAtagMCActWishingDragResult=tagMCActWishingDragResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingDragResult.Head.Cmd,m_NAtagMCActWishingDragResult.Head.SubCmd))] = m_NAtagMCActWishingDragResult
+
+
+#------------------------------------------------------
+# AA 19 许愿池活动信息 #tagMCActWishingWellInfo
+
+class  tagMCWishingWellItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    # 物品ID
+                  ("ItemCnt", c_ushort),    # 物品数量
+                  ("IsBind", c_ubyte),    # 是否绑定
+                  ("Mark", 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.ItemID = 0
+        self.ItemCnt = 0
+        self.IsBind = 0
+        self.Mark = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCWishingWellItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 19 许愿池活动信息 //tagMCActWishingWellInfo:
+                                ItemID:%d,
+                                ItemCnt:%d,
+                                IsBind:%d,
+                                Mark:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.ItemCnt,
+                                self.IsBind,
+                                self.Mark
+                                )
+        return DumpString
+
+
+class  tagMCActWishingWellInfo(Structure):
+    Head = tagHead()
+    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
+    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
+    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
+    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+    LimitLV = 0    #(WORD LimitLV)// 限制等级
+    Count = 0    #(WORD Count)// 物品数
+    WellItemInfo = list()    #(vector<tagMCWishingWellItem> WellItemInfo)// 随机库物品信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x19
+        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.Count):
+            temWellItemInfo = tagMCWishingWellItem()
+            _pos = temWellItemInfo.ReadData(_lpData, _pos)
+            self.WellItemInfo.append(temWellItemInfo)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x19
+        self.StartDate = ""
+        self.EndtDate = ""
+        self.IsDayReset = 0
+        self.ResetType = 0
+        self.LimitLV = 0
+        self.Count = 0
+        self.WellItemInfo = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 10
+        length += 10
+        length += 1
+        length += 1
+        length += 2
+        length += 2
+        for i in range(self.Count):
+            length += self.WellItemInfo[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.IsDayReset)
+        data = CommFunc.WriteBYTE(data, self.ResetType)
+        data = CommFunc.WriteWORD(data, self.LimitLV)
+        data = CommFunc.WriteWORD(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                StartDate:%s,
+                                EndtDate:%s,
+                                IsDayReset:%d,
+                                ResetType:%d,
+                                LimitLV:%d,
+                                Count:%d,
+                                WellItemInfo:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.StartDate,
+                                self.EndtDate,
+                                self.IsDayReset,
+                                self.ResetType,
+                                self.LimitLV,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCActWishingWellInfo=tagMCActWishingWellInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellInfo.Head.Cmd,m_NAtagMCActWishingWellInfo.Head.SubCmd))] = m_NAtagMCActWishingWellInfo
+
+
+#------------------------------------------------------
+# AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo
+
+class  tagMCPlayerWishingWellItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    # 物品ID
+                  ("ItemCnt", c_ushort),    # 物品数量
+                  ("IsBind", c_ubyte),    # 是否绑定
+                  ("IsSpecial", 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.ItemCnt = 0
+        self.IsBind = 0
+        self.IsSpecial = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCPlayerWishingWellItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 1A 许愿池活动玩家信息 //tagMCActWishingWellPlayerInfo:
+                                ItemID:%d,
+                                ItemCnt:%d,
+                                IsBind:%d,
+                                IsSpecial:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.ItemCnt,
+                                self.IsBind,
+                                self.IsSpecial
+                                )
+        return DumpString
+
+
+class  tagMCActWishingWellPlayerInfo(Structure):
+    Head = tagHead()
+    FreeStartTime = 0    #(DWORD FreeStartTime)// 免费开始倒计时时间
+    WishCnt = 0    #(DWORD WishCnt)// 许愿付费刷新次数
+    WellItemCnt = 0    #(BYTE WellItemCnt)//许愿池物品数量
+    WellItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> WellItemInfo)// 随机库物品信息
+    CurAwardCnt = 0    #(BYTE CurAwardCnt)// 当前奖励物品数量
+    CurAwardItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> CurAwardItemInfo)// 当前奖励物品
+    LastAwardCnt = 0    #(BYTE LastAwardCnt)// 可领取奖励物品数量
+    LastAwardItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> LastAwardItemInfo)// 可领取奖励物品
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x1A
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FreeStartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.WishCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.WellItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.WellItemCnt):
+            temWellItemInfo = tagMCPlayerWishingWellItem()
+            _pos = temWellItemInfo.ReadData(_lpData, _pos)
+            self.WellItemInfo.append(temWellItemInfo)
+        self.CurAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CurAwardCnt):
+            temCurAwardItemInfo = tagMCPlayerWishingWellItem()
+            _pos = temCurAwardItemInfo.ReadData(_lpData, _pos)
+            self.CurAwardItemInfo.append(temCurAwardItemInfo)
+        self.LastAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.LastAwardCnt):
+            temLastAwardItemInfo = tagMCPlayerWishingWellItem()
+            _pos = temLastAwardItemInfo.ReadData(_lpData, _pos)
+            self.LastAwardItemInfo.append(temLastAwardItemInfo)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x1A
+        self.FreeStartTime = 0
+        self.WishCnt = 0
+        self.WellItemCnt = 0
+        self.WellItemInfo = list()
+        self.CurAwardCnt = 0
+        self.CurAwardItemInfo = list()
+        self.LastAwardCnt = 0
+        self.LastAwardItemInfo = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.WellItemCnt):
+            length += self.WellItemInfo[i].GetLength()
+        length += 1
+        for i in range(self.CurAwardCnt):
+            length += self.CurAwardItemInfo[i].GetLength()
+        length += 1
+        for i in range(self.LastAwardCnt):
+            length += self.LastAwardItemInfo[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.FreeStartTime)
+        data = CommFunc.WriteDWORD(data, self.WishCnt)
+        data = CommFunc.WriteBYTE(data, self.WellItemCnt)
+        for i in range(self.WellItemCnt):
+            data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.CurAwardCnt)
+        for i in range(self.CurAwardCnt):
+            data = CommFunc.WriteString(data, self.CurAwardItemInfo[i].GetLength(), self.CurAwardItemInfo[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.LastAwardCnt)
+        for i in range(self.LastAwardCnt):
+            data = CommFunc.WriteString(data, self.LastAwardItemInfo[i].GetLength(), self.LastAwardItemInfo[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FreeStartTime:%d,
+                                WishCnt:%d,
+                                WellItemCnt:%d,
+                                WellItemInfo:%s,
+                                CurAwardCnt:%d,
+                                CurAwardItemInfo:%s,
+                                LastAwardCnt:%d,
+                                LastAwardItemInfo:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FreeStartTime,
+                                self.WishCnt,
+                                self.WellItemCnt,
+                                "...",
+                                self.CurAwardCnt,
+                                "...",
+                                self.LastAwardCnt,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCActWishingWellPlayerInfo=tagMCActWishingWellPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellPlayerInfo.Head.Cmd,m_NAtagMCActWishingWellPlayerInfo.Head.SubCmd))] = m_NAtagMCActWishingWellPlayerInfo
 
 
 #------------------------------------------------------
@@ -21136,64 +21931,52 @@
 # AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
 
 class  tagMCSuperGiftInfo(Structure):
-    Head = tagHead()
-    GiftID = 0    #(DWORD GiftID)//商品ID
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    data = None
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("StartTime", c_int),    
+                  ]
 
     def __init__(self):
         self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x16
+        self.Cmd = 0xAA
+        self.SubCmd = 0x16
         return
 
-    def ReadData(self, _lpData, _pos=0, _Len=0):
+    def ReadData(self, stringData, _pos=0, _len=0):
         self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        return _pos
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
 
     def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x16
-        self.GiftID = 0
-        self.EndtDate = ""
+        self.Cmd = 0xAA
+        self.SubCmd = 0x16
+        self.StartTime = 0
         return
 
     def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 10
-
-        return length
+        return sizeof(tagMCSuperGiftInfo)
 
     def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.GiftID)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        return data
+        return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                GiftID:%d,
-                                EndtDate:%s
+        DumpString = '''// AA 16 通知超值礼包信息 //tagMCSuperGiftInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                StartTime:%d
                                 '''\
                                 %(
-                                self.Head.OutputString(),
-                                self.GiftID,
-                                self.EndtDate
+                                self.Cmd,
+                                self.SubCmd,
+                                self.StartTime
                                 )
         return DumpString
 
 
 m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Head.Cmd,m_NAtagMCSuperGiftInfo.Head.SubCmd))] = m_NAtagMCSuperGiftInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Cmd,m_NAtagMCSuperGiftInfo.SubCmd))] = m_NAtagMCSuperGiftInfo
 
 
 #------------------------------------------------------

--
Gitblit v1.8.0