From 27a35e96b8a8bcedc8d28a561b31bb4b9306c2cd Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 05 七月 2024 16:33:18 +0800
Subject: [PATCH] 10198 【香港】【越南】【主干】【砍树】【后端】BOSS凭证优化(优化凭证转化: 活动开始后到参与结束都不转化,包含活动开始参与前;)

---
 ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py |  897 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 863 insertions(+), 34 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
index a04b939..67dbe48 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
@@ -160,6 +160,7 @@
             self.LimitTime = Str[:30]
             
 
+#------------------------------------------------------
 # 跨服排行榜 #tagDBCrossBillboard
 class tagDBCrossBillboard(Structure):
     _pack_ = 1
@@ -174,9 +175,17 @@
         ('Type2', ctypes.c_ubyte),
         ('Value1', ctypes.c_ulong),
         ('Value2', ctypes.c_ulong),
+        ('Value3', ctypes.c_ulong),
+        ('Value4', ctypes.c_ulong),
+        ('Value5', ctypes.c_ulong),
+        ('Value6', ctypes.c_ulong),
+        ('Value7', ctypes.c_ulong),
+        ('Value8', ctypes.c_ulong),
         ('CmpValue', ctypes.c_ulong),
         ('CmpValue2', ctypes.c_ulong),
         ('CmpValue3', ctypes.c_ulong),
+        ('DataLen', ctypes.c_ushort),
+        ('UserData', ctypes.c_char_p),
         ('ADOResult', ctypes.c_ulong),
     ]
 
@@ -184,9 +193,28 @@
         Structure.__init__(self)
         self.clear()
 
-
     def clear(self):
-        memset(addressof(self), 0, self.getLength())
+        self.GroupValue1 = 0
+        self.GroupValue2 = 0
+        self.BillboardType = 0
+        self.ID = 0
+        self.ID2 = 0
+        self.Name1 = ''
+        self.Name2 = ''
+        self.Type2 = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.Value3 = 0
+        self.Value4 = 0
+        self.Value5 = 0
+        self.Value6 = 0
+        self.Value7 = 0
+        self.Value8 = 0
+        self.CmpValue = 0
+        self.CmpValue2 = 0
+        self.CmpValue3 = 0
+        self.DataLen = 0
+        self.UserData = ''
 
     def readData(self, buf, pos = 0, length = 0):
         if not pos <= length:
@@ -204,19 +232,69 @@
         self.Type2, pos = CommFunc.ReadBYTE(buf, pos)
         self.Value1, pos = CommFunc.ReadDWORD(buf, pos)
         self.Value2, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value3, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value4, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value5, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value6, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value7, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value8, pos = CommFunc.ReadDWORD(buf, pos)
         self.CmpValue, pos = CommFunc.ReadDWORD(buf, pos)
         self.CmpValue2, pos = CommFunc.ReadDWORD(buf, pos)
         self.CmpValue3, pos = CommFunc.ReadDWORD(buf, pos)
+        self.DataLen, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.DataLen)
+        self.UserData = ctypes.c_char_p(tmp)
         return self.getLength()
 
-
     def getBuffer(self):
-        buf = create_string_buffer(self.getLength())
-        memmove(addressof(buf), addressof(self), self.getLength())
-        return string_at(addressof(buf), self.getLength())
+        buf = ''
+        buf = CommFunc.WriteBYTE(buf, self.GroupValue1)
+        buf = CommFunc.WriteBYTE(buf, self.GroupValue2)
+        buf = CommFunc.WriteBYTE(buf, self.BillboardType)
+        buf = CommFunc.WriteDWORD(buf, self.ID)
+        buf = CommFunc.WriteDWORD(buf, self.ID2)
+        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.Name1)
+        buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.Name2)
+        buf = CommFunc.WriteBYTE(buf, self.Type2)
+        buf = CommFunc.WriteDWORD(buf, self.Value1)
+        buf = CommFunc.WriteDWORD(buf, self.Value2)
+        buf = CommFunc.WriteDWORD(buf, self.Value3)
+        buf = CommFunc.WriteDWORD(buf, self.Value4)
+        buf = CommFunc.WriteDWORD(buf, self.Value5)
+        buf = CommFunc.WriteDWORD(buf, self.Value6)
+        buf = CommFunc.WriteDWORD(buf, self.Value7)
+        buf = CommFunc.WriteDWORD(buf, self.Value8)
+        buf = CommFunc.WriteDWORD(buf, self.CmpValue)
+        buf = CommFunc.WriteDWORD(buf, self.CmpValue2)
+        buf = CommFunc.WriteDWORD(buf, self.CmpValue3)
+        buf = CommFunc.WriteWORD(buf, self.DataLen)
+        buf = CommFunc.WriteString(buf, self.DataLen, self.UserData)
+        return buf
 
     def getLength(self):
