From dcc91df4e4090f84da0bf7027de4550a0315c184 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 十二月 2021 16:52:28 +0800
Subject: [PATCH] 1111 【后端】修复组队报错;修复购买副本次数报错;

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py |  810 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 809 insertions(+), 1 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index b8a55ae..96ef755 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -2330,6 +2330,222 @@
 
 
 #------------------------------------------------------
+# B3 19 提升魅力等级 #tagCGCharmLVUp
+
+class  tagCGCharmLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x19
+        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 = 0xB3
+        self.SubCmd = 0x19
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCharmLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGCharmLVUp=tagCGCharmLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
+
+
+#------------------------------------------------------
+# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
+
+class  tagCGCharmOfferBillboardQuery(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 魅力玩家ID
+                  ("QueryType", c_ubyte),    # 查看类型: 1-总榜,2-周榜,3-日榜
+                  ("QueryCount", c_ubyte),    # 查看名次数量,最大255
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x09
+        self.PlayerID = 0
+        self.QueryType = 0
+        self.QueryCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGCharmOfferBillboardQuery)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d,
+                                QueryType:%d,
+                                QueryCount:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID,
+                                self.QueryType,
+                                self.QueryCount
+                                )
+        return DumpString
+
+
+m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
+
+
+#------------------------------------------------------
+# B3 16 和平离婚回应 #tagGCMarryBreakResponse
+
+class  tagGCMarryBreakResponse(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x16
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCMarryBreakResponse)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
+
+
+#------------------------------------------------------
+# B3 12 提亲回应 #tagCGMarryResponse
+
+class  tagCGMarryResponse(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ReqPlayerID", c_int),    # 提亲的玩家ID
+                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x12
+        self.ReqPlayerID = 0
+        self.IsOK = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGMarryResponse)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ReqPlayerID:%d,
+                                IsOK:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ReqPlayerID,
+                                self.IsOK
+                                )
+        return DumpString
+
+
+m_NAtagCGMarryResponse=tagCGMarryResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
+
+
+#------------------------------------------------------
 #B3 04 加入黑名单 #tagCGAddBlackList
 
 class  tagCGAddBlackList(Structure):
@@ -3816,6 +4032,106 @@
 
 m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
+
+
+#------------------------------------------------------
+# C0 06 查询幸运云购开奖记录 #tagCGQueryLuckyCloudBuyLotteryRec
+
+class  tagCGQueryLuckyCloudBuyLotteryRec(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ZoneID", c_ubyte),    #查询分区ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x06
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x06
+        self.ZoneID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryLuckyCloudBuyLotteryRec)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 06 查询幸运云购开奖记录 //tagCGQueryLuckyCloudBuyLotteryRec:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ZoneID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ZoneID
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryLuckyCloudBuyLotteryRec=tagCGQueryLuckyCloudBuyLotteryRec()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyLotteryRec.Cmd,m_NAtagCGQueryLuckyCloudBuyLotteryRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyLotteryRec
+
+
+#------------------------------------------------------
+# C0 05 查询幸运云购购买号码记录 #tagCGQueryLuckyCloudBuyNumRec
+
+class  tagCGQueryLuckyCloudBuyNumRec(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC0
+        self.SubCmd = 0x05
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC0
+        self.SubCmd = 0x05
+        return
+
+    def GetLength(self):
+        return sizeof(tagCGQueryLuckyCloudBuyNumRec)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C0 05 查询幸运云购购买号码记录 //tagCGQueryLuckyCloudBuyNumRec:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCGQueryLuckyCloudBuyNumRec=tagCGQueryLuckyCloudBuyNumRec()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyNumRec.Cmd,m_NAtagCGQueryLuckyCloudBuyNumRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyNumRec
 
 
 #------------------------------------------------------
@@ -10169,6 +10485,62 @@
 
 m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
+
+
+#------------------------------------------------------
+# A5 32 法器升级 #tagCMFaQiLVUp
+
+class  tagCMFaQiLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("UseItemCnt", c_ushort),    #消耗材料个数
+                  ("IsAutoBuy", c_ubyte),    #是否自动购买
+                  ]
+
+    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.UseItemCnt = 0
+        self.IsAutoBuy = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMFaQiLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                UseItemCnt:%d,
+                                IsAutoBuy:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.UseItemCnt,
+                                self.IsAutoBuy
+                                )
+        return DumpString
+
+
+m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
 
 
 #------------------------------------------------------
