From c7b7fef3f90efba243766435183efbfa03ac52d7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 十一月 2019 17:12:46 +0800
Subject: [PATCH] 8346 【恺英】【后端】协助系统(封包修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  617 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 553 insertions(+), 64 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 58315ef..e82c9e8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5781,19 +5781,16 @@
 # B0 01 新增协助 #tagGCAssistInfoList
 
 class  tagGCAssistInfo(Structure):
-    GUID = ""    #(char GUID[40])
+    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
     PlayerName = ""    #(char PlayerName[33])
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(BYTE RealmLV)//境界
-    AssistType = 0    #(BYTE AssistType)//协助类型 1-boss, 2-副本, 3-
-    AssistValue1 = 0    #(DWORD AssistValue1)//协助参数1,由协助类型决定
-    AssistValue2 = 0    #(DWORD AssistValue2)//协助参数2
-    AssistValue3 = 0    #(DWORD AssistValue3)//协助参数3
-    AssistValue4 = 0    #(DWORD AssistValue4)//协助参数4
-    AssistValue5 = 0    #(DWORD AssistValue5)//协助参数5
-    AssistDataLen = 0    #(WORD AssistDataLen)
-    AssistData = ""    #(String AssistData)//其他自定义数据
+    MapID = 0    #(DWORD MapID)
+    LineID = 0    #(DWORD LineID)
+    NPCID = 0    #(DWORD NPCID)
+    ExDataLen = 0    #(WORD ExDataLen)
+    ExData = ""    #(String ExData)//其他自定义数据
     data = None
 
     def __init__(self):
@@ -5802,35 +5799,29 @@
 
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AssistType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AssistValue1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AssistValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AssistValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AssistValue4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AssistValue5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AssistDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.AssistData,_pos = CommFunc.ReadString(_lpData, _pos,self.AssistDataLen)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
         return _pos
 
     def Clear(self):
-        self.GUID = ""
+        self.AssistGUID = ""
         self.PlayerName = ""
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
-        self.AssistType = 0
-        self.AssistValue1 = 0
-        self.AssistValue2 = 0
-        self.AssistValue3 = 0
-        self.AssistValue4 = 0
-        self.AssistValue5 = 0
-        self.AssistDataLen = 0
-        self.AssistData = ""
+        self.MapID = 0
+        self.LineID = 0
+        self.NPCID = 0
+        self.ExDataLen = 0
+        self.ExData = ""
         return
 
     def GetLength(self):
@@ -5840,64 +5831,52 @@
         length += 1
         length += 2
         length += 1
-        length += 1
-        length += 4
-        length += 4
         length += 4
         length += 4
         length += 4
         length += 2
-        length += len(self.AssistData)
+        length += len(self.ExData)
 
         return length
 
     def GetBuffer(self):
         data = ''
-        data = CommFunc.WriteString(data, 40, self.GUID)
+        data = CommFunc.WriteString(data, 40, self.AssistGUID)
         data = CommFunc.WriteString(data, 33, self.PlayerName)
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
-        data = CommFunc.WriteBYTE(data, self.AssistType)
-        data = CommFunc.WriteDWORD(data, self.AssistValue1)
-        data = CommFunc.WriteDWORD(data, self.AssistValue2)
-        data = CommFunc.WriteDWORD(data, self.AssistValue3)
-        data = CommFunc.WriteDWORD(data, self.AssistValue4)
-        data = CommFunc.WriteDWORD(data, self.AssistValue5)
-        data = CommFunc.WriteWORD(data, self.AssistDataLen)
-        data = CommFunc.WriteString(data, self.AssistDataLen, self.AssistData)
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteDWORD(data, self.LineID)
+        data = CommFunc.WriteDWORD(data, self.NPCID)
+        data = CommFunc.WriteWORD(data, self.ExDataLen)
+        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
         return data
 
     def OutputString(self):
         DumpString = '''
-                                GUID:%s,
+                                AssistGUID:%s,
                                 PlayerName:%s,
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
-                                AssistType:%d,
-                                AssistValue1:%d,
-                                AssistValue2:%d,
-                                AssistValue3:%d,
-                                AssistValue4:%d,
-                                AssistValue5:%d,
-                                AssistDataLen:%d,
-                                AssistData:%s
+                                MapID:%d,
+                                LineID:%d,
+                                NPCID:%d,
+                                ExDataLen:%d,
+                                ExData:%s
                                 '''\
                                 %(
-                                self.GUID,
+                                self.AssistGUID,
                                 self.PlayerName,
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
-                                self.AssistType,
-                                self.AssistValue1,
-                                self.AssistValue2,
-                                self.AssistValue3,
-                                self.AssistValue4,
-                                self.AssistValue5,
-                                self.AssistDataLen,
-                                self.AssistData
+                                self.MapID,
+                                self.LineID,
+                                self.NPCID,
+                                self.ExDataLen,
+                                self.ExData
                                 )
         return DumpString
 
@@ -5969,11 +5948,280 @@
 
 
 #------------------------------------------------------
+# B0 03 协助中的目标玩家信息 #tagGCAssistTagPlayerInfo
+
+class  tagGCAssistTagPlayerInfo(Structure):
+    Head = tagHead()
+    PlayerID = 0    #(DWORD PlayerID)
+    PlayerName = ""    #(char PlayerName[33])
+    Job = 0    #(BYTE Job)
+    LV = 0    #(WORD LV)
+    RealmLV = 0    #(BYTE RealmLV)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x03
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x03
+        self.PlayerID = 0
+        self.PlayerName = ""
+        self.Job = 0
+        self.LV = 0
+        self.RealmLV = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 33
+        length += 1
+        length += 2
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.RealmLV)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                PlayerID:%d,
+                                PlayerName:%s,
+                                Job:%d,
+                                LV:%d,
+                                RealmLV:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.PlayerID,
+                                self.PlayerName,
+                                self.Job,
+                                self.LV,
+                                self.RealmLV
+                                )
+        return DumpString
+
+
+m_NAtagGCAssistTagPlayerInfo=tagGCAssistTagPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistTagPlayerInfo.Head.Cmd,m_NAtagGCAssistTagPlayerInfo.Head.SubCmd))] = m_NAtagGCAssistTagPlayerInfo
+
+
+#------------------------------------------------------
+# B0 05 可领取的协助感谢礼盒 #tagGCAssistThanksGiftList
+
+class  tagGCAssistThanksGift(Structure):
+    GiftGUID = ""    #(char GiftGUID[40])//礼盒GUID
+    ItemID = 0    #(DWORD ItemID)//礼盒ID
+    PlayerID = 0    #(DWORD PlayerID)//发起玩家ID
+    PlayerName = ""    #(char PlayerName[33])
+    Job = 0    #(BYTE Job)
+    LV = 0    #(WORD LV)
+    RealmLV = 0    #(BYTE RealmLV)//境界
+    MapID = 0    #(DWORD MapID)
+    LineID = 0    #(DWORD LineID)
+    NPCID = 0    #(DWORD NPCID)
+    ExDataLen = 0    #(WORD ExDataLen)
+    ExData = ""    #(String ExData)//其他自定义数据
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.GiftGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+        return _pos
+
+    def Clear(self):
+        self.GiftGUID = ""
+        self.ItemID = 0
+        self.PlayerID = 0
+        self.PlayerName = ""
+        self.Job = 0
+        self.LV = 0
+        self.RealmLV = 0
+        self.MapID = 0
+        self.LineID = 0
+        self.NPCID = 0
+        self.ExDataLen = 0
+        self.ExData = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 40
+        length += 4
+        length += 4
+        length += 33
+        length += 1
+        length += 2
+        length += 1
+        length += 4
+        length += 4
+        length += 4
+        length += 2
+        length += len(self.ExData)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, 40, self.GiftGUID)
+        data = CommFunc.WriteDWORD(data, self.ItemID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteDWORD(data, self.LineID)
+        data = CommFunc.WriteDWORD(data, self.NPCID)
+        data = CommFunc.WriteWORD(data, self.ExDataLen)
+        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                GiftGUID:%s,
+                                ItemID:%d,
+                                PlayerID:%d,
+                                PlayerName:%s,
+                                Job:%d,
+                                LV:%d,
+                                RealmLV:%d,
+                                MapID:%d,
+                                LineID:%d,
+                                NPCID:%d,
+                                ExDataLen:%d,
+                                ExData:%s
+                                '''\
+                                %(
+                                self.GiftGUID,
+                                self.ItemID,
+                                self.PlayerID,
+                                self.PlayerName,
+                                self.Job,
+                                self.LV,
+                                self.RealmLV,
+                                self.MapID,
+                                self.LineID,
+                                self.NPCID,
+                                self.ExDataLen,
+                                self.ExData
+                                )
+        return DumpString
+
+
+class  tagGCAssistThanksGiftList(Structure):
+    Head = tagHead()
+    GiftCount = 0    #(BYTE GiftCount)
+    ThanksGiftList = list()    #(vector<tagGCAssistThanksGift> ThanksGiftList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x05
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.GiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.GiftCount):
+            temThanksGiftList = tagGCAssistThanksGift()
+            _pos = temThanksGiftList.ReadData(_lpData, _pos)
+            self.ThanksGiftList.append(temThanksGiftList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x05
+        self.GiftCount = 0
+        self.ThanksGiftList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        for i in range(self.GiftCount):
+            length += self.ThanksGiftList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.GiftCount)
+        for i in range(self.GiftCount):
+            data = CommFunc.WriteString(data, self.ThanksGiftList[i].GetLength(), self.ThanksGiftList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                GiftCount:%d,
+                                ThanksGiftList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.GiftCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCAssistThanksGiftList=tagGCAssistThanksGiftList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistThanksGiftList.Head.Cmd,m_NAtagGCAssistThanksGiftList.Head.SubCmd))] = m_NAtagGCAssistThanksGiftList
+
+
+#------------------------------------------------------
 # B0 02 删除协助 #tagGCClearAssist
 
 class  tagGCClearAssist(Structure):
     Head = tagHead()
-    GUID = ""    #(char GUID[40])
+    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
     data = None
 
     def __init__(self):
@@ -5985,7 +6233,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
         return _pos
 
     def Clear(self):
@@ -5993,7 +6241,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xB0
         self.Head.SubCmd = 0x02
-        self.GUID = ""
+        self.AssistGUID = ""
         return
 
     def GetLength(self):
@@ -6006,17 +6254,17 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 40, self.GUID)
+        data = CommFunc.WriteString(data, 40, self.AssistGUID)
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                GUID:%s
+                                AssistGUID:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.GUID
+                                self.AssistGUID
                                 )
         return DumpString
 
@@ -6154,6 +6402,247 @@
 
 
 #------------------------------------------------------
+# B0 06 领取协助感谢礼盒成功 #tagGCGetAssistThanksGiftOK
+
+class  tagGCGetAssistThanksGiftOK(Structure):
+    Head = tagHead()
+    GiftGUID = ""    #(char GiftGUID[40])//礼盒GUID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x06
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.GiftGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x06
+        self.GiftGUID = ""
+        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.GiftGUID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                GiftGUID:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.GiftGUID
+                                )
+        return DumpString
+
+
+m_NAtagGCGetAssistThanksGiftOK=tagGCGetAssistThanksGiftOK()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftOK.Head.Cmd,m_NAtagGCGetAssistThanksGiftOK.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftOK
+
+
+#------------------------------------------------------
+# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
+
+class  tagGCAssistPlayerInfo(Structure):
+    PlayerID = 0    #(DWORD PlayerID)
+    PlayerName = ""    #(char PlayerName[33])
+    Job = 0    #(BYTE Job)
+    LV = 0    #(WORD LV)
+    RealmLV = 0    #(BYTE RealmLV)//境界
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.PlayerID = 0
+        self.PlayerName = ""
+        self.Job = 0
+        self.LV = 0
+        self.RealmLV = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 33
+        length += 1
+        length += 2
+        length += 1
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.RealmLV)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                PlayerID:%d,
+                                PlayerName:%s,
+                                Job:%d,
+                                LV:%d,
+                                RealmLV:%d
+                                '''\
+                                %(
+                                self.PlayerID,
+                                self.PlayerName,
+                                self.Job,
+                                self.LV,
+                                self.RealmLV
+                                )
+        return DumpString
+
+
+class  tagGCUseAssistThanksGiftPreview(Structure):
+    Head = tagHead()
+    GiftGUID = ""    #(char GiftGUID[40])//礼盒GUID
+    ItemID = 0    #(DWORD ItemID)//礼盒ID
+    MapID = 0    #(DWORD MapID)
+    LineID = 0    #(DWORD LineID)
+    NPCID = 0    #(DWORD NPCID)
+    ExDataLen = 0    #(WORD ExDataLen)
+    ExData = ""    #(String ExData)//其他自定义数据
+    AssistPlayerCount = 0    #(BYTE AssistPlayerCount)
+    AssistPlayerList = list()    #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x04
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.GiftGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+        self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.AssistPlayerCount):
+            temAssistPlayerList = tagGCAssistPlayerInfo()
+            _pos = temAssistPlayerList.ReadData(_lpData, _pos)
+            self.AssistPlayerList.append(temAssistPlayerList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB0
+        self.Head.SubCmd = 0x04
+        self.GiftGUID = ""
+        self.ItemID = 0
+        self.MapID = 0
+        self.LineID = 0
+        self.NPCID = 0
+        self.ExDataLen = 0
+        self.ExData = ""
+        self.AssistPlayerCount = 0
+        self.AssistPlayerList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 40
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 2
+        length += len(self.ExData)
+        length += 1
+        for i in range(self.AssistPlayerCount):
+            length += self.AssistPlayerList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteString(data, 40, self.GiftGUID)
+        data = CommFunc.WriteDWORD(data, self.ItemID)
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteDWORD(data, self.LineID)
+        data = CommFunc.WriteDWORD(data, self.NPCID)
+        data = CommFunc.WriteWORD(data, self.ExDataLen)
+        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+        data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
+        for i in range(self.AssistPlayerCount):
+            data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                GiftGUID:%s,
+                                ItemID:%d,
+                                MapID:%d,
+                                LineID:%d,
+                                NPCID:%d,
+                                ExDataLen:%d,
+                                ExData:%s,
+                                AssistPlayerCount:%d,
+                                AssistPlayerList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.GiftGUID,
+                                self.ItemID,
+                                self.MapID,
+                                self.LineID,
+                                self.NPCID,
+                                self.ExDataLen,
+                                self.ExData,
+                                self.AssistPlayerCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
+
+
+#------------------------------------------------------
 #B3 03 询问是否允许添加好友#tagGCFriendAskIfJoin
 
 class  tagGCFriendAskIfJoin(Structure):

--
Gitblit v1.8.0