-        return sizeof(tagDBCrossBillboard)
+        length = 0
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_char) * 33
+        length += sizeof(ctypes.c_char) * 33
+        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_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_ulong)
+        length += sizeof(ctypes.c_ushort)
+        length += self.DataLen
+        return length
 
     def outputString(self):
         output = '''// 跨服排行榜 #tagDBCrossBillboard:
@@ -230,9 +308,17 @@
             Type2 = %s,
             Value1 = %s,
             Value2 = %s,
+            Value3 = %s,
+            Value4 = %s,
+            Value5 = %s,
+            Value6 = %s,
+            Value7 = %s,
+            Value8 = %s,
             CmpValue = %s,
             CmpValue2 = %s,
             CmpValue3 = %s,
+            DataLen = %s,
+            UserData = %s,
             ADOResult = %s,
             '''%(
                 self.GroupValue1,
@@ -245,9 +331,17 @@
                 self.Type2,
                 self.Value1,
                 self.Value2,
+                self.Value3,
+                self.Value4,
+                self.Value5,
+                self.Value6,
+                self.Value7,
+                self.Value8,
                 self.CmpValue,
                 self.CmpValue2,
                 self.CmpValue3,
+                self.DataLen,
+                self.UserData,
                 self.ADOResult,
             )
         return output
@@ -265,6 +359,8 @@
         else:
             self.Name2 = Str[:33]
             
+
+
 
 # 协助感谢表 #tagDBAssistThanks
 class tagDBAssistThanks(Structure):
@@ -636,6 +732,16 @@
         ('ItemData14', ctypes.c_char_p),
         ('ItemDataSize15', ctypes.c_ushort),
         ('ItemData15', ctypes.c_char_p),
+        ('ItemDataSize16', ctypes.c_ushort),
+        ('ItemData16', ctypes.c_char_p),
+        ('ItemDataSize17', ctypes.c_ushort),
+        ('ItemData17', ctypes.c_char_p),
+        ('ItemDataSize18', ctypes.c_ushort),
+        ('ItemData18', ctypes.c_char_p),
+        ('ItemDataSize19', ctypes.c_ushort),
+        ('ItemData19', ctypes.c_char_p),
+        ('ItemDataSize20', ctypes.c_ushort),
+        ('ItemData20', ctypes.c_char_p),
         ('ADOResult', ctypes.c_ulong),
     ]
 
@@ -683,6 +789,16 @@
         self.ItemData14 = ''
         self.ItemDataSize15 = 0
         self.ItemData15 = ''
+        self.ItemDataSize16 = 0
+        self.ItemData16 = ''
+        self.ItemDataSize17 = 0
+        self.ItemData17 = ''
+        self.ItemDataSize18 = 0
+        self.ItemData18 = ''
+        self.ItemDataSize19 = 0
+        self.ItemData19 = ''
+        self.ItemDataSize20 = 0
+        self.ItemData20 = ''
 
     def readData(self, buf, pos = 0, length = 0):
         if not pos <= length:
@@ -747,6 +863,21 @@
         self.ItemDataSize15, pos = CommFunc.ReadWORD(buf, pos)
         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize15)
         self.ItemData15 = ctypes.c_char_p(tmp)
+        self.ItemDataSize16, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize16)
+        self.ItemData16 = ctypes.c_char_p(tmp)
+        self.ItemDataSize17, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize17)
+        self.ItemData17 = ctypes.c_char_p(tmp)
+        self.ItemDataSize18, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize18)
+        self.ItemData18 = ctypes.c_char_p(tmp)
+        self.ItemDataSize19, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize19)
+        self.ItemData19 = ctypes.c_char_p(tmp)
+        self.ItemDataSize20, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize20)
+        self.ItemData20 = ctypes.c_char_p(tmp)
         return self.getLength()
 
     def getBuffer(self):
