From 7b6e4af3ca3ea15dee2e7933e7445c3c2dc25d21 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 十一月 2019 16:13:18 +0800
Subject: [PATCH] 8346 【恺英】【后端】协助系统(协助表修改,增加协助感谢表)

---
 ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py |  271 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 200 insertions(+), 71 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
index 70c0a92..1bad1e7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
@@ -15,27 +15,25 @@
 from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at)
 import CommFunc
 
-# 协助表 #tagDBAssist
-class tagDBAssist(Structure):
+# 协助感谢表 #tagDBAssistThanks
+class tagDBAssistThanks(Structure):
     _pack_ = 1
     _fields_ = [
         ('GUID', ctypes.c_char * 40),
+        ('ItemID', ctypes.c_ulong),
         ('FamilyID', ctypes.c_ulong),
         ('PlayerID', ctypes.c_ulong),
         ('PlayerName', ctypes.c_char * 33),
         ('Job', ctypes.c_ubyte),
         ('LV', ctypes.c_ushort),
         ('RealmLV', ctypes.c_ubyte),
-        ('AssistType', ctypes.c_ubyte),
-        ('AssistValue1', ctypes.c_ulong),
-        ('AssistValue2', ctypes.c_ulong),
-        ('AssistValue3', ctypes.c_ulong),
-        ('AssistValue4', ctypes.c_ulong),
-        ('AssistValue5', ctypes.c_ulong),
-        ('AssistDataLen', ctypes.c_ushort),
-        ('AssistData', ctypes.c_char_p),
-        ('FinishTime', ctypes.c_char * 19),
-        ('AssistState', ctypes.c_ubyte),
+        ('MapID', ctypes.c_ulong),
+        ('LineID', ctypes.c_ulong),
+        ('NPCID', ctypes.c_ulong),
+        ('ExDataLen', ctypes.c_ushort),
+        ('ExData', ctypes.c_char_p),
+        ('TimeStr', ctypes.c_char * 19),
+        ('ThanksState', ctypes.c_ubyte),
         ('AssistPlayerLen', ctypes.c_ushort),
         ('AssistPlayer', ctypes.c_char_p),
         ('ADOResult', ctypes.c_ulong),
@@ -47,22 +45,20 @@
 
     def clear(self):
         self.GUID = ''
+        self.ItemID = 0
         self.FamilyID = 0
         self.PlayerID = 0
         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.FinishTime = ''
-        self.AssistState = 0
+        self.MapID = 0
+        self.LineID = 0
+        self.NPCID = 0
+        self.ExDataLen = 0
+        self.ExData = ''
+        self.TimeStr = ''
+        self.ThanksState = 0
         self.AssistPlayerLen = 0
         self.AssistPlayer = ''
 
@@ -73,23 +69,21 @@
             return -1
         self.clear()
         self.GUID, pos = CommFunc.ReadString(buf, pos, 40)
+        self.ItemID, pos = CommFunc.ReadDWORD(buf, pos)
         self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)
         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
         self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33)
         self.Job, pos = CommFunc.ReadBYTE(buf, pos)
         self.LV, pos = CommFunc.ReadWORD(buf, pos)
         self.RealmLV, pos = CommFunc.ReadBYTE(buf, pos)
-        self.AssistType, pos = CommFunc.ReadBYTE(buf, pos)
-        self.AssistValue1, pos = CommFunc.ReadDWORD(buf, pos)
-        self.AssistValue2, pos = CommFunc.ReadDWORD(buf, pos)
-        self.AssistValue3, pos = CommFunc.ReadDWORD(buf, pos)
-        self.AssistValue4, pos = CommFunc.ReadDWORD(buf, pos)
-        self.AssistValue5, pos = CommFunc.ReadDWORD(buf, pos)
-        self.AssistDataLen, pos = CommFunc.ReadWORD(buf, pos)
-        tmp, pos = CommFunc.ReadString(buf, pos, self.AssistDataLen)
-        self.AssistData = ctypes.c_char_p(tmp)
-        self.FinishTime, pos = CommFunc.ReadString(buf, pos, 19)
-        self.AssistState, pos = CommFunc.ReadBYTE(buf, pos)
+        self.MapID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.LineID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.NPCID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.ExDataLen, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ExDataLen)
+        self.ExData = ctypes.c_char_p(tmp)
+        self.TimeStr, pos = CommFunc.ReadString(buf, pos, 19)
+        self.ThanksState, pos = CommFunc.ReadBYTE(buf, pos)
         self.AssistPlayerLen, pos = CommFunc.ReadWORD(buf, pos)
         tmp, pos = CommFunc.ReadString(buf, pos, self.AssistPlayerLen)
         self.AssistPlayer = ctypes.c_char_p(tmp)
