From 3d3a72a7c8482ec217d936c8fcee3cea07cfb785 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 06 六月 2024 11:17:47 +0800 Subject: [PATCH] 10130 【后端】福地争夺资源功能 --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 300 insertions(+), 1 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 0556db9..a04b1fa 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -2618,4 +2618,303 @@ 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 + -- Gitblit v1.8.0