From e41e926bbbd0255acde8b4b62d5558a025b83a02 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 11 六月 2025 17:18:27 +0800 Subject: [PATCH] 10263 【越南】【BT】增加后台执行命令清除本服榜单某个玩家ID数据: ClearBillboardData --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 3562 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 3,543 insertions(+), 19 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 8be9ddc..d28397e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,6 +15,2393 @@ from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at) import CommFunc +#玩家详细信息#tagDBPlayer +class tagDBPlayer(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('AccID', ctypes.c_char * 65), + ('PlayerName', ctypes.c_char * 33), + ('AccState', ctypes.c_ubyte), + ('IsDeleted', ctypes.c_ubyte), + ('GMLevel', ctypes.c_ubyte), + ('Sex', ctypes.c_int), + ('Hair', ctypes.c_int), + ('HairColor', ctypes.c_int), + ('Face', ctypes.c_int), + ('FacePic', ctypes.c_int), + ('Job', ctypes.c_int), + ('RoleType', ctypes.c_ulong), + ('ReincarnationLv', ctypes.c_ushort), + ('LV', ctypes.c_int), + ('TotalExp', ctypes.c_ulong), + ('FamilyID', ctypes.c_ulong), + ('FamilyName', ctypes.c_char * 33), + ('Country', ctypes.c_int), + ('TeamHornor', ctypes.c_ulong), + ('FamilyHornor', ctypes.c_ulong), + ('FamilyActiveValue', ctypes.c_ulong), + ('LastWeekFamilyActiveValue', ctypes.c_ulong), + ('CountryHornor', ctypes.c_ulong), + ('CountryLastWeekHornor', ctypes.c_ulong), + ('Mate', ctypes.c_ulong), + ('Gold', ctypes.c_ulong), + ('GoldPaper', ctypes.c_ulong), + ('Silver', ctypes.c_ulong), + ('SilverPaper', ctypes.c_ulong), + ('FightPoint', ctypes.c_ulong), + ('HappyPoint', ctypes.c_ulong), + ('MapID', ctypes.c_ulong), + ('DataMapID', ctypes.c_ulong), + ('CopyMapID', ctypes.c_ulong), + ('PosX', ctypes.c_ushort), + ('PosY', ctypes.c_ushort), + ('FromMapID', ctypes.c_ulong), + ('FromCopyMapID', ctypes.c_ulong), + ('FromPosX', ctypes.c_ushort), + ('FromPosY', ctypes.c_ushort), + ('State', ctypes.c_int), + ('HP', ctypes.c_ulong), + ('MP', ctypes.c_ulong), + ('XP', ctypes.c_ulong), + ('HPRestoreSetting', ctypes.c_ushort), + ('MPRestoreSetting', ctypes.c_ushort), + ('FreePoint', ctypes.c_ulong), + ('FreeSkillPoint', ctypes.c_ulong), + ('STR', ctypes.c_int), + ('PNE', ctypes.c_int), + ('PHY', ctypes.c_int), + ('CON', ctypes.c_int), + ('TotalSTR', ctypes.c_int), + ('TotalPNE', ctypes.c_int), + ('TotalPHY', ctypes.c_int), + ('TotalCON', ctypes.c_int), + ('Setting', ctypes.c_char * 100), + ('PKValue', ctypes.c_ushort), + ('FightPower', ctypes.c_ulong), + ('ActiveValue', ctypes.c_ushort), + ('PlayerType', ctypes.c_ubyte), + ('BackpackLV', ctypes.c_ubyte), + ('WarehouseLV', ctypes.c_ubyte), + ('HaveWarehousePsw', ctypes.c_ubyte), + ('WarehousePsw', ctypes.c_char * 15), + ('WarehouseLocked', ctypes.c_ubyte), + ('WarehouseGold', ctypes.c_ulong), + ('WarehouseSilver', ctypes.c_ulong), + ('TeamID', ctypes.c_ulong), + ('UseGoldType', ctypes.c_ubyte), + ('UseSilverType', ctypes.c_ubyte), + ('AttackMode', ctypes.c_ubyte), + ('RebornMapID', ctypes.c_ushort), + ('RebornPosX', ctypes.c_ushort), + ('RebornPosY', ctypes.c_ushort), + ('WeekOnlineTime', ctypes.c_ulong), + ('LastWeekOnlineTime', ctypes.c_ulong), + ('LogoffTime', ctypes.c_char * 30), + ('IsHideMask', ctypes.c_ubyte), + ('DayProcessGameEventCount', ctypes.c_ulong), + ('LoginIP', ctypes.c_char * 20), + ('LoginTime', ctypes.c_char * 30), + ('OnlineTime', ctypes.c_ulong), + ('FriendFavor', ctypes.c_ulong), + ('TeamPrivity', ctypes.c_ulong), + ('OfflineMinutes', ctypes.c_ulong), + ('Energy', ctypes.c_ulong), + ('ReceivedSalary', ctypes.c_ulong), + ('EquipShowSwitch', ctypes.c_ulong), + ('LuckValue', ctypes.c_ushort), + ('ExAttr1', ctypes.c_ulong), + ('ExAttr2', ctypes.c_ulong), + ('ExAttr3', ctypes.c_ulong), + ('ExAttr4', ctypes.c_ulong), + ('ExAttr5', ctypes.c_ulong), + ('Faction', ctypes.c_int), + ('InfamyValue', ctypes.c_ulong), + ('OfficialRank', ctypes.c_ubyte), + ('IsFindByLabel', ctypes.c_ubyte), + ('IsCloseFriendLabel', ctypes.c_ubyte), + ('ChangeCoinPointTotal', ctypes.c_ulong), + ('VIPLv', ctypes.c_ubyte), + ('VIPLvForPhone', ctypes.c_ubyte), + ('PhoneVIPStartTime', ctypes.c_double), + ('PhoneVIPEndTime', ctypes.c_double), + ('VsRoomId', ctypes.c_ulong), + ('ExAttr6', ctypes.c_ulong), + ('ExAttr7', ctypes.c_ulong), + ('ExAttr8', ctypes.c_ulong), + ('ExAttr9', ctypes.c_ulong), + ('ExAttr10', ctypes.c_ulong), + ('ModelMark', ctypes.c_ulong), + ('FromDataMapID', ctypes.c_ulong), + ('LastOrderId', ctypes.c_char * 40), + ('PrizeCoin', ctypes.c_ulong), + ('ExAttr11', ctypes.c_ulong), + ('ExAttr12', ctypes.c_ulong), + ('ExAttr13', ctypes.c_ulong), + ('ExAttr14', ctypes.c_ulong), + ('CreateRoleTime', ctypes.c_char * 30), + ('LVEx', ctypes.c_ushort), + ('LV2', ctypes.c_ushort), + ('ExpPoint', ctypes.c_ulong), + ('OperateInfo', ctypes.c_ulong), + ('Operate', ctypes.c_char * 15), + ('ServerID', ctypes.c_ulong), + ('ExAttr15', ctypes.c_ulong), + ('ExAttr16', ctypes.c_ulong), + ('ExAttr17', ctypes.c_ulong), + ('ExAttr18', ctypes.c_ulong), + ('ExAttr19', ctypes.c_ulong), + ('ExAttr20', ctypes.c_ulong), + ('HPEx', ctypes.c_ulong), + ('FightPowerEx', 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.AccID, pos = CommFunc.ReadString(buf, pos, 65) + self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33) + self.AccState, pos = CommFunc.ReadBYTE(buf, pos) + self.IsDeleted, pos = CommFunc.ReadBYTE(buf, pos) + self.GMLevel, pos = CommFunc.ReadBYTE(buf, pos) + self.Sex, pos = CommFunc.ReadDWORD(buf, pos) + self.Hair, pos = CommFunc.ReadDWORD(buf, pos) + self.HairColor, pos = CommFunc.ReadDWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) + self.Job, pos = CommFunc.ReadDWORD(buf, pos) + self.RoleType, pos = CommFunc.ReadDWORD(buf, pos) + self.ReincarnationLv, pos = CommFunc.ReadWORD(buf, pos) + self.LV, pos = CommFunc.ReadDWORD(buf, pos) + self.TotalExp, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyName, pos = CommFunc.ReadString(buf, pos, 33) + self.Country, pos = CommFunc.ReadDWORD(buf, pos) + self.TeamHornor, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyHornor, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos) + self.LastWeekFamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos) + self.CountryHornor, pos = CommFunc.ReadDWORD(buf, pos) + self.CountryLastWeekHornor, pos = CommFunc.ReadDWORD(buf, pos) + self.Mate, pos = CommFunc.ReadDWORD(buf, pos) + self.Gold, pos = CommFunc.ReadDWORD(buf, pos) + self.GoldPaper, pos = CommFunc.ReadDWORD(buf, pos) + self.Silver, pos = CommFunc.ReadDWORD(buf, pos) + self.SilverPaper, pos = CommFunc.ReadDWORD(buf, pos) + self.FightPoint, pos = CommFunc.ReadDWORD(buf, pos) + self.HappyPoint, pos = CommFunc.ReadDWORD(buf, pos) + self.MapID, pos = CommFunc.ReadDWORD(buf, pos) + self.DataMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.CopyMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.PosX, pos = CommFunc.ReadWORD(buf, pos) + self.PosY, pos = CommFunc.ReadWORD(buf, pos) + self.FromMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.FromCopyMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.FromPosX, pos = CommFunc.ReadWORD(buf, pos) + self.FromPosY, pos = CommFunc.ReadWORD(buf, pos) + self.State, pos = CommFunc.ReadDWORD(buf, pos) + self.HP, pos = CommFunc.ReadDWORD(buf, pos) + self.MP, pos = CommFunc.ReadDWORD(buf, pos) + self.XP, pos = CommFunc.ReadDWORD(buf, pos) + self.HPRestoreSetting, pos = CommFunc.ReadWORD(buf, pos) + self.MPRestoreSetting, pos = CommFunc.ReadWORD(buf, pos) + self.FreePoint, pos = CommFunc.ReadDWORD(buf, pos) + self.FreeSkillPoint, pos = CommFunc.ReadDWORD(buf, pos) + self.STR, pos = CommFunc.ReadDWORD(buf, pos) + self.PNE, pos = CommFunc.ReadDWORD(buf, pos) + self.PHY, pos = CommFunc.ReadDWORD(buf, pos) + self.CON, pos = CommFunc.ReadDWORD(buf, pos) + self.TotalSTR, pos = CommFunc.ReadDWORD(buf, pos) + self.TotalPNE, pos = CommFunc.ReadDWORD(buf, pos) + self.TotalPHY, pos = CommFunc.ReadDWORD(buf, pos) + self.TotalCON, pos = CommFunc.ReadDWORD(buf, pos) + self.Setting, pos = CommFunc.ReadString(buf, pos, 100) + self.PKValue, pos = CommFunc.ReadWORD(buf, pos) + self.FightPower, pos = CommFunc.ReadDWORD(buf, pos) + self.ActiveValue, pos = CommFunc.ReadWORD(buf, pos) + self.PlayerType, pos = CommFunc.ReadBYTE(buf, pos) + self.BackpackLV, pos = CommFunc.ReadBYTE(buf, pos) + self.WarehouseLV, pos = CommFunc.ReadBYTE(buf, pos) + self.HaveWarehousePsw, pos = CommFunc.ReadBYTE(buf, pos) + self.WarehousePsw, pos = CommFunc.ReadString(buf, pos, 15) + self.WarehouseLocked, pos = CommFunc.ReadBYTE(buf, pos) + self.WarehouseGold, pos = CommFunc.ReadDWORD(buf, pos) + self.WarehouseSilver, pos = CommFunc.ReadDWORD(buf, pos) + self.TeamID, pos = CommFunc.ReadDWORD(buf, pos) + self.UseGoldType, pos = CommFunc.ReadBYTE(buf, pos) + self.UseSilverType, pos = CommFunc.ReadBYTE(buf, pos) + self.AttackMode, pos = CommFunc.ReadBYTE(buf, pos) + self.RebornMapID, pos = CommFunc.ReadWORD(buf, pos) + self.RebornPosX, pos = CommFunc.ReadWORD(buf, pos) + self.RebornPosY, pos = CommFunc.ReadWORD(buf, pos) + self.WeekOnlineTime, pos = CommFunc.ReadDWORD(buf, pos) + self.LastWeekOnlineTime, pos = CommFunc.ReadDWORD(buf, pos) + self.LogoffTime, pos = CommFunc.ReadString(buf, pos, 30) + self.IsHideMask, pos = CommFunc.ReadBYTE(buf, pos) + self.DayProcessGameEventCount, pos = CommFunc.ReadDWORD(buf, pos) + self.LoginIP, pos = CommFunc.ReadString(buf, pos, 20) + self.LoginTime, pos = CommFunc.ReadString(buf, pos, 30) + self.OnlineTime, pos = CommFunc.ReadDWORD(buf, pos) + self.FriendFavor, pos = CommFunc.ReadDWORD(buf, pos) + self.TeamPrivity, pos = CommFunc.ReadDWORD(buf, pos) + self.OfflineMinutes, pos = CommFunc.ReadDWORD(buf, pos) + self.Energy, pos = CommFunc.ReadDWORD(buf, pos) + self.ReceivedSalary, pos = CommFunc.ReadDWORD(buf, pos) + self.EquipShowSwitch, pos = CommFunc.ReadDWORD(buf, pos) + self.LuckValue, pos = CommFunc.ReadWORD(buf, pos) + self.ExAttr1, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr2, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr3, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr4, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr5, pos = CommFunc.ReadDWORD(buf, pos) + self.Faction, pos = CommFunc.ReadDWORD(buf, pos) + self.InfamyValue, pos = CommFunc.ReadDWORD(buf, pos) + self.OfficialRank, pos = CommFunc.ReadBYTE(buf, pos) + self.IsFindByLabel, pos = CommFunc.ReadBYTE(buf, pos) + self.IsCloseFriendLabel, pos = CommFunc.ReadBYTE(buf, pos) + self.ChangeCoinPointTotal, pos = CommFunc.ReadDWORD(buf, pos) + self.VIPLv, pos = CommFunc.ReadBYTE(buf, pos) + self.VIPLvForPhone, pos = CommFunc.ReadBYTE(buf, pos) + self.PhoneVIPStartTime, pos = CommFunc.ReadDouble(buf, pos) + self.PhoneVIPEndTime, pos = CommFunc.ReadDouble(buf, pos) + self.VsRoomId, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr6, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr7, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr8, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr9, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr10, pos = CommFunc.ReadDWORD(buf, pos) + self.ModelMark, pos = CommFunc.ReadDWORD(buf, pos) + self.FromDataMapID, pos = CommFunc.ReadDWORD(buf, pos) + self.LastOrderId, pos = CommFunc.ReadString(buf, pos, 40) + self.PrizeCoin, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr11, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr12, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr13, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr14, pos = CommFunc.ReadDWORD(buf, pos) + self.CreateRoleTime, pos = CommFunc.ReadString(buf, pos, 30) + self.LVEx, pos = CommFunc.ReadWORD(buf, pos) + self.LV2, pos = CommFunc.ReadWORD(buf, pos) + self.ExpPoint, pos = CommFunc.ReadDWORD(buf, pos) + self.OperateInfo, pos = CommFunc.ReadDWORD(buf, pos) + self.Operate, pos = CommFunc.ReadString(buf, pos, 15) + self.ServerID, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr15, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr16, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr17, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr18, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr19, pos = CommFunc.ReadDWORD(buf, pos) + self.ExAttr20, pos = CommFunc.ReadDWORD(buf, pos) + self.HPEx, pos = CommFunc.ReadDWORD(buf, pos) + self.FightPowerEx, 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(tagDBPlayer) + + def outputString(self): + output = '''//玩家详细信息#tagDBPlayer: + PlayerID = %s, + AccID = %s, + PlayerName = %s, + AccState = %s, + IsDeleted = %s, + GMLevel = %s, + Sex = %s, + Hair = %s, + HairColor = %s, + Face = %s, + FacePic = %s, + Job = %s, + RoleType = %s, + ReincarnationLv = %s, + LV = %s, + TotalExp = %s, + FamilyID = %s, + FamilyName = %s, + Country = %s, + TeamHornor = %s, + FamilyHornor = %s, + FamilyActiveValue = %s, + LastWeekFamilyActiveValue = %s, + CountryHornor = %s, + CountryLastWeekHornor = %s, + Mate = %s, + Gold = %s, + GoldPaper = %s, + Silver = %s, + SilverPaper = %s, + FightPoint = %s, + HappyPoint = %s, + MapID = %s, + DataMapID = %s, + CopyMapID = %s, + PosX = %s, + PosY = %s, + FromMapID = %s, + FromCopyMapID = %s, + FromPosX = %s, + FromPosY = %s, + State = %s, + HP = %s, + MP = %s, + XP = %s, + HPRestoreSetting = %s, + MPRestoreSetting = %s, + FreePoint = %s, + FreeSkillPoint = %s, + STR = %s, + PNE = %s, + PHY = %s, + CON = %s, + TotalSTR = %s, + TotalPNE = %s, + TotalPHY = %s, + TotalCON = %s, + Setting = %s, + PKValue = %s, + FightPower = %s, + ActiveValue = %s, + PlayerType = %s, + BackpackLV = %s, + WarehouseLV = %s, + HaveWarehousePsw = %s, + WarehousePsw = %s, + WarehouseLocked = %s, + WarehouseGold = %s, + WarehouseSilver = %s, + TeamID = %s, + UseGoldType = %s, + UseSilverType = %s, + AttackMode = %s, + RebornMapID = %s, + RebornPosX = %s, + RebornPosY = %s, + WeekOnlineTime = %s, + LastWeekOnlineTime = %s, + LogoffTime = %s, + IsHideMask = %s, + DayProcessGameEventCount = %s, + LoginIP = %s, + LoginTime = %s, + OnlineTime = %s, + FriendFavor = %s, + TeamPrivity = %s, + OfflineMinutes = %s, + Energy = %s, + ReceivedSalary = %s, + EquipShowSwitch = %s, + LuckValue = %s, + ExAttr1 = %s, + ExAttr2 = %s, + ExAttr3 = %s, + ExAttr4 = %s, + ExAttr5 = %s, + Faction = %s, + InfamyValue = %s, + OfficialRank = %s, + IsFindByLabel = %s, + IsCloseFriendLabel = %s, + ChangeCoinPointTotal = %s, + VIPLv = %s, + VIPLvForPhone = %s, + PhoneVIPStartTime = %s, + PhoneVIPEndTime = %s, + VsRoomId = %s, + ExAttr6 = %s, + ExAttr7 = %s, + ExAttr8 = %s, + ExAttr9 = %s, + ExAttr10 = %s, + ModelMark = %s, + FromDataMapID = %s, + LastOrderId = %s, + PrizeCoin = %s, + ExAttr11 = %s, + ExAttr12 = %s, + ExAttr13 = %s, + ExAttr14 = %s, + CreateRoleTime = %s, + LVEx = %s, + LV2 = %s, + ExpPoint = %s, + OperateInfo = %s, + Operate = %s, + ServerID = %s, + ExAttr15 = %s, + ExAttr16 = %s, + ExAttr17 = %s, + ExAttr18 = %s, + ExAttr19 = %s, + ExAttr20 = %s, + HPEx = %s, + FightPowerEx = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.AccID, + self.PlayerName, + self.AccState, + self.IsDeleted, + self.GMLevel, + self.Sex, + self.Hair, + self.HairColor, + self.Face, + self.FacePic, + self.Job, + self.RoleType, + self.ReincarnationLv, + self.LV, + self.TotalExp, + self.FamilyID, + self.FamilyName, + self.Country, + self.TeamHornor, + self.FamilyHornor, + self.FamilyActiveValue, + self.LastWeekFamilyActiveValue, + self.CountryHornor, + self.CountryLastWeekHornor, + self.Mate, + self.Gold, + self.GoldPaper, + self.Silver, + self.SilverPaper, + self.FightPoint, + self.HappyPoint, + self.MapID, + self.DataMapID, + self.CopyMapID, + self.PosX, + self.PosY, + self.FromMapID, + self.FromCopyMapID, + self.FromPosX, + self.FromPosY, + self.State, + self.HP, + self.MP, + self.XP, + self.HPRestoreSetting, + self.MPRestoreSetting, + self.FreePoint, + self.FreeSkillPoint, + self.STR, + self.PNE, + self.PHY, + self.CON, + self.TotalSTR, + self.TotalPNE, + self.TotalPHY, + self.TotalCON, + self.Setting, + self.PKValue, + self.FightPower, + self.ActiveValue, + self.PlayerType, + self.BackpackLV, + self.WarehouseLV, + self.HaveWarehousePsw, + self.WarehousePsw, + self.WarehouseLocked, + self.WarehouseGold, + self.WarehouseSilver, + self.TeamID, + self.UseGoldType, + self.UseSilverType, + self.AttackMode, + self.RebornMapID, + self.RebornPosX, + self.RebornPosY, + self.WeekOnlineTime, + self.LastWeekOnlineTime, + self.LogoffTime, + self.IsHideMask, + self.DayProcessGameEventCount, + self.LoginIP, + self.LoginTime, + self.OnlineTime, + self.FriendFavor, + self.TeamPrivity, + self.OfflineMinutes, + self.Energy, + self.ReceivedSalary, + self.EquipShowSwitch, + self.LuckValue, + self.ExAttr1, + self.ExAttr2, + self.ExAttr3, + self.ExAttr4, + self.ExAttr5, + self.Faction, + self.InfamyValue, + self.OfficialRank, + self.IsFindByLabel, + self.IsCloseFriendLabel, + self.ChangeCoinPointTotal, + self.VIPLv, + self.VIPLvForPhone, + self.PhoneVIPStartTime, + self.PhoneVIPEndTime, + self.VsRoomId, + self.ExAttr6, + self.ExAttr7, + self.ExAttr8, + self.ExAttr9, + self.ExAttr10, + self.ModelMark, + self.FromDataMapID, + self.LastOrderId, + self.PrizeCoin, + self.ExAttr11, + self.ExAttr12, + self.ExAttr13, + self.ExAttr14, + self.CreateRoleTime, + self.LVEx, + self.LV2, + self.ExpPoint, + self.OperateInfo, + self.Operate, + self.ServerID, + self.ExAttr15, + self.ExAttr16, + self.ExAttr17, + self.ExAttr18, + self.ExAttr19, + self.ExAttr20, + self.HPEx, + self.FightPowerEx, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetAccID(self,Str): + if len(Str)<=65: + self.AccID = Str + else: + self.AccID = Str[:65] + + def SetPlayerName(self,Str): + if len(Str)<=33: + self.PlayerName = Str + else: + self.PlayerName = Str[:33] + + def SetFamilyName(self,Str): + if len(Str)<=33: + self.FamilyName = Str + else: + self.FamilyName = Str[:33] + + def SetSetting(self,Str): + if len(Str)<=100: + self.Setting = Str + else: + self.Setting = Str[:100] + + def SetWarehousePsw(self,Str): + if len(Str)<=15: + self.WarehousePsw = Str + else: + self.WarehousePsw = Str[:15] + + def SetLogoffTime(self,Str): + if len(Str)<=30: + self.LogoffTime = Str + else: + self.LogoffTime = Str[:30] + + def SetLoginIP(self,Str): + if len(Str)<=20: + self.LoginIP = Str + else: + self.LoginIP = Str[:20] + + def SetLoginTime(self,Str): + if len(Str)<=30: + self.LoginTime = Str + else: + self.LoginTime = Str[:30] + + def SetLastOrderId(self,Str): + if len(Str)<=40: + self.LastOrderId = Str + else: + self.LastOrderId = Str[:40] + + def SetCreateRoleTime(self,Str): + if len(Str)<=30: + self.CreateRoleTime = Str + else: + self.CreateRoleTime = Str[:30] + + def SetOperate(self,Str): + if len(Str)<=15: + self.Operate = Str + else: + self.Operate = Str[:15] + + +# 跨服补偿个人领取表 #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_ulong), + ('GroupValue2', ctypes.c_ulong), + ('BillboardType', ctypes.c_ubyte), + ('ID', ctypes.c_ulong), + ('ID2', ctypes.c_ulong), + ('Name1', ctypes.c_char * 33), + ('Name2', ctypes.c_char * 65), + ('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), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + 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: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.GroupValue1, pos = CommFunc.ReadDWORD(buf, pos) + self.GroupValue2, pos = CommFunc.ReadDWORD(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, 65) + 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 = '' + buf = CommFunc.WriteDWORD(buf, self.GroupValue1) + buf = CommFunc.WriteDWORD(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) * 65, 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): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + 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) * 65 + 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: + GroupValue1 = %s, + GroupValue2 = %s, + BillboardType = %s, + ID = %s, + ID2 = %s, + Name1 = %s, + Name2 = %s, + 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, + self.GroupValue2, + self.BillboardType, + self.ID, + self.ID2, + self.Name1, + self.Name2, + 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 + + #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)<=65: + self.Name2 = Str + else: + self.Name2 = Str[:65] + + + + +# 协助感谢表 #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), + ('Face', ctypes.c_ulong), + ('FacePic', 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) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, 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, + Face = %s, + FacePic = %s, + ADOResult = %s, + '''%( + self.ZoneID, + self.SeasonID, + self.PlayerID, + self.PlayerName, + self.Job, + self.FightPower, + self.RealmLV, + self.PKScore, + self.DanLV, + self.Time, + self.Face, + self.FacePic, + 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 @@ -150,14 +2537,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() @@ -182,7 +2570,6 @@ self.ADOResult, ) return output - #Boss关注记录表#tagDBPyBossAttention @@ -245,7 +2632,6 @@ return output - #交易所物品最近成交单价表#tagDBPyBourseItemLastPrice class tagDBPyBourseItemLastPrice(Structure): _pack_ = 1 @@ -263,14 +2649,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() @@ -456,7 +2842,6 @@ ) return output - #玩家黑名单 #tagDBPyPlayerBlack class tagDBPyPlayerBlack(Structure): _pack_ = 1 @@ -474,14 +2859,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() @@ -523,14 +2908,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() @@ -573,14 +2959,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() @@ -604,6 +2990,7 @@ ) return output + #玩家仇人表#tagPlayerEnemy class tagPlayerEnemy(Structure): _pack_ = 1 @@ -622,14 +3009,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() @@ -656,7 +3044,6 @@ return output - #个人社交总表 #tagPersonalSocial class tagPersonalSocial(Structure): _pack_ = 1 @@ -668,6 +3055,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), ] @@ -679,14 +3068,21 @@ 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) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -707,6 +3103,8 @@ RealmLV = %s, OnlineType = %s, RefCount = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.PlayerID, @@ -716,6 +3114,8 @@ self.RealmLV, self.OnlineType, self.RefCount, + self.Face, + self.FacePic, self.ADOResult, ) return output @@ -726,6 +3126,1130 @@ 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 + + +# 福地矿物表 #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 + + +# 玩家数据打包表 #tagDBPlayerPackData +class tagDBPlayerPackData(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('UpdTime', ctypes.c_ulong), + ('PackDataSize', ctypes.c_ulong), + ('PackData', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.UpdTime = 0 + self.PackDataSize = 0 + self.PackData = '' + + 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.UpdTime, pos = CommFunc.ReadDWORD(buf, pos) + self.PackDataSize, pos = CommFunc.ReadDWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.PackDataSize) + self.PackData = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.UpdTime) + buf = CommFunc.WriteDWORD(buf, self.PackDataSize) + buf = CommFunc.WriteString(buf, self.PackDataSize, self.PackData) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += self.PackDataSize + return length + + def outputString(self): + output = '''// 玩家数据打包表 #tagDBPlayerPackData: + PlayerID = %s, + UpdTime = %s, + PackDataSize = %s, + PackData = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.UpdTime, + self.PackDataSize, + self.PackData, + self.ADOResult, + ) + return output + -- Gitblit v1.8.0