From 7f4a86f84f758774920ea348835954fec6db6588 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 09 八月 2019 11:17:38 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.173on.com:10010/r/SnxxServerCode

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1025 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 816 insertions(+), 209 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 3afc13f..e2d1905 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -2121,6 +2121,58 @@
 
 
 #------------------------------------------------------
+# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
+
+class  tagGCServerCreatFamilyTimes(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Times", c_int),    #建盟次数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA4
+        self.SubCmd = 0x0D
+        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 = 0xA4
+        self.SubCmd = 0x0D
+        self.Times = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCServerCreatFamilyTimes)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Times:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Times
+                                )
+        return DumpString
+
+
+m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
+
+
+#------------------------------------------------------
 #A4 01  查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo
 
 class  tagtMemberInfo(Structure):
@@ -3371,6 +3423,190 @@
 
 
 #------------------------------------------------------
+# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
+
+class  tagGCNotifyEquipClassEquip(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Star", 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.Star = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCNotifyEquipClassEquip)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
+                                ItemID:%d,
+                                Star:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Star
+                                )
+        return DumpString
+
+
+class  tagGCNotifyEquipDetailInfo(Structure):
+    Head = tagHead()
+    ItemGUID = ""    #(char ItemGUID[40])
+    ItemID = 0    #(DWORD ItemID)
+    Star = 0    #(BYTE Star)//星级
+    PlusLV = 0    #(WORD PlusLV)//强化等级
+    EvolveLV = 0    #(BYTE EvolveLV)//进化等级
+    WashLV = 0    #(BYTE WashLV)//洗练等级
+    WashValueCount = 0    #(BYTE WashValueCount)
+    WashValueList = list()    #(vector<WORD> WashValueList)//洗练值
+    StoneIDCount = 0    #(BYTE StoneIDCount)
+    StoneIDList = list()    #(vector<DWORD> StoneIDList)//宝石
+    ClassEquipCount = 0    #(BYTE ClassEquipCount)
+    ClassEquipList = list()    #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x05
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.WashValueCount):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.WashValueList.append(value)
+        self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.StoneIDCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.StoneIDList.append(value)
+        self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ClassEquipCount):
+            temClassEquipList = tagGCNotifyEquipClassEquip()
+            _pos = temClassEquipList.ReadData(_lpData, _pos)
+            self.ClassEquipList.append(temClassEquipList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x05
+        self.ItemGUID = ""
+        self.ItemID = 0
+        self.Star = 0
+        self.PlusLV = 0
+        self.EvolveLV = 0
+        self.WashLV = 0
+        self.WashValueCount = 0
+        self.WashValueList = list()
+        self.StoneIDCount = 0
+        self.StoneIDList = list()
+        self.ClassEquipCount = 0
+        self.ClassEquipList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 40
+        length += 4
+        length += 1
+        length += 2
+        length += 1
+        length += 1
+        length += 1
+        length += 2 * self.WashValueCount
+        length += 1
+        length += 4 * self.StoneIDCount
+        length += 1
+        for i in range(self.ClassEquipCount):
+            length += self.ClassEquipList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 40, self.ItemGUID)
+        data = CommFunc.WriteDWORD(data, self.ItemID)
+        data = CommFunc.WriteBYTE(data, self.Star)
+        data = CommFunc.WriteWORD(data, self.PlusLV)
+        data = CommFunc.WriteBYTE(data, self.EvolveLV)
+        data = CommFunc.WriteBYTE(data, self.WashLV)
+        data = CommFunc.WriteBYTE(data, self.WashValueCount)
+        for i in range(self.WashValueCount):
+            data = CommFunc.WriteWORD(data, self.WashValueList[i])
+        data = CommFunc.WriteBYTE(data, self.StoneIDCount)
+        for i in range(self.StoneIDCount):
+            data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
+        data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
+        for i in range(self.ClassEquipCount):
+            data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ItemGUID:%s,
+                                ItemID:%d,
+                                Star:%d,
+                                PlusLV:%d,
+                                EvolveLV:%d,
+                                WashLV:%d,
+                                WashValueCount:%d,
+                                WashValueList:%s,
+                                StoneIDCount:%d,
+                                StoneIDList:%s,
+                                ClassEquipCount:%d,
+                                ClassEquipList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ItemGUID,
+                                self.ItemID,
+                                self.Star,
+                                self.PlusLV,
+                                self.EvolveLV,
+                                self.WashLV,
+                                self.WashValueCount,
+                                "...",
+                                self.StoneIDCount,
+                                "...",
+                                self.ClassEquipCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
 #A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
 
 class  tagGCOpenServerCampaignAwardCount(Structure):
