From df2af1331d39ad7da3f833931c01e2391f575988 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 09 五月 2019 14:33:51 +0800
Subject: [PATCH] 6705 【后端】【2.0】天星塔功能

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py |  820 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 715 insertions(+), 105 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 270a833..7d73a4d 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
 
 
 #------------------------------------------------------
@@ -3382,6 +3396,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    # 跨服玩家ID
+                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                   ]
 
     def __init__(self):
@@ -3399,6 +3414,7 @@
         self.Cmd = 0xC0
         self.SubCmd = 0x02
         self.PlayerID = 0
+        self.EquipClassLV = 0
         return
 
     def GetLength(self):
@@ -3411,12 +3427,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,6 +4017,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):
@@ -4006,6 +4072,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("FuncLineID", c_ushort),    
                   ]
 
     def __init__(self):
@@ -4022,6 +4090,8 @@
     def Clear(self):
         self.Cmd = 0xA2
         self.SubCmd = 0x31
+        self.MapID = 0
+        self.FuncLineID = 0
         return
 
     def GetLength(self):
@@ -4033,11 +4103,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
 
@@ -4096,6 +4170,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
 
 
 #------------------------------------------------------
@@ -5484,6 +5610,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("PlayerID", c_int),    
+                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                   ]
 
     def __init__(self):
@@ -5501,6 +5628,7 @@
         self.Cmd = 0xA2
         self.SubCmd = 0x12
         self.PlayerID = 0
+        self.EquipClassLV = 0
         return
 
     def GetLength(self):
@@ -5513,18 +5641,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
 
 
 #------------------------------------------------------
@@ -7423,66 +7605,6 @@
 
 
 #------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
 #A5 01 坐骑激活 #tagPlayerActivateHorse
 
 class  tagPlayerActivateHorse(Structure):
@@ -8055,6 +8177,62 @@
 
 m_NAtagCMBuyCollectionCnt=tagCMBuyCollectionCnt()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyCollectionCnt.Cmd,m_NAtagCMBuyCollectionCnt.SubCmd))] = m_NAtagCMBuyCollectionCnt
+
+
+#------------------------------------------------------
+# 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
 
 
 #------------------------------------------------------
@@ -10068,8 +10246,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("RefineNum", c_ushort),    # 配方编号
-                  ("UseRateItem", c_int),    # 附加材料ID
+                  ("AlchemyID", c_int),    # 丹药ID
+                  ("DoType", c_ubyte),    # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
                   ]
 
     def __init__(self):
@@ -10086,8 +10264,8 @@
     def Clear(self):
         self.Cmd = 0xA5
         self.SubCmd = 0x76
-        self.RefineNum = 0
-        self.UseRateItem = 0
+        self.AlchemyID = 0
+        self.DoType = 0
         return
 
     def GetLength(self):
@@ -10100,14 +10278,14 @@
         DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
                                 Cmd:%s,
                                 SubCmd:%s,
-                                RefineNum:%d,
-                                UseRateItem:%d
+                                AlchemyID:%d,
+                                DoType:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
-                                self.RefineNum,
-                                self.UseRateItem
+                                self.AlchemyID,
+                                self.DoType
                                 )
         return DumpString
 
@@ -10822,6 +11000,58 @@
 
 
 #------------------------------------------------------
+# A5 16 选择技能五行专精 #tagCMSelectSkillElement
+
+class  tagCMSelectSkillElement(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("SkillTypeID", 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.SkillTypeID = 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
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.SkillTypeID
+                                )
+        return DumpString
+
+
+m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
+
+
+#------------------------------------------------------
 # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
 
 class  tagCMStartBindJadeWheel(Structure):
@@ -10915,6 +11145,58 @@
 
 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
 
 
 #------------------------------------------------------
@@ -11131,6 +11413,58 @@
 
 m_NAtagUseNewGuyCard=tagUseNewGuyCard()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard
+
+
+#------------------------------------------------------
+# 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
 
 
 #------------------------------------------------------
@@ -13387,6 +13721,118 @@
 
 
 #------------------------------------------------------
+# 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 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize
+
+class  tagCMGiveCustomFBPrize(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("FuncLineID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        self.SubCmd = 0x09
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB1
+        self.SubCmd = 0x09
+        self.MapID = 0
+        self.FuncLineID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGiveCustomFBPrize)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MapID:%d,
+                                FuncLineID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MapID,
+                                self.FuncLineID
+                                )
+        return DumpString
+
+
+m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize
+
+
+#------------------------------------------------------
 # B1 06 助战召唤 #tagCMHelpBattleCall
 
 class  tagCMHelpBattleCall(Structure):
@@ -13603,6 +14049,62 @@
 
 
 #------------------------------------------------------
+# B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize
+
+class  tagCMRefreshCustomFBPrize(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("MapID", c_int),    
+                  ("FuncLineID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB1
+        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 = 0xB1
+        self.SubCmd = 0x08
+        self.MapID = 0
+        self.FuncLineID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMRefreshCustomFBPrize)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                MapID:%d,
+                                FuncLineID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.MapID,
+                                self.FuncLineID
+                                )
+        return DumpString
+
+
+m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize
+
+
+#------------------------------------------------------
 # B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble
 
 class  tagCMSetFMTDouble(Structure):
@@ -13729,6 +14231,54 @@
 
 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
 
 
 #------------------------------------------------------
@@ -14012,6 +14562,62 @@
 
 m_NAtagCMTJGnpc=tagCMTJGnpc()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
+
+
+#------------------------------------------------------
+# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
+
+class  tagCMSummonPriWoodPile(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("NPCID", c_int),    
+                  ("Count", c_ubyte),    #默认1个,最多5个
+                  ]
+
+    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
+        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
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.NPCID,
+                                self.Count
+                                )
+        return DumpString
+
+
+m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
 
 
 #------------------------------------------------------
@@ -15460,6 +16066,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("DataMapID", c_int),    
+                  ("LineID", c_ushort),    
                   ]
 
     def __init__(self):
@@ -15477,6 +16084,7 @@
         self.Cmd = 0xC1
         self.SubCmd = 0x05
         self.DataMapID = 0
+        self.LineID = 0
         return
 
     def GetLength(self):
@@ -15489,12 +16097,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