From bbf713a679c98282767dcbeaf4d85335b677fa40 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 09 十月 2022 16:26:57 +0800 Subject: [PATCH] 9687 【后端】【越南】【主干】【BT7】野外根据境界动态刷怪(ExAttr18值不同时才设置变更及通知0418) --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 1261 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,232 insertions(+), 29 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index ced9f6a..68a9d5b 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,6 +15,913 @@ 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), + ('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 = '' + + 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) + 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) + 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 + 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, + 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.ADOResult, + ) + return output + + # 拍卖关注表 #tagDBAuctionAttention class tagDBAuctionAttention(Structure): _pack_ = 1 @@ -79,11 +986,14 @@ 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), - ('RecordPrice', ctypes.c_ulong), + ('BidderPrice', ctypes.c_ulong), + ('BidderName', ctypes.c_char * 33), ('ItemID', ctypes.c_ulong), ('Count', ctypes.c_ushort), ('UserDataLen', ctypes.c_ushort), @@ -96,11 +1006,14 @@ self.clear() def clear(self): + self.ItemGUID = '' self.PlayerID = 0 self.FamilyID = 0 self.RecordType = 0 + self.RecordResult = 0 self.RecordTime = '' - self.RecordPrice = 0 + self.BidderPrice = 0 + self.BidderName = '' self.ItemID = 0 self.Count = 0 self.UserDataLen = 0 @@ -112,11 +1025,14 @@ 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.RecordPrice, pos = CommFunc.ReadDWORD(buf, pos) + 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) @@ -126,11 +1042,14 @@ 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.RecordPrice) + 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) @@ -139,11 +1058,14 @@ 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) @@ -152,22 +1074,28 @@ def outputString(self): output = '''// 拍卖记录表 #tagDBAuctionRecord: + ItemGUID = %s, PlayerID = %s, FamilyID = %s, RecordType = %s, + RecordResult = %s, RecordTime = %s, - RecordPrice = %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.RecordPrice, + self.BidderPrice, + self.BidderName, self.ItemID, self.Count, self.UserDataLen, @@ -177,11 +1105,23 @@ 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 @@ -572,14 +1512,22 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + 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() @@ -625,7 +1573,7 @@ self.PlayerName = Str else: self.PlayerName = Str[:33] - + #仙魔之争记录表#tagDBPyXMZZ class tagDBPyXMZZ(Structure): @@ -762,14 +1710,15 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.LineID, pos = CommFunc.ReadBYTE(buf, pos) + self.Rank, pos = CommFunc.ReadWORD(buf, pos) return self.getLength() @@ -794,7 +1743,6 @@ self.ADOResult, ) return output - #Boss关注记录表#tagDBPyBossAttention @@ -857,7 +1805,6 @@ return output - #交易所物品最近成交单价表#tagDBPyBourseItemLastPrice class tagDBPyBourseItemLastPrice(Structure): _pack_ = 1 @@ -875,14 +1822,14 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) + self.LastPrice, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1068,7 +2015,6 @@ ) return output - #玩家黑名单 #tagDBPyPlayerBlack class tagDBPyPlayerBlack(Structure): _pack_ = 1 @@ -1086,14 +2032,14 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TagID, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1135,14 +2081,15 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TagID, pos = CommFunc.ReadDWORD(buf, pos) + self.Timestamp, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1185,14 +2132,14 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TagID, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1216,6 +2163,7 @@ ) return output + #玩家仇人表#tagPlayerEnemy class tagPlayerEnemy(Structure): _pack_ = 1 @@ -1234,14 +2182,15 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TagID, pos = CommFunc.ReadDWORD(buf, pos) + self.Timestamp, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1268,7 +2217,6 @@ return output - #个人社交总表 #tagPersonalSocial class tagPersonalSocial(Structure): _pack_ = 1 @@ -1291,14 +2239,19 @@ 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() - memmove(addressof(self), buf[pos:], self.getLength()) + 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() @@ -1338,6 +2291,256 @@ 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 - - -- Gitblit v1.8.0