@@ -4590,6 +4826,58 @@
 
 m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
+
+
+#------------------------------------------------------
+# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
+
+class  tagGCFamilyWarInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("WorldLV", c_ushort),    # 当前进行中的联赛世界等级
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAC
+        self.SubCmd = 0x01
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAC
+        self.SubCmd = 0x01
+        self.WorldLV = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCFamilyWarInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                WorldLV:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.WorldLV
+                                )
+        return DumpString
+
+
+m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
 
 
 #------------------------------------------------------
@@ -6482,6 +6770,162 @@
 
 m_NAtagGCVoiceChat=tagGCVoiceChat()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B3 11 聊天缓存通知 #tagGCTalkCache
+
+class  tagGCTalkCacheInfo(Structure):
+    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)//size = SrcNameLen
+    PlayerID = 0    #(DWORD PlayerID)
+    Time = 0    #(DWORD Time)
+    Len = 0    #(WORD Len)
+    Content = ""    #(String Content)//size = Len
+    Extras = ""    #(char Extras[256])//附加值列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
+        return _pos
+
+    def Clear(self):
+        self.ChannelType = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.PlayerID = 0
+        self.Time = 0
+        self.Len = 0
+        self.Content = ""
+        self.Extras = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += len(self.Name)
+        length += 4
+        length += 4
+        length += 2
+        length += len(self.Content)
+        length += 256
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.ChannelType)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteDWORD(data, self.Time)
+        data = CommFunc.WriteWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Content)
+        data = CommFunc.WriteString(data, 256, self.Extras)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ChannelType:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                PlayerID:%d,
+                                Time:%d,
+                                Len:%d,
+                                Content:%s,
+                                Extras:%s
+                                '''\
+                                %(
+                                self.ChannelType,
+                                self.NameLen,
+                                self.Name,
+                                self.PlayerID,
+                                self.Time,
+                                self.Len,
+                                self.Content,
+                                self.Extras
+                                )
+        return DumpString
+
+
+class  tagGCTalkCache(Structure):
+    Head = tagHead()
+    Count = 0    #(WORD Count)
+    InfoList = list()    #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x11
+        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 = tagGCTalkCacheInfo()
+            _pos = temInfoList.ReadData(_lpData, _pos)
+            self.InfoList.append(temInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x11
+        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_NAtagGCTalkCache=tagGCTalkCache()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
 
 
 #------------------------------------------------------
@@ -10241,6 +10685,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("IsRobot", c_ubyte),    # 是否匹配机器人
                   ]
 
     def __init__(self):
@@ -10257,6 +10702,7 @@
     def Clear(self):
         self.Cmd = 0xC0
         self.SubCmd = 0x02
+        self.IsRobot = 0
         return
 
     def GetLength(self):
@@ -10268,11 +10714,13 @@
     def OutputString(self):
         DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
                                 Cmd:%s,
-                                SubCmd:%s
+                                SubCmd:%s,
+                                IsRobot:%d
                                 '''\
                                 %(
                                 self.Cmd,
-                                self.SubCmd
+                                self.SubCmd,
+                                self.IsRobot
                                 )
         return DumpString
 
