From efb7e570e8aee945dedc80e2be76becca1ea7ba5 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 21 六月 2019 16:43:36 +0800
Subject: [PATCH] 6374 封魔坛、雷罚进入限制

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2777 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 1,230 insertions(+), 1,547 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 7cb615e..84eae5a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -104,60 +104,74 @@
 # A0 04 查询副本功能线路人数 #tagCGGetFBLinePlayerCnt
 
 class  tagCGGetFBLinePlayerCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("FBLineID", c_ubyte),    
-                  ("IsAllLine", c_ubyte),    
-                  ]
+    Head = tagHead()
+    MapID = 0    #(DWORD MapID)
+    LineCount = 0    #(BYTE LineCount)
+    LineIDList = list()    #(vector<BYTE> LineIDList)//个数为0时代表查全部
+    data = None
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xA0
-        self.SubCmd = 0x04
+        self.Head.Cmd = 0xA0
+        self.Head.SubCmd = 0x04
         return
 
-    def ReadData(self, stringData, _pos=0, _len=0):
+    def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.LineCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.LineIDList.append(value)
+        return _pos
 
     def Clear(self):
-        self.Cmd = 0xA0
-        self.SubCmd = 0x04
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA0
+        self.Head.SubCmd = 0x04
         self.MapID = 0
-        self.FBLineID = 0
-        self.IsAllLine = 0
+        self.LineCount = 0
+        self.LineIDList = list()
         return
 
     def GetLength(self):
-        return sizeof(tagCGGetFBLinePlayerCnt)
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 1 * self.LineCount
+
+        return length
 
     def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteBYTE(data, self.LineCount)
+        for i in range(self.LineCount):
+            data = CommFunc.WriteBYTE(data, self.LineIDList[i])
+        return data
 
     def OutputString(self):
-        DumpString = '''// A0 04 查询副本功能线路人数 //tagCGGetFBLinePlayerCnt:
-                                Cmd:%s,
-                                SubCmd:%s,
+        DumpString = '''
+                                Head:%s,
                                 MapID:%d,
-                                FBLineID:%d,
-                                IsAllLine:%d
+                                LineCount:%d,
+                                LineIDList:%s
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
+                                self.Head.OutputString(),
                                 self.MapID,
-                                self.FBLineID,
-                                self.IsAllLine
+                                self.LineCount,
+                                "..."
                                 )
         return DumpString
 
 
 m_NAtagCGGetFBLinePlayerCnt=tagCGGetFBLinePlayerCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Cmd,m_NAtagCGGetFBLinePlayerCnt.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Head.Cmd,m_NAtagCGGetFBLinePlayerCnt.Head.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
 
 
 #------------------------------------------------------
@@ -1349,6 +1363,63 @@
 
 
 #------------------------------------------------------
+# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
+
+class  tagCGQueryNotifyEquipDetailInfo(Structure):
+    Head = tagHead()
+    ItemGUID = ""    #(char ItemGUID[40])
+    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)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA9
+        self.Head.SubCmd = 0x05
+        self.ItemGUID = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 40
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 40, self.ItemGUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ItemGUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ItemGUID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
 # A9 A3 查看推荐好友 #tagCGQueryRecommendFriends
 
 class  tagCGQueryRecommendFriends(Structure):
@@ -1782,58 +1853,6 @@
 
 m_NAtagCGXMZZInfoQuery=tagCGXMZZInfoQuery()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZInfoQuery.Cmd,m_NAtagCGXMZZInfoQuery.SubCmd))] = m_NAtagCGXMZZInfoQuery
-
-
-#------------------------------------------------------
-# AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
-
-class  tagCGQueryTeHuiActivetyInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActivityType", c_ubyte),    # 活动类型
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAD
-        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 = 0xAD
-        self.SubCmd = 0x01
-        self.ActivityType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGQueryTeHuiActivetyInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActivityType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActivityType
-                                )
-        return DumpString
-
-
-m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
 
 
 #------------------------------------------------------
@@ -3434,6 +3453,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    # 跨服玩家ID
+                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                   ]
 
     def __init__(self):
@@ -3451,6 +3471,7 @@
         self.Cmd = 0xC0
         self.SubCmd = 0x02
         self.PlayerID = 0
+        self.EquipClassLV = 0
         return
 
     def GetLength(self):
@@ -3463,12 +3484,14 @@
         DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                PlayerID:%d
+                                PlayerID:%d,
+                                EquipClassLV:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.PlayerID
+                                self.PlayerID,
+                                self.EquipClassLV
                                 )
         return DumpString
 
@@ -3999,66 +4022,6 @@
 
 
 #------------------------------------------------------
