From 02a4f8f2fe8c82b82e8801d6b47f62fdc728c332 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 21 六月 2021 16:50:30 +0800
Subject: [PATCH] 5089 【主干】【BT2】超级助力重读充值表和充值编号表异常(修复充值表新增数据热更重读后登录无法同步新数据的bug)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 1075 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 990 insertions(+), 85 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index c76019e..a47cd1d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -2554,7 +2554,7 @@
 
 class  tagCGVoiceChat(Structure):
     Head = tagHead()
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域    
+    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域	
     TargetNameLen = 0    #(BYTE TargetNameLen)
     TargetName = ""    #(String TargetName)//size = TargetNameLen
     TargetID = 0    #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -3767,6 +3767,66 @@
 
 
 #------------------------------------------------------
+# C0 04 查看跨服排行榜 #tagCGViewCrossBillboard
+
+class  tagCGViewCrossBillboard(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Type", c_ubyte),    #榜单类型
+                  ("GroupValue1", c_ubyte),    # 分组值1
+                  ("GroupValue2", c_ubyte),    # 分组值2,与分组值1组合归为同组榜单数据
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x04
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x04
+        self.Type = 0
+        self.GroupValue1 = 0
+        self.GroupValue2 = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGViewCrossBillboard)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Type:%d,
+                                GroupValue1:%d,
+                                GroupValue2:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Type,
+                                self.GroupValue1,
+                                self.GroupValue2
+                                )
+        return DumpString
+
+
+m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
+
+
+#------------------------------------------------------
 # C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
 
 class  tagCGViewCrossPKBillboard(Structure):
@@ -3774,8 +3834,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ZoneID", c_ubyte),    # 赛区ID    
-                  ("SeasonID", c_ubyte),    # 赛季ID    
+                  ("ZoneID", c_ubyte),    # 赛区ID	
+                  ("SeasonID", c_ubyte),    # 赛季ID	
                   ]
 
     def __init__(self):
@@ -3996,6 +4056,58 @@
 
 m_NAtagCMPCInfo=tagCMPCInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
+
+
+#------------------------------------------------------
+# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
+
+class  tagCMQueryCoinToGoldCount(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("RecordID", c_ubyte),    #充值记录ID,也就是充值ID,发0则查全部
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA1
+        self.SubCmd = 0x23
+        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 = 0xA1
+        self.SubCmd = 0x23
+        self.RecordID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMQueryCoinToGoldCount)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A1 23 查询充值次数 //tagCMQueryCoinToGoldCount:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                RecordID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.RecordID
+                                )
+        return DumpString
+
+
+m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
 
 
 #------------------------------------------------------
@@ -6383,7 +6495,7 @@
                   ("SrcBackpack", c_ubyte),    #源背包类型
                   ("DesBackPack", c_ubyte),    #目标背包类型
                   ("SrcIndex", c_ushort),    #转移物品索引位置;当全部转移时此值无效
-                  ("IsAll", c_ubyte),    #是否全部转移        
+                  ("IsAll", c_ubyte),    #是否全部转移		
                   ]
 
     def __init__(self):
@@ -6644,98 +6756,52 @@
 # A3 30 装备神装进阶 #tagCMEquipEvolve
 
 class  tagCMEquipEvolve(Structure):
-    Head = tagHead()
-    EquipIndex = 0    #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
-    NeedEquipIDIndex = 0    #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
-    NeedItemIDIndexCnt = 0    #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
-    NeedItemIDIndex = list()    #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
-    NeedSuitIndexCnt = 0    #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
-    NeedSuitIndex = list()    #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
-    data = None
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("EquipIndex", c_ubyte),    # 要进阶的装备在装备背包中索引
+                  ]
 
     def __init__(self):
         self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x30
+        self.Cmd = 0xA3
+        self.SubCmd = 0x30
         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.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.NeedItemIDIndexCnt):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.NeedItemIDIndex.append(value)
-        self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.NeedSuitIndexCnt):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.NeedSuitIndex.append(value)
-        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 = 0xA3
-        self.Head.SubCmd = 0x30
+        self.Cmd = 0xA3
+        self.SubCmd = 0x30
         self.EquipIndex = 0
-        self.NeedEquipIDIndex = 0
-        self.NeedItemIDIndexCnt = 0
-        self.NeedItemIDIndex = list()
-        self.NeedSuitIndexCnt = 0
-        self.NeedSuitIndex = list()
         return
 
     def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1