@@ -98,22 +92,20 @@
     def getBuffer(self):
         buf = ''
         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.GUID)
+        buf = CommFunc.WriteDWORD(buf, self.ItemID)
         buf = CommFunc.WriteDWORD(buf, self.FamilyID)
         buf = CommFunc.WriteDWORD(buf, self.PlayerID)
         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.PlayerName)
         buf = CommFunc.WriteBYTE(buf, self.Job)
         buf = CommFunc.WriteWORD(buf, self.LV)
         buf = CommFunc.WriteBYTE(buf, self.RealmLV)
-        buf = CommFunc.WriteBYTE(buf, self.AssistType)
-        buf = CommFunc.WriteDWORD(buf, self.AssistValue1)
-        buf = CommFunc.WriteDWORD(buf, self.AssistValue2)
-        buf = CommFunc.WriteDWORD(buf, self.AssistValue3)
-        buf = CommFunc.WriteDWORD(buf, self.AssistValue4)
-        buf = CommFunc.WriteDWORD(buf, self.AssistValue5)
-        buf = CommFunc.WriteWORD(buf, self.AssistDataLen)
-        buf = CommFunc.WriteString(buf, self.AssistDataLen, self.AssistData)
-        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.FinishTime)
-        buf = CommFunc.WriteBYTE(buf, self.AssistState)
+        buf = CommFunc.WriteDWORD(buf, self.MapID)
+        buf = CommFunc.WriteDWORD(buf, self.LineID)
+        buf = CommFunc.WriteDWORD(buf, self.NPCID)
+        buf = CommFunc.WriteWORD(buf, self.ExDataLen)
+        buf = CommFunc.WriteString(buf, self.ExDataLen, self.ExData)
+        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.TimeStr)
+        buf = CommFunc.WriteBYTE(buf, self.ThanksState)
         buf = CommFunc.WriteWORD(buf, self.AssistPlayerLen)
         buf = CommFunc.WriteString(buf, self.AssistPlayerLen, self.AssistPlayer)
         return buf
@@ -123,18 +115,16 @@
         length += sizeof(ctypes.c_char) * 40
         length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_char) * 33
         length += sizeof(ctypes.c_ubyte)
         length += sizeof(ctypes.c_ushort)
         length += sizeof(ctypes.c_ubyte)
-        length += sizeof(ctypes.c_ubyte)
-        length += sizeof(ctypes.c_ulong)
-        length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_ulong)
         length += sizeof(ctypes.c_ushort)
-        length += self.AssistDataLen
+        length += self.ExDataLen
         length += sizeof(ctypes.c_char) * 19
         length += sizeof(ctypes.c_ubyte)
         length += sizeof(ctypes.c_ushort)
@@ -142,45 +132,41 @@
         return length
 
     def outputString(self):
-        output = '''// 协助表 #tagDBAssist:
+        output = '''// 协助感谢表 #tagDBAssistThanks:
             GUID = %s,
+            ItemID = %s,
             FamilyID = %s,
             PlayerID = %s,
             PlayerName = %s,
             Job = %s,
             LV = %s,
             RealmLV = %s,