@@ -12389,7 +12837,8 @@
     _fields_ = [
                   ("ItemID", c_int),    #果实物品ID
                   ("EatCnt", c_ushort),    #已使用个数
-                  ("AddItemCnt", c_int),    #增幅丹使用个数
+                  ("ItemAddCnt", c_int),    #增幅丹增加上限
+                  ("ItemBreakCnt", c_int),    #增幅丹突破次数
                   ]
 
     def __init__(self):
@@ -12404,7 +12853,8 @@
     def Clear(self):
         self.ItemID = 0
         self.EatCnt = 0
-        self.AddItemCnt = 0
+        self.ItemAddCnt = 0
+        self.ItemBreakCnt = 0
         return
 
     def GetLength(self):
@@ -12417,12 +12867,14 @@
         DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
                                 ItemID:%d,
                                 EatCnt:%d,
-                                AddItemCnt:%d
+                                ItemAddCnt:%d,
+                                ItemBreakCnt:%d
                                 '''\
                                 %(
                                 self.ItemID,
                                 self.EatCnt,
-                                self.AddItemCnt
+                                self.ItemAddCnt,
+                                self.ItemBreakCnt
                                 )
         return DumpString
 
@@ -12558,6 +13010,7 @@
                   ("BossType", c_ubyte),    #编号类型0-世界boss 1-boss之家
                   ("KillCnt", c_int),    #击杀次数
                   ("ItemAddCnt", c_int),    #物品增加次数
+                  ("BuyCnt", c_ubyte),    #购买次数
                   ]
 
     def __init__(self):
@@ -12573,6 +13026,7 @@
         self.BossType = 0
         self.KillCnt = 0
         self.ItemAddCnt = 0
+        self.BuyCnt = 0
         return
 
     def GetLength(self):
@@ -12585,12 +13039,14 @@
         DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
                                 BossType:%d,
                                 KillCnt:%d,
-                                ItemAddCnt:%d
+                                ItemAddCnt:%d,
+                                BuyCnt:%d
                                 '''\
                                 %(
                                 self.BossType,
                                 self.KillCnt,
-                                self.ItemAddCnt
+                                self.ItemAddCnt,
+                                self.BuyCnt
                                 )
         return DumpString
 
@@ -14993,6 +15449,178 @@
 
 
 #------------------------------------------------------
+# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
+
+class  tagMCHistoryReChargeAwardRecord(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("AwardGetRecord", c_int),    # 按二进制位标示领取记录 配置奖励ID代表第几位
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0x28
+        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 = 0x28
+        self.AwardGetRecord = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCHistoryReChargeAwardRecord)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                AwardGetRecord:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.AwardGetRecord
+                                )
+        return DumpString
+
+
+m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
+
+
+#------------------------------------------------------
+# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
+
+class  tagMCHorsePetSkinInfo(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Type", c_ubyte),    # 1-坐骑 2-灵宠
+                  ("ID", c_int),    # 对应坐骑表灵宠表ID
+                  ("Exp", c_int),    #经验
+                  ("SkinLV", c_ubyte),    #觉醒等级
+                  ("SkinIndex", 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.Type = 0
+        self.ID = 0
+        self.Exp = 0
+        self.SkinLV = 0
+        self.SkinIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCHorsePetSkinInfo)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
+                                Type:%d,
+                                ID:%d,
+                                Exp:%d,
+                                SkinLV:%d,
+                                SkinIndex:%d
+                                '''\
+                                %(
+                                self.Type,
+                                self.ID,
+                                self.Exp,
+                                self.SkinLV,
+                                self.SkinIndex
+                                )
+        return DumpString
+
+
+class  tagMCHorsePetSkinData(Structure):
+    Head = tagHead()
+    Num = 0    #(BYTE Num)//个数
+    InfoList = list()    #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x12
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Num):
+            temInfoList = tagMCHorsePetSkinInfo()
+            _pos = temInfoList.ReadData(_lpData, _pos)
+            self.InfoList.append(temInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x12
+        self.Num = 0
+        self.InfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.Num):
+            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.Num)
+        for i in range(self.Num):
+            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Num:%d,
+                                InfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Num,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+
+
+#------------------------------------------------------
 # A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
 
 class  tagMCMagicWeaponInfo(Structure):
@@ -16277,6 +16905,7 @@
     _fields_ = [
                   ("AlchemyID", c_int),    # 丹 ID
                   ("StartTime", c_int),    # 开始炼的时间 
+                  ("AlchemyTimes", c_ushort),    # 炼的次数
                   ]
 
     def __init__(self):
@@ -16291,6 +16920,7 @@
     def Clear(self):
         self.AlchemyID = 0
         self.StartTime = 0
+        self.AlchemyTimes = 0
         return
 
     def GetLength(self):
@@ -16302,11 +16932,13 @@
     def OutputString(self):
         DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                 AlchemyID:%d,
-                                StartTime:%d
+                                StartTime:%d,
+                                AlchemyTimes:%d
                                 '''\
                                 %(
                                 self.AlchemyID,
-                                self.StartTime
+                                self.StartTime,
+                                self.AlchemyTimes
                                 )
         return DumpString
 
@@ -16540,6 +17172,7 @@
                   ("ExtraCnt", c_ubyte),    # VIP额外次数
                   ("ExtraData", c_ubyte),    # 额外参数1
                   ("ExtraData2", c_ubyte),    # 额外参数2
+                  ("HaveRecover", c_ubyte),    # 已找回 1-全部已找回 2-非VIP已找回
                   ]
 
     def __init__(self):
