From 2b3d5e31bafd7a9cd4b4738e38186ffed4cee5f6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 12 十一月 2019 16:58:20 +0800 Subject: [PATCH] 1111 装备评分公式增加参数(FinalHurt、FinalHurtReduce) --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 1024 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,005 insertions(+), 19 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 8be9ddc..383f78c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,6 +15,988 @@ from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at) import CommFunc +# 玩家数据查看缓存表Py #tagPlayerViewCachePy +class tagPlayerViewCachePy(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('GeTuiIDSize', ctypes.c_ubyte), + ('GeTuiID', ctypes.c_char_p), + ('LV', ctypes.c_ushort), + ('OffTime', ctypes.c_ulong), + ('PropDataSize', ctypes.c_ushort), + ('PropData', ctypes.c_char_p), + ('PlusDataSize', ctypes.c_ushort), + ('PlusData', ctypes.c_char_p), + ('ItemDataSize1', ctypes.c_ushort), + ('ItemData1', ctypes.c_char_p), + ('ItemDataSize2', ctypes.c_ushort), + ('ItemData2', ctypes.c_char_p), + ('ItemDataSize3', ctypes.c_ushort), + ('ItemData3', ctypes.c_char_p), + ('ItemDataSize4', ctypes.c_ushort), + ('ItemData4', ctypes.c_char_p), + ('ItemDataSize5', ctypes.c_ushort), + ('ItemData5', ctypes.c_char_p), + ('ItemDataSize6', ctypes.c_ushort), + ('ItemData6', ctypes.c_char_p), + ('ItemDataSize7', ctypes.c_ushort), + ('ItemData7', ctypes.c_char_p), + ('ItemDataSize8', ctypes.c_ushort), + ('ItemData8', ctypes.c_char_p), + ('ItemDataSize9', ctypes.c_ushort), + ('ItemData9', ctypes.c_char_p), + ('ItemDataSize10', ctypes.c_ushort), + ('ItemData10', ctypes.c_char_p), + ('ItemDataSize11', ctypes.c_ushort), + ('ItemData11', ctypes.c_char_p), + ('ItemDataSize12', ctypes.c_ushort), + ('ItemData12', ctypes.c_char_p), + ('ItemDataSize13', ctypes.c_ushort), + ('ItemData13', ctypes.c_char_p), + ('ItemDataSize14', ctypes.c_ushort), + ('ItemData14', ctypes.c_char_p), + ('ItemDataSize15', ctypes.c_ushort), + ('ItemData15', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.GeTuiIDSize = 0 + self.GeTuiID = '' + self.LV = 0 + self.OffTime = 0 + self.PropDataSize = 0 + self.PropData = '' + self.PlusDataSize = 0 + self.PlusData = '' + self.ItemDataSize1 = 0 + self.ItemData1 = '' + self.ItemDataSize2 = 0 + self.ItemData2 = '' + self.ItemDataSize3 = 0 + self.ItemData3 = '' + self.ItemDataSize4 = 0 + self.ItemData4 = '' + self.ItemDataSize5 = 0 + self.ItemData5 = '' + self.ItemDataSize6 = 0 + self.ItemData6 = '' + self.ItemDataSize7 = 0 + self.ItemData7 = '' + self.ItemDataSize8 = 0 + self.ItemData8 = '' + self.ItemDataSize9 = 0 + self.ItemData9 = '' + self.ItemDataSize10 = 0 + self.ItemData10 = '' + self.ItemDataSize11 = 0 + self.ItemData11 = '' + self.ItemDataSize12 = 0 + self.ItemData12 = '' + self.ItemDataSize13 = 0 + self.ItemData13 = '' + self.ItemDataSize14 = 0 + self.ItemData14 = '' + self.ItemDataSize15 = 0 + self.ItemData15 = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.GeTuiIDSize, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.GeTuiIDSize) + self.GeTuiID = ctypes.c_char_p(tmp) + self.LV, pos = CommFunc.ReadWORD(buf, pos) + self.OffTime, pos = CommFunc.ReadDWORD(buf, pos) + self.PropDataSize, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.PropDataSize) + self.PropData = ctypes.c_char_p(tmp) + self.PlusDataSize, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.PlusDataSize) + self.PlusData = ctypes.c_char_p(tmp) + self.ItemDataSize1, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize1) + self.ItemData1 = ctypes.c_char_p(tmp) + self.ItemDataSize2, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize2) + self.ItemData2 = ctypes.c_char_p(tmp) + self.ItemDataSize3, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize3) + self.ItemData3 = ctypes.c_char_p(tmp) + self.ItemDataSize4, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize4) + self.ItemData4 = ctypes.c_char_p(tmp) + self.ItemDataSize5, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize5) + self.ItemData5 = ctypes.c_char_p(tmp) + self.ItemDataSize6, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize6) + self.ItemData6 = ctypes.c_char_p(tmp) + self.ItemDataSize7, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize7) + self.ItemData7 = ctypes.c_char_p(tmp) + self.ItemDataSize8, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize8) + self.ItemData8 = ctypes.c_char_p(tmp) + self.ItemDataSize9, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize9) + self.ItemData9 = ctypes.c_char_p(tmp) + self.ItemDataSize10, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize10) + self.ItemData10 = ctypes.c_char_p(tmp) + self.ItemDataSize11, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize11) + self.ItemData11 = ctypes.c_char_p(tmp) + self.ItemDataSize12, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize12) + self.ItemData12 = ctypes.c_char_p(tmp) + self.ItemDataSize13, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize13) + self.ItemData13 = ctypes.c_char_p(tmp) + self.ItemDataSize14, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize14) + self.ItemData14 = ctypes.c_char_p(tmp) + self.ItemDataSize15, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize15) + self.ItemData15 = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteBYTE(buf, self.GeTuiIDSize) + buf = CommFunc.WriteString(buf, self.GeTuiIDSize, self.GeTuiID) + buf = CommFunc.WriteWORD(buf, self.LV) + buf = CommFunc.WriteDWORD(buf, self.OffTime) + buf = CommFunc.WriteWORD(buf, self.PropDataSize) + buf = CommFunc.WriteString(buf, self.PropDataSize, self.PropData) + buf = CommFunc.WriteWORD(buf, self.PlusDataSize) + buf = CommFunc.WriteString(buf, self.PlusDataSize, self.PlusData) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize1) + buf = CommFunc.WriteString(buf, self.ItemDataSize1, self.ItemData1) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize2) + buf = CommFunc.WriteString(buf, self.ItemDataSize2, self.ItemData2) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize3) + buf = CommFunc.WriteString(buf, self.ItemDataSize3, self.ItemData3) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize4) + buf = CommFunc.WriteString(buf, self.ItemDataSize4, self.ItemData4) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize5) + buf = CommFunc.WriteString(buf, self.ItemDataSize5, self.ItemData5) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize6) + buf = CommFunc.WriteString(buf, self.ItemDataSize6, self.ItemData6) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize7) + buf = CommFunc.WriteString(buf, self.ItemDataSize7, self.ItemData7) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize8) + buf = CommFunc.WriteString(buf, self.ItemDataSize8, self.ItemData8) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize9) + buf = CommFunc.WriteString(buf, self.ItemDataSize9, self.ItemData9) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize10) + buf = CommFunc.WriteString(buf, self.ItemDataSize10, self.ItemData10) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize11) + buf = CommFunc.WriteString(buf, self.ItemDataSize11, self.ItemData11) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize12) + buf = CommFunc.WriteString(buf, self.ItemDataSize12, self.ItemData12) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize13) + buf = CommFunc.WriteString(buf, self.ItemDataSize13, self.ItemData13) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize14) + buf = CommFunc.WriteString(buf, self.ItemDataSize14, self.ItemData14) + buf = CommFunc.WriteWORD(buf, self.ItemDataSize15) + buf = CommFunc.WriteString(buf, self.ItemDataSize15, self.ItemData15) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += self.GeTuiIDSize + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += self.PropDataSize + length += sizeof(ctypes.c_ushort) + length += self.PlusDataSize + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize1 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize2 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize3 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize4 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize5 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize6 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize7 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize8 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize9 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize10 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize11 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize12 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize13 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize14 + length += sizeof(ctypes.c_ushort) + length += self.ItemDataSize15 + return length + + def outputString(self): + output = '''// 玩家数据查看缓存表Py #tagPlayerViewCachePy: + PlayerID = %s, + GeTuiIDSize = %s, + GeTuiID = %s, + LV = %s, + OffTime = %s, + PropDataSize = %s, + PropData = %s, + PlusDataSize = %s, + PlusData = %s, + ItemDataSize1 = %s, + ItemData1 = %s, + ItemDataSize2 = %s, + ItemData2 = %s, + ItemDataSize3 = %s, + ItemData3 = %s, + ItemDataSize4 = %s, + ItemData4 = %s, + ItemDataSize5 = %s, + ItemData5 = %s, + ItemDataSize6 = %s, + ItemData6 = %s, + ItemDataSize7 = %s, + ItemData7 = %s, + ItemDataSize8 = %s, + ItemData8 = %s, + ItemDataSize9 = %s, + ItemData9 = %s, + ItemDataSize10 = %s, + ItemData10 = %s, + ItemDataSize11 = %s, + ItemData11 = %s, + ItemDataSize12 = %s, + ItemData12 = %s, + ItemDataSize13 = %s, + ItemData13 = %s, + ItemDataSize14 = %s, + ItemData14 = %s, + ItemDataSize15 = %s, + ItemData15 = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.GeTuiIDSize, + self.GeTuiID, + self.LV, + self.OffTime, + self.PropDataSize, + self.PropData, + self.PlusDataSize, + self.PlusData, + self.ItemDataSize1, + self.ItemData1, + self.ItemDataSize2, + self.ItemData2, + self.ItemDataSize3, + self.ItemData3, + self.ItemDataSize4, + self.ItemData4, + self.ItemDataSize5, + self.ItemData5, + self.ItemDataSize6, + self.ItemData6, + self.ItemDataSize7, + self.ItemData7, + self.ItemDataSize8, + self.ItemData8, + self.ItemDataSize9, + self.ItemData9, + self.ItemDataSize10, + self.ItemData10, + self.ItemDataSize11, + self.ItemData11, + self.ItemDataSize12, + self.ItemData12, + self.ItemDataSize13, + self.ItemData13, + self.ItemDataSize14, + self.ItemData14, + self.ItemDataSize15, + self.ItemData15, + self.ADOResult, + ) + return output + + +# 拍卖关注表 #tagDBAuctionAttention +class tagDBAuctionAttention(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('AttentionLen', ctypes.c_ubyte), + ('AttentionInfo', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.AttentionLen = 0 + self.AttentionInfo = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.AttentionLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.AttentionLen) + self.AttentionInfo = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteBYTE(buf, self.AttentionLen) + buf = CommFunc.WriteString(buf, self.AttentionLen, self.AttentionInfo) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += self.AttentionLen + return length + + def outputString(self): + output = '''// 拍卖关注表 #tagDBAuctionAttention: + PlayerID = %s, + AttentionLen = %s, + AttentionInfo = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.AttentionLen, + self.AttentionInfo, + self.ADOResult, + ) + return output + + +# 拍卖记录表 #tagDBAuctionRecord +class tagDBAuctionRecord(Structure): + _pack_ = 1 + _fields_ = [ + ('ItemGUID', ctypes.c_char * 40), + ('PlayerID', ctypes.c_ulong), + ('FamilyID', ctypes.c_ulong), + ('RecordType', ctypes.c_ubyte), + ('RecordResult', ctypes.c_ubyte), + ('RecordTime', ctypes.c_char * 19), + ('BidderPrice', ctypes.c_ulong), + ('BidderName', ctypes.c_char * 33), + ('ItemID', ctypes.c_ulong), + ('Count', ctypes.c_ushort), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.ItemGUID = '' + self.PlayerID = 0 + self.FamilyID = 0 + self.RecordType = 0 + self.RecordResult = 0 + self.RecordTime = '' + self.BidderPrice = 0 + self.BidderName = '' + self.ItemID = 0 + self.Count = 0 + self.UserDataLen = 0 + self.UserData = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.ItemGUID, pos = CommFunc.ReadString(buf, pos, 40) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) + self.RecordType, pos = CommFunc.ReadBYTE(buf, pos) + self.RecordResult, pos = CommFunc.ReadBYTE(buf, pos) + self.RecordTime, pos = CommFunc.ReadString(buf, pos, 19) + self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.BidderName, pos = CommFunc.ReadString(buf, pos, 33) + self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) + self.Count, pos = CommFunc.ReadWORD(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.ItemGUID) + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.FamilyID) + buf = CommFunc.WriteBYTE(buf, self.RecordType) + buf = CommFunc.WriteBYTE(buf, self.RecordResult) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.RecordTime) + buf = CommFunc.WriteDWORD(buf, self.BidderPrice) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName) + buf = CommFunc.WriteDWORD(buf, self.ItemID) + buf = CommFunc.WriteWORD(buf, self.Count) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_char) * 40 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_char) * 33 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + return length + + def outputString(self): + output = '''// 拍卖记录表 #tagDBAuctionRecord: + ItemGUID = %s, + PlayerID = %s, + FamilyID = %s, + RecordType = %s, + RecordResult = %s, + RecordTime = %s, + BidderPrice = %s, + BidderName = %s, + ItemID = %s, + Count = %s, + UserDataLen = %s, + UserData = %s, + ADOResult = %s, + '''%( + self.ItemGUID, + self.PlayerID, + self.FamilyID, + self.RecordType, + self.RecordResult, + self.RecordTime, + self.BidderPrice, + self.BidderName, + self.ItemID, + self.Count, + self.UserDataLen, + self.UserData, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetItemGUID(self,Str): + if len(Str)<=40: + self.ItemGUID = Str + else: + self.ItemGUID = Str[:40] + + def SetRecordTime(self,Str): + if len(Str)<=19: + self.RecordTime = Str + else: + self.RecordTime = Str[:19] + + def SetBidderName(self,Str): + if len(Str)<=33: + self.BidderName = Str + else: + self.BidderName = Str[:33] + + +# 拍卖物品表 #tagDBAuctionItem +class tagDBAuctionItem(Structure): + _pack_ = 1 + _fields_ = [ + ('ItemGUID', ctypes.c_char * 40), + ('PlayerID', ctypes.c_ulong), + ('FamilyID', ctypes.c_ulong), + ('ItemID', ctypes.c_ulong), + ('Count', ctypes.c_ushort), + ('AuctionType', ctypes.c_ubyte), + ('AddTime', ctypes.c_char * 19), + ('BiddingTime', ctypes.c_char * 19), + ('BidderID', ctypes.c_ulong), + ('BidderName', ctypes.c_char * 33), + ('BidderPrice', ctypes.c_ulong), + ('ItemType', ctypes.c_ubyte), + ('ItemJobLimit', ctypes.c_ubyte), + ('ItemClassLV', ctypes.c_ubyte), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('FamilyPlayerIDLen', ctypes.c_ushort), + ('FamilyPlayerIDInfo', ctypes.c_char_p), + ('BidderIDLen', ctypes.c_ubyte), + ('BidderIDInfo', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.ItemGUID = '' + self.PlayerID = 0 + self.FamilyID = 0 + self.ItemID = 0 + self.Count = 0 + self.AuctionType = 0 + self.AddTime = '' + self.BiddingTime = '' + self.BidderID = 0 + self.BidderName = '' + self.BidderPrice = 0 + self.ItemType = 0 + self.ItemJobLimit = 0 + self.ItemClassLV = 0 + self.UserDataLen = 0 + self.UserData = '' + self.FamilyPlayerIDLen = 0 + self.FamilyPlayerIDInfo = '' + self.BidderIDLen = 0 + self.BidderIDInfo = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.ItemGUID, pos = CommFunc.ReadString(buf, pos, 40) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) + self.Count, pos = CommFunc.ReadWORD(buf, pos) + self.AuctionType, pos = CommFunc.ReadBYTE(buf, pos) + self.AddTime, pos = CommFunc.ReadString(buf, pos, 19) + self.BiddingTime, pos = CommFunc.ReadString(buf, pos, 19) + self.BidderID, pos = CommFunc.ReadDWORD(buf, pos) + self.BidderName, pos = CommFunc.ReadString(buf, pos, 33) + self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemType, pos = CommFunc.ReadBYTE(buf, pos) + self.ItemJobLimit, pos = CommFunc.ReadBYTE(buf, pos) + self.ItemClassLV, pos = CommFunc.ReadBYTE(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + self.FamilyPlayerIDLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.FamilyPlayerIDLen) + self.FamilyPlayerIDInfo = ctypes.c_char_p(tmp) + self.BidderIDLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.BidderIDLen) + self.BidderIDInfo = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.ItemGUID) + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.FamilyID) + buf = CommFunc.WriteDWORD(buf, self.ItemID) + buf = CommFunc.WriteWORD(buf, self.Count) + buf = CommFunc.WriteBYTE(buf, self.AuctionType) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.AddTime) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.BiddingTime) + buf = CommFunc.WriteDWORD(buf, self.BidderID) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName) + buf = CommFunc.WriteDWORD(buf, self.BidderPrice) + buf = CommFunc.WriteBYTE(buf, self.ItemType) + buf = CommFunc.WriteBYTE(buf, self.ItemJobLimit) + buf = CommFunc.WriteBYTE(buf, self.ItemClassLV) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + buf = CommFunc.WriteWORD(buf, self.FamilyPlayerIDLen) + buf = CommFunc.WriteString(buf, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo) + buf = CommFunc.WriteBYTE(buf, self.BidderIDLen) + buf = CommFunc.WriteString(buf, self.BidderIDLen, self.BidderIDInfo) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_char) * 40 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_char) * 33 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + length += sizeof(ctypes.c_ushort) + length += self.FamilyPlayerIDLen + length += sizeof(ctypes.c_ubyte) + length += self.BidderIDLen + return length + + def outputString(self): + output = '''// 拍卖物品表 #tagDBAuctionItem: + ItemGUID = %s, + PlayerID = %s, + FamilyID = %s, + ItemID = %s, + Count = %s, + AuctionType = %s, + AddTime = %s, + BiddingTime = %s, + BidderID = %s, + BidderName = %s, + BidderPrice = %s, + ItemType = %s, + ItemJobLimit = %s, + ItemClassLV = %s, + UserDataLen = %s, + UserData = %s, + FamilyPlayerIDLen = %s, + FamilyPlayerIDInfo = %s, + BidderIDLen = %s, + BidderIDInfo = %s, + ADOResult = %s, + '''%( + self.ItemGUID, + self.PlayerID, + self.FamilyID, + self.ItemID, + self.Count, + self.AuctionType, + self.AddTime, + self.BiddingTime, + self.BidderID, + self.BidderName, + self.BidderPrice, + self.ItemType, + self.ItemJobLimit, + self.ItemClassLV, + self.UserDataLen, + self.UserData, + self.FamilyPlayerIDLen, + self.FamilyPlayerIDInfo, + self.BidderIDLen, + self.BidderIDInfo, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetItemGUID(self,Str): + if len(Str)<=40: + self.ItemGUID = Str + else: + self.ItemGUID = Str[:40] + + def SetAddTime(self,Str): + if len(Str)<=19: + self.AddTime = Str + else: + self.AddTime = Str[:19] + + def SetBiddingTime(self,Str): + if len(Str)<=19: + self.BiddingTime = Str + else: + self.BiddingTime = Str[:19] + + def SetBidderName(self,Str): + if len(Str)<=33: + self.BidderName = Str + else: + self.BidderName = Str[:33] + + +# 跨服竞技场未通知玩家的比赛结果表 #tagDBCrossPKUnNotifyOverInfo +class tagDBCrossPKUnNotifyOverInfo(Structure): + _pack_ = 1 + _fields_ = [ + ('ZoneID', ctypes.c_ubyte), + ('SeasonID', ctypes.c_ubyte), + ('RoomID', ctypes.c_ushort), + ('TimeStr', ctypes.c_char * 19), + ('OverType', ctypes.c_ubyte), + ('PlayerID', ctypes.c_ulong), + ('WinnerID', ctypes.c_ulong), + ('RoundWinnerLen', ctypes.c_ubyte), + ('RoundWinnerInfo', ctypes.c_char_p), + ('PKScore', ctypes.c_ulong), + ('DanLV', ctypes.c_ubyte), + ('CWinCount', ctypes.c_ushort), + ('AddScore', ctypes.c_ushort), + ('TagPlayerID', ctypes.c_ulong), + ('TagPlayerName', ctypes.c_char * 33), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.ZoneID = 0 + self.SeasonID = 0 + self.RoomID = 0 + self.TimeStr = '' + self.OverType = 0 + self.PlayerID = 0 + self.WinnerID = 0 + self.RoundWinnerLen = 0 + self.RoundWinnerInfo = '' + self.PKScore = 0 + self.DanLV = 0 + self.CWinCount = 0 + self.AddScore = 0 + self.TagPlayerID = 0 + self.TagPlayerName = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.ZoneID, pos = CommFunc.ReadBYTE(buf, pos) + self.SeasonID, pos = CommFunc.ReadBYTE(buf, pos) + self.RoomID, pos = CommFunc.ReadWORD(buf, pos) + self.TimeStr, pos = CommFunc.ReadString(buf, pos, 19) + self.OverType, pos = CommFunc.ReadBYTE(buf, pos) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.WinnerID, pos = CommFunc.ReadDWORD(buf, pos) + self.RoundWinnerLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.RoundWinnerLen) + self.RoundWinnerInfo = ctypes.c_char_p(tmp) + self.PKScore, pos = CommFunc.ReadDWORD(buf, pos) + self.DanLV, pos = CommFunc.ReadBYTE(buf, pos) + self.CWinCount, pos = CommFunc.ReadWORD(buf, pos) + self.AddScore, pos = CommFunc.ReadWORD(buf, pos) + self.TagPlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TagPlayerName, pos = CommFunc.ReadString(buf, pos, 33) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteBYTE(buf, self.ZoneID) + buf = CommFunc.WriteBYTE(buf, self.SeasonID) + buf = CommFunc.WriteWORD(buf, self.RoomID) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.TimeStr) + buf = CommFunc.WriteBYTE(buf, self.OverType) + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.WinnerID) + buf = CommFunc.WriteBYTE(buf, self.RoundWinnerLen) + buf = CommFunc.WriteString(buf, self.RoundWinnerLen, self.RoundWinnerInfo) + buf = CommFunc.WriteDWORD(buf, self.PKScore) + buf = CommFunc.WriteBYTE(buf, self.DanLV) + buf = CommFunc.WriteWORD(buf, self.CWinCount) + buf = CommFunc.WriteWORD(buf, self.AddScore) + buf = CommFunc.WriteDWORD(buf, self.TagPlayerID) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.TagPlayerName) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += self.RoundWinnerLen + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_char) * 33 + return length + + def outputString(self): + output = '''// 跨服竞技场未通知玩家的比赛结果表 #tagDBCrossPKUnNotifyOverInfo: + ZoneID = %s, + SeasonID = %s, + RoomID = %s, + TimeStr = %s, + OverType = %s, + PlayerID = %s, + WinnerID = %s, + RoundWinnerLen = %s, + RoundWinnerInfo = %s, + PKScore = %s, + DanLV = %s, + CWinCount = %s, + AddScore = %s, + TagPlayerID = %s, + TagPlayerName = %s, + ADOResult = %s, + '''%( + self.ZoneID, + self.SeasonID, + self.RoomID, + self.TimeStr, + self.OverType, + self.PlayerID, + self.WinnerID, + self.RoundWinnerLen, + self.RoundWinnerInfo, + self.PKScore, + self.DanLV, + self.CWinCount, + self.AddScore, + self.TagPlayerID, + self.TagPlayerName, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetTimeStr(self,Str): + if len(Str)<=19: + self.TimeStr = Str + else: + self.TimeStr = Str[:19] + + def SetTagPlayerName(self,Str): + if len(Str)<=33: + self.TagPlayerName = Str + else: + self.TagPlayerName = Str[:33] + + +# 跨服竞技场PK排行榜 #tagDBCrossPKBillboard +class tagDBCrossPKBillboard(Structure): + _pack_ = 1 + _fields_ = [ + ('ZoneID', ctypes.c_ubyte), + ('SeasonID', ctypes.c_ubyte), + ('PlayerID', ctypes.c_ulong), + ('PlayerName', ctypes.c_char * 33), + ('Job', ctypes.c_ubyte), + ('FightPower', ctypes.c_ulong), + ('RealmLV', ctypes.c_ushort), + ('PKScore', ctypes.c_ulong), + ('DanLV', ctypes.c_ubyte), + ('Time', ctypes.c_ulong), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + + def clear(self): + memset(addressof(self), 0, self.getLength()) + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.ZoneID, pos = CommFunc.ReadBYTE(buf, pos) + self.SeasonID, pos = CommFunc.ReadBYTE(buf, pos) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33) + self.Job, pos = CommFunc.ReadBYTE(buf, pos) + self.FightPower, pos = CommFunc.ReadDWORD(buf, pos) + self.RealmLV, pos = CommFunc.ReadWORD(buf, pos) + self.PKScore, pos = CommFunc.ReadDWORD(buf, pos) + self.DanLV, pos = CommFunc.ReadBYTE(buf, pos) + self.Time, pos = CommFunc.ReadDWORD(buf, pos) + return self.getLength() + + + def getBuffer(self): + buf = create_string_buffer(self.getLength()) + memmove(addressof(buf), addressof(self), self.getLength()) + return string_at(addressof(buf), self.getLength()) + + def getLength(self): + return sizeof(tagDBCrossPKBillboard) + + def outputString(self): + output = '''// 跨服竞技场PK排行榜 #tagDBCrossPKBillboard: + ZoneID = %s, + SeasonID = %s, + PlayerID = %s, + PlayerName = %s, + Job = %s, + FightPower = %s, + RealmLV = %s, + PKScore = %s, + DanLV = %s, + Time = %s, + ADOResult = %s, + '''%( + self.ZoneID, + self.SeasonID, + self.PlayerID, + self.PlayerName, + self.Job, + self.FightPower, + self.RealmLV, + self.PKScore, + self.DanLV, + self.Time, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetPlayerName(self,Str): + if len(Str)<=33: + self.PlayerName = Str + else: + self.PlayerName = Str[:33] + + #仙魔之争记录表#tagDBPyXMZZ class tagDBPyXMZZ(Structure): _pack_ = 1 @@ -150,14 +1132,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 +1165,6 @@ self.ADOResult, ) return output - #Boss关注记录表#tagDBPyBossAttention @@ -245,7 +1227,6 @@ return output - #交易所物品最近成交单价表#tagDBPyBourseItemLastPrice class tagDBPyBourseItemLastPrice(Structure): _pack_ = 1 @@ -263,14 +1244,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 +1437,6 @@ ) return output - #玩家黑名单 #tagDBPyPlayerBlack class tagDBPyPlayerBlack(Structure): _pack_ = 1 @@ -474,14 +1454,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 +1503,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 +1554,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 +1585,7 @@ ) return output + #玩家仇人表#tagPlayerEnemy class tagPlayerEnemy(Structure): _pack_ = 1 @@ -622,14 +1604,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 +1639,6 @@ return output - #个人社交总表 #tagPersonalSocial class tagPersonalSocial(Structure): _pack_ = 1 @@ -679,14 +1661,19 @@ def clear(self): memset(addressof(self), 0, self.getLength()) - def readData(self, buf, pos = 0, length = 0): if not pos <= length: return -1 if len(buf) < pos + self.getLength(): return -1 self.clear() - memmove(addressof(self), buf[pos:], self.getLength()) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33) + self.Job, pos = CommFunc.ReadBYTE(buf, pos) + self.LV, pos = CommFunc.ReadWORD(buf, pos) + self.RealmLV, pos = CommFunc.ReadWORD(buf, pos) + self.OnlineType, pos = CommFunc.ReadBYTE(buf, pos) + self.RefCount, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -727,5 +1714,4 @@ else: self.PlayerName = Str[:33] - -- Gitblit v1.8.0