@@ -16727,6 +17099,390 @@
 
 
 #------------------------------------------------------
+# B3 17 情戒解锁 #tagCMLoveRingUnlock
+
+class  tagCMLoveRingUnlock(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x17
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMLoveRingUnlock)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
+                                Cmd:%s,
+                                SubCmd:%s
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd
+                                )
+        return DumpString
+
+
+m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
+
+
+#------------------------------------------------------
+# B3 18 情戒升级 #tagCMLoveRingUp
+
+class  tagCMLoveRingUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("UseItemCnt", c_int),    #消耗材料个数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x18
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x18
+        self.UseItemCnt = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMLoveRingUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                UseItemCnt:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.UseItemCnt
+                                )
+        return DumpString
+
+
+m_NAtagCMLoveRingUp=tagCMLoveRingUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
+
+
+#------------------------------------------------------
+# B3 15 离婚 #tagCMMarryBreak
+
+class  tagCMMarryBreak(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("BreakType", c_ubyte),    # 0-和平离婚;1-强制离婚
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x15
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x15
+        self.BreakType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMMarryBreak)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                BreakType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.BreakType
+                                )
+        return DumpString
+
+
+m_NAtagCMMarryBreak=tagCMMarryBreak()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
+
+
+#------------------------------------------------------
+# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
+
+class  tagCMMarryBuyFireworks(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
+                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        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 = 0xB3
+        self.SubCmd = 0x14
+        self.PlayerIDA = 0
+        self.PlayerIDB = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMMarryBuyFireworks)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerIDA:%d,
+                                PlayerIDB:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerIDA,
+                                self.PlayerIDB
+                                )
+        return DumpString
+
+
+m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
+
+
+#------------------------------------------------------
+# B3 13 吃喜糖 #tagCMMarryEatCandy
+
+class  tagCMMarryEatCandy(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
+                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x13
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x13
+        self.PlayerIDA = 0
+        self.PlayerIDB = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMMarryEatCandy)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerIDA:%d,
+                                PlayerIDB:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerIDA,
+                                self.PlayerIDB
+                                )
+        return DumpString
+
+
+m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
+
+
+#------------------------------------------------------
+# B3 11 提亲 #tagCMMarryReq
+
+class  tagCMMarryReq(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagPlayerID", c_int),    # 目标玩家ID
+                  ("BridePriceID", c_ubyte),    # 聘礼ID
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x11
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x11
+        self.TagPlayerID = 0
+        self.BridePriceID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMMarryReq)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 11 提亲 //tagCMMarryReq:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagPlayerID:%d,
+                                BridePriceID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagPlayerID,
+                                self.BridePriceID
+                                )
+        return DumpString
+
+
+m_NAtagCMMarryReq=tagCMMarryReq()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
+
+
+#------------------------------------------------------
+# B3 10 送礼物 #tagCMSendGifts
+
+class  tagCMSendGifts(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TagPlayerID", c_int),    # 目标玩家ID
+                  ("GiftNum", c_ushort),    # 赠送礼物编号
+                  ("GiftCount", c_int),    # 赠送礼物数量
+                  ("IsAutoBuy", c_ubyte),    # 是否自动购买
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x10
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x10
+        self.TagPlayerID = 0
+        self.GiftNum = 0
+        self.GiftCount = 0
+        self.IsAutoBuy = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMSendGifts)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TagPlayerID:%d,
+                                GiftNum:%d,
+                                GiftCount:%d,
+                                IsAutoBuy:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TagPlayerID,
+                                self.GiftNum,
+                                self.GiftCount,
+                                self.IsAutoBuy
+                                )
+        return DumpString
+
+
+m_NAtagCMSendGifts=tagCMSendGifts()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
+
+
+#------------------------------------------------------
 # B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
 
 class  tagCMRecyclePriWoodPile(Structure):
@@ -18557,4 +19313,56 @@
 
 
 m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
+
+
+#------------------------------------------------------
+# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
+
+class  tagCMLuckyCloudBuy(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("BuyCount", c_ushort),    # 购买份数
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xC1
+        self.SubCmd = 0x10
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xC1
+        self.SubCmd = 0x10
+        self.BuyCount = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMLuckyCloudBuy)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                BuyCount:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.BuyCount
+                                )
+        return DumpString
+
+
+m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy
\ No newline at end of file

--
Gitblit v1.8.0