@@ -16557,6 +17190,7 @@
         self.ExtraCnt = 0
         self.ExtraData = 0
         self.ExtraData2 = 0
+        self.HaveRecover = 0
         return
 
     def GetLength(self):
@@ -16571,14 +17205,16 @@
                                 RecoverCnt:%d,
                                 ExtraCnt:%d,
                                 ExtraData:%d,
-                                ExtraData2:%d
+                                ExtraData2:%d,
+                                HaveRecover:%d
                                 '''\
                                 %(
                                 self.Index,
                                 self.RecoverCnt,
                                 self.ExtraCnt,
                                 self.ExtraData,
-                                self.ExtraData2
+                                self.ExtraData2,
+                                self.HaveRecover
                                 )
         return DumpString
 
@@ -18351,6 +18987,58 @@
 
 m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
+
+
+#------------------------------------------------------
+# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
+
+class  tagMCFamilyActivityExchangeResult(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Point", c_int),    # 活跃令
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        self.SubCmd = 0x02
+        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 = 0xA5
+        self.SubCmd = 0x02
+        self.Point = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCFamilyActivityExchangeResult)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Point:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Point
+                                )
+        return DumpString
+
+
+m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
 
 
 #------------------------------------------------------
@@ -21150,6 +21838,58 @@
 
 
 #------------------------------------------------------
+# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
+
+class  tagMCLingQiEquipBreakResult(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MakeItemID", c_int),    #突破后的物品ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA8
+        self.SubCmd = 0x15
+        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 = 0xA8
+        self.SubCmd = 0x15
+        self.MakeItemID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCLingQiEquipBreakResult)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MakeItemID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MakeItemID
+                                )
+        return DumpString
+
+
+m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
+
+
+#------------------------------------------------------
 # A8 14 合成结果通知 #tagMCMakeItemAnswer
 
 class  tagMCMakeItemAnswer(Structure):
@@ -21771,118 +22511,6 @@
 
 m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
-
-
-#------------------------------------------------------
-# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
-
-class  tagMCZhuXianDecomposeItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    #物品ID
-                  ("ItemCnt", c_ubyte),    #物品数量
-                  ("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.ItemCnt = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCZhuXianDecomposeItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCZhuXianDecomposeResult(Structure):
-    Head = tagHead()
-    Cnt = 0    #(BYTE Cnt)//数量
-    ItemList = list()    #(vector<tagMCZhuXianDecomposeItem> ItemList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x15
-        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):
-            temItemList = tagMCZhuXianDecomposeItem()
-            _pos = temItemList.ReadData(_lpData, _pos)
-            self.ItemList.append(temItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA8
-        self.Head.SubCmd = 0x15
-        self.Cnt = 0
-        self.ItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Cnt):
-            length += self.ItemList[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.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                ItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
 
 
 #------------------------------------------------------
@@ -27899,7 +28527,7 @@
     Head = tagHead()
     PointAttrIDCount = 0    #(BYTE PointAttrIDCount)// 点类型个数
     PointAttrIDList = list()    #(vector<BYTE> PointAttrIDList)// 点类型列表
-    PointValueList = list()    #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+    PointValueList = list()    #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
     data = None
 
     def __init__(self):
@@ -27916,7 +28544,7 @@
             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
             self.PointAttrIDList.append(value)
         for i in range(self.PointAttrIDCount):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.PointValueList.append(value)
         return _pos
 
@@ -27935,7 +28563,7 @@
         length += self.Head.GetLength()
         length += 1
         length += 1 * self.PointAttrIDCount
-        length += 2 * self.PointAttrIDCount
+        length += 4 * self.PointAttrIDCount
 
         return length
 
@@ -27946,7 +28574,7 @@
         for i in range(self.PointAttrIDCount):
             data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
         for i in range(self.PointAttrIDCount):
-            data = CommFunc.WriteWORD(data, self.PointValueList[i])
+            data = CommFunc.WriteDWORD(data, self.PointValueList[i])
         return data
 
     def OutputString(self):
@@ -28355,87 +28983,6 @@
 
 m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg
-
-
-#------------------------------------------------------
-# B2 14 自定义副本奖励信息 #tagMCCuntomFBPrizeInfo
-
-class  tagMCCuntomFBPrizeInfo(Structure):
-    Head = tagHead()
-    MapID = 0    #(DWORD MapID)
-    FuncLineID = 0    #(WORD FuncLineID)
-    PrizeItemCount = 0    #(BYTE PrizeItemCount)
-    PrizeItemIDList = list()    #(vector<DWORD> PrizeItemIDList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB2
-        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.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.PrizeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PrizeItemCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.PrizeItemIDList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB2
-        self.Head.SubCmd = 0x14
-        self.MapID = 0
-        self.FuncLineID = 0
-        self.PrizeItemCount = 0
-        self.PrizeItemIDList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 2
-        length += 1
-        length += 4 * self.PrizeItemCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.MapID)
-        data = CommFunc.WriteWORD(data, self.FuncLineID)
-        data = CommFunc.WriteBYTE(data, self.PrizeItemCount)
-        for i in range(self.PrizeItemCount):
-            data = CommFunc.WriteDWORD(data, self.PrizeItemIDList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                MapID:%d,
-                                FuncLineID:%d,
-                                PrizeItemCount:%d,
-                                PrizeItemIDList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.MapID,
-                                self.FuncLineID,
-                                self.PrizeItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCCuntomFBPrizeInfo=tagMCCuntomFBPrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCuntomFBPrizeInfo.Head.Cmd,m_NAtagMCCuntomFBPrizeInfo.Head.SubCmd))] = m_NAtagMCCuntomFBPrizeInfo
 
 
 #------------------------------------------------------
@@ -29625,6 +30172,66 @@
 
 
 #------------------------------------------------------
+# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
+
+class  tagMCStartCustomSceneResult(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("FuncLineID", c_ushort),    
+                  ("Result", c_ubyte),    #是否允许
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x16
+        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 = 0xB2
+        self.SubCmd = 0x16
+        self.MapID = 0
+        self.FuncLineID = 0
+        self.Result = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCStartCustomSceneResult)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MapID:%d,
+                                FuncLineID:%d,
+                                Result:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MapID,
+                                self.FuncLineID,
+                                self.Result
+                                )
+        return DumpString
+
+
+m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
+
+
+#------------------------------------------------------
 #B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
 
 class  tagMCPushNotificationsSetting(Structure):

--
Gitblit v1.8.0