-        length += 1 * self.NeedItemIDIndexCnt
-        length += 1
-        length += 1 * self.NeedSuitIndexCnt
-
-        return length
+        return sizeof(tagCMEquipEvolve)
 
     def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.EquipIndex)
-        data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
-        data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
-        for i in range(self.NeedItemIDIndexCnt):
-            data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
-        data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
-        for i in range(self.NeedSuitIndexCnt):
-            data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
-        return data
+        return string_at(addressof(self), self.GetLength())
 
     def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                EquipIndex:%d,
-                                NeedEquipIDIndex:%d,
-                                NeedItemIDIndexCnt:%d,
-                                NeedItemIDIndex:%s,
-                                NeedSuitIndexCnt:%d,
-                                NeedSuitIndex:%s
+        DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                EquipIndex:%d
                                 '''\
                                 %(
-                                self.Head.OutputString(),
-                                self.EquipIndex,
-                                self.NeedEquipIDIndex,
-                                self.NeedItemIDIndexCnt,
-                                "...",
-                                self.NeedSuitIndexCnt,
-                                "..."
+                                self.Cmd,
+                                self.SubCmd,
+                                self.EquipIndex
                                 )
         return DumpString
 
 
 m_NAtagCMEquipEvolve=tagCMEquipEvolve()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve
 
 
 #------------------------------------------------------
@@ -6844,6 +6910,73 @@
 
 m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
+# A3 31 装备神装拆解 #tagCMEquipShenDecompose
+
+class  tagCMEquipShenDecompose(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)//所在背包索引的数量
+    IndexList = list()    #(vector<WORD> IndexList)//所在背包索引列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x31
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.IndexList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA3
+        self.Head.SubCmd = 0x31
+        self.Count = 0
+        self.IndexList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 2 * self.Count
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteWORD(data, self.IndexList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                IndexList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMEquipShenDecompose=tagCMEquipShenDecompose()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipShenDecompose.Head.Cmd,m_NAtagCMEquipShenDecompose.Head.SubCmd))] = m_NAtagCMEquipShenDecompose
 
 
 #------------------------------------------------------
@@ -12656,6 +12789,7 @@
     PacketCnt = 0    #(WORD PacketCnt)// 红包数量
     MoneyNum = 0    #(WORD MoneyNum)//金钱数量
     Wish = ""    #(char Wish[33])//祝福语
+    IsAnonymous = 0    #(BYTE IsAnonymous)//是否匿名
     data = None
 
     def __init__(self):
@@ -12671,6 +12805,7 @@
         self.PacketCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -12682,6 +12817,7 @@
         self.PacketCnt = 0
         self.MoneyNum = 0
         self.Wish = ""
+        self.IsAnonymous = 0
         return
 
     def GetLength(self):
@@ -12691,6 +12827,7 @@
         length += 2
         length += 2
         length += 33
+        length += 1
 
         return length
 
@@ -12701,6 +12838,7 @@
         data = CommFunc.WriteWORD(data, self.PacketCnt)
         data = CommFunc.WriteWORD(data, self.MoneyNum)
         data = CommFunc.WriteString(data, 33, self.Wish)
+        data = CommFunc.WriteBYTE(data, self.IsAnonymous)
         return data
 
     def OutputString(self):
@@ -12709,14 +12847,16 @@
                                 RedPacketID:%d,
                                 PacketCnt:%d,
                                 MoneyNum:%d,
-                                Wish:%s
+                                Wish:%s,
+                                IsAnonymous:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
                                 self.RedPacketID,
                                 self.PacketCnt,
                                 self.MoneyNum,
-                                self.Wish
+                                self.Wish,
+                                self.IsAnonymous
                                 )
         return DumpString
 
@@ -13146,6 +13286,342 @@
 
 
 #------------------------------------------------------
+# AA 09 集字活动兑换 #tagCMActCollectWordsExchange
+
+class  tagCMActCollectWordsExchange(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号,1 或 2,相互独立的活动,可同时开启
+                  ("ExchangeNum", c_ubyte),    #兑换编号
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x09
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x09
+        self.ActNum = 0
+        self.ExchangeNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMActCollectWordsExchange)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 09 集字活动兑换 //tagCMActCollectWordsExchange:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                ExchangeNum:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.ExchangeNum
+                                )
+        return DumpString
+
+
+m_NAtagCMActCollectWordsExchange=tagCMActCollectWordsExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActCollectWordsExchange.Cmd,m_NAtagCMActCollectWordsExchange.SubCmd))] = m_NAtagCMActCollectWordsExchange
+
+
+#------------------------------------------------------
+# AA 15 垃圾分类活动收集已完成的任务垃圾 #tagCMActGarbageGetTaskAward
+
+class  tagCMActGarbageGetTaskAward(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号
+                  ("GarbageTaskID", c_ubyte),    #垃圾任务ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        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 = 0xAA
+        self.SubCmd = 0x15
+        self.ActNum = 0
+        self.GarbageTaskID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMActGarbageGetTaskAward)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 15 垃圾分类活动收集已完成的任务垃圾 //tagCMActGarbageGetTaskAward:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                GarbageTaskID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.GarbageTaskID
+                                )
+        return DumpString
+
+
+m_NAtagCMActGarbageGetTaskAward=tagCMActGarbageGetTaskAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageGetTaskAward.Cmd,m_NAtagCMActGarbageGetTaskAward.SubCmd))] = m_NAtagCMActGarbageGetTaskAward
+
+
+#------------------------------------------------------
+# AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
+
+class  tagCMActGarbageSorting(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
+    GarbageSortingType = 0    #(BYTE GarbageSortingType)//垃圾分类类型,即属于哪种垃圾
+    ItemIndexCount = 0    #(BYTE ItemIndexCount)//垃圾背包中的物品索引数
+    ItemIndexList = list()    #(vector<BYTE> ItemIndexList)//垃圾背包中的物品索引列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x14
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.GarbageSortingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ItemIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemIndexCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.ItemIndexList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x14
+        self.ActNum = 0
+        self.GarbageSortingType = 0
+        self.ItemIndexCount = 0
+        self.ItemIndexList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 1
+        length += 1 * self.ItemIndexCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteBYTE(data, self.GarbageSortingType)
+        data = CommFunc.WriteBYTE(data, self.ItemIndexCount)
+        for i in range(self.ItemIndexCount):
+            data = CommFunc.WriteBYTE(data, self.ItemIndexList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                GarbageSortingType:%d,
+                                ItemIndexCount:%d,
+                                ItemIndexList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.GarbageSortingType,
+                                self.ItemIndexCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMActGarbageSorting=tagCMActGarbageSorting()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageSorting.Head.Cmd,m_NAtagCMActGarbageSorting.Head.SubCmd))] = m_NAtagCMActGarbageSorting
+
+
+#------------------------------------------------------
+# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
+
+class  tagCMActTurntableChooseItem(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)// 活动编号
+    GoodItemNumCount = 0    #(BYTE GoodItemNumCount)
+    GoodItemNumList = list()    #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
+    SuperItemNumCount = 0    #(BYTE SuperItemNumCount)
+    SuperItemNumList = list()    #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x12
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.GoodItemNumCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.GoodItemNumList.append(value)
+        self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.SuperItemNumCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.SuperItemNumList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x12
+        self.ActNum = 0
+        self.GoodItemNumCount = 0
+        self.GoodItemNumList = list()
+        self.SuperItemNumCount = 0
+        self.SuperItemNumList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 1 * self.GoodItemNumCount
+        length += 1
+        length += 1 * self.SuperItemNumCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
+        for i in range(self.GoodItemNumCount):
+            data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
+        data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
+        for i in range(self.SuperItemNumCount):
+            data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                GoodItemNumCount:%d,
+                                GoodItemNumList:%s,
+                                SuperItemNumCount:%d,
+                                SuperItemNumList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.GoodItemNumCount,
+                                "...",
+                                self.SuperItemNumCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
+
+
+#------------------------------------------------------
+# AA 13 启动转盘 #tagCMActTurntableStart
+
+class  tagCMActTurntableStart(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    # 活动编号
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        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 = 0xAA
+        self.SubCmd = 0x13
+        self.ActNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMActTurntableStart)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum
+                                )
+        return DumpString
+
+
+m_NAtagCMActTurntableStart=tagCMActTurntableStart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
+
+
+#------------------------------------------------------
 # AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
 
 class  tagCMActWishingRefresh(Structure):
@@ -13195,6 +13671,188 @@
 
 m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
+
+
+#------------------------------------------------------
+# AA 18 仙匣秘境活动奖池刷新 #tagCMActXianXiaMJAwardPoolRefresh
+
+class  tagCMActXianXiaMJAwardPoolRefresh(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x18
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x18
+        self.ActNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMActXianXiaMJAwardPoolRefresh)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 18 仙匣秘境活动奖池刷新 //tagCMActXianXiaMJAwardPoolRefresh:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum
+                                )
+        return DumpString
+
+
+m_NAtagCMActXianXiaMJAwardPoolRefresh=tagCMActXianXiaMJAwardPoolRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJAwardPoolRefresh.Cmd,m_NAtagCMActXianXiaMJAwardPoolRefresh.SubCmd))] = m_NAtagCMActXianXiaMJAwardPoolRefresh
+
+
+#------------------------------------------------------
+# AA 17 仙匣秘境活动抽奖 #tagCMActXianXiaMJLottery
+
+class  tagCMActXianXiaMJLottery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号
+                  ("PosNum", c_ubyte),    #玩家点击的奖励位置编号,从1开始
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        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 = 0xAA
+        self.SubCmd = 0x17
+        self.ActNum = 0
+        self.PosNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMActXianXiaMJLottery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 17 仙匣秘境活动抽奖 //tagCMActXianXiaMJLottery:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActNum:%d,
+                                PosNum:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActNum,
+                                self.PosNum
+                                )
+        return DumpString
+
+
+m_NAtagCMActXianXiaMJLottery=tagCMActXianXiaMJLottery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJLottery.Cmd,m_NAtagCMActXianXiaMJLottery.SubCmd))] = m_NAtagCMActXianXiaMJLottery
+
+
+#------------------------------------------------------
+# AA 16 仙匣秘境活动选择大奖 #tagCMActXianXiaMJSuperItem
+
+class  tagCMActXianXiaMJSuperItem(Structure):
+    Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号
+    SuperItemCount = 0    #(BYTE SuperItemCount)//选择物品数量
+    SuperItemIDList = list()    #(vector<DWORD> SuperItemIDList)//选择的大奖库物品ID列表,每次重新选择需要发送全部已选择的大奖物品ID,不能只发单个物品ID;
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x16
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.SuperItemCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.SuperItemIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xAA
+        self.Head.SubCmd = 0x16
+        self.ActNum = 0
+        self.SuperItemCount = 0
+        self.SuperItemIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += 4 * self.SuperItemCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
+        data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+        for i in range(self.SuperItemCount):
+            data = CommFunc.WriteDWORD(data, self.SuperItemIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActNum:%d,
+                                SuperItemCount:%d,
+                                SuperItemIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActNum,
+                                self.SuperItemCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMActXianXiaMJSuperItem=tagCMActXianXiaMJSuperItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJSuperItem.Head.Cmd,m_NAtagCMActXianXiaMJSuperItem.Head.SubCmd))] = m_NAtagCMActXianXiaMJSuperItem
 
 
 #------------------------------------------------------
@@ -13262,6 +13920,114 @@
 
 
 #------------------------------------------------------
+# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
+
+class  tagCMFeastWishBottleChooseItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("BottleNum", c_ubyte),    #瓶子编号
+                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x10
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x10
+        self.BottleNum = 0
+        self.RecordIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMFeastWishBottleChooseItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                BottleNum:%d,
+                                RecordIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.BottleNum,
+                                self.RecordIndex
+                                )
+        return DumpString
+
+
+m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
+
+
+#------------------------------------------------------
+# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
+
+class  tagCMFeastWishPoolWish(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("WishCount", c_ubyte),    #祝福次数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xAA
+        self.SubCmd = 0x11
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xAA
+        self.SubCmd = 0x11
+        self.WishCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMFeastWishPoolWish)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                WishCount:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.WishCount
+                                )
+        return DumpString
+
+
+m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
+
+
+#------------------------------------------------------
 # AA 05 限时抢购预约 #tagCMFlashSaleAppointment
 
 class  tagCMFlashSaleAppointment(Structure):
@@ -13269,6 +14035,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号
                   ("GoodsID", c_int),    # 抢购商品标识
                   ("State", c_ubyte),    # 1-预约 0-取消
                   ]
@@ -13287,6 +14054,7 @@
     def Clear(self):
         self.Cmd = 0xAA
         self.SubCmd = 0x05
+        self.ActNum = 0
         self.GoodsID = 0
         self.State = 0
         return
@@ -13301,12 +14069,14 @@
         DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
                                 Cmd:%s,
                                 SubCmd:%s,
+                                ActNum:%d,
                                 GoodsID:%d,
                                 State:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
+                                self.ActNum,
                                 self.GoodsID,
                                 self.State
                                 )
@@ -15090,6 +15860,73 @@
 
 
 #------------------------------------------------------
+# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
+
+class  tagCMActivateFuncSysPrivilege(Structure):
+    Head = tagHead()
+    ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
+    ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x11
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ActivateCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.ActivateFuncSysIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x11
+        self.ActivateCount = 0
+        self.ActivateFuncSysIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1 * self.ActivateCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActivateCount)
+        for i in range(self.ActivateCount):
+            data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActivateCount:%d,
+                                ActivateFuncSysIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActivateCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
+
+
+#------------------------------------------------------
 # B2 06 玩家加点 #tagCMAddPoint
 
 class  tagCMAddPoint(Structure):
@@ -15272,6 +16109,62 @@
 
 m_NAtagCMArenaMatch=tagCMArenaMatch()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
+
+
+#------------------------------------------------------
+# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
+
+class  tagCMGetFuncSysPrivilegeAward(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("FuncSysID", c_ubyte),    # 功能系统ID
+                  ("DayNum", c_ubyte),    # 第X天,1为第1天
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x12
+        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 = 0x12
+        self.FuncSysID = 0
+        self.DayNum = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGetFuncSysPrivilegeAward)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                FuncSysID:%d,
+                                DayNum:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.FuncSysID,
+                                self.DayNum
+                                )
+        return DumpString
+
+
+m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
 
 
 #------------------------------------------------------
@@ -15666,6 +16559,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("LostHP", c_int),    
+                  ("LostHPEx", c_int),    
                   ]
 
     def __init__(self):
@@ -15683,6 +16577,7 @@
         self.Cmd = 0xB4
         self.SubCmd = 0x0E
         self.LostHP = 0
+        self.LostHPEx = 0
         return
 
     def GetLength(self):
@@ -15695,12 +16590,14 @@
         DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                LostHP:%d
+                                LostHP:%d,
+                                LostHPEx:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.LostHP
+                                self.LostHP,
+                                self.LostHPEx
                                 )
         return DumpString
 
@@ -16278,6 +17175,7 @@
                   ("ObjID", c_int),    
                   ("AttackType", c_ubyte),    #爆击, miss
                   ("HurtHP", c_int),    
+                  ("HurtHPEx", c_int),    
                   ]
 
     def __init__(self):
@@ -16294,6 +17192,7 @@
         self.ObjID = 0
         self.AttackType = 0
         self.HurtHP = 0
+        self.HurtHPEx = 0
         return
 
     def GetLength(self):
@@ -16307,13 +17206,15 @@
                                 ObjType:%d,
                                 ObjID:%d,
                                 AttackType:%d,
-                                HurtHP:%d
+                                HurtHP:%d,
+                                HurtHPEx:%d
                                 '''\
                                 %(
                                 self.ObjType,
                                 self.ObjID,
                                 self.AttackType,
-                                self.HurtHP
+                                self.HurtHP,
+                                self.HurtHPEx
                                 )
         return DumpString
 
