From afc1db00be5cbd66a8c74ba01f74be7104bb73fb Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 08 十一月 2024 15:05:26 +0800 Subject: [PATCH] 10289 【越南】【英语】【砍树】【tqxbqy】运势-服务端 --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 935 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 927 insertions(+), 8 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 0556db9..b3f6daa 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -160,6 +160,7 @@ self.LimitTime = Str[:30] +#------------------------------------------------------ # 跨服排行榜 #tagDBCrossBillboard class tagDBCrossBillboard(Structure): _pack_ = 1 @@ -174,9 +175,17 @@ ('Type2', ctypes.c_ubyte), ('Value1', ctypes.c_ulong), ('Value2', ctypes.c_ulong), + ('Value3', ctypes.c_ulong), + ('Value4', ctypes.c_ulong), + ('Value5', ctypes.c_ulong), + ('Value6', ctypes.c_ulong), + ('Value7', ctypes.c_ulong), + ('Value8', ctypes.c_ulong), ('CmpValue', ctypes.c_ulong), ('CmpValue2', ctypes.c_ulong), ('CmpValue3', ctypes.c_ulong), + ('DataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), ('ADOResult', ctypes.c_ulong), ] @@ -184,9 +193,28 @@ Structure.__init__(self) self.clear() - def clear(self): - memset(addressof(self), 0, self.getLength()) + self.GroupValue1 = 0 + self.GroupValue2 = 0 + self.BillboardType = 0 + self.ID = 0 + self.ID2 = 0 + self.Name1 = '' + self.Name2 = '' + self.Type2 = 0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.CmpValue = 0 + self.CmpValue2 = 0 + self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = '' def readData(self, buf, pos = 0, length = 0): if not pos <= length: @@ -204,19 +232,69 @@ self.Type2, pos = CommFunc.ReadBYTE(buf, pos) self.Value1, pos = CommFunc.ReadDWORD(buf, pos) self.Value2, pos = CommFunc.ReadDWORD(buf, pos) + self.Value3, pos = CommFunc.ReadDWORD(buf, pos) + self.Value4, pos = CommFunc.ReadDWORD(buf, pos) + self.Value5, pos = CommFunc.ReadDWORD(buf, pos) + self.Value6, pos = CommFunc.ReadDWORD(buf, pos) + self.Value7, pos = CommFunc.ReadDWORD(buf, pos) + self.Value8, pos = CommFunc.ReadDWORD(buf, pos) self.CmpValue, pos = CommFunc.ReadDWORD(buf, pos) self.CmpValue2, pos = CommFunc.ReadDWORD(buf, pos) self.CmpValue3, pos = CommFunc.ReadDWORD(buf, pos) + self.DataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.DataLen) + self.UserData = ctypes.c_char_p(tmp) return self.getLength() - def getBuffer(self): - buf = create_string_buffer(self.getLength()) - memmove(addressof(buf), addressof(self), self.getLength()) - return string_at(addressof(buf), self.getLength()) + buf = '' + buf = CommFunc.WriteBYTE(buf, self.GroupValue1) + buf = CommFunc.WriteBYTE(buf, self.GroupValue2) + buf = CommFunc.WriteBYTE(buf, self.BillboardType) + buf = CommFunc.WriteDWORD(buf, self.ID) + buf = CommFunc.WriteDWORD(buf, self.ID2) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.Name1) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.Name2) + buf = CommFunc.WriteBYTE(buf, self.Type2) + buf = CommFunc.WriteDWORD(buf, self.Value1) + buf = CommFunc.WriteDWORD(buf, self.Value2) + buf = CommFunc.WriteDWORD(buf, self.Value3) + buf = CommFunc.WriteDWORD(buf, self.Value4) + buf = CommFunc.WriteDWORD(buf, self.Value5) + buf = CommFunc.WriteDWORD(buf, self.Value6) + buf = CommFunc.WriteDWORD(buf, self.Value7) + buf = CommFunc.WriteDWORD(buf, self.Value8) + buf = CommFunc.WriteDWORD(buf, self.CmpValue) + buf = CommFunc.WriteDWORD(buf, self.CmpValue2) + buf = CommFunc.WriteDWORD(buf, self.CmpValue3) + buf = CommFunc.WriteWORD(buf, self.DataLen) + buf = CommFunc.WriteString(buf, self.DataLen, self.UserData) + return buf def getLength(self): - return sizeof(tagDBCrossBillboard) + length = 0 + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_char) * 33 + length += sizeof(ctypes.c_char) * 33 + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += self.DataLen + return length def outputString(self): output = '''// 跨服排行榜 #tagDBCrossBillboard: @@ -230,9 +308,17 @@ Type2 = %s, Value1 = %s, Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + Value6 = %s, + Value7 = %s, + Value8 = %s, CmpValue = %s, CmpValue2 = %s, CmpValue3 = %s, + DataLen = %s, + UserData = %s, ADOResult = %s, '''%( self.GroupValue1, @@ -245,9 +331,17 @@ self.Type2, self.Value1, self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, self.CmpValue, self.CmpValue2, self.CmpValue3, + self.DataLen, + self.UserData, self.ADOResult, ) return output @@ -265,6 +359,8 @@ else: self.Name2 = Str[:33] + + # 协助感谢表 #tagDBAssistThanks class tagDBAssistThanks(Structure): @@ -1576,6 +1672,8 @@ ('PKScore', ctypes.c_ulong), ('DanLV', ctypes.c_ubyte), ('Time', ctypes.c_ulong), + ('Face', ctypes.c_ulong), + ('FacePic', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), ] @@ -1603,6 +1701,8 @@ self.PKScore, pos = CommFunc.ReadDWORD(buf, pos) self.DanLV, pos = CommFunc.ReadBYTE(buf, pos) self.Time, pos = CommFunc.ReadDWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -1626,6 +1726,8 @@ PKScore = %s, DanLV = %s, Time = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.ZoneID, @@ -1638,6 +1740,8 @@ self.PKScore, self.DanLV, self.Time, + self.Face, + self.FacePic, self.ADOResult, ) return output @@ -2303,6 +2407,8 @@ ('RealmLV', ctypes.c_ushort), ('OnlineType', ctypes.c_ubyte), ('RefCount', ctypes.c_ulong), + ('Face', ctypes.c_ulong), + ('FacePic', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), ] @@ -2327,6 +2433,8 @@ self.RealmLV, pos = CommFunc.ReadWORD(buf, pos) self.OnlineType, pos = CommFunc.ReadBYTE(buf, pos) self.RefCount, pos = CommFunc.ReadDWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -2347,6 +2455,8 @@ RealmLV = %s, OnlineType = %s, RefCount = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.PlayerID, @@ -2356,6 +2466,8 @@ self.RealmLV, self.OnlineType, self.RefCount, + self.Face, + self.FacePic, self.ADOResult, ) return output @@ -2618,4 +2730,811 @@ self.ADOResult, ) return output - + + +# 福地矿物表 #tagDBPyMineAreaItem +class tagDBPyMineAreaItem(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('Index', ctypes.c_ubyte), + ('MineID', ctypes.c_ushort), + ('MineType', ctypes.c_ubyte), + ('UpdTime', ctypes.c_ulong), + ('PosLen', ctypes.c_ubyte), + ('Position', ctypes.c_char_p), + ('WorkerCount', ctypes.c_ubyte), + ('WorkerState', ctypes.c_ubyte), + ('RobPlayerID', ctypes.c_ulong), + ('RobWorkerCount', ctypes.c_ubyte), + ('RobWorkerState', ctypes.c_ubyte), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.Index = 0 + self.MineID = 0 + self.MineType = 0 + self.UpdTime = 0 + self.PosLen = 0 + self.Position = '' + self.WorkerCount = 0 + self.WorkerState = 0 + self.RobPlayerID = 0 + self.RobWorkerCount = 0 + self.RobWorkerState = 0 + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.Index, pos = CommFunc.ReadBYTE(buf, pos) + self.MineID, pos = CommFunc.ReadWORD(buf, pos) + self.MineType, pos = CommFunc.ReadBYTE(buf, pos) + self.UpdTime, pos = CommFunc.ReadDWORD(buf, pos) + self.PosLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.PosLen) + self.Position = ctypes.c_char_p(tmp) + self.WorkerCount, pos = CommFunc.ReadBYTE(buf, pos) + self.WorkerState, pos = CommFunc.ReadBYTE(buf, pos) + self.RobPlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.RobWorkerCount, pos = CommFunc.ReadBYTE(buf, pos) + self.RobWorkerState, pos = CommFunc.ReadBYTE(buf, pos) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteBYTE(buf, self.Index) + buf = CommFunc.WriteWORD(buf, self.MineID) + buf = CommFunc.WriteBYTE(buf, self.MineType) + buf = CommFunc.WriteDWORD(buf, self.UpdTime) + buf = CommFunc.WriteBYTE(buf, self.PosLen) + buf = CommFunc.WriteString(buf, self.PosLen, self.Position) + buf = CommFunc.WriteBYTE(buf, self.WorkerCount) + buf = CommFunc.WriteBYTE(buf, self.WorkerState) + buf = CommFunc.WriteDWORD(buf, self.RobPlayerID) + buf = CommFunc.WriteBYTE(buf, self.RobWorkerCount) + buf = CommFunc.WriteBYTE(buf, self.RobWorkerState) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += self.PosLen + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + return length + + def outputString(self): + output = '''// 福地矿物表 #tagDBPyMineAreaItem: + PlayerID = %s, + Index = %s, + MineID = %s, + MineType = %s, + UpdTime = %s, + PosLen = %s, + Position = %s, + WorkerCount = %s, + WorkerState = %s, + RobPlayerID = %s, + RobWorkerCount = %s, + RobWorkerState = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.Index, + self.MineID, + self.MineType, + self.UpdTime, + self.PosLen, + self.Position, + self.WorkerCount, + self.WorkerState, + self.RobPlayerID, + self.RobWorkerCount, + self.RobWorkerState, + self.ADOResult, + ) + return output + + +# 福地记录表 #tagDBPyMineAreaRecord +class tagDBPyMineAreaRecord(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('RecordType', ctypes.c_ulong), + ('TagPlayerID', ctypes.c_ulong), + ('RecordTime', ctypes.c_ulong), + ('MineID', ctypes.c_ushort), + ('DataLen', ctypes.c_ushort), + ('Data', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.RecordType = 0 + self.TagPlayerID = 0 + self.RecordTime = 0 + self.MineID = 0 + self.DataLen = 0 + self.Data = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.RecordType, pos = CommFunc.ReadDWORD(buf, pos) + self.TagPlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.RecordTime, pos = CommFunc.ReadDWORD(buf, pos) + self.MineID, pos = CommFunc.ReadWORD(buf, pos) + self.DataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.DataLen) + self.Data = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.RecordType) + buf = CommFunc.WriteDWORD(buf, self.TagPlayerID) + buf = CommFunc.WriteDWORD(buf, self.RecordTime) + buf = CommFunc.WriteWORD(buf, self.MineID) + buf = CommFunc.WriteWORD(buf, self.DataLen) + buf = CommFunc.WriteString(buf, self.DataLen, self.Data) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ushort) + length += self.DataLen + return length + + def outputString(self): + output = '''// 福地记录表 #tagDBPyMineAreaRecord: + PlayerID = %s, + RecordType = %s, + TagPlayerID = %s, + RecordTime = %s, + MineID = %s, + DataLen = %s, + Data = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.RecordType, + self.TagPlayerID, + self.RecordTime, + self.MineID, + self.DataLen, + self.Data, + self.ADOResult, + ) + return output + + +# 福地结算奖励表 #tagDBPyMineAreaAward +class tagDBPyMineAreaAward(Structure): + _pack_ = 1 + _fields_ = [ + ('GUIDLen', ctypes.c_ubyte), + ('GUID', ctypes.c_char_p), + ('PlayerID', ctypes.c_ulong), + ('AwardTime', ctypes.c_ulong), + ('MineID', ctypes.c_ushort), + ('WorkerCount', ctypes.c_ubyte), + ('AreaPlayerID', ctypes.c_ulong), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.GUIDLen = 0 + self.GUID = '' + self.PlayerID = 0 + self.AwardTime = 0 + self.MineID = 0 + self.WorkerCount = 0 + self.AreaPlayerID = 0 + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.GUIDLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.GUIDLen) + self.GUID = ctypes.c_char_p(tmp) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.AwardTime, pos = CommFunc.ReadDWORD(buf, pos) + self.MineID, pos = CommFunc.ReadWORD(buf, pos) + self.WorkerCount, pos = CommFunc.ReadBYTE(buf, pos) + self.AreaPlayerID, pos = CommFunc.ReadDWORD(buf, pos) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteBYTE(buf, self.GUIDLen) + buf = CommFunc.WriteString(buf, self.GUIDLen, self.GUID) + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.AwardTime) + buf = CommFunc.WriteWORD(buf, self.MineID) + buf = CommFunc.WriteBYTE(buf, self.WorkerCount) + buf = CommFunc.WriteDWORD(buf, self.AreaPlayerID) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ubyte) + length += self.GUIDLen + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + return length + + def outputString(self): + output = '''// 福地结算奖励表 #tagDBPyMineAreaAward: + GUIDLen = %s, + GUID = %s, + PlayerID = %s, + AwardTime = %s, + MineID = %s, + WorkerCount = %s, + AreaPlayerID = %s, + ADOResult = %s, + '''%( + self.GUIDLen, + self.GUID, + self.PlayerID, + self.AwardTime, + self.MineID, + self.WorkerCount, + self.AreaPlayerID, + self.ADOResult, + ) + return output + + +# 玩家记录表 #tagDBPlayerRecData +class tagDBPlayerRecData(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('RecType', ctypes.c_ushort), + ('Time', ctypes.c_double), + ('Value1', ctypes.c_ulong), + ('Value2', ctypes.c_ulong), + ('Value3', ctypes.c_ulong), + ('Value4', ctypes.c_ulong), + ('Value5', ctypes.c_ulong), + ('Value6', ctypes.c_ulong), + ('Value7', ctypes.c_ulong), + ('Value8', ctypes.c_ulong), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.RecType = 0 + self.Time = 0.0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.UserDataLen = 0 + self.UserData = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.RecType, pos = CommFunc.ReadWORD(buf, pos) + self.Time, pos = CommFunc.ReadDouble(buf, pos) + self.Value1, pos = CommFunc.ReadDWORD(buf, pos) + self.Value2, pos = CommFunc.ReadDWORD(buf, pos) + self.Value3, pos = CommFunc.ReadDWORD(buf, pos) + self.Value4, pos = CommFunc.ReadDWORD(buf, pos) + self.Value5, pos = CommFunc.ReadDWORD(buf, pos) + self.Value6, pos = CommFunc.ReadDWORD(buf, pos) + self.Value7, pos = CommFunc.ReadDWORD(buf, pos) + self.Value8, pos = CommFunc.ReadDWORD(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteWORD(buf, self.RecType) + buf = CommFunc.WriteDouble(buf, self.Time) + buf = CommFunc.WriteDWORD(buf, self.Value1) + buf = CommFunc.WriteDWORD(buf, self.Value2) + buf = CommFunc.WriteDWORD(buf, self.Value3) + buf = CommFunc.WriteDWORD(buf, self.Value4) + buf = CommFunc.WriteDWORD(buf, self.Value5) + buf = CommFunc.WriteDWORD(buf, self.Value6) + buf = CommFunc.WriteDWORD(buf, self.Value7) + buf = CommFunc.WriteDWORD(buf, self.Value8) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_double) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + return length + + def outputString(self): + output = '''// 玩家记录表 #tagDBPlayerRecData: + PlayerID = %s, + RecType = %s, + Time = %s, + Value1 = %s, + Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + Value6 = %s, + Value7 = %s, + Value8 = %s, + UserDataLen = %s, + UserData = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.RecType, + self.Time, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, + self.UserDataLen, + self.UserData, + self.ADOResult, + ) + return output + + +# 功能队伍成员表 #tagDBPyFuncTeamMem +class tagDBPyFuncTeamMem(Structure): + _pack_ = 1 + _fields_ = [ + ('TeamID', ctypes.c_ulong), + ('PlayerID', ctypes.c_ulong), + ('Value1', ctypes.c_ulong), + ('Value2', ctypes.c_ulong), + ('Value3', ctypes.c_ulong), + ('Value4', ctypes.c_ulong), + ('Value5', 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.TeamID, pos = CommFunc.ReadDWORD(buf, pos) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.Value1, pos = CommFunc.ReadDWORD(buf, pos) + self.Value2, pos = CommFunc.ReadDWORD(buf, pos) + self.Value3, pos = CommFunc.ReadDWORD(buf, pos) + self.Value4, pos = CommFunc.ReadDWORD(buf, pos) + self.Value5, pos = CommFunc.ReadDWORD(buf, pos) + 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(tagDBPyFuncTeamMem) + + def outputString(self): + output = '''// 功能队伍成员表 #tagDBPyFuncTeamMem: + TeamID = %s, + PlayerID = %s, + Value1 = %s, + Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + ADOResult = %s, + '''%( + self.TeamID, + self.PlayerID, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.ADOResult, + ) + return output + + +# 功能队伍表 #tagDBPyFuncTeam +class tagDBPyFuncTeam(Structure): + _pack_ = 1 + _fields_ = [ + ('TeamID', ctypes.c_ulong), + ('TeamName', ctypes.c_char * 33), + ('ZoneID', ctypes.c_ubyte), + ('FuncMapID', ctypes.c_ulong), + ('FuncMapEx', ctypes.c_ulong), + ('CreateTime', ctypes.c_ulong), + ('CaptainID', ctypes.c_ulong), + ('MinLV', ctypes.c_ushort), + ('MinFightPower', ctypes.c_ulong), + ('MinFightPowerEx', ctypes.c_ulong), + ('ServerOnly', ctypes.c_ubyte), + ('NeedCheck', ctypes.c_ubyte), + ('ApplyIDLen', ctypes.c_ushort), + ('ApplyIDList', ctypes.c_char_p), + ('Value1', ctypes.c_ulong), + ('Value2', ctypes.c_ulong), + ('Value3', ctypes.c_ulong), + ('Value4', ctypes.c_ulong), + ('Value5', ctypes.c_ulong), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.TeamID = 0 + self.TeamName = '' + self.ZoneID = 0 + self.FuncMapID = 0 + self.FuncMapEx = 0 + self.CreateTime = 0 + self.CaptainID = 0 + self.MinLV = 0 + self.MinFightPower = 0 + self.MinFightPowerEx = 0 + self.ServerOnly = 0 + self.NeedCheck = 0 + self.ApplyIDLen = 0 + self.ApplyIDList = '' + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 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.TeamID, pos = CommFunc.ReadDWORD(buf, pos) + self.TeamName, pos = CommFunc.ReadString(buf, pos, 33) + self.ZoneID, pos = CommFunc.ReadBYTE(buf, pos) + self.FuncMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.FuncMapEx, pos = CommFunc.ReadDWORD(buf, pos) + self.CreateTime, pos = CommFunc.ReadDWORD(buf, pos) + self.CaptainID, pos = CommFunc.ReadDWORD(buf, pos) + self.MinLV, pos = CommFunc.ReadWORD(buf, pos) + self.MinFightPower, pos = CommFunc.ReadDWORD(buf, pos) + self.MinFightPowerEx, pos = CommFunc.ReadDWORD(buf, pos) + self.ServerOnly, pos = CommFunc.ReadBYTE(buf, pos) + self.NeedCheck, pos = CommFunc.ReadBYTE(buf, pos) + self.ApplyIDLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ApplyIDLen) + self.ApplyIDList = ctypes.c_char_p(tmp) + self.Value1, pos = CommFunc.ReadDWORD(buf, pos) + self.Value2, pos = CommFunc.ReadDWORD(buf, pos) + self.Value3, pos = CommFunc.ReadDWORD(buf, pos) + self.Value4, pos = CommFunc.ReadDWORD(buf, pos) + self.Value5, pos = CommFunc.ReadDWORD(buf, pos) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.TeamID) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.TeamName) + buf = CommFunc.WriteBYTE(buf, self.ZoneID) + buf = CommFunc.WriteDWORD(buf, self.FuncMapID) + buf = CommFunc.WriteDWORD(buf, self.FuncMapEx) + buf = CommFunc.WriteDWORD(buf, self.CreateTime) + buf = CommFunc.WriteDWORD(buf, self.CaptainID) + buf = CommFunc.WriteWORD(buf, self.MinLV) + buf = CommFunc.WriteDWORD(buf, self.MinFightPower) + buf = CommFunc.WriteDWORD(buf, self.MinFightPowerEx) + buf = CommFunc.WriteBYTE(buf, self.ServerOnly) + buf = CommFunc.WriteBYTE(buf, self.NeedCheck) + buf = CommFunc.WriteWORD(buf, self.ApplyIDLen) + buf = CommFunc.WriteString(buf, self.ApplyIDLen, self.ApplyIDList) + buf = CommFunc.WriteDWORD(buf, self.Value1) + buf = CommFunc.WriteDWORD(buf, self.Value2) + buf = CommFunc.WriteDWORD(buf, self.Value3) + buf = CommFunc.WriteDWORD(buf, self.Value4) + buf = CommFunc.WriteDWORD(buf, self.Value5) + 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_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ushort) + length += self.ApplyIDLen + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + return length + + def outputString(self): + output = '''// 功能队伍表 #tagDBPyFuncTeam: + TeamID = %s, + TeamName = %s, + ZoneID = %s, + FuncMapID = %s, + FuncMapEx = %s, + CreateTime = %s, + CaptainID = %s, + MinLV = %s, + MinFightPower = %s, + MinFightPowerEx = %s, + ServerOnly = %s, + NeedCheck = %s, + ApplyIDLen = %s, + ApplyIDList = %s, + Value1 = %s, + Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + ADOResult = %s, + '''%( + self.TeamID, + self.TeamName, + self.ZoneID, + self.FuncMapID, + self.FuncMapEx, + self.CreateTime, + self.CaptainID, + self.MinLV, + self.MinFightPower, + self.MinFightPowerEx, + self.ServerOnly, + self.NeedCheck, + self.ApplyIDLen, + self.ApplyIDList, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetTeamName(self,Str): + if len(Str)<=33: + self.TeamName = Str + else: + self.TeamName = Str[:33] + + +# 通用记录表新 #tagDBGameRec +class tagDBGameRec(Structure): + _pack_ = 1 + _fields_ = [ + ('RecType', ctypes.c_ushort), + ('RecID', ctypes.c_ulong), + ('Time', ctypes.c_double), + ('Value1', ctypes.c_ulong), + ('Value2', ctypes.c_ulong), + ('Value3', ctypes.c_ulong), + ('Value4', ctypes.c_ulong), + ('Value5', ctypes.c_ulong), + ('Value6', ctypes.c_ulong), + ('Value7', ctypes.c_ulong), + ('Value8', ctypes.c_ulong), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.RecType = 0 + self.RecID = 0 + self.Time = 0.0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.UserDataLen = 0 + self.UserData = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.RecType, pos = CommFunc.ReadWORD(buf, pos) + self.RecID, pos = CommFunc.ReadDWORD(buf, pos) + self.Time, pos = CommFunc.ReadDouble(buf, pos) + self.Value1, pos = CommFunc.ReadDWORD(buf, pos) + self.Value2, pos = CommFunc.ReadDWORD(buf, pos) + self.Value3, pos = CommFunc.ReadDWORD(buf, pos) + self.Value4, pos = CommFunc.ReadDWORD(buf, pos) + self.Value5, pos = CommFunc.ReadDWORD(buf, pos) + self.Value6, pos = CommFunc.ReadDWORD(buf, pos) + self.Value7, pos = CommFunc.ReadDWORD(buf, pos) + self.Value8, pos = CommFunc.ReadDWORD(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteWORD(buf, self.RecType) + buf = CommFunc.WriteDWORD(buf, self.RecID) + buf = CommFunc.WriteDouble(buf, self.Time) + buf = CommFunc.WriteDWORD(buf, self.Value1) + buf = CommFunc.WriteDWORD(buf, self.Value2) + buf = CommFunc.WriteDWORD(buf, self.Value3) + buf = CommFunc.WriteDWORD(buf, self.Value4) + buf = CommFunc.WriteDWORD(buf, self.Value5) + buf = CommFunc.WriteDWORD(buf, self.Value6) + buf = CommFunc.WriteDWORD(buf, self.Value7) + buf = CommFunc.WriteDWORD(buf, self.Value8) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_double) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + return length + + def outputString(self): + output = '''// 通用记录表新 #tagDBGameRec: + RecType = %s, + RecID = %s, + Time = %s, + Value1 = %s, + Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + Value6 = %s, + Value7 = %s, + Value8 = %s, + UserDataLen = %s, + UserData = %s, + ADOResult = %s, + '''%( + self.RecType, + self.RecID, + self.Time, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, + self.UserDataLen, + self.UserData, + self.ADOResult, + ) + return output + -- Gitblit v1.8.0