-            AssistType = %s,
-            AssistValue1 = %s,
-            AssistValue2 = %s,
-            AssistValue3 = %s,
-            AssistValue4 = %s,
-            AssistValue5 = %s,
-            AssistDataLen = %s,
-            AssistData = %s,
-            FinishTime = %s,
-            AssistState = %s,
+            MapID = %s,
+            LineID = %s,
+            NPCID = %s,
+            ExDataLen = %s,
+            ExData = %s,
+            TimeStr = %s,
+            ThanksState = %s,
             AssistPlayerLen = %s,
             AssistPlayer = %s,
             ADOResult = %s,
             '''%(
                 self.GUID,
+                self.ItemID,
                 self.FamilyID,
                 self.PlayerID,
                 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.FinishTime,
-                self.AssistState,
+                self.MapID,
+                self.LineID,
+                self.NPCID,
+                self.ExDataLen,
+                self.ExData,
+                self.TimeStr,
+                self.ThanksState,
                 self.AssistPlayerLen,
                 self.AssistPlayer,
                 self.ADOResult,
@@ -200,11 +186,154 @@
         else:
             self.PlayerName = Str[:33]
             
-    def SetFinishTime(self,Str):
+    def SetTimeStr(self,Str):
         if len(Str)<=19:
-            self.FinishTime = Str
+            self.TimeStr = Str
         else:
-            self.FinishTime = Str[:19]
+            self.TimeStr = Str[:19]
+            
+            
+# 协助表 #tagDBAssist
+class tagDBAssist(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('GUID', ctypes.c_char * 40),
+        ('FamilyID', ctypes.c_ulong),
+        ('PlayerID', ctypes.c_ulong),
+        ('PlayerName', ctypes.c_char * 33),
+        ('Job', ctypes.c_ubyte),
+        ('LV', ctypes.c_ushort),
+        ('RealmLV', ctypes.c_ubyte),
+        ('AssistType', ctypes.c_ubyte),
+        ('MapID', ctypes.c_ulong),
+        ('LineID', ctypes.c_ulong),
+        ('NPCID', ctypes.c_ulong),
+        ('ExDataLen', ctypes.c_ushort),
+        ('ExData', ctypes.c_char_p),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+    def clear(self):
+        self.GUID = ''
+        self.FamilyID = 0
+        self.PlayerID = 0
+        self.PlayerName = ''
+        self.Job = 0
+        self.LV = 0
+        self.RealmLV = 0
+        self.AssistType = 0
+        self.MapID = 0
+        self.LineID = 0
+        self.NPCID = 0
+        self.ExDataLen = 0
+        self.ExData = ''
+
+    def readData(self, buf, pos = 0, length = 0):
+        if not pos <= length:
+            return -1
+        if len(buf) < pos + self.getLength():
+            return -1
+        self.clear()
+        self.GUID, pos = CommFunc.ReadString(buf, pos, 40)
+        self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33)
+        self.Job, pos = CommFunc.ReadBYTE(buf, pos)
+        self.LV, pos = CommFunc.ReadWORD(buf, pos)
+        self.RealmLV, pos = CommFunc.ReadBYTE(buf, pos)
+        self.AssistType, pos = CommFunc.ReadBYTE(buf, pos)
+        self.MapID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.LineID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.NPCID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.ExDataLen, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ExDataLen)
+        self.ExData = ctypes.c_char_p(tmp)
+        return self.getLength()
+
+    def getBuffer(self):
+        buf = ''
+        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.GUID)
+        buf = CommFunc.WriteDWORD(buf, self.FamilyID)
+        buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.PlayerName)
+        buf = CommFunc.WriteBYTE(buf, self.Job)
+        buf = CommFunc.WriteWORD(buf, self.LV)
+        buf = CommFunc.WriteBYTE(buf, self.RealmLV)
+        buf = CommFunc.WriteBYTE(buf, self.AssistType)
+        buf = CommFunc.WriteDWORD(buf, self.MapID)
+        buf = CommFunc.WriteDWORD(buf, self.LineID)
+        buf = CommFunc.WriteDWORD(buf, self.NPCID)
+        buf = CommFunc.WriteWORD(buf, self.ExDataLen)
+        buf = CommFunc.WriteString(buf, self.ExDataLen, self.ExData)
+        return buf
+
+    def getLength(self):
+        length = 0
+        length += sizeof(ctypes.c_char) * 40
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_char) * 33
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ushort)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ushort)
+        length += self.ExDataLen
+        return length
+
+    def outputString(self):
+        output = '''// 协助表 #tagDBAssist:
+            GUID = %s,
+            FamilyID = %s,
+            PlayerID = %s,
+            PlayerName = %s,
+            Job = %s,
+            LV = %s,
+            RealmLV = %s,
+            AssistType = %s,
+            MapID = %s,
+            LineID = %s,
+            NPCID = %s,
+            ExDataLen = %s,
+            ExData = %s,
+            ADOResult = %s,
+            '''%(
+                self.GUID,
+                self.FamilyID,
+                self.PlayerID,
+                self.PlayerName,
+                self.Job,
+                self.LV,
+                self.RealmLV,
+                self.AssistType,
+                self.MapID,
+                self.LineID,
+                self.NPCID,
+                self.ExDataLen,
+                self.ExData,
+                self.ADOResult,
+            )
+        return output
+
+    #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错
+    def SetGUID(self,Str):
+        if len(Str)<=40:
+            self.GUID = Str
+        else:
+            self.GUID = Str[:40]
+            
+    def SetPlayerName(self,Str):
+        if len(Str)<=33:
+            self.PlayerName = Str
+        else:
+            self.PlayerName = Str[:33]
             
             
 # 玩家数据查看缓存表Py #tagPlayerViewCachePy

--
Gitblit v1.8.0