-# A2 08 购买自定义商店物品 #tagCMBuyShopItem
-
-class  tagCMBuyShopItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ShopID", c_int),    
-                  ("ItemShopIndex", c_ushort),    
-                  ("BuyCount", c_ushort),    #购买数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x08
-        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 = 0xA2
-        self.SubCmd = 0x08
-        self.ShopID = 0
-        self.ItemShopIndex = 0
-        self.BuyCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMBuyShopItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ShopID:%d,
-                                ItemShopIndex:%d,
-                                BuyCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ShopID,
-                                self.ItemShopIndex,
-                                self.BuyCount
-                                )
-        return DumpString
-
-
-m_NAtagCMBuyShopItem=tagCMBuyShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
-
-
-#------------------------------------------------------
 # A2 10 清除副本CD#tagCMClearFBCD
 
 class  tagCMClearFBCD(Structure):
@@ -4111,6 +4074,54 @@
 
 
 #------------------------------------------------------
+# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
+
+class  tagCMClientExitCustomScene(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA2
+        self.SubCmd = 0x33
+        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 = 0xA2
+        self.SubCmd = 0x33
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMClientExitCustomScene)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
+
+
+#------------------------------------------------------
 # A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
 
 class  tagCMClientStartCustomScene(Structure):
@@ -4118,6 +4129,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("FuncLineID", c_ushort),    
                   ]
 
     def __init__(self):
@@ -4134,6 +4147,8 @@
     def Clear(self):
         self.Cmd = 0xA2
         self.SubCmd = 0x31
+        self.MapID = 0
+        self.FuncLineID = 0
         return
 
     def GetLength(self):
@@ -4145,11 +4160,15 @@
     def OutputString(self):
         DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
                                 Cmd:%s,