@@ -16679,7 +17580,7 @@
 class  tagCMBiddingAuctionItem(Structure):
     Head = tagHead()
     ItemGUID = ""    #(char ItemGUID[40])
-    BiddingPrice = 0    #(WORD BiddingPrice)//竞价价格
+    BiddingPrice = 0    #(DWORD BiddingPrice)//竞价价格
     data = None
 
     def __init__(self):
@@ -16692,7 +17593,7 @@
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.BiddingPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -16708,7 +17609,7 @@
         length = 0
         length += self.Head.GetLength()
         length += 40
-        length += 2
+        length += 4
 
         return length
 
@@ -16716,7 +17617,7 @@
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteString(data, 40, self.ItemGUID)
-        data = CommFunc.WriteWORD(data, self.BiddingPrice)
+        data = CommFunc.WriteDWORD(data, self.BiddingPrice)
         return data
 
     def OutputString(self):
@@ -16895,6 +17796,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("ItemIndex", c_ubyte),    #物品在背包中索引
+                  ("SellCount", c_ushort),    #上架个数,0代表全部上架
                   ]
 
     def __init__(self):
@@ -16912,6 +17814,7 @@
         self.Cmd = 0xB5
         self.SubCmd = 0x13
         self.ItemIndex = 0
+        self.SellCount = 0
         return
 
     def GetLength(self):
@@ -16924,12 +17827,14 @@
         DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                ItemIndex:%d
+                                ItemIndex:%d,
+                                SellCount:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.ItemIndex
+                                self.ItemIndex,
+                                self.SellCount
                                 )
         return DumpString
 

--
Gitblit v1.8.0