| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| ##@package E:/GameSVN/U3DGame/ProjectSServer/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py  | 
| # @todo:   | 
| #  | 
| # @author: Alee  | 
| # @date 2017-8-21 ÏÂÎç04:21:36  | 
| # @version 1.0  | 
| #  | 
| # @note: CodeMaker PyGameServerSaveData.pyÉú³É  | 
| #  | 
| #---------------------------------------------------------------------  | 
| import ctypes  | 
| from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at)  | 
| import CommFunc  | 
|   | 
| # ¿ç·þ²¹³¥¸öÈËÁìÈ¡±í #tagDBCrossPersonalCompensation  | 
| class tagDBCrossPersonalCompensation(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('GUID', ctypes.c_char * 40),  | 
|         ('LimitTime', ctypes.c_char * 30),  | 
|         ('TextLen', ctypes.c_ulong),  | 
|         ('Text', ctypes.c_char_p),  | 
|         ('Gold', ctypes.c_ulong),  | 
|         ('GoldPaper', ctypes.c_ulong),  | 
|         ('Silver', ctypes.c_ulong),  | 
|         ('ItemLen', ctypes.c_ushort),  | 
|         ('ItemInfo', ctypes.c_char_p),  | 
|         ('DetailLen', ctypes.c_ushort),  | 
|         ('Detail', ctypes.c_char_p),  | 
|         ('MoneySource', ctypes.c_ushort),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.PlayerID = 0  | 
|         self.GUID = ''  | 
|         self.LimitTime = ''  | 
|         self.TextLen = 0  | 
|         self.Text = ''  | 
|         self.Gold = 0  | 
|         self.GoldPaper = 0  | 
|         self.Silver = 0  | 
|         self.ItemLen = 0  | 
|         self.ItemInfo = ''  | 
|         self.DetailLen = 0  | 
|         self.Detail = ''  | 
|         self.MoneySource = 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.GUID, pos = CommFunc.ReadString(buf, pos, 40)  | 
|         self.LimitTime, pos = CommFunc.ReadString(buf, pos, 30)  | 
|         self.TextLen, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.TextLen)  | 
|         self.Text = ctypes.c_char_p(tmp)  | 
|         self.Gold, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.GoldPaper, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Silver, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.ItemLen, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemLen)  | 
|         self.ItemInfo = ctypes.c_char_p(tmp)  | 
|         self.DetailLen, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.DetailLen)  | 
|         self.Detail = ctypes.c_char_p(tmp)  | 
|         self.MoneySource, pos = CommFunc.ReadWORD(buf, pos)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.GUID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 30, self.LimitTime)  | 
|         buf = CommFunc.WriteDWORD(buf, self.TextLen)  | 
|         buf = CommFunc.WriteString(buf, self.TextLen, self.Text)  | 
|         buf = CommFunc.WriteDWORD(buf, self.Gold)  | 
|         buf = CommFunc.WriteDWORD(buf, self.GoldPaper)  | 
|         buf = CommFunc.WriteDWORD(buf, self.Silver)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemLen)  | 
|         buf = CommFunc.WriteString(buf, self.ItemLen, self.ItemInfo)  | 
|         buf = CommFunc.WriteWORD(buf, self.DetailLen)  | 
|         buf = CommFunc.WriteString(buf, self.DetailLen, self.Detail)  | 
|         buf = CommFunc.WriteWORD(buf, self.MoneySource)  | 
|         return buf  | 
|   | 
|     def getLength(self):  | 
|         length = 0  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_char) * 40  | 
|         length += sizeof(ctypes.c_char) * 30  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += self.TextLen  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemLen  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.DetailLen  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ¿ç·þ²¹³¥¸öÈËÁìÈ¡±í #tagDBCrossPersonalCompensation:  | 
|             PlayerID = %s,  | 
|             GUID = %s,  | 
|             LimitTime = %s,  | 
|             TextLen = %s,  | 
|             Text = %s,  | 
|             Gold = %s,  | 
|             GoldPaper = %s,  | 
|             Silver = %s,  | 
|             ItemLen = %s,  | 
|             ItemInfo = %s,  | 
|             DetailLen = %s,  | 
|             Detail = %s,  | 
|             MoneySource = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.GUID,  | 
|                 self.LimitTime,  | 
|                 self.TextLen,  | 
|                 self.Text,  | 
|                 self.Gold,  | 
|                 self.GoldPaper,  | 
|                 self.Silver,  | 
|                 self.ItemLen,  | 
|                 self.ItemInfo,  | 
|                 self.DetailLen,  | 
|                 self.Detail,  | 
|                 self.MoneySource,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetGUID(self,Str):  | 
|         if len(Str)<=40:  | 
|             self.GUID = Str  | 
|         else:  | 
|             self.GUID = Str[:40]  | 
|               | 
|     def SetLimitTime(self,Str):  | 
|         if len(Str)<=30:  | 
|             self.LimitTime = Str  | 
|         else:  | 
|             self.LimitTime = Str[:30]  | 
|               | 
|   | 
| # ¿ç·þÅÅÐаñ #tagDBCrossBillboard  | 
| class tagDBCrossBillboard(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('GroupValue1', ctypes.c_ubyte),  | 
|         ('GroupValue2', ctypes.c_ubyte),  | 
|         ('BillboardType', ctypes.c_ubyte),  | 
|         ('ID', ctypes.c_ulong),  | 
|         ('ID2', ctypes.c_ulong),  | 
|         ('Name1', ctypes.c_char * 33),  | 
|         ('Name2', ctypes.c_char * 33),  | 
|         ('Type2', ctypes.c_ubyte),  | 
|         ('Value1', ctypes.c_ulong),  | 
|         ('Value2', ctypes.c_ulong),  | 
|         ('CmpValue', ctypes.c_ulong),  | 
|         ('CmpValue2', ctypes.c_ulong),  | 
|         ('CmpValue3', 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.GroupValue1, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.GroupValue2, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.BillboardType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.ID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.ID2, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Name1, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         self.Name2, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         self.Type2, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.Value1, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Value2, 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)  | 
|         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(tagDBCrossBillboard)  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ¿ç·þÅÅÐаñ #tagDBCrossBillboard:  | 
|             GroupValue1 = %s,  | 
|             GroupValue2 = %s,  | 
|             BillboardType = %s,  | 
|             ID = %s,  | 
|             ID2 = %s,  | 
|             Name1 = %s,  | 
|             Name2 = %s,  | 
|             Type2 = %s,  | 
|             Value1 = %s,  | 
|             Value2 = %s,  | 
|             CmpValue = %s,  | 
|             CmpValue2 = %s,  | 
|             CmpValue3 = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.GroupValue1,  | 
|                 self.GroupValue2,  | 
|                 self.BillboardType,  | 
|                 self.ID,  | 
|                 self.ID2,  | 
|                 self.Name1,  | 
|                 self.Name2,  | 
|                 self.Type2,  | 
|                 self.Value1,  | 
|                 self.Value2,  | 
|                 self.CmpValue,  | 
|                 self.CmpValue2,  | 
|                 self.CmpValue3,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetName1(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.Name1 = Str  | 
|         else:  | 
|             self.Name1 = Str[:33]  | 
|               | 
|     def SetName2(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.Name2 = Str  | 
|         else:  | 
|             self.Name2 = Str[:33]  | 
|               | 
|   | 
| # ÐÖú¸Ðл±í #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),  | 
|         ('MapID', ctypes.c_ulong),  | 
|         ('LineID', ctypes.c_ulong),  | 
|         ('NPCID', ctypes.c_ulong),  | 
|         ('ExDataLen', ctypes.c_ushort),  | 
|         ('ExData', ctypes.c_char_p),  | 
|         ('DailyDateStr', ctypes.c_char * 10),  | 
|         ('TimeStr', ctypes.c_char * 19),  | 
|         ('ThanksState', ctypes.c_ubyte),  | 
|         ('AssistPlayerLen', ctypes.c_ushort),  | 
|         ('AssistPlayer', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     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.MapID = 0  | 
|         self.LineID = 0  | 
|         self.NPCID = 0  | 
|         self.ExDataLen = 0  | 
|         self.ExData = ''  | 
|         self.DailyDateStr = ''  | 
|         self.TimeStr = ''  | 
|         self.ThanksState = 0  | 
|         self.AssistPlayerLen = 0  | 
|         self.AssistPlayer = ''  | 
|   | 
|     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.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.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.DailyDateStr, pos = CommFunc.ReadString(buf, pos, 10)  | 
|         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)  | 
|         return self.getLength()  | 
|   | 
|     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.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) * 10, self.DailyDateStr)  | 
|         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  | 
|   | 
|     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_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_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ExDataLen  | 
|         length += sizeof(ctypes.c_char) * 10  | 
|         length += sizeof(ctypes.c_char) * 19  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.AssistPlayerLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ÐÖú¸Ðл±í #tagDBAssistThanks:  | 
|             GUID = %s,  | 
|             ItemID = %s,  | 
|             FamilyID = %s,  | 
|             PlayerID = %s,  | 
|             PlayerName = %s,  | 
|             Job = %s,  | 
|             LV = %s,  | 
|             RealmLV = %s,  | 
|             MapID = %s,  | 
|             LineID = %s,  | 
|             NPCID = %s,  | 
|             ExDataLen = %s,  | 
|             ExData = %s,  | 
|             DailyDateStr = %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.MapID,  | 
|                 self.LineID,  | 
|                 self.NPCID,  | 
|                 self.ExDataLen,  | 
|                 self.ExData,  | 
|                 self.DailyDateStr,  | 
|                 self.TimeStr,  | 
|                 self.ThanksState,  | 
|                 self.AssistPlayerLen,  | 
|                 self.AssistPlayer,  | 
|                 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]  | 
|               | 
|     def SetDailyDateStr(self,Str):  | 
|         if len(Str)<=10:  | 
|             self.DailyDateStr = Str  | 
|         else:  | 
|             self.DailyDateStr = Str[:10]  | 
|               | 
|     def SetTimeStr(self,Str):  | 
|         if len(Str)<=19:  | 
|             self.TimeStr = Str  | 
|         else:  | 
|             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),  | 
|         ('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.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.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.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_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,  | 
|             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.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  | 
| class tagPlayerViewCachePy(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('GeTuiIDSize', ctypes.c_ubyte),  | 
|         ('GeTuiID', ctypes.c_char_p),  | 
|         ('LV', ctypes.c_ushort),  | 
|         ('OffTime', ctypes.c_ulong),  | 
|         ('PropDataSize', ctypes.c_ushort),  | 
|         ('PropData', ctypes.c_char_p),  | 
|         ('PlusDataSize', ctypes.c_ushort),  | 
|         ('PlusData', ctypes.c_char_p),  | 
|         ('ItemDataSize1', ctypes.c_ushort),  | 
|         ('ItemData1', ctypes.c_char_p),  | 
|         ('ItemDataSize2', ctypes.c_ushort),  | 
|         ('ItemData2', ctypes.c_char_p),  | 
|         ('ItemDataSize3', ctypes.c_ushort),  | 
|         ('ItemData3', ctypes.c_char_p),  | 
|         ('ItemDataSize4', ctypes.c_ushort),  | 
|         ('ItemData4', ctypes.c_char_p),  | 
|         ('ItemDataSize5', ctypes.c_ushort),  | 
|         ('ItemData5', ctypes.c_char_p),  | 
|         ('ItemDataSize6', ctypes.c_ushort),  | 
|         ('ItemData6', ctypes.c_char_p),  | 
|         ('ItemDataSize7', ctypes.c_ushort),  | 
|         ('ItemData7', ctypes.c_char_p),  | 
|         ('ItemDataSize8', ctypes.c_ushort),  | 
|         ('ItemData8', ctypes.c_char_p),  | 
|         ('ItemDataSize9', ctypes.c_ushort),  | 
|         ('ItemData9', ctypes.c_char_p),  | 
|         ('ItemDataSize10', ctypes.c_ushort),  | 
|         ('ItemData10', ctypes.c_char_p),  | 
|         ('ItemDataSize11', ctypes.c_ushort),  | 
|         ('ItemData11', ctypes.c_char_p),  | 
|         ('ItemDataSize12', ctypes.c_ushort),  | 
|         ('ItemData12', ctypes.c_char_p),  | 
|         ('ItemDataSize13', ctypes.c_ushort),  | 
|         ('ItemData13', ctypes.c_char_p),  | 
|         ('ItemDataSize14', ctypes.c_ushort),  | 
|         ('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),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.PlayerID = 0  | 
|         self.GeTuiIDSize = 0  | 
|         self.GeTuiID = ''  | 
|         self.LV = 0  | 
|         self.OffTime = 0  | 
|         self.PropDataSize = 0  | 
|         self.PropData = ''  | 
|         self.PlusDataSize = 0  | 
|         self.PlusData = ''  | 
|         self.ItemDataSize1 = 0  | 
|         self.ItemData1 = ''  | 
|         self.ItemDataSize2 = 0  | 
|         self.ItemData2 = ''  | 
|         self.ItemDataSize3 = 0  | 
|         self.ItemData3 = ''  | 
|         self.ItemDataSize4 = 0  | 
|         self.ItemData4 = ''  | 
|         self.ItemDataSize5 = 0  | 
|         self.ItemData5 = ''  | 
|         self.ItemDataSize6 = 0  | 
|         self.ItemData6 = ''  | 
|         self.ItemDataSize7 = 0  | 
|         self.ItemData7 = ''  | 
|         self.ItemDataSize8 = 0  | 
|         self.ItemData8 = ''  | 
|         self.ItemDataSize9 = 0  | 
|         self.ItemData9 = ''  | 
|         self.ItemDataSize10 = 0  | 
|         self.ItemData10 = ''  | 
|         self.ItemDataSize11 = 0  | 
|         self.ItemData11 = ''  | 
|         self.ItemDataSize12 = 0  | 
|         self.ItemData12 = ''  | 
|         self.ItemDataSize13 = 0  | 
|         self.ItemData13 = ''  | 
|         self.ItemDataSize14 = 0  | 
|         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:  | 
|             return -1  | 
|         if len(buf) < pos + self.getLength():  | 
|             return -1  | 
|         self.clear()  | 
|         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.GeTuiIDSize, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.GeTuiIDSize)  | 
|         self.GeTuiID = ctypes.c_char_p(tmp)  | 
|         self.LV, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.OffTime, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.PropDataSize, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.PropDataSize)  | 
|         self.PropData = ctypes.c_char_p(tmp)  | 
|         self.PlusDataSize, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.PlusDataSize)  | 
|         self.PlusData = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize1, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize1)  | 
|         self.ItemData1 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize2, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize2)  | 
|         self.ItemData2 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize3, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize3)  | 
|         self.ItemData3 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize4, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize4)  | 
|         self.ItemData4 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize5, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize5)  | 
|         self.ItemData5 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize6, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize6)  | 
|         self.ItemData6 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize7, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize7)  | 
|         self.ItemData7 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize8, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize8)  | 
|         self.ItemData8 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize9, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize9)  | 
|         self.ItemData9 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize10, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize10)  | 
|         self.ItemData10 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize11, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize11)  | 
|         self.ItemData11 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize12, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize12)  | 
|         self.ItemData12 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize13, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize13)  | 
|         self.ItemData13 = ctypes.c_char_p(tmp)  | 
|         self.ItemDataSize14, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize14)  | 
|         self.ItemData14 = ctypes.c_char_p(tmp)  | 
|         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):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.GeTuiIDSize)  | 
|         buf = CommFunc.WriteString(buf, self.GeTuiIDSize, self.GeTuiID)  | 
|         buf = CommFunc.WriteWORD(buf, self.LV)  | 
|         buf = CommFunc.WriteDWORD(buf, self.OffTime)  | 
|         buf = CommFunc.WriteWORD(buf, self.PropDataSize)  | 
|         buf = CommFunc.WriteString(buf, self.PropDataSize, self.PropData)  | 
|         buf = CommFunc.WriteWORD(buf, self.PlusDataSize)  | 
|         buf = CommFunc.WriteString(buf, self.PlusDataSize, self.PlusData)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize1)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize1, self.ItemData1)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize2)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize2, self.ItemData2)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize3)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize3, self.ItemData3)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize4)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize4, self.ItemData4)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize5)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize5, self.ItemData5)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize6)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize6, self.ItemData6)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize7)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize7, self.ItemData7)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize8)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize8, self.ItemData8)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize9)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize9, self.ItemData9)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize10)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize10, self.ItemData10)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize11)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize11, self.ItemData11)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize12)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize12, self.ItemData12)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize13)  | 
|         buf = CommFunc.WriteString(buf, self.ItemDataSize13, self.ItemData13)  | 
|         buf = CommFunc.WriteWORD(buf, self.ItemDataSize14)  | 
|         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):  | 
|         length = 0  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += self.GeTuiIDSize  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.PropDataSize  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.PlusDataSize  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize1  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize2  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize3  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize4  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize5  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize6  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize7  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize8  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize9  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize10  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize11  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize12  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.ItemDataSize13  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         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):  | 
|         output = '''// Íæ¼ÒÊý¾Ý²é¿´»º´æ±íPy #tagPlayerViewCachePy:  | 
|             PlayerID = %s,  | 
|             GeTuiIDSize = %s,  | 
|             GeTuiID = %s,  | 
|             LV = %s,  | 
|             OffTime = %s,  | 
|             PropDataSize = %s,  | 
|             PropData = %s,  | 
|             PlusDataSize = %s,  | 
|             PlusData = %s,  | 
|             ItemDataSize1 = %s,  | 
|             ItemData1 = %s,  | 
|             ItemDataSize2 = %s,  | 
|             ItemData2 = %s,  | 
|             ItemDataSize3 = %s,  | 
|             ItemData3 = %s,  | 
|             ItemDataSize4 = %s,  | 
|             ItemData4 = %s,  | 
|             ItemDataSize5 = %s,  | 
|             ItemData5 = %s,  | 
|             ItemDataSize6 = %s,  | 
|             ItemData6 = %s,  | 
|             ItemDataSize7 = %s,  | 
|             ItemData7 = %s,  | 
|             ItemDataSize8 = %s,  | 
|             ItemData8 = %s,  | 
|             ItemDataSize9 = %s,  | 
|             ItemData9 = %s,  | 
|             ItemDataSize10 = %s,  | 
|             ItemData10 = %s,  | 
|             ItemDataSize11 = %s,  | 
|             ItemData11 = %s,  | 
|             ItemDataSize12 = %s,  | 
|             ItemData12 = %s,  | 
|             ItemDataSize13 = %s,  | 
|             ItemData13 = %s,  | 
|             ItemDataSize14 = %s,  | 
|             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,  | 
|                 self.GeTuiIDSize,  | 
|                 self.GeTuiID,  | 
|                 self.LV,  | 
|                 self.OffTime,  | 
|                 self.PropDataSize,  | 
|                 self.PropData,  | 
|                 self.PlusDataSize,  | 
|                 self.PlusData,  | 
|                 self.ItemDataSize1,  | 
|                 self.ItemData1,  | 
|                 self.ItemDataSize2,  | 
|                 self.ItemData2,  | 
|                 self.ItemDataSize3,  | 
|                 self.ItemData3,  | 
|                 self.ItemDataSize4,  | 
|                 self.ItemData4,  | 
|                 self.ItemDataSize5,  | 
|                 self.ItemData5,  | 
|                 self.ItemDataSize6,  | 
|                 self.ItemData6,  | 
|                 self.ItemDataSize7,  | 
|                 self.ItemData7,  | 
|                 self.ItemDataSize8,  | 
|                 self.ItemData8,  | 
|                 self.ItemDataSize9,  | 
|                 self.ItemData9,  | 
|                 self.ItemDataSize10,  | 
|                 self.ItemData10,  | 
|                 self.ItemDataSize11,  | 
|                 self.ItemData11,  | 
|                 self.ItemDataSize12,  | 
|                 self.ItemData12,  | 
|                 self.ItemDataSize13,  | 
|                 self.ItemData13,  | 
|                 self.ItemDataSize14,  | 
|                 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  | 
|   | 
|   | 
| # ÅÄÂô¹Ø×¢±í #tagDBAuctionAttention  | 
| class tagDBAuctionAttention(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('AttentionLen', ctypes.c_ubyte),  | 
|         ('AttentionInfo', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.PlayerID = 0  | 
|         self.AttentionLen = 0  | 
|         self.AttentionInfo = ''  | 
|   | 
|     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.AttentionLen, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.AttentionLen)  | 
|         self.AttentionInfo = ctypes.c_char_p(tmp)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.AttentionLen)  | 
|         buf = CommFunc.WriteString(buf, self.AttentionLen, self.AttentionInfo)  | 
|         return buf  | 
|   | 
|     def getLength(self):  | 
|         length = 0  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += self.AttentionLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ÅÄÂô¹Ø×¢±í #tagDBAuctionAttention:  | 
|             PlayerID = %s,  | 
|             AttentionLen = %s,  | 
|             AttentionInfo = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.AttentionLen,  | 
|                 self.AttentionInfo,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| # ÅÄÂô¼Ç¼±í #tagDBAuctionRecord  | 
| class tagDBAuctionRecord(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('ItemGUID', ctypes.c_char * 40),  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('FamilyID', ctypes.c_ulong),  | 
|         ('RecordType', ctypes.c_ubyte),  | 
|         ('RecordResult', ctypes.c_ubyte),  | 
|         ('RecordTime', ctypes.c_char * 19),  | 
|         ('BidderPrice', ctypes.c_ulong),  | 
|         ('BidderName', ctypes.c_char * 33),  | 
|         ('ItemID', ctypes.c_ulong),  | 
|         ('Count', ctypes.c_ushort),  | 
|         ('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.ItemGUID = ''  | 
|         self.PlayerID = 0  | 
|         self.FamilyID = 0  | 
|         self.RecordType = 0  | 
|         self.RecordResult = 0  | 
|         self.RecordTime = ''  | 
|         self.BidderPrice = 0  | 
|         self.BidderName = ''  | 
|         self.ItemID = 0  | 
|         self.Count = 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.ItemGUID, pos = CommFunc.ReadString(buf, pos, 40)  | 
|         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.RecordType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.RecordResult, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.RecordTime, pos = CommFunc.ReadString(buf, pos, 19)  | 
|         self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.BidderName, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         self.ItemID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Count, pos = CommFunc.ReadWORD(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.WriteString(buf, sizeof(ctypes.c_char) * 40, self.ItemGUID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.FamilyID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.RecordType)  | 
|         buf = CommFunc.WriteBYTE(buf, self.RecordResult)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.RecordTime)  | 
|         buf = CommFunc.WriteDWORD(buf, self.BidderPrice)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName)  | 
|         buf = CommFunc.WriteDWORD(buf, self.ItemID)  | 
|         buf = CommFunc.WriteWORD(buf, self.Count)  | 
|         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_char) * 40  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_char) * 19  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_char) * 33  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.UserDataLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ÅÄÂô¼Ç¼±í #tagDBAuctionRecord:  | 
|             ItemGUID = %s,  | 
|             PlayerID = %s,  | 
|             FamilyID = %s,  | 
|             RecordType = %s,  | 
|             RecordResult = %s,  | 
|             RecordTime = %s,  | 
|             BidderPrice = %s,  | 
|             BidderName = %s,  | 
|             ItemID = %s,  | 
|             Count = %s,  | 
|             UserDataLen = %s,  | 
|             UserData = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.ItemGUID,  | 
|                 self.PlayerID,  | 
|                 self.FamilyID,  | 
|                 self.RecordType,  | 
|                 self.RecordResult,  | 
|                 self.RecordTime,  | 
|                 self.BidderPrice,  | 
|                 self.BidderName,  | 
|                 self.ItemID,  | 
|                 self.Count,  | 
|                 self.UserDataLen,  | 
|                 self.UserData,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetItemGUID(self,Str):  | 
|         if len(Str)<=40:  | 
|             self.ItemGUID = Str  | 
|         else:  | 
|             self.ItemGUID = Str[:40]  | 
|               | 
|     def SetRecordTime(self,Str):  | 
|         if len(Str)<=19:  | 
|             self.RecordTime = Str  | 
|         else:  | 
|             self.RecordTime = Str[:19]  | 
|               | 
|     def SetBidderName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.BidderName = Str  | 
|         else:  | 
|             self.BidderName = Str[:33]  | 
|               | 
|   | 
| # ÅÄÂôÎïÆ·±í #tagDBAuctionItem  | 
| class tagDBAuctionItem(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('ItemGUID', ctypes.c_char * 40),  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('FamilyID', ctypes.c_ulong),  | 
|         ('ItemID', ctypes.c_ulong),  | 
|         ('Count', ctypes.c_ushort),  | 
|         ('AuctionType', ctypes.c_ubyte),  | 
|         ('AddTime', ctypes.c_char * 19),  | 
|         ('BiddingTime', ctypes.c_char * 19),  | 
|         ('BidderID', ctypes.c_ulong),  | 
|         ('BidderName', ctypes.c_char * 33),  | 
|         ('BidderPrice', ctypes.c_ulong),  | 
|         ('ItemType', ctypes.c_ubyte),  | 
|         ('ItemJobLimit', ctypes.c_ubyte),  | 
|         ('ItemClassLV', ctypes.c_ubyte),  | 
|         ('UserDataLen', ctypes.c_ushort),  | 
|         ('UserData', ctypes.c_char_p),  | 
|         ('FamilyPlayerIDLen', ctypes.c_ushort),  | 
|         ('FamilyPlayerIDInfo', ctypes.c_char_p),  | 
|         ('BidderIDLen', ctypes.c_ubyte),  | 
|         ('BidderIDInfo', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.ItemGUID = ''  | 
|         self.PlayerID = 0  | 
|         self.FamilyID = 0  | 
|         self.ItemID = 0  | 
|         self.Count = 0  | 
|         self.AuctionType = 0  | 
|         self.AddTime = ''  | 
|         self.BiddingTime = ''  | 
|         self.BidderID = 0  | 
|         self.BidderName = ''  | 
|         self.BidderPrice = 0  | 
|         self.ItemType = 0  | 
|         self.ItemJobLimit = 0  | 
|         self.ItemClassLV = 0  | 
|         self.UserDataLen = 0  | 
|         self.UserData = ''  | 
|         self.FamilyPlayerIDLen = 0  | 
|         self.FamilyPlayerIDInfo = ''  | 
|         self.BidderIDLen = 0  | 
|         self.BidderIDInfo = ''  | 
|   | 
|     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.ItemGUID, pos = CommFunc.ReadString(buf, pos, 40)  | 
|         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.ItemID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Count, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.AuctionType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.AddTime, pos = CommFunc.ReadString(buf, pos, 19)  | 
|         self.BiddingTime, pos = CommFunc.ReadString(buf, pos, 19)  | 
|         self.BidderID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.BidderName, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.ItemType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.ItemJobLimit, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.ItemClassLV, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen)  | 
|         self.UserData = ctypes.c_char_p(tmp)  | 
|         self.FamilyPlayerIDLen, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.FamilyPlayerIDLen)  | 
|         self.FamilyPlayerIDInfo = ctypes.c_char_p(tmp)  | 
|         self.BidderIDLen, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.BidderIDLen)  | 
|         self.BidderIDInfo = ctypes.c_char_p(tmp)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.ItemGUID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.FamilyID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.ItemID)  | 
|         buf = CommFunc.WriteWORD(buf, self.Count)  | 
|         buf = CommFunc.WriteBYTE(buf, self.AuctionType)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.AddTime)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.BiddingTime)  | 
|         buf = CommFunc.WriteDWORD(buf, self.BidderID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName)  | 
|         buf = CommFunc.WriteDWORD(buf, self.BidderPrice)  | 
|         buf = CommFunc.WriteBYTE(buf, self.ItemType)  | 
|         buf = CommFunc.WriteBYTE(buf, self.ItemJobLimit)  | 
|         buf = CommFunc.WriteBYTE(buf, self.ItemClassLV)  | 
|         buf = CommFunc.WriteWORD(buf, self.UserDataLen)  | 
|         buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData)  | 
|         buf = CommFunc.WriteWORD(buf, self.FamilyPlayerIDLen)  | 
|         buf = CommFunc.WriteString(buf, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)  | 
|         buf = CommFunc.WriteBYTE(buf, self.BidderIDLen)  | 
|         buf = CommFunc.WriteString(buf, self.BidderIDLen, self.BidderIDInfo)  | 
|         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_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_char) * 19  | 
|         length += sizeof(ctypes.c_char) * 19  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_char) * 33  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.UserDataLen  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.FamilyPlayerIDLen  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += self.BidderIDLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ÅÄÂôÎïÆ·±í #tagDBAuctionItem:  | 
|             ItemGUID = %s,  | 
|             PlayerID = %s,  | 
|             FamilyID = %s,  | 
|             ItemID = %s,  | 
|             Count = %s,  | 
|             AuctionType = %s,  | 
|             AddTime = %s,  | 
|             BiddingTime = %s,  | 
|             BidderID = %s,  | 
|             BidderName = %s,  | 
|             BidderPrice = %s,  | 
|             ItemType = %s,  | 
|             ItemJobLimit = %s,  | 
|             ItemClassLV = %s,  | 
|             UserDataLen = %s,  | 
|             UserData = %s,  | 
|             FamilyPlayerIDLen = %s,  | 
|             FamilyPlayerIDInfo = %s,  | 
|             BidderIDLen = %s,  | 
|             BidderIDInfo = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.ItemGUID,  | 
|                 self.PlayerID,  | 
|                 self.FamilyID,  | 
|                 self.ItemID,  | 
|                 self.Count,  | 
|                 self.AuctionType,  | 
|                 self.AddTime,  | 
|                 self.BiddingTime,  | 
|                 self.BidderID,  | 
|                 self.BidderName,  | 
|                 self.BidderPrice,  | 
|                 self.ItemType,  | 
|                 self.ItemJobLimit,  | 
|                 self.ItemClassLV,  | 
|                 self.UserDataLen,  | 
|                 self.UserData,  | 
|                 self.FamilyPlayerIDLen,  | 
|                 self.FamilyPlayerIDInfo,  | 
|                 self.BidderIDLen,  | 
|                 self.BidderIDInfo,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetItemGUID(self,Str):  | 
|         if len(Str)<=40:  | 
|             self.ItemGUID = Str  | 
|         else:  | 
|             self.ItemGUID = Str[:40]  | 
|               | 
|     def SetAddTime(self,Str):  | 
|         if len(Str)<=19:  | 
|             self.AddTime = Str  | 
|         else:  | 
|             self.AddTime = Str[:19]  | 
|               | 
|     def SetBiddingTime(self,Str):  | 
|         if len(Str)<=19:  | 
|             self.BiddingTime = Str  | 
|         else:  | 
|             self.BiddingTime = Str[:19]  | 
|               | 
|     def SetBidderName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.BidderName = Str  | 
|         else:  | 
|             self.BidderName = Str[:33]  | 
|               | 
|   | 
| # ¿ç·þ¾º¼¼³¡Î´Í¨ÖªÍæ¼ÒµÄ±ÈÈü½á¹û±í #tagDBCrossPKUnNotifyOverInfo  | 
| class tagDBCrossPKUnNotifyOverInfo(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('ZoneID', ctypes.c_ubyte),  | 
|         ('SeasonID', ctypes.c_ubyte),  | 
|         ('RoomID', ctypes.c_ushort),  | 
|         ('TimeStr', ctypes.c_char * 19),  | 
|         ('OverType', ctypes.c_ubyte),  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('WinnerID', ctypes.c_ulong),  | 
|         ('RoundWinnerLen', ctypes.c_ubyte),  | 
|         ('RoundWinnerInfo', ctypes.c_char_p),  | 
|         ('PKScore', ctypes.c_ulong),  | 
|         ('DanLV', ctypes.c_ubyte),  | 
|         ('CWinCount', ctypes.c_ushort),  | 
|         ('AddScore', ctypes.c_ushort),  | 
|         ('TagPlayerID', ctypes.c_ulong),  | 
|         ('TagPlayerName', ctypes.c_char * 33),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.ZoneID = 0  | 
|         self.SeasonID = 0  | 
|         self.RoomID = 0  | 
|         self.TimeStr = ''  | 
|         self.OverType = 0  | 
|         self.PlayerID = 0  | 
|         self.WinnerID = 0  | 
|         self.RoundWinnerLen = 0  | 
|         self.RoundWinnerInfo = ''  | 
|         self.PKScore = 0  | 
|         self.DanLV = 0  | 
|         self.CWinCount = 0  | 
|         self.AddScore = 0  | 
|         self.TagPlayerID = 0  | 
|         self.TagPlayerName = ''  | 
|   | 
|     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.ZoneID, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.SeasonID, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.RoomID, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.TimeStr, pos = CommFunc.ReadString(buf, pos, 19)  | 
|         self.OverType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.WinnerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.RoundWinnerLen, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.RoundWinnerLen)  | 
|         self.RoundWinnerInfo = ctypes.c_char_p(tmp)  | 
|         self.PKScore, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.DanLV, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.CWinCount, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.AddScore, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.TagPlayerID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.TagPlayerName, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteBYTE(buf, self.ZoneID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.SeasonID)  | 
|         buf = CommFunc.WriteWORD(buf, self.RoomID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.TimeStr)  | 
|         buf = CommFunc.WriteBYTE(buf, self.OverType)  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteDWORD(buf, self.WinnerID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.RoundWinnerLen)  | 
|         buf = CommFunc.WriteString(buf, self.RoundWinnerLen, self.RoundWinnerInfo)  | 
|         buf = CommFunc.WriteDWORD(buf, self.PKScore)  | 
|         buf = CommFunc.WriteBYTE(buf, self.DanLV)  | 
|         buf = CommFunc.WriteWORD(buf, self.CWinCount)  | 
|         buf = CommFunc.WriteWORD(buf, self.AddScore)  | 
|         buf = CommFunc.WriteDWORD(buf, self.TagPlayerID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.TagPlayerName)  | 
|         return buf  | 
|   | 
|     def getLength(self):  | 
|         length = 0  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_char) * 19  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += self.RoundWinnerLen  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ubyte)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_char) * 33  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ¿ç·þ¾º¼¼³¡Î´Í¨ÖªÍæ¼ÒµÄ±ÈÈü½á¹û±í #tagDBCrossPKUnNotifyOverInfo:  | 
|             ZoneID = %s,  | 
|             SeasonID = %s,  | 
|             RoomID = %s,  | 
|             TimeStr = %s,  | 
|             OverType = %s,  | 
|             PlayerID = %s,  | 
|             WinnerID = %s,  | 
|             RoundWinnerLen = %s,  | 
|             RoundWinnerInfo = %s,  | 
|             PKScore = %s,  | 
|             DanLV = %s,  | 
|             CWinCount = %s,  | 
|             AddScore = %s,  | 
|             TagPlayerID = %s,  | 
|             TagPlayerName = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.ZoneID,  | 
|                 self.SeasonID,  | 
|                 self.RoomID,  | 
|                 self.TimeStr,  | 
|                 self.OverType,  | 
|                 self.PlayerID,  | 
|                 self.WinnerID,  | 
|                 self.RoundWinnerLen,  | 
|                 self.RoundWinnerInfo,  | 
|                 self.PKScore,  | 
|                 self.DanLV,  | 
|                 self.CWinCount,  | 
|                 self.AddScore,  | 
|                 self.TagPlayerID,  | 
|                 self.TagPlayerName,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetTimeStr(self,Str):  | 
|         if len(Str)<=19:  | 
|             self.TimeStr = Str  | 
|         else:  | 
|             self.TimeStr = Str[:19]  | 
|               | 
|     def SetTagPlayerName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.TagPlayerName = Str  | 
|         else:  | 
|             self.TagPlayerName = Str[:33]  | 
|               | 
|   | 
| # ¿ç·þ¾º¼¼³¡PKÅÅÐаñ #tagDBCrossPKBillboard  | 
| class tagDBCrossPKBillboard(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('ZoneID', ctypes.c_ubyte),  | 
|         ('SeasonID', ctypes.c_ubyte),  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('PlayerName', ctypes.c_char * 33),  | 
|         ('Job', ctypes.c_ubyte),  | 
|         ('FightPower', ctypes.c_ulong),  | 
|         ('RealmLV', ctypes.c_ushort),  | 
|         ('PKScore', ctypes.c_ulong),  | 
|         ('DanLV', ctypes.c_ubyte),  | 
|         ('Time', 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.ZoneID, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.SeasonID, pos = CommFunc.ReadBYTE(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.FightPower, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.RealmLV, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.PKScore, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.DanLV, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.Time, 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(tagDBCrossPKBillboard)  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ¿ç·þ¾º¼¼³¡PKÅÅÐаñ #tagDBCrossPKBillboard:  | 
|             ZoneID = %s,  | 
|             SeasonID = %s,  | 
|             PlayerID = %s,  | 
|             PlayerName = %s,  | 
|             Job = %s,  | 
|             FightPower = %s,  | 
|             RealmLV = %s,  | 
|             PKScore = %s,  | 
|             DanLV = %s,  | 
|             Time = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.ZoneID,  | 
|                 self.SeasonID,  | 
|                 self.PlayerID,  | 
|                 self.PlayerName,  | 
|                 self.Job,  | 
|                 self.FightPower,  | 
|                 self.RealmLV,  | 
|                 self.PKScore,  | 
|                 self.DanLV,  | 
|                 self.Time,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetPlayerName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.PlayerName = Str  | 
|         else:  | 
|             self.PlayerName = Str[:33]  | 
|      | 
|   | 
| #ÏÉħ֮Õù¼Ç¼±í#tagDBPyXMZZ  | 
| class tagDBPyXMZZ(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('Name', ctypes.c_char * 33),  | 
|         ('Faction', ctypes.c_ubyte),  | 
|         ('Score', ctypes.c_ushort),  | 
|         ('WinCnt', ctypes.c_ubyte),  | 
|         ('LoseCnt', ctypes.c_ubyte),  | 
|         ('ConWinCnt', ctypes.c_ubyte),  | 
|         ('WinAwardRecord', ctypes.c_ulong),  | 
|         ('Len', ctypes.c_ushort),  | 
|         ('BetRecord', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.PlayerID = 0  | 
|         self.Name = ''  | 
|         self.Faction = 0  | 
|         self.Score = 0  | 
|         self.WinCnt = 0  | 
|         self.LoseCnt = 0  | 
|         self.ConWinCnt = 0  | 
|         self.WinAwardRecord = 0  | 
|         self.Len = 0  | 
|         self.BetRecord = ''  | 
|   | 
|     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.Name, pos = CommFunc.ReadString(buf, pos, 33)  | 
|         self.Faction, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.Score, pos = CommFunc.ReadWORD(buf, pos)  | 
|         self.WinCnt, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.LoseCnt, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.ConWinCnt, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.WinAwardRecord, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.Len, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.Len)  | 
|         self.BetRecord = ctypes.c_char_p(tmp)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.Name)  | 
|         buf = CommFunc.WriteBYTE(buf, self.Faction)  | 
|         buf = CommFunc.WriteWORD(buf, self.Score)  | 
|         buf = CommFunc.WriteBYTE(buf, self.WinCnt)  | 
|         buf = CommFunc.WriteBYTE(buf, self.LoseCnt)  | 
|         buf = CommFunc.WriteBYTE(buf, self.ConWinCnt)  | 
|         buf = CommFunc.WriteDWORD(buf, self.WinAwardRecord)  | 
|         buf = CommFunc.WriteWORD(buf, self.Len)  | 
|         buf = CommFunc.WriteString(buf, self.Len, self.BetRecord)  | 
|         return buf  | 
|   | 
|     def getLength(self):  | 
|         length = 0  | 
|         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_ubyte)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.Len  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''//ÏÉħ֮Õù¼Ç¼±í#tagDBPyXMZZ:  | 
|             PlayerID = %s,  | 
|             Name = %s,  | 
|             Faction = %s,  | 
|             Score = %s,  | 
|             WinCnt = %s,  | 
|             LoseCnt = %s,  | 
|             ConWinCnt = %s,  | 
|             WinAwardRecord = %s,  | 
|             Len = %s,  | 
|             BetRecord = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.Name,  | 
|                 self.Faction,  | 
|                 self.Score,  | 
|                 self.WinCnt,  | 
|                 self.LoseCnt,  | 
|                 self.ConWinCnt,  | 
|                 self.WinAwardRecord,  | 
|                 self.Len,  | 
|                 self.BetRecord,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.Name = Str  | 
|         else:  | 
|             self.Name = Str[:33]  | 
|               | 
|   | 
|   | 
| #·âħ̳¼Ç¼±í#tagDBPySealDemonRecord  | 
| class tagDBPySealDemonRecord(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('LineID', ctypes.c_ubyte),  | 
|         ('Rank', ctypes.c_ushort),  | 
|         ('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.LineID, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.Rank, pos = CommFunc.ReadWORD(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(tagDBPySealDemonRecord)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//·âħ̳¼Ç¼±í#tagDBPySealDemonRecord:  | 
|             PlayerID = %s,  | 
|             LineID = %s,  | 
|             Rank = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.LineID,  | 
|                 self.Rank,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| #Boss¹Ø×¢¼Ç¼±í#tagDBPyBossAttention  | 
| class tagDBPyBossAttention(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('DataLen', ctypes.c_ushort),  | 
|         ('RecordData', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.PlayerID = 0  | 
|         self.DataLen = 0  | 
|         self.RecordData = ''  | 
|   | 
|     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.DataLen, pos = CommFunc.ReadWORD(buf, pos)  | 
|         tmp, pos = CommFunc.ReadString(buf, pos, self.DataLen)  | 
|         self.RecordData = ctypes.c_char_p(tmp)  | 
|         return self.getLength()  | 
|   | 
|     def getBuffer(self):  | 
|         buf = ''  | 
|         buf = CommFunc.WriteDWORD(buf, self.PlayerID)  | 
|         buf = CommFunc.WriteWORD(buf, self.DataLen)  | 
|         buf = CommFunc.WriteString(buf, self.DataLen, self.RecordData)  | 
|         return buf  | 
|   | 
|     def getLength(self):  | 
|         length = 0  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ushort)  | 
|         length += self.DataLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''//Boss¹Ø×¢¼Ç¼±í#tagDBPyBossAttention:  | 
|             PlayerID = %s,  | 
|             DataLen = %s,  | 
|             RecordData = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.DataLen,  | 
|                 self.RecordData,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| #½»Ò×ËùÎïÆ·×î½ü³É½»µ¥¼Û±í#tagDBPyBourseItemLastPrice  | 
| class tagDBPyBourseItemLastPrice(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('ItemID', ctypes.c_ulong),  | 
|         ('LastPrice', 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.ItemID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.LastPrice, 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(tagDBPyBourseItemLastPrice)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//½»Ò×ËùÎïÆ·×î½ü³É½»µ¥¼Û±í#tagDBPyBourseItemLastPrice:  | 
|             ItemID = %s,  | 
|             LastPrice = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.ItemID,  | 
|                 self.LastPrice,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| #½»Ò×Ëù¼Ç¼±í#tagDBPyBourseRecord  | 
| class tagDBPyBourseRecord(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('Type', ctypes.c_ubyte),  | 
|         ('Timestamp', ctypes.c_ulong),  | 
|         ('TradeTax', ctypes.c_ulong),  | 
|         ('TradeMoney', 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.Type = 0  | 
|         self.Timestamp = 0  | 
|         self.TradeTax = 0  | 
|         self.TradeMoney = 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.Type, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.Timestamp, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.TradeTax, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.TradeMoney, 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.WriteBYTE(buf, self.Type)  | 
|         buf = CommFunc.WriteDWORD(buf, self.Timestamp)  | 
|         buf = CommFunc.WriteDWORD(buf, self.TradeTax)  | 
|         buf = CommFunc.WriteDWORD(buf, self.TradeMoney)  | 
|         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_ubyte)  | 
|         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 = '''//½»Ò×Ëù¼Ç¼±í#tagDBPyBourseRecord:  | 
|             PlayerID = %s,  | 
|             Type = %s,  | 
|             Timestamp = %s,  | 
|             TradeTax = %s,  | 
|             TradeMoney = %s,  | 
|             UserDataLen = %s,  | 
|             UserData = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.Type,  | 
|                 self.Timestamp,  | 
|                 self.TradeTax,  | 
|                 self.TradeMoney,  | 
|                 self.UserDataLen,  | 
|                 self.UserData,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| # ¼Ò×å²Ö¿âÎïÆ·±í#tagDBPyFamilyStoreItem  | 
| class tagDBPyFamilyStoreItem(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('FamilyID', ctypes.c_ulong),  | 
|         ('ItemIndex', ctypes.c_ubyte),  | 
|         ('ItemID', ctypes.c_ulong),  | 
|         ('UserDataLen', ctypes.c_ulong),  | 
|         ('UserData', ctypes.c_char_p),  | 
|         ('ADOResult', ctypes.c_ulong),  | 
|     ]  | 
|   | 
|     def __init__(self):  | 
|         Structure.__init__(self)  | 
|         self.clear()  | 
|   | 
|     def clear(self):  | 
|         self.FamilyID = 0  | 
|         self.ItemIndex = 0  | 
|         self.ItemID = 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.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.ItemIndex, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.ItemID, pos = CommFunc.ReadDWORD(buf, pos)  | 
|         self.UserDataLen, pos = CommFunc.ReadDWORD(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.FamilyID)  | 
|         buf = CommFunc.WriteBYTE(buf, self.ItemIndex)  | 
|         buf = CommFunc.WriteDWORD(buf, self.ItemID)  | 
|         buf = CommFunc.WriteDWORD(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_ubyte)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += sizeof(ctypes.c_ulong)  | 
|         length += self.UserDataLen  | 
|         return length  | 
|   | 
|     def outputString(self):  | 
|         output = '''// ¼Ò×å²Ö¿âÎïÆ·±í#tagDBPyFamilyStoreItem:  | 
|             FamilyID = %s,  | 
|             ItemIndex = %s,  | 
|             ItemID = %s,  | 
|             UserDataLen = %s,  | 
|             UserData = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.FamilyID,  | 
|                 self.ItemIndex,  | 
|                 self.ItemID,  | 
|                 self.UserDataLen,  | 
|                 self.UserData,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
| #Íæ¼ÒºÚÃûµ¥ #tagDBPyPlayerBlack  | 
| class tagDBPyPlayerBlack(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('TagID', 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)  | 
|         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(tagDBPyPlayerBlack)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//Íæ¼ÒºÚÃûµ¥ #tagDBPyPlayerBlack:  | 
|             PlayerID = %s,  | 
|             TagID = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.TagID,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
| #×î½üÁªÏµÈË #tagDBPyPlayerContacts  | 
| class tagDBPyPlayerContacts(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('TagID', ctypes.c_ulong),  | 
|         ('Timestamp', 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.Timestamp, 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(tagDBPyPlayerContacts)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//×î½üÁªÏµÈË #tagDBPyPlayerContacts:  | 
|             PlayerID = %s,  | 
|             TagID = %s,  | 
|             Timestamp = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.TagID,  | 
|                 self.Timestamp,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
| #Íæ¼ÒºÃÓѱí#tagDBPyPlayerFriend  | 
| class tagDBPyPlayerFriend(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('TagID', 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)  | 
|         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(tagDBPyPlayerFriend)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//Íæ¼ÒºÃÓѱí#tagDBPyPlayerFriend:  | 
|             PlayerID = %s,  | 
|             TagID = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.TagID,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| #Íæ¼Ò³ðÈ˱í#tagPlayerEnemy  | 
| class tagPlayerEnemy(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('TagID', ctypes.c_ulong),  | 
|         ('Timestamp', 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.Timestamp, 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(tagPlayerEnemy)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//Íæ¼Ò³ðÈ˱í#tagPlayerEnemy:  | 
|             PlayerID = %s,  | 
|             TagID = %s,  | 
|             Timestamp = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.TagID,  | 
|                 self.Timestamp,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|   | 
| #¸öÈËÉç½»×ܱí #tagPersonalSocial  | 
| class tagPersonalSocial(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|         ('PlayerID', ctypes.c_ulong),  | 
|         ('PlayerName', ctypes.c_char * 33),  | 
|         ('Job', ctypes.c_ubyte),  | 
|         ('LV', ctypes.c_ushort),  | 
|         ('RealmLV', ctypes.c_ushort),  | 
|         ('OnlineType', ctypes.c_ubyte),  | 
|         ('RefCount', 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.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.ReadWORD(buf, pos)  | 
|         self.OnlineType, pos = CommFunc.ReadBYTE(buf, pos)  | 
|         self.RefCount, 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(tagPersonalSocial)  | 
|   | 
|     def outputString(self):  | 
|         output = '''//¸öÈËÉç½»×ܱí #tagPersonalSocial:  | 
|             PlayerID = %s,  | 
|             PlayerName = %s,  | 
|             Job = %s,  | 
|             LV = %s,  | 
|             RealmLV = %s,  | 
|             OnlineType = %s,  | 
|             RefCount = %s,  | 
|             ADOResult = %s,  | 
|             '''%(  | 
|                 self.PlayerID,  | 
|                 self.PlayerName,  | 
|                 self.Job,  | 
|                 self.LV,  | 
|                 self.RealmLV,  | 
|                 self.OnlineType,  | 
|                 self.RefCount,  | 
|                 self.ADOResult,  | 
|             )  | 
|         return output  | 
|   | 
|     #CharÊý×éÀàÐÍSet½Ó¿Ú,ʹÓøýӿڶԴËÀàÐÍÊý¾Ý¸³Öµ£¬·ÀÖ¹¸³ÖµµÄÊý¾Ý¹ý³¤±¨´í  | 
|     def SetPlayerName(self,Str):  | 
|         if len(Str)<=33:  | 
|             self.PlayerName = Str  | 
|         else:  | 
|             self.PlayerName = 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  | 
|               |