-                                SubCmd:%s
+                                SubCmd:%s,
+                                MapID:%d,
+                                FuncLineID:%d
                                 '''\
                                 %(
                                 self.Cmd,
-                                self.SubCmd
+                                self.SubCmd,
+                                self.MapID,
+                                self.FuncLineID
                                 )
         return DumpString
 
@@ -4208,6 +4227,58 @@
 
 m_NAtagCMTouchNPC=tagCMTouchNPC()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
+
+
+#------------------------------------------------------
+# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
+
+class  tagCMGetCustomSceneCollectAward(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("NPCID", c_int),    #采集的NPCID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA2
+        self.SubCmd = 0x34
+        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 = 0xA2
+        self.SubCmd = 0x34
+        self.NPCID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGetCustomSceneCollectAward)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                NPCID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.NPCID
+                                )
+        return DumpString
+
+
+m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
 
 
 #------------------------------------------------------
@@ -5041,58 +5112,6 @@
 
 
 #------------------------------------------------------
-# A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
-
-class  tagCMQueryShopItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ShopID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x07
-        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 = 0xA2
-        self.SubCmd = 0x07
-        self.ShopID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMQueryShopItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ShopID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ShopID
-                                )
-        return DumpString
-
-
-m_NAtagCMQueryShopItem=tagCMQueryShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
-
-
-#------------------------------------------------------
 # A2 06 快速完成任务#tagCMQuickFinishMission
 
 class  tagCMQuickFinishMission(Structure):
@@ -5194,58 +5213,6 @@
 
 m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
-
-
-#------------------------------------------------------
-# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
-
-class  tagCMRefreshShopItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ShopID", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA2
-        self.SubCmd = 0x14
-        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 = 0xA2
-        self.SubCmd = 0x14
-        self.ShopID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMRefreshShopItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ShopID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ShopID
-                                )
-        return DumpString
-
-
-m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
 
 
 #------------------------------------------------------
@@ -5700,6 +5667,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
+                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                   ]
 
     def __init__(self):
@@ -5717,6 +5685,7 @@
         self.Cmd = 0xA2
         self.SubCmd = 0x12
         self.PlayerID = 0
+        self.EquipClassLV = 0
         return
 
     def GetLength(self):
@@ -5729,18 +5698,72 @@
         DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                PlayerID:%d
+                                PlayerID:%d,
+                                EquipClassLV:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.PlayerID
+                                self.PlayerID,
+                                self.EquipClassLV
                                 )
         return DumpString
 
 
 m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
+
+
+#------------------------------------------------------
+# A3 17 增加果实使用上限 #tagCMAddFruitUseLimit
+
+class  tagCMAddFruitUseLimit(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ItemID", c_int),    #果实物品ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        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 = 0xA3
+        self.SubCmd = 0x17
+        self.ItemID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMAddFruitUseLimit)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ItemID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ItemID
+                                )
+        return DumpString
+
+
+m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
 
 
 #------------------------------------------------------
@@ -6244,6 +6267,58 @@
 
 
 #------------------------------------------------------
+# A3 16 装备强化进化 #tagCMEquipPlusEvolve
+
+class  tagCMEquipPlusEvolve(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ItemIndex", c_ushort),    #装备在背包中索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        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 = 0xA3
+        self.SubCmd = 0x16
+        self.ItemIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMEquipPlusEvolve)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ItemIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ItemIndex
+                                )
+        return DumpString
+
+
+m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
 #A3 05 宝石摘取 #tagCMEquipStonePick
 
 class  tagCMEquipStonePick(Structure):
@@ -6524,62 +6599,6 @@
 
 
 #------------------------------------------------------
-# A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
-
-class  tagCMEquipZhuXianItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("EquipIndex", c_ubyte),    #装备在诛仙装备背包中的索引
-                  ("ItemIndex", c_ubyte),    #装备在诛仙物品背包中的索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x30
-        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 = 0x30
-        self.EquipIndex = 0
-        self.ItemIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMEquipZhuXianItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                EquipIndex:%d,
-                                ItemIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.EquipIndex,
-                                self.ItemIndex
-                                )
-        return DumpString
-
-
-m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
-
-
-#------------------------------------------------------
 # A3 12 守护拾取物品 #tagCMGuardPickupItem
 
 class  tagCMGuardPickupItem(Structure):
@@ -6696,6 +6715,62 @@
 
 m_NAtagCMItemDecompound=tagCMItemDecompound()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound
+
+
+#------------------------------------------------------
+# A3 08 物品过期 #tagCMItemTimeout
+
+class  tagCMItemTimeout(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PackType", c_ubyte),    #背包类型
+                  ("ItemIndex", c_ubyte),    #物品在背包中索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0x08
+        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 = 0x08
+        self.PackType = 0
+        self.ItemIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMItemTimeout)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PackType:%d,
+                                ItemIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PackType,
+                                self.ItemIndex
+                                )
+        return DumpString
+
+
+m_NAtagCMItemTimeout=tagCMItemTimeout()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
 
 
 #------------------------------------------------------
@@ -6982,118 +7057,6 @@
 
 
 #------------------------------------------------------
-#A3 17 套装合成#tagCMSuitCompose
-
-class  tagCMSuitCompose(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SuiteType", c_ubyte),    # 套装类型 1普通 2强化
-                  ("EquipPlace", c_ubyte),    # 装备位置
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        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 = 0xA3
-        self.SubCmd = 0x17
-        self.SuiteType = 0
-        self.EquipPlace = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMSuitCompose)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 17 套装合成//tagCMSuitCompose:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SuiteType:%d,
-                                EquipPlace:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SuiteType,
-                                self.EquipPlace
-                                )
-        return DumpString
-
-
-m_NAtagCMSuitCompose=tagCMSuitCompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose
-
-
-#------------------------------------------------------
-# A3 08 套装拆解 #tagCMSuiteDecompose
-
-class  tagCMSuiteDecompose(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("EquipPlace", c_ubyte),    #部位索引
-                  ("SuiteType", c_ubyte),    #套装类型 0代表全部类型
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x08
-        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 = 0x08
-        self.EquipPlace = 0
-        self.SuiteType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMSuiteDecompose)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                EquipPlace:%d,
-                                SuiteType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.EquipPlace,
-                                self.SuiteType
-                                )
-        return DumpString
-
-
-m_NAtagCMSuiteDecompose=tagCMSuiteDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose
-
-
-#------------------------------------------------------
 #A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack
 
 class  tagCMMagicItemPutInItemPack(Structure):
@@ -7224,70 +7187,6 @@
 
 
 #------------------------------------------------------
-#A3 21 使用特殊运营物品 #tagCMUseSpecialItem
-
-class  tagCMUseSpecialItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SpeicalItemType", c_ubyte),    #特殊运营物品类型,0打折卡,1多选礼包
-                  ("ItemID", c_int),    #物品ID
-                  ("ItemIndex", c_ubyte),    #物品在背包中的索引位置
-                  ("Select", c_ubyte),    #选择,只对多选礼包有用    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x21
-        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 = 0x21
-        self.SpeicalItemType = 0
-        self.ItemID = 0
-        self.ItemIndex = 0
-        self.Select = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMUseSpecialItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SpeicalItemType:%d,
-                                ItemID:%d,
-                                ItemIndex:%d,
-                                Select:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SpeicalItemType,
-                                self.ItemID,
-                                self.ItemIndex,
-                                self.Select
-                                )
-        return DumpString
-
-
-m_NAtagCMUseSpecialItem=tagCMUseSpecialItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem
-
-
-#------------------------------------------------------
 # A3 2F 宗门试炼兑换 #tagCMTrialExchange
 
 class  tagCMTrialExchange(Structure):
@@ -7337,58 +7236,6 @@
 
 m_NAtagCMTrialExchange=tagCMTrialExchange()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange
-
-
-#------------------------------------------------------
-# A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
-
-class  tagCMUnEquipZhuXianItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("EquipIndex", c_ubyte),    #装备在诛仙装备背包中的索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x31
-        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 = 0x31
-        self.EquipIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMUnEquipZhuXianItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                EquipIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.EquipIndex
-                                )
-        return DumpString
-
-
-m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
 
 
 #------------------------------------------------------
@@ -7571,90 +7418,6 @@
 
 
 #------------------------------------------------------
-# A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
-
-class  tagCMZhuXianEquipDecompose(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//材料所在背包索引的数量
-    IndexList = list()    #(vector<WORD> IndexList)//材料所在背包索引列表
-    ItemIDList = list()    #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
-    IsAuto = 0    #(BYTE IsAuto)//是否自动分解
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x32
-        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)
-        for i in range(self.Count):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.ItemIDList.append(value)
-        self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x32
-        self.Count = 0
-        self.IndexList = list()
-        self.ItemIDList = list()
-        self.IsAuto = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 2 * self.Count
-        length += 4 * self.Count
-        length += 1
-
-        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])
-        for i in range(self.Count):
-            data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
-        data = CommFunc.WriteBYTE(data, self.IsAuto)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                IndexList:%s,
-                                ItemIDList:%s,
-                                IsAuto:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "...",
-                                "...",
-                                self.IsAuto
-                                )
-        return DumpString
-
-
-m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
-
-
-#------------------------------------------------------
 # A5 30 购买魔魂铜钱经验什么的 #tagCMBuySomething
 
 class  tagCMBuySomething(Structure):
@@ -7704,66 +7467,6 @@
 
 m_NAtagCMBuySomething=tagCMBuySomething()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething
-
-
-#------------------------------------------------------
-# A5 32 购买商城物品 #tagCMBuyStoreItem
-
-class  tagCMBuyStoreItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    #1钻石,2绑定钻石,3银子,4银票
-                  ("ItemID", c_int),    #物品ID
-                  ("BuyCount", c_ushort),    #购买数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x32
-        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 = 0x32
-        self.Type = 0
-        self.ItemID = 0
-        self.BuyCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMBuyStoreItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d,
-                                ItemID:%d,
-                                BuyCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type,
-                                self.ItemID,
-                                self.BuyCount
-                                )
-        return DumpString
-
-
-m_NAtagCMBuyStoreItem=tagCMBuyStoreItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem
 
 
 #------------------------------------------------------
@@ -7872,58 +7575,6 @@
 
 m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr
-
-
-#------------------------------------------------------
-# A5 12 激活法宝之魂 #tagCMActiveMWSoul
-
-class  tagCMActiveMWSoul(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ID", c_ubyte),    #编号
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        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 = 0xA5
-        self.SubCmd = 0x12
-        self.ID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActiveMWSoul)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ID
-                                )
-        return DumpString
-
-
-m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
 
 
 #------------------------------------------------------
@@ -8394,6 +8045,62 @@
 
 
 #------------------------------------------------------
+# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
+
+class  tagCMBuyDailyActionCnt(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ActionID", c_int),    # ID
+                  ("AddType", c_ubyte),    # 0-花仙玉 1-用物品
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        self.SubCmd = 0x25
+        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 = 0x25
+        self.ActionID = 0
+        self.AddType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMBuyDailyActionCnt)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ActionID:%d,
+                                AddType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ActionID,
+                                self.AddType
+                                )
+        return DumpString
+
+
+m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt
+
+
+#------------------------------------------------------
 #A5 75 购买副本进入次数#tagCMBuyEnterCount
 
 class  tagCMBuyEnterCount(Structure):
@@ -8543,106 +8250,6 @@
 
 m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt
-
-
-#------------------------------------------------------
-#A5 36 天梯清除挑战CD#tagCMHighLadderClearCD
-
-class  tagCMHighLadderClearCD(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x36
-        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 = 0x36
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMHighLadderClearCD)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A5 36 天梯清除挑战CD//tagCMHighLadderClearCD:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMHighLadderClearCD=tagCMHighLadderClearCD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderClearCD.Cmd,m_NAtagCMHighLadderClearCD.SubCmd))] = m_NAtagCMHighLadderClearCD
-
-
-#------------------------------------------------------
-#A5 35 查询天梯竞技场奖励#tagCMQueryHighLadderReward
-
-class  tagCMQueryHighLadderReward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    #0,查询  1,领取    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x35
-        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 = 0x35
-        self.Type = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMQueryHighLadderReward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A5 35 查询天梯竞技场奖励//tagCMQueryHighLadderReward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type
-                                )
-        return DumpString
-
-
-m_NAtagCMQueryHighLadderReward=tagCMQueryHighLadderReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderReward.Cmd,m_NAtagCMQueryHighLadderReward.SubCmd))] = m_NAtagCMQueryHighLadderReward
 
 
 #------------------------------------------------------
@@ -9469,6 +9076,90 @@
 
 
 #------------------------------------------------------
+# A5 C5 装备部位升星 #tagCMEquipPartStarUp
+
+class  tagCMEquipPartStarUp(Structure):
+    Head = tagHead()
+    EquipPackIndex = 0    #(WORD EquipPackIndex)// 部位格子索引
+    CostEquipCnt = 0    #(BYTE CostEquipCnt)// 装备个数
+    CostEquipIndex = list()    #(vector<WORD> CostEquipIndex)// 装备索引
+    CostEquipID = list()    #(vector<DWORD> CostEquipID)// 装备物品ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0xC5
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CostEquipCnt):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.CostEquipIndex.append(value)
+        for i in range(self.CostEquipCnt):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.CostEquipID.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA5
+        self.Head.SubCmd = 0xC5
+        self.EquipPackIndex = 0
+        self.CostEquipCnt = 0
+        self.CostEquipIndex = list()
+        self.CostEquipID = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 2
+        length += 1
+        length += 2 * self.CostEquipCnt
+        length += 4 * self.CostEquipCnt
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteWORD(data, self.EquipPackIndex)
+        data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
+        for i in range(self.CostEquipCnt):
+            data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
+        for i in range(self.CostEquipCnt):
+            data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                EquipPackIndex:%d,
+                                CostEquipCnt:%d,
+                                CostEquipIndex:%s,
+                                CostEquipID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.EquipPackIndex,
+                                self.CostEquipCnt,
+                                "...",
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
 # A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
 
 class  tagCMExchangeMasterEXP(Structure):
@@ -9522,62 +9213,6 @@
 
 m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
-
-
-#------------------------------------------------------
-# A5 46 兑换灵力 #tagCMExchangeReiki
-
-class  tagCMExchangeReiki(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ExType", c_ubyte),    #兑换类型0-降级兑换; 1-钻石购买
-                  ("ExData", c_ubyte),    #兑换扩展数据(钻石购买可发送购买的消耗索引)
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x46
-        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 = 0x46
-        self.ExType = 0
-        self.ExData = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMExchangeReiki)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ExType:%d,
-                                ExData:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ExType,
-                                self.ExData
-                                )
-        return DumpString
-
-
-m_NAtagCMExchangeReiki=tagCMExchangeReiki()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
 
 
 #------------------------------------------------------
@@ -10127,54 +9762,6 @@
 
 
 #------------------------------------------------------
-#A5 37 天梯增加挑战次数#tagCMHighLadderAddCount
-
-class  tagCMHighLadderAddCount(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x37
-        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 = 0x37
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMHighLadderAddCount)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A5 37 天梯增加挑战次数//tagCMHighLadderAddCount:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMHighLadderAddCount=tagCMHighLadderAddCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderAddCount.Cmd,m_NAtagCMHighLadderAddCount.SubCmd))] = m_NAtagCMHighLadderAddCount
-
-
-#------------------------------------------------------
 # A5 27 坐骑提升 #tagCMHorseUp
 
 class  tagCMHorseUp(Structure):
@@ -10232,58 +9819,6 @@
 
 m_NAtagCMHorseUp=tagCMHorseUp()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
-
-
-#------------------------------------------------------
-# A5 16 法宝状态记录 #tagCMMagicWeaponState
-
-class  tagCMMagicWeaponState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MWID", c_int),    #法宝ID
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        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 = 0xA5
-        self.SubCmd = 0x16
-        self.MWID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMMagicWeaponState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MWID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MWID
-                                )
-        return DumpString
-
-
-m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
 
 
 #------------------------------------------------------
@@ -10576,8 +10111,9 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("RefineNum", c_ushort),    # 配方编号
-                  ("UseRateItem", c_int),    # 附加材料ID
+                  ("AlchemyID", c_int),    # 丹药ID
+                  ("AlchemyTimes", c_ushort),    # 丹药次数
+                  ("DoType", c_ubyte),    # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
                   ]
 
     def __init__(self):
@@ -10594,8 +10130,9 @@
     def Clear(self):
         self.Cmd = 0xA5
         self.SubCmd = 0x76
-        self.RefineNum = 0
-        self.UseRateItem = 0
+        self.AlchemyID = 0
+        self.AlchemyTimes = 0
+        self.DoType = 0
         return
 
     def GetLength(self):
@@ -10608,14 +10145,16 @@
         DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                RefineNum:%d,
-                                UseRateItem:%d
+                                AlchemyID:%d,
+                                AlchemyTimes:%d,
+                                DoType:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.RefineNum,
-                                self.UseRateItem
+                                self.AlchemyID,
+                                self.AlchemyTimes,
+                                self.DoType
                                 )
         return DumpString
 
@@ -10670,54 +10209,6 @@
 
 m_NAtagCMPrayElixir=tagCMPrayElixir()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
-
-
-#------------------------------------------------------
-#A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState
-
-class  tagCMQueryHighLadderState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x34
-        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 = 0x34
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMQueryHighLadderState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A5 34 查询天梯竞技场状态//tagCMQueryHighLadderState:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMQueryHighLadderState=tagCMQueryHighLadderState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderState.Cmd,m_NAtagCMQueryHighLadderState.SubCmd))] = m_NAtagCMQueryHighLadderState
 
 
 #------------------------------------------------------
@@ -10901,58 +10392,6 @@
 
 
 #------------------------------------------------------
-# A5 0C 使用道具减少渡劫打坐时间 #tagCMReduceSitTime
-
-class  tagCMReduceSitTime(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ItemCnt", c_ushort),    # 道具数量
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x0C
-        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 = 0x0C
-        self.ItemCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMReduceSitTime)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 0C 使用道具减少渡劫打坐时间 //tagCMReduceSitTime:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ItemCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ItemCnt
-                                )
-        return DumpString
-
-
-m_NAtagCMReduceSitTime=tagCMReduceSitTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReduceSitTime.Cmd,m_NAtagCMReduceSitTime.SubCmd))] = m_NAtagCMReduceSitTime
-
-
-#------------------------------------------------------
 # A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
 
 class  tagCMRefreshArrestTask(Structure):
@@ -11050,54 +10489,6 @@
 
 m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
-
-
-#------------------------------------------------------
-# A5 47 玩家转生 #tagCMReincarnation
-
-class  tagCMReincarnation(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x47
-        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 = 0x47
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMReincarnation)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMReincarnation=tagCMReincarnation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
 
 
 #------------------------------------------------------
@@ -11478,6 +10869,62 @@
 
 
 #------------------------------------------------------
+# A5 16 选择技能五行专精 #tagCMSelectSkillElement
+
+class  tagCMSelectSkillElement(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("SkillTypeID", c_int),    # 专精技能ID
+                  ("DoType", c_ubyte),    # 0-激活 1-使用
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        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 = 0xA5
+        self.SubCmd = 0x16
+        self.SkillTypeID = 0
+        self.DoType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMSelectSkillElement)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                SkillTypeID:%d,
+                                DoType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.SkillTypeID,
+                                self.DoType
+                                )
+        return DumpString
+
+
+m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
+
+
+#------------------------------------------------------
 # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
 
 class  tagCMStartBindJadeWheel(Structure):
@@ -11523,6 +10970,106 @@
 
 m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
+
+
+#------------------------------------------------------
+# A5 21 境界修为池提取 #tagCMTakeOutRealmExp
+
+class  tagCMTakeOutRealmExp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        self.SubCmd = 0x21
+        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 = 0x21
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMTakeOutRealmExp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 21 境界修为池提取 //tagCMTakeOutRealmExp:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp
+
+
+#------------------------------------------------------
+# A5 12 感应法宝 #tagCMThinkMagicWeapon
+
+class  tagCMThinkMagicWeapon(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MWID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        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 = 0xA5
+        self.SubCmd = 0x12
+        self.MWID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMThinkMagicWeapon)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MWID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MWID
+                                )
+        return DumpString
+
+
+m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
 
 
 #------------------------------------------------------
@@ -11742,6 +11289,58 @@
 
 
 #------------------------------------------------------
+# A5 26 寻访仙域 #tagCMVisitFairyDomain
+
+class  tagCMVisitFairyDomain(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Type", c_ubyte),    #0-开始寻访 1-结束寻访
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA5
+        self.SubCmd = 0x26
+        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 = 0x26
+        self.Type = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMVisitFairyDomain)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Type:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Type
+                                )
+        return DumpString
+
+
+m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain
+
+
+#------------------------------------------------------
 # A5 1D 法宝佩戴 #tagCMWearMagicWeapon
 
 class  tagCMWearMagicWeapon(Structure):
@@ -11866,6 +11465,83 @@
 
 m_NAtagCMRenameFamily=tagCMRenameFamily()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRenameFamily.Head.Cmd,m_NAtagCMRenameFamily.Head.SubCmd))] = m_NAtagCMRenameFamily
+
+
+#------------------------------------------------------
+# A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
+
+class  tagCMFamilyActivityExchange(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)//材料所在背包索引的数量
+    IndexList = list()    #(vector<WORD> IndexList)//材料所在背包索引列表
+    ItemIDList = list()    #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA6
+        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.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.IndexList.append(value)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ItemIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA6
+        self.Head.SubCmd = 0x06
+        self.Count = 0
+        self.IndexList = list()
+        self.ItemIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 2 * self.Count
+        length += 4 * 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])
+        for i in range(self.Count):
+            data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                IndexList:%s,
+                                ItemIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "...",
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange
 
 
 #------------------------------------------------------
@@ -12807,174 +12483,6 @@
 
 
 #------------------------------------------------------
-# AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
-
-class  tagCMGetClassUPDayAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("DayType", c_ubyte),    # 升阶日类型
-                  ("ClassLV", c_ubyte),    # 阶级
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        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 = 0xAA
-        self.SubCmd = 0x02
-        self.DayType = 0
-        self.ClassLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetClassUPDayAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                DayType:%d,
-                                ClassLV:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.DayType,
-                                self.ClassLV
-                                )
-        return DumpString
-
-
-m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
-
-
-#------------------------------------------------------
-# AA 04 领取消费奖励 #tagCMGetCostAward
-
-class  tagCMGetCostAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActionID", c_int),    # 活动ID
-                  ("Index", c_ubyte),    # 索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        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 = 0xAA
-        self.SubCmd = 0x04
-        self.ActionID = 0
-        self.Index = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetCostAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActionID:%d,
-                                Index:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActionID,
-                                self.Index
-                                )
-        return DumpString
-
-
-m_NAtagCMGetCostAward=tagCMGetCostAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
-
-
-#------------------------------------------------------
-# AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
-
-class  tagCMGetRechargeTeHuiAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActionID", c_int),    # 活动ID
-                  ("Index", c_ubyte),    # 规则索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x03
-        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 = 0x03
-        self.ActionID = 0
-        self.Index = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetRechargeTeHuiAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActionID:%d,
-                                Index:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActionID,
-                                self.Index
-                                )
-        return DumpString
-
-
-m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
-
-
-#------------------------------------------------------
 #AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward
 
 class  tagCMGetTotalLoginDayAward(Structure):
@@ -13284,240 +12792,6 @@
 
 m_NAtagCMDiceTake=tagCMDiceTake()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceTake.Cmd,m_NAtagCMDiceTake.SubCmd))] = m_NAtagCMDiceTake
-
-
-#------------------------------------------------------
-# AB 06 活动物品兑换 #tagCMExchangeActionItem
-
-class  tagCMExchangeActionItem(Structure):
-    Head = tagHead()
-    ActionKeyLen = 0    #(BYTE ActionKeyLen)
-    ActionKey = ""    #(String ActionKey)
-    ItemID = 0    #(DWORD ItemID)// 兑换的目标物品ID
-    ExcCnt = 0    #(WORD ExcCnt)// 兑换个数,默认1个
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x06
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ExcCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAB
-        self.Head.SubCmd = 0x06
-        self.ActionKeyLen = 0
-        self.ActionKey = ""
-        self.ItemID = 0
-        self.ExcCnt = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += len(self.ActionKey)
-        length += 4
-        length += 2
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
-        data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteWORD(data, self.ExcCnt)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActionKeyLen:%d,
-                                ActionKey:%s,
-                                ItemID:%d,
-                                ExcCnt:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActionKeyLen,
-                                self.ActionKey,
-                                self.ItemID,
-                                self.ExcCnt
-                                )
-        return DumpString
-
-
-m_NAtagCMExchangeActionItem=tagCMExchangeActionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeActionItem.Head.Cmd,m_NAtagCMExchangeActionItem.Head.SubCmd))] = m_NAtagCMExchangeActionItem
-
-
-#------------------------------------------------------
-# AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward
-
-class  tagCMGetFestivalLoginAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("FestivalType", c_ubyte),    # 节日类型
-                  ("DayIndex", c_ubyte),    # 节日天 <从节日活动开始日0天开始>
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        self.SubCmd = 0x07
-        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 = 0xAB
-        self.SubCmd = 0x07
-        self.FestivalType = 0
-        self.DayIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetFestivalLoginAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                FestivalType:%d,
-                                DayIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.FestivalType,
-                                self.DayIndex
-                                )
-        return DumpString
-
-
-m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward
-
-
-#------------------------------------------------------
-# AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward
-
-class  tagCMGetManorWarDailyAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    # 领地id
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        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 = 0xAB
-        self.SubCmd = 0x02
-        self.MapID = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetManorWarDailyAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                MapID:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.MapID
-                                )
-        return DumpString
-
-
-m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward
-
-
-#------------------------------------------------------
-# AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward
-
-class  tagCMGetManorWarJoinAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAB
-        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 = 0xAB
-        self.SubCmd = 0x01
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetManorWarJoinAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward
 
 
 #------------------------------------------------------
@@ -14397,6 +13671,62 @@
 
 
 #------------------------------------------------------
+# B1 0A 副本购买buff #tagCMFBBuyBuff
+
+class  tagCMFBBuyBuff(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("MoneyCnt", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x0A
+        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 = 0xB1
+        self.SubCmd = 0x0A
+        self.MapID = 0
+        self.MoneyCnt = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMFBBuyBuff)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MapID:%d,
+                                MoneyCnt:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MapID,
+                                self.MoneyCnt
+                                )
+        return DumpString
+
+
+m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
+
+
+#------------------------------------------------------
 # B1 06 助战召唤 #tagCMHelpBattleCall
 
 class  tagCMHelpBattleCall(Structure):
@@ -14662,6 +13992,131 @@
 
 m_NAtagCMSetFMTDouble=tagCMSetFMTDouble()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetFMTDouble.Cmd,m_NAtagCMSetFMTDouble.SubCmd))] = m_NAtagCMSetFMTDouble
+
+
+#------------------------------------------------------
+# B2 06 玩家加点 #tagCMAddPoint
+
+class  tagCMAddPoint(Structure):
+    Head = tagHead()
+    PointAttrIDCount = 0    #(BYTE PointAttrIDCount)// 加点属性ID个数
+    PointAttrIDList = list()    #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
+    PointValueList = list()    #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x06
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.PointAttrIDCount):
+            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+            self.PointAttrIDList.append(value)
+        for i in range(self.PointAttrIDCount):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.PointValueList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x06
+        self.PointAttrIDCount = 0
+        self.PointAttrIDList = list()
+        self.PointValueList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1 * self.PointAttrIDCount
+        length += 2 * self.PointAttrIDCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
+        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])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PointAttrIDCount:%d,
+                                PointAttrIDList:%s,
+                                PointValueList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PointAttrIDCount,
+                                "...",
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMAddPoint=tagCMAddPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
+
+
+#------------------------------------------------------
+# B2 07 重置加点 #tagCMResetAttrPoint
+
+class  tagCMResetAttrPoint(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x07
+        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 = 0x07
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMResetAttrPoint)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
 
 
 #------------------------------------------------------
@@ -14945,6 +14400,174 @@
 
 m_NAtagCMTJGnpc=tagCMTJGnpc()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
+
+
+#------------------------------------------------------
+# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
+
+class  tagCMRecyclePriWoodPile(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ObjID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        self.SubCmd = 0x0F
+        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 = 0xB4
+        self.SubCmd = 0x0F
+        self.ObjID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMRecyclePriWoodPile)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ObjID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ObjID
+                                )
+        return DumpString
+
+
+m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
+
+
+#------------------------------------------------------
+# B4 0E 玩家掉血 #tagCMRoleLostHP
+
+class  tagCMRoleLostHP(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("LostHP", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        self.SubCmd = 0x0E
+        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 = 0xB4
+        self.SubCmd = 0x0E
+        self.LostHP = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMRoleLostHP)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                LostHP:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.LostHP
+                                )
+        return DumpString
+
+
+m_NAtagCMRoleLostHP=tagCMRoleLostHP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
+
+
+#------------------------------------------------------
+# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
+
+class  tagCMSummonPriWoodPile(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("NPCID", c_int),    
+                  ("Count", c_ubyte),    #默认1个,最多5个
+                  ("HP", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
+                  ("HPEx", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        self.SubCmd = 0x0C
+        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 = 0xB4
+        self.SubCmd = 0x0C
+        self.NPCID = 0
+        self.Count = 0
+        self.HP = 0
+        self.HPEx = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMSummonPriWoodPile)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                NPCID:%d,
+                                Count:%d,
+                                HP:%d,
+                                HPEx:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.NPCID,
+                                self.Count,
+                                self.HP,
+                                self.HPEx
+                                )
+        return DumpString
+
+
+m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
 
 
 #------------------------------------------------------
@@ -15725,6 +15348,62 @@
 
 
 #------------------------------------------------------
+# B4 0D 战斗印记 #tagCMYinji
+
+class  tagCMYinji(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("Count", c_ubyte),    
+                  ("Type", c_ubyte),    # 0 加,1减
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        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 = 0xB4
+        self.SubCmd = 0x0D
+        self.Count = 0
+        self.Type = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMYinji)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                Count:%d,
+                                Type:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.Count,
+                                self.Type
+                                )
+        return DumpString
+
+
+m_NAtagCMYinji=tagCMYinji()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
+
+
+#------------------------------------------------------
 #B4 03 吸引NPC仇恨 #tagNPCAttention
 
 class  tagNPCAttention(Structure):
@@ -16393,6 +16072,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("DataMapID", c_int),    
+                  ("LineID", c_ushort),    
                   ]
 
     def __init__(self):
@@ -16410,6 +16090,7 @@
         self.Cmd = 0xC1
         self.SubCmd = 0x05
         self.DataMapID = 0
+        self.LineID = 0
         return
 
     def GetLength(self):
@@ -16422,12 +16103,14 @@
         DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                DataMapID:%d
+                                DataMapID:%d,
+                                LineID:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.DataMapID
+                                self.DataMapID,
+                                self.LineID
                                 )
         return DumpString
 

--
Gitblit v1.8.0