@@ -790,6 +921,16 @@
         buf = CommFunc.WriteString(buf, self.ItemDataSize14, self.ItemData14)
         buf = CommFunc.WriteWORD(buf, self.ItemDataSize15)
         buf = CommFunc.WriteString(buf, self.ItemDataSize15, self.ItemData15)
+        buf = CommFunc.WriteWORD(buf, self.ItemDataSize16)
+        buf = CommFunc.WriteString(buf, self.ItemDataSize16, self.ItemData16)
+        buf = CommFunc.WriteWORD(buf, self.ItemDataSize17)
+        buf = CommFunc.WriteString(buf, self.ItemDataSize17, self.ItemData17)
+        buf = CommFunc.WriteWORD(buf, self.ItemDataSize18)
+        buf = CommFunc.WriteString(buf, self.ItemDataSize18, self.ItemData18)
+        buf = CommFunc.WriteWORD(buf, self.ItemDataSize19)
+        buf = CommFunc.WriteString(buf, self.ItemDataSize19, self.ItemData19)
+        buf = CommFunc.WriteWORD(buf, self.ItemDataSize20)
+        buf = CommFunc.WriteString(buf, self.ItemDataSize20, self.ItemData20)
         return buf
 
     def getLength(self):
@@ -833,6 +974,16 @@
         length += self.ItemDataSize14
         length += sizeof(ctypes.c_ushort)
         length += self.ItemDataSize15
+        length += sizeof(ctypes.c_ushort)
+        length += self.ItemDataSize16
+        length += sizeof(ctypes.c_ushort)
+        length += self.ItemDataSize17
+        length += sizeof(ctypes.c_ushort)
+        length += self.ItemDataSize18
+        length += sizeof(ctypes.c_ushort)
+        length += self.ItemDataSize19
+        length += sizeof(ctypes.c_ushort)
+        length += self.ItemDataSize20
         return length
 
     def outputString(self):
@@ -876,6 +1027,16 @@
             ItemData14 = %s,
             ItemDataSize15 = %s,
             ItemData15 = %s,
+            ItemDataSize16 = %s,
+            ItemData16 = %s,
+            ItemDataSize17 = %s,
+            ItemData17 = %s,
+            ItemDataSize18 = %s,
+            ItemData18 = %s,
+            ItemDataSize19 = %s,
+            ItemData19 = %s,
+            ItemDataSize20 = %s,
+            ItemData20 = %s,
             ADOResult = %s,
             '''%(
                 self.PlayerID,
@@ -917,6 +1078,16 @@
                 self.ItemData14,
                 self.ItemDataSize15,
                 self.ItemData15,
+                self.ItemDataSize16,
+                self.ItemData16,
+                self.ItemDataSize17,
+                self.ItemData17,
+                self.ItemDataSize18,
+                self.ItemData18,
+                self.ItemDataSize19,
+                self.ItemData19,
+                self.ItemDataSize20,
+                self.ItemData20,
                 self.ADOResult,
             )
         return output
@@ -2121,7 +2292,6 @@
     _fields_ = [
         ('PlayerID', ctypes.c_ulong),
         ('TagID', ctypes.c_ulong),
-        ('Intimacy', ctypes.c_ulong),
         ('ADOResult', ctypes.c_ulong),
     ]
 
@@ -2141,7 +2311,6 @@
         self.clear()
         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
         self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
-        self.Intimacy, pos = CommFunc.ReadDWORD(buf, pos)
         return self.getLength()
 
 
@@ -2157,12 +2326,10 @@
         output = '''//玩家好友表#tagDBPyPlayerFriend:
             PlayerID = %s,
             TagID = %s,
-            Intimacy = %s,
             ADOResult = %s,
             '''%(
                 self.PlayerID,
                 self.TagID,
-                self.Intimacy,
                 self.ADOResult,
             )
         return output
@@ -2232,10 +2399,7 @@
         ('RealmLV', ctypes.c_ushort),
         ('OnlineType', ctypes.c_ubyte),
         ('RefCount', ctypes.c_ulong),
-        ('CoupleID', ctypes.c_ulong),
-        ('CoupleName', ctypes.c_char * 33),
-        ('CouplePriceMaxID', ctypes.c_ubyte),
-        ('CoupleBreakOffline', ctypes.c_ubyte),
+        ('Face', ctypes.c_ulong),
         ('ADOResult', ctypes.c_ulong),
     ]
 
@@ -2260,10 +2424,7 @@
         self.RealmLV, pos = CommFunc.ReadWORD(buf, pos)
         self.OnlineType, pos = CommFunc.ReadBYTE(buf, pos)
         self.RefCount, pos = CommFunc.ReadDWORD(buf, pos)
-        self.CoupleID, pos = CommFunc.ReadDWORD(buf, pos)
-        self.CoupleName, pos = CommFunc.ReadString(buf, pos, 33)
-        self.CouplePriceMaxID, pos = CommFunc.ReadBYTE(buf, pos)
-        self.CoupleBreakOffline, pos = CommFunc.ReadBYTE(buf, pos)
+        self.Face, pos = CommFunc.ReadDWORD(buf, pos)
         return self.getLength()
 
 
@@ -2284,10 +2445,7 @@
             RealmLV = %s,
             OnlineType = %s,
             RefCount = %s,
-            CoupleID = %s,
-            CoupleName = %s,
-            CouplePriceMaxID = %s,
-            CoupleBreakOffline = %s,
+            Face = %s,
             ADOResult = %s,
             '''%(
                 self.PlayerID,
@@ -2297,10 +2455,7 @@
                 self.RealmLV,
                 self.OnlineType,
                 self.RefCount,
-                self.CoupleID,
-                self.CoupleName,
-                self.CouplePriceMaxID,
-                self.CoupleBreakOffline,
+                self.Face,
                 self.ADOResult,
             )
         return output
@@ -2311,11 +2466,685 @@
             self.PlayerName = Str
         else:
             self.PlayerName = Str[:33]
-            
-    def SetCoupleName(self,Str):
-        if len(Str)<=33:
-            self.CoupleName = Str
-        else:
-            self.CoupleName = Str[:33]
-            
+
+
+# 玩家亲密表 #tagDBPyPlayerIntimacy
+class tagDBPyPlayerIntimacy(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('TagID', ctypes.c_ulong),
+        ('Intimacy', ctypes.c_ulong),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+
+    def clear(self):
+        memset(addressof(self), 0, self.getLength())
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Intimacy, pos = CommFunc.ReadDWORD(buf, pos)
+        return self.getLength()
+
+
+    def getBuffer(self):
+        buf = create_string_buffer(self.getLength())
+        memmove(addressof(buf), addressof(self), self.getLength())
+        return string_at(addressof(buf), self.getLength())
+
+    def getLength(self):
+        return sizeof(tagDBPyPlayerIntimacy)
+
+    def outputString(self):
+        output = '''// 玩家亲密表 #tagDBPyPlayerIntimacy:
+            PlayerID = %s,
+            TagID = %s,
+            Intimacy = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.TagID,
+                self.Intimacy,
+                self.ADOResult,
+            )
+        return output
+
+
+# 魅力贡献值记录表 #tagDBPyCharmValueRec
+class tagDBPyCharmValueRec(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('Type', ctypes.c_ubyte),
+        ('OfferPlayerID', ctypes.c_ulong),
+        ('CharmValue', ctypes.c_ulong),
+        ('UpdTime', ctypes.c_ulong),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+
+    def clear(self):
+        memset(addressof(self), 0, self.getLength())
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Type, pos = CommFunc.ReadBYTE(buf, pos)
+        self.OfferPlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.CharmValue, pos = CommFunc.ReadDWORD(buf, pos)
+        self.UpdTime, pos = CommFunc.ReadDWORD(buf, pos)
+        return self.getLength()
+
+
+    def getBuffer(self):
+        buf = create_string_buffer(self.getLength())
+        memmove(addressof(buf), addressof(self), self.getLength())
+        return string_at(addressof(buf), self.getLength())
+
+    def getLength(self):
+        return sizeof(tagDBPyCharmValueRec)
+
+    def outputString(self):
+        output = '''// 魅力贡献值记录表 #tagDBPyCharmValueRec:
+            PlayerID = %s,
+            Type = %s,
+            OfferPlayerID = %s,
+            CharmValue = %s,
+            UpdTime = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.Type,
+                self.OfferPlayerID,
+                self.CharmValue,
+                self.UpdTime,
+                self.ADOResult,
+            )
+        return output
+
+
+# 未通知的情缘送礼记录 #tagDBPyUnNotifyLoveGiftRec
+class tagDBPyUnNotifyLoveGiftRec(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('GivePlayerID', ctypes.c_ulong),
+        ('GiftNum', ctypes.c_ushort),
+        ('GiftCount', ctypes.c_ulong),
+        ('SendTime', ctypes.c_ulong),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+
+    def clear(self):
+        memset(addressof(self), 0, self.getLength())
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.GivePlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.GiftNum, pos = CommFunc.ReadWORD(buf, pos)
+        self.GiftCount, pos = CommFunc.ReadDWORD(buf, pos)
+        self.SendTime, pos = CommFunc.ReadDWORD(buf, pos)
+        return self.getLength()
+
+
+    def getBuffer(self):
+        buf = create_string_buffer(self.getLength())
+        memmove(addressof(buf), addressof(self), self.getLength())
+        return string_at(addressof(buf), self.getLength())
+
+    def getLength(self):
+        return sizeof(tagDBPyUnNotifyLoveGiftRec)
+
+    def outputString(self):
+        output = '''// 未通知的情缘送礼记录 #tagDBPyUnNotifyLoveGiftRec:
+            PlayerID = %s,
+            GivePlayerID = %s,
+            GiftNum = %s,
+            GiftCount = %s,
+            SendTime = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.GivePlayerID,
+                self.GiftNum,
+                self.GiftCount,
+                self.SendTime,
+                self.ADOResult,
+            )
+        return output
+
+
+# 伴侣表 #tagDBPyCouple
+class tagDBPyCouple(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerIDA', ctypes.c_ulong),
+        ('PlayerIDB', ctypes.c_ulong),
+        ('NewMarryTime', ctypes.c_ulong),
+        ('MarryTime', ctypes.c_ulong),
+        ('BridePriceState', ctypes.c_ulong),
+        ('BreakRequestID', ctypes.c_ulong),
+        ('BreakRequestTime', ctypes.c_ulong),
+        ('BreakRequestTimeA', ctypes.c_ulong),
+        ('BreakRequestTimeB', ctypes.c_ulong),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+
+    def clear(self):
+        memset(addressof(self), 0, self.getLength())
+
+    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.PlayerIDA, pos = CommFunc.ReadDWORD(buf, pos)
+        self.PlayerIDB, pos = CommFunc.ReadDWORD(buf, pos)
+        self.NewMarryTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.MarryTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.BridePriceState, pos = CommFunc.ReadDWORD(buf, pos)
+        self.BreakRequestID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.BreakRequestTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.BreakRequestTimeA, pos = CommFunc.ReadDWORD(buf, pos)
+        self.BreakRequestTimeB, pos = CommFunc.ReadDWORD(buf, pos)
+        return self.getLength()
+
+
+    def getBuffer(self):
+        buf = create_string_buffer(self.getLength())
+        memmove(addressof(buf), addressof(self), self.getLength())
+        return string_at(addressof(buf), self.getLength())
+
+    def getLength(self):
+        return sizeof(tagDBPyCouple)
+
+    def outputString(self):
+        output = '''// 伴侣表 #tagDBPyCouple:
+            PlayerIDA = %s,
+            PlayerIDB = %s,
+            NewMarryTime = %s,
+            MarryTime = %s,
+            BridePriceState = %s,
+            BreakRequestID = %s,
+            BreakRequestTime = %s,
+            BreakRequestTimeA = %s,
+            BreakRequestTimeB = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerIDA,
+                self.PlayerIDB,
+                self.NewMarryTime,
+                self.MarryTime,
+                self.BridePriceState,
+                self.BreakRequestID,
+                self.BreakRequestTime,
+                self.BreakRequestTimeA,
+                self.BreakRequestTimeB,
+                self.ADOResult,
+            )
+        return output
+
+
+# 福地矿物表 #tagDBPyMineAreaItem
+class tagDBPyMineAreaItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('Index', ctypes.c_ubyte),
+        ('MineID', ctypes.c_ushort),
+        ('MineType', ctypes.c_ubyte),
+        ('UpdTime', ctypes.c_ulong),
+        ('PosLen', ctypes.c_ubyte),
+        ('Position', ctypes.c_char_p),
+        ('WorkerCount', ctypes.c_ubyte),
+        ('WorkerState', ctypes.c_ubyte),
+        ('RobPlayerID', ctypes.c_ulong),
+        ('RobWorkerCount', ctypes.c_ubyte),
+        ('RobWorkerState', ctypes.c_ubyte),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+    def clear(self):
+        self.PlayerID = 0
+        self.Index = 0
+        self.MineID = 0
+        self.MineType = 0
+        self.UpdTime = 0
+        self.PosLen = 0
+        self.Position = ''
+        self.WorkerCount = 0
+        self.WorkerState = 0
+        self.RobPlayerID = 0
+        self.RobWorkerCount = 0
+        self.RobWorkerState = 0
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Index, pos = CommFunc.ReadBYTE(buf, pos)
+        self.MineID, pos = CommFunc.ReadWORD(buf, pos)
+        self.MineType, pos = CommFunc.ReadBYTE(buf, pos)
+        self.UpdTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.PosLen, pos = CommFunc.ReadBYTE(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.PosLen)
+        self.Position = ctypes.c_char_p(tmp)
+        self.WorkerCount, pos = CommFunc.ReadBYTE(buf, pos)
+        self.WorkerState, pos = CommFunc.ReadBYTE(buf, pos)
+        self.RobPlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.RobWorkerCount, pos = CommFunc.ReadBYTE(buf, pos)
+        self.RobWorkerState, pos = CommFunc.ReadBYTE(buf, pos)
+        return self.getLength()
+
+    def getBuffer(self):
+        buf = ''
+        buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+        buf = CommFunc.WriteBYTE(buf, self.Index)
+        buf = CommFunc.WriteWORD(buf, self.MineID)
+        buf = CommFunc.WriteBYTE(buf, self.MineType)
+        buf = CommFunc.WriteDWORD(buf, self.UpdTime)
+        buf = CommFunc.WriteBYTE(buf, self.PosLen)
+        buf = CommFunc.WriteString(buf, self.PosLen, self.Position)
+        buf = CommFunc.WriteBYTE(buf, self.WorkerCount)
+        buf = CommFunc.WriteBYTE(buf, self.WorkerState)
+        buf = CommFunc.WriteDWORD(buf, self.RobPlayerID)
+        buf = CommFunc.WriteBYTE(buf, self.RobWorkerCount)
+        buf = CommFunc.WriteBYTE(buf, self.RobWorkerState)
+        return buf
+
+    def getLength(self):
+        length = 0
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ushort)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ubyte)
+        length += self.PosLen
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ubyte)
+        return length
+
+    def outputString(self):
+        output = '''// 福地矿物表 #tagDBPyMineAreaItem:
+            PlayerID = %s,
+            Index = %s,
+            MineID = %s,
+            MineType = %s,
+            UpdTime = %s,
+            PosLen = %s,
+            Position = %s,
+            WorkerCount = %s,
+            WorkerState = %s,
+            RobPlayerID = %s,
+            RobWorkerCount = %s,
+            RobWorkerState = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.Index,
+                self.MineID,
+                self.MineType,
+                self.UpdTime,
+                self.PosLen,
+                self.Position,
+                self.WorkerCount,
+                self.WorkerState,
+                self.RobPlayerID,
+                self.RobWorkerCount,
+                self.RobWorkerState,
+                self.ADOResult,
+            )
+        return output
+
+
+# 福地记录表 #tagDBPyMineAreaRecord
+class tagDBPyMineAreaRecord(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('RecordType', ctypes.c_ulong),
+        ('TagPlayerID', ctypes.c_ulong),
+        ('RecordTime', ctypes.c_ulong),
+        ('MineID', ctypes.c_ushort),
+        ('DataLen', ctypes.c_ushort),
+        ('Data', ctypes.c_char_p),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+    def clear(self):
+        self.PlayerID = 0
+        self.RecordType = 0
+        self.TagPlayerID = 0
+        self.RecordTime = 0
+        self.MineID = 0
+        self.DataLen = 0
+        self.Data = ''
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.RecordType, pos = CommFunc.ReadDWORD(buf, pos)
+        self.TagPlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.RecordTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.MineID, pos = CommFunc.ReadWORD(buf, pos)
+        self.DataLen, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.DataLen)
+        self.Data = ctypes.c_char_p(tmp)
+        return self.getLength()
+
+    def getBuffer(self):
+        buf = ''
+        buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+        buf = CommFunc.WriteDWORD(buf, self.RecordType)
+        buf = CommFunc.WriteDWORD(buf, self.TagPlayerID)
+        buf = CommFunc.WriteDWORD(buf, self.RecordTime)
+        buf = CommFunc.WriteWORD(buf, self.MineID)
+        buf = CommFunc.WriteWORD(buf, self.DataLen)
+        buf = CommFunc.WriteString(buf, self.DataLen, self.Data)
+        return buf
+
+    def getLength(self):
+        length = 0
+        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 += sizeof(ctypes.c_ushort)
+        length += self.DataLen
+        return length
+
+    def outputString(self):
+        output = '''// 福地记录表 #tagDBPyMineAreaRecord:
+            PlayerID = %s,
+            RecordType = %s,
+            TagPlayerID = %s,
+            RecordTime = %s,
+            MineID = %s,
+            DataLen = %s,
+            Data = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.RecordType,
+                self.TagPlayerID,
+                self.RecordTime,
+                self.MineID,
+                self.DataLen,
+                self.Data,
+                self.ADOResult,
+            )
+        return output
+
+
+# 福地结算奖励表 #tagDBPyMineAreaAward
+class tagDBPyMineAreaAward(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('GUIDLen', ctypes.c_ubyte),
+        ('GUID', ctypes.c_char_p),
+        ('PlayerID', ctypes.c_ulong),
+        ('AwardTime', ctypes.c_ulong),
+        ('MineID', ctypes.c_ushort),
+        ('WorkerCount', ctypes.c_ubyte),
+        ('AreaPlayerID', ctypes.c_ulong),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+    def clear(self):
+        self.GUIDLen = 0
+        self.GUID = ''
+        self.PlayerID = 0
+        self.AwardTime = 0
+        self.MineID = 0
+        self.WorkerCount = 0
+        self.AreaPlayerID = 0
+
+    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.GUIDLen, pos = CommFunc.ReadBYTE(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.GUIDLen)
+        self.GUID = ctypes.c_char_p(tmp)
+        self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.AwardTime, pos = CommFunc.ReadDWORD(buf, pos)
+        self.MineID, pos = CommFunc.ReadWORD(buf, pos)
+        self.WorkerCount, pos = CommFunc.ReadBYTE(buf, pos)
+        self.AreaPlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        return self.getLength()
+
+    def getBuffer(self):
+        buf = ''
+        buf = CommFunc.WriteBYTE(buf, self.GUIDLen)
+        buf = CommFunc.WriteString(buf, self.GUIDLen, self.GUID)
+        buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+        buf = CommFunc.WriteDWORD(buf, self.AwardTime)
+        buf = CommFunc.WriteWORD(buf, self.MineID)
+        buf = CommFunc.WriteBYTE(buf, self.WorkerCount)
+        buf = CommFunc.WriteDWORD(buf, self.AreaPlayerID)
+        return buf
+
+    def getLength(self):
+        length = 0
+        length += sizeof(ctypes.c_ubyte)
+        length += self.GUIDLen
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ushort)
+        length += sizeof(ctypes.c_ubyte)
+        length += sizeof(ctypes.c_ulong)
+        return length
+
+    def outputString(self):
+        output = '''// 福地结算奖励表 #tagDBPyMineAreaAward:
+            GUIDLen = %s,
+            GUID = %s,
+            PlayerID = %s,
+            AwardTime = %s,
+            MineID = %s,
+            WorkerCount = %s,
+            AreaPlayerID = %s,
+            ADOResult = %s,
+            '''%(
+                self.GUIDLen,
+                self.GUID,
+                self.PlayerID,
+                self.AwardTime,
+                self.MineID,
+                self.WorkerCount,
+                self.AreaPlayerID,
+                self.ADOResult,
+            )
+        return output
+
+
+# 玩家记录表 #tagDBPlayerRecData
+class tagDBPlayerRecData(Structure):
+    _pack_ = 1
+    _fields_ = [
+        ('PlayerID', ctypes.c_ulong),
+        ('RecType', ctypes.c_ushort),
+        ('Time', ctypes.c_double),
+        ('Value1', ctypes.c_ulong),
+        ('Value2', ctypes.c_ulong),
+        ('Value3', ctypes.c_ulong),
+        ('Value4', ctypes.c_ulong),
+        ('Value5', ctypes.c_ulong),
+        ('Value6', ctypes.c_ulong),
+        ('Value7', ctypes.c_ulong),
+        ('Value8', ctypes.c_ulong),
+        ('UserDataLen', ctypes.c_ushort),
+        ('UserData', ctypes.c_char_p),
+        ('ADOResult', ctypes.c_ulong),
+    ]
+
+    def __init__(self):
+        Structure.__init__(self)
+        self.clear()
+
+    def clear(self):
+        self.PlayerID = 0
+        self.RecType = 0
+        self.Time = 0.0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.Value3 = 0
+        self.Value4 = 0
+        self.Value5 = 0
+        self.Value6 = 0
+        self.Value7 = 0
+        self.Value8 = 0
+        self.UserDataLen = 0
+        self.UserData = ''
+
+    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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+        self.RecType, pos = CommFunc.ReadWORD(buf, pos)
+        self.Time, pos = CommFunc.ReadDouble(buf, pos)
+        self.Value1, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value2, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value3, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value4, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value5, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value6, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value7, pos = CommFunc.ReadDWORD(buf, pos)
+        self.Value8, pos = CommFunc.ReadDWORD(buf, pos)
+        self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos)
+        tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen)
+        self.UserData = ctypes.c_char_p(tmp)
+        return self.getLength()
+
+    def getBuffer(self):
+        buf = ''
+        buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+        buf = CommFunc.WriteWORD(buf, self.RecType)
+        buf = CommFunc.WriteDouble(buf, self.Time)
+        buf = CommFunc.WriteDWORD(buf, self.Value1)
+        buf = CommFunc.WriteDWORD(buf, self.Value2)
+        buf = CommFunc.WriteDWORD(buf, self.Value3)
+        buf = CommFunc.WriteDWORD(buf, self.Value4)
+        buf = CommFunc.WriteDWORD(buf, self.Value5)
+        buf = CommFunc.WriteDWORD(buf, self.Value6)
+        buf = CommFunc.WriteDWORD(buf, self.Value7)
+        buf = CommFunc.WriteDWORD(buf, self.Value8)
+        buf = CommFunc.WriteWORD(buf, self.UserDataLen)
+        buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData)
+        return buf
+
+    def getLength(self):
+        length = 0
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ushort)
+        length += sizeof(ctypes.c_double)
+        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_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ulong)
+        length += sizeof(ctypes.c_ushort)
+        length += self.UserDataLen
+        return length
+
+    def outputString(self):
+        output = '''// 玩家记录表 #tagDBPlayerRecData:
+            PlayerID = %s,
+            RecType = %s,
+            Time = %s,
+            Value1 = %s,
+            Value2 = %s,
+            Value3 = %s,
+            Value4 = %s,
+            Value5 = %s,
+            Value6 = %s,
+            Value7 = %s,
+            Value8 = %s,
+            UserDataLen = %s,
+            UserData = %s,
+            ADOResult = %s,
+            '''%(
+                self.PlayerID,
+                self.RecType,
+                self.Time,
+                self.Value1,
+                self.Value2,
+                self.Value3,
+                self.Value4,
+                self.Value5,
+                self.Value6,
+                self.Value7,
+                self.Value8,
+                self.UserDataLen,
+                self.UserData,
+                self.ADOResult,
+            )
+        return output
 

--
Gitblit v1.8.0