From b1e0ad47775be0a4eb065824d4cd1855f1a51b48 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期四, 15 五月 2025 22:23:22 +0800 Subject: [PATCH] 0312 同步遗漏更新导致的问题,暂未同步以下内容 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Collections/DataServerPlayerData.py | 1547 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,496 insertions(+), 51 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Collections/DataServerPlayerData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Collections/DataServerPlayerData.py index fcb6906..5ada8ed 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Collections/DataServerPlayerData.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Collections/DataServerPlayerData.py @@ -26,6 +26,7 @@ import inspect DBConfig = __import__('Config.DBConfig') +#------------------------------------------------------ #玩家详细信息#tagDBPlayer class tagDBPlayer(Structure): _pack_ = 1 @@ -42,6 +43,7 @@ ('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), @@ -198,6 +200,7 @@ 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) @@ -350,6 +353,7 @@ rec[u'Face'] = self.Face rec[u'FacePic'] = self.FacePic rec[u'Job'] = self.Job + rec[u'RoleType'] = self.RoleType rec[u'ReincarnationLv'] = self.ReincarnationLv rec[u'LV'] = self.LV rec[u'TotalExp'] = self.TotalExp @@ -490,6 +494,7 @@ self.Face = rec.get(u'Face', 0) self.FacePic = rec.get(u'FacePic', 0) self.Job = rec.get(u'Job', 0) + self.RoleType = rec.get(u'RoleType', 0) self.ReincarnationLv = rec.get(u'ReincarnationLv', 0) self.LV = rec.get(u'LV', 0) self.TotalExp = rec.get(u'TotalExp', 0) @@ -845,6 +850,7 @@ Face = %s, FacePic = %s, Job = %s, + RoleType = %s, ReincarnationLv = %s, LV = %s, TotalExp = %s, @@ -983,6 +989,7 @@ self.Face, self.FacePic, self.Job, + self.RoleType, self.ReincarnationLv, self.LV, self.TotalExp, @@ -1112,7 +1119,7 @@ return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.PlayerID, self.AccID, self.PlayerName, @@ -1125,6 +1132,7 @@ self.Face, self.FacePic, self.Job, + self.RoleType, self.ReincarnationLv, self.LV, self.TotalExp, @@ -1317,7 +1325,6 @@ else: self.Operate = Str[:15] - #---------------------------------------------------------------------- #玩家账户信息#tagDSAccount class tagDSAccount(Structure): @@ -5370,13 +5377,21 @@ ('ID', ctypes.c_ulong), ('ID2', ctypes.c_ulong), ('Name1', ctypes.c_char * 33), - ('Name2', 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), ] @@ -5384,32 +5399,103 @@ Structure.__init__(self) self.clear() - def clear(self): - memset(addressof(self), 0, self.getLength()) - + self.Type = 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: - msg = error.formatMsg('error', error.ERROR_NO_150, '(pos = %s)> (length = %s)'%(pos, length)) + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) mylog.error(msg) return -1 if len(buf) < pos + self.getLength(): - msg = error.formatMsg('error', error.ERROR_NO_151, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) mylog.error(msg) - return -1 self.clear() - memmove(addressof(self), buf[pos:], self.getLength()) + self.Type, 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 = create_string_buffer(self.getLength()) - memmove(addressof(buf), addressof(self), self.getLength()) - return string_at(addressof(buf), self.getLength()) + buf = '' + buf = CommFunc.WriteBYTE(buf, self.Type) + 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): - return sizeof(tagDBBillboard) + length = 0 + 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 getRecord(self): '''组织存储记录''' @@ -5422,9 +5508,17 @@ rec[u'Type2'] = self.Type2 rec[u'Value1'] = self.Value1 rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + rec[u'Value6'] = self.Value6 + rec[u'Value7'] = self.Value7 + rec[u'Value8'] = self.Value8 rec[u'CmpValue'] = self.CmpValue rec[u'CmpValue2'] = self.CmpValue2 rec[u'CmpValue3'] = self.CmpValue3 + rec[u'DataLen'] = self.DataLen + rec[u'UserData'] = fix_incomingText(self.UserData) return rec def readRecord(self, rec): @@ -5437,9 +5531,17 @@ self.Type2 = rec.get(u'Type2', 0) self.Value1 = rec.get(u'Value1', 0) self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + self.Value6 = rec.get(u'Value6', 0) + self.Value7 = rec.get(u'Value7', 0) + self.Value8 = rec.get(u'Value8', 0) self.CmpValue = rec.get(u'CmpValue', 0) self.CmpValue2 = rec.get(u'CmpValue2', 0) self.CmpValue3 = rec.get(u'CmpValue3', 0) + self.DataLen = rec.get(u'DataLen', 0) + self.UserData = fix_outgoingText(rec.get(u'UserData', u'')) def adoLoad(self, collection): '''使用KEY查找并读取''' @@ -5599,9 +5701,17 @@ Type2 = %s, Value1 = %s, Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + Value6 = %s, + Value7 = %s, + Value8 = %s, CmpValue = %s, CmpValue2 = %s, CmpValue3 = %s, + DataLen = %s, + UserData = %s, ADOResult = %s, '''%( self.Type, @@ -5612,15 +5722,23 @@ 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 def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.Type, self.ID, self.ID2, @@ -5629,9 +5747,17 @@ self.Type2, self.Value1, self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, self.CmpValue, self.CmpValue2, self.CmpValue3, + self.DataLen, + self.UserData, ) return output @@ -5643,11 +5769,13 @@ self.Name1 = Str[:33] def SetName2(self,Str): - if len(Str)<=33: + if len(Str)<=65: self.Name2 = Str else: - self.Name2 = Str[:33] + self.Name2 = Str[:65] + + #------------------------------------------------------ #国家家族战排位赛表#tagDBCountryFamilyWarRace @@ -12504,6 +12632,12 @@ ('Extra3', ctypes.c_ulong), ('Extra4', ctypes.c_ulong), ('Extra5', ctypes.c_ulong), + ('Extra6', ctypes.c_ulong), + ('Extra7', ctypes.c_ulong), + ('Extra8', ctypes.c_ulong), + ('Extra9', ctypes.c_ulong), + ('Extra10', ctypes.c_ulong), + ('ServerID', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), ] @@ -12515,18 +12649,42 @@ def clear(self): memset(addressof(self), 0, self.getLength()) - def readData(self, buf, pos = 0, length = 0): if not pos <= length: - msg = error.formatMsg('error', error.ERROR_NO_150, '(pos = %s)> (length = %s)'%(pos, length)) + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) mylog.error(msg) return -1 if len(buf) < pos + self.getLength(): - msg = error.formatMsg('error', error.ERROR_NO_151, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) mylog.error(msg) - return -1 self.clear() - memmove(addressof(self), buf[pos:], self.getLength()) + self.ID, pos = CommFunc.ReadDWORD(buf, pos) + self.Name, pos = CommFunc.ReadString(buf, pos, 33) + self.LeaderID, pos = CommFunc.ReadDWORD(buf, pos) + self.LeaderName, pos = CommFunc.ReadString(buf, pos, 33) + self.LeaderOfficialRank, pos = CommFunc.ReadBYTE(buf, pos) + self.Broadcast, pos = CommFunc.ReadString(buf, pos, 200) + self.LV, pos = CommFunc.ReadBYTE(buf, pos) + self.Money, pos = CommFunc.ReadDWORD(buf, pos) + self.Hornor, pos = CommFunc.ReadDWORD(buf, pos) + self.BillboardPlace, pos = CommFunc.ReadWORD(buf, pos) + self.AcceptJoin, pos = CommFunc.ReadBYTE(buf, pos) + self.CreateTime, pos = CommFunc.ReadString(buf, pos, 30) + self.Point, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos) + self.LastWeekFamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos) + self.BeChallengedTime, pos = CommFunc.ReadString(buf, pos, 20) + self.Extra1, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra2, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra3, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra4, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra5, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra6, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra7, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra8, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra9, pos = CommFunc.ReadDWORD(buf, pos) + self.Extra10, pos = CommFunc.ReadDWORD(buf, pos) + self.ServerID, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -12562,6 +12720,12 @@ rec[u'Extra3'] = self.Extra3 rec[u'Extra4'] = self.Extra4 rec[u'Extra5'] = self.Extra5 + rec[u'Extra6'] = self.Extra6 + rec[u'Extra7'] = self.Extra7 + rec[u'Extra8'] = self.Extra8 + rec[u'Extra9'] = self.Extra9 + rec[u'Extra10'] = self.Extra10 + rec[u'ServerID'] = self.ServerID return rec def readRecord(self, rec): @@ -12587,6 +12751,12 @@ self.Extra3 = rec.get(u'Extra3', 0) self.Extra4 = rec.get(u'Extra4', 0) self.Extra5 = rec.get(u'Extra5', 0) + self.Extra6 = rec.get(u'Extra6', 0) + self.Extra7 = rec.get(u'Extra7', 0) + self.Extra8 = rec.get(u'Extra8', 0) + self.Extra9 = rec.get(u'Extra9', 0) + self.Extra10 = rec.get(u'Extra10', 0) + self.ServerID = rec.get(u'ServerID', 0) def adoLoad(self, collection): '''使用KEY查找并读取''' @@ -12759,6 +12929,12 @@ Extra3 = %s, Extra4 = %s, Extra5 = %s, + Extra6 = %s, + Extra7 = %s, + Extra8 = %s, + Extra9 = %s, + Extra10 = %s, + ServerID = %s, ADOResult = %s, '''%( self.ID, @@ -12782,12 +12958,18 @@ self.Extra3, self.Extra4, self.Extra5, + self.Extra6, + self.Extra7, + self.Extra8, + self.Extra9, + self.Extra10, + self.ServerID, self.ADOResult, ) return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.ID, self.Name, self.LeaderID, @@ -12809,6 +12991,12 @@ self.Extra3, self.Extra4, self.Extra5, + self.Extra6, + self.Extra7, + self.Extra8, + self.Extra9, + self.Extra10, + self.ServerID, ) return output @@ -12843,6 +13031,7 @@ else: self.BeChallengedTime = Str[:20] + #------------------------------------------------------ @@ -13884,6 +14073,8 @@ ('Sex', ctypes.c_ubyte), ('LV', ctypes.c_ushort), ('Job', ctypes.c_ubyte), + ('Face', ctypes.c_ulong), + ('FacePic', ctypes.c_ulong), ('FamilyLV', ctypes.c_ubyte), ('FamilyName', ctypes.c_char * 33), ('FamilyActiveValue', ctypes.c_ulong), @@ -13893,6 +14084,9 @@ ('Exattr3', ctypes.c_ulong), ('Exattr4', ctypes.c_ulong), ('Exattr5', ctypes.c_ulong), + ('Exattr6', ctypes.c_ulong), + ('Exattr7', ctypes.c_ulong), + ('Exattr8', ctypes.c_ulong), ('ReincarnationLv', ctypes.c_ushort), ('OperateInfo', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), @@ -13921,6 +14115,8 @@ self.Sex, pos = CommFunc.ReadBYTE(buf, pos) self.LV, pos = CommFunc.ReadWORD(buf, pos) self.Job, pos = CommFunc.ReadBYTE(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) self.FamilyLV, pos = CommFunc.ReadBYTE(buf, pos) self.FamilyName, pos = CommFunc.ReadString(buf, pos, 33) self.FamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos) @@ -13930,6 +14126,9 @@ self.Exattr3, pos = CommFunc.ReadDWORD(buf, pos) self.Exattr4, pos = CommFunc.ReadDWORD(buf, pos) self.Exattr5, 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.ReincarnationLv, pos = CommFunc.ReadWORD(buf, pos) self.OperateInfo, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -13952,6 +14151,8 @@ rec[u'Sex'] = self.Sex rec[u'LV'] = self.LV rec[u'Job'] = self.Job + rec[u'Face'] = self.Face + rec[u'FacePic'] = self.FacePic rec[u'FamilyLV'] = self.FamilyLV rec[u'FamilyName'] = fix_incomingText(self.FamilyName) rec[u'FamilyActiveValue'] = self.FamilyActiveValue @@ -13961,6 +14162,9 @@ rec[u'Exattr3'] = self.Exattr3 rec[u'Exattr4'] = self.Exattr4 rec[u'Exattr5'] = self.Exattr5 + rec[u'Exattr6'] = self.Exattr6 + rec[u'Exattr7'] = self.Exattr7 + rec[u'Exattr8'] = self.Exattr8 rec[u'ReincarnationLv'] = self.ReincarnationLv rec[u'OperateInfo'] = self.OperateInfo return rec @@ -13973,6 +14177,8 @@ self.Sex = rec.get(u'Sex', 0) self.LV = rec.get(u'LV', 0) self.Job = rec.get(u'Job', 0) + self.Face = rec.get(u'Face', 0) + self.FacePic = rec.get(u'FacePic', 0) self.FamilyLV = rec.get(u'FamilyLV', 0) self.FamilyName = fix_outgoingText(rec.get(u'FamilyName', u'')) self.FamilyActiveValue = rec.get(u'FamilyActiveValue', 0) @@ -13982,6 +14188,9 @@ self.Exattr3 = rec.get(u'Exattr3', 0) self.Exattr4 = rec.get(u'Exattr4', 0) self.Exattr5 = rec.get(u'Exattr5', 0) + self.Exattr6 = rec.get(u'Exattr6', 0) + self.Exattr7 = rec.get(u'Exattr7', 0) + self.Exattr8 = rec.get(u'Exattr8', 0) self.ReincarnationLv = rec.get(u'ReincarnationLv', 0) self.OperateInfo = rec.get(u'OperateInfo', 0) @@ -14141,6 +14350,8 @@ Sex = %s, LV = %s, Job = %s, + Face = %s, + FacePic = %s, FamilyLV = %s, FamilyName = %s, FamilyActiveValue = %s, @@ -14150,6 +14361,9 @@ Exattr3 = %s, Exattr4 = %s, Exattr5 = %s, + Exattr6 = %s, + Exattr7 = %s, + Exattr8 = %s, ReincarnationLv = %s, OperateInfo = %s, ADOResult = %s, @@ -14160,6 +14374,8 @@ self.Sex, self.LV, self.Job, + self.Face, + self.FacePic, self.FamilyLV, self.FamilyName, self.FamilyActiveValue, @@ -14169,6 +14385,9 @@ self.Exattr3, self.Exattr4, self.Exattr5, + self.Exattr6, + self.Exattr7, + self.Exattr8, self.ReincarnationLv, self.OperateInfo, self.ADOResult, @@ -14176,13 +14395,15 @@ return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.PlayerID, self.FamilyID, self.Name, self.Sex, self.LV, self.Job, + self.Face, + self.FacePic, self.FamilyLV, self.FamilyName, self.FamilyActiveValue, @@ -14192,6 +14413,9 @@ self.Exattr3, self.Exattr4, self.Exattr5, + self.Exattr6, + self.Exattr7, + self.Exattr8, self.ReincarnationLv, self.OperateInfo, ) @@ -14210,7 +14434,8 @@ else: self.FamilyName = Str[:33] - + + #------------------------------------------------------ #玩家骠车马匹表#tagPlayerHorseTable class tagPlayerHorseTable(Structure): @@ -16465,6 +16690,8 @@ ('JobLevel', ctypes.c_ubyte), ('LV', ctypes.c_ushort), ('RealmLV', ctypes.c_ushort), + ('Face', ctypes.c_ulong), + ('FacePic', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), ] @@ -16476,18 +16703,26 @@ def clear(self): memset(addressof(self), 0, self.getLength()) - def readData(self, buf, pos = 0, length = 0): if not pos <= length: - msg = error.formatMsg('error', error.ERROR_NO_150, '(pos = %s)> (length = %s)'%(pos, length)) + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) mylog.error(msg) return -1 if len(buf) < pos + self.getLength(): - msg = error.formatMsg('error', error.ERROR_NO_151, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) mylog.error(msg) - return -1 self.clear() - memmove(addressof(self), buf[pos:], self.getLength()) + self.TeamID, pos = CommFunc.ReadDWORD(buf, pos) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.TeamIndex, pos = CommFunc.ReadBYTE(buf, pos) + self.TeamLV, pos = CommFunc.ReadBYTE(buf, pos) + self.PlayerName, pos = CommFunc.ReadString(buf, pos, 33) + self.Job, pos = CommFunc.ReadBYTE(buf, pos) + self.JobLevel, pos = CommFunc.ReadBYTE(buf, pos) + self.LV, pos = CommFunc.ReadWORD(buf, pos) + self.RealmLV, pos = CommFunc.ReadWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -16511,6 +16746,8 @@ rec[u'JobLevel'] = self.JobLevel rec[u'LV'] = self.LV rec[u'RealmLV'] = self.RealmLV + rec[u'Face'] = self.Face + rec[u'FacePic'] = self.FacePic return rec def readRecord(self, rec): @@ -16524,6 +16761,8 @@ self.JobLevel = rec.get(u'JobLevel', 0) self.LV = rec.get(u'LV', 0) self.RealmLV = rec.get(u'RealmLV', 0) + self.Face = rec.get(u'Face', 0) + self.FacePic = rec.get(u'FacePic', 0) #Can not implement adoLoadStr method:No key defined! @@ -16636,6 +16875,8 @@ JobLevel = %s, LV = %s, RealmLV = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.TeamID, @@ -16647,12 +16888,14 @@ self.JobLevel, self.LV, self.RealmLV, + self.Face, + self.FacePic, self.ADOResult, ) return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.TeamID, self.PlayerID, self.TeamIndex, @@ -16662,6 +16905,8 @@ self.JobLevel, self.LV, self.RealmLV, + self.Face, + self.FacePic, ) return output @@ -16672,6 +16917,7 @@ else: self.PlayerName = Str[:33] + #通用记录表#tagUniversalGameRec @@ -19560,6 +19806,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), ] @@ -19587,6 +19835,8 @@ self.RealmLV, pos = CommFunc.ReadWORD(buf, pos) self.OnlineType, pos = CommFunc.ReadBYTE(buf, pos) self.RefCount, pos = CommFunc.ReadDWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -19608,6 +19858,8 @@ rec[u'RealmLV'] = self.RealmLV rec[u'OnlineType'] = self.OnlineType rec[u'RefCount'] = self.RefCount + rec[u'Face'] = self.Face + rec[u'FacePic'] = self.FacePic return rec def readRecord(self, rec): @@ -19619,6 +19871,8 @@ self.RealmLV = rec.get(u'RealmLV', 0) self.OnlineType = rec.get(u'OnlineType', 0) self.RefCount = rec.get(u'RefCount', 0) + self.Face = rec.get(u'Face', 0) + self.FacePic = rec.get(u'FacePic', 0) def adoLoad(self, collection): '''使用KEY查找并读取''' @@ -19777,6 +20031,8 @@ RealmLV = %s, OnlineType = %s, RefCount = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.PlayerID, @@ -19786,12 +20042,14 @@ self.RealmLV, self.OnlineType, self.RefCount, + self.Face, + self.FacePic, self.ADOResult, ) return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.PlayerID, self.PlayerName, self.Job, @@ -19799,6 +20057,8 @@ self.RealmLV, self.OnlineType, self.RefCount, + self.Face, + self.FacePic, ) return output @@ -21579,6 +21839,8 @@ ('PKScore', ctypes.c_ulong), ('DanLV', ctypes.c_ubyte), ('Time', ctypes.c_ulong), + ('Face', ctypes.c_ulong), + ('FacePic', ctypes.c_ulong), ('ADOResult', ctypes.c_ulong), ] @@ -21609,6 +21871,8 @@ self.PKScore, pos = CommFunc.ReadDWORD(buf, pos) self.DanLV, pos = CommFunc.ReadBYTE(buf, pos) self.Time, pos = CommFunc.ReadDWORD(buf, pos) + self.Face, pos = CommFunc.ReadDWORD(buf, pos) + self.FacePic, pos = CommFunc.ReadDWORD(buf, pos) return self.getLength() @@ -21633,6 +21897,8 @@ rec[u'PKScore'] = self.PKScore rec[u'DanLV'] = self.DanLV rec[u'Time'] = self.Time + rec[u'Face'] = self.Face + rec[u'FacePic'] = self.FacePic return rec def readRecord(self, rec): @@ -21647,6 +21913,8 @@ self.PKScore = rec.get(u'PKScore', 0) self.DanLV = rec.get(u'DanLV', 0) self.Time = rec.get(u'Time', 0) + self.Face = rec.get(u'Face', 0) + self.FacePic = rec.get(u'FacePic', 0) #Can not implement adoLoadStr method:No key defined! #Can not implement adoInsertStr method:No key defined! @@ -21692,6 +21960,8 @@ PKScore = %s, DanLV = %s, Time = %s, + Face = %s, + FacePic = %s, ADOResult = %s, '''%( self.ZoneID, @@ -21704,12 +21974,14 @@ self.PKScore, self.DanLV, self.Time, + self.Face, + self.FacePic, self.ADOResult, ) return output def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.ZoneID, self.SeasonID, self.PlayerID, @@ -21720,6 +21992,8 @@ self.PKScore, self.DanLV, self.Time, + self.Face, + self.FacePic, ) return output @@ -23747,23 +24021,32 @@ self.TimeStr = Str[:19] +#------------------------------------------------------ # 跨服排行榜 #tagDBCrossBillboard class tagDBCrossBillboard(Structure): _pack_ = 1 _fields_ = [ - ('GroupValue1', ctypes.c_ubyte), - ('GroupValue2', ctypes.c_ubyte), + ('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 * 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), ] @@ -23771,9 +24054,28 @@ Structure.__init__(self) self.clear() - def clear(self): - memset(addressof(self), 0, self.getLength()) + self.GroupValue1 = 0 + self.GroupValue2 = 0 + self.BillboardType = 0 + self.ID = 0 + self.ID2 = 0 + self.Name1 = '' + self.Name2 = '' + self.Type2 = 0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.CmpValue = 0 + self.CmpValue2 = 0 + self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = '' def readData(self, buf, pos = 0, length = 0): if not pos <= length: @@ -23784,29 +24086,79 @@ msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) mylog.error(msg) self.clear() - self.GroupValue1, pos = CommFunc.ReadBYTE(buf, pos) - self.GroupValue2, pos = CommFunc.ReadBYTE(buf, pos) + 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, 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 = create_string_buffer(self.getLength()) - memmove(addressof(buf), addressof(self), self.getLength()) - return string_at(addressof(buf), self.getLength()) + 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): - return sizeof(tagDBCrossBillboard) + 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 getRecord(self): '''组织存储记录''' @@ -23821,9 +24173,17 @@ rec[u'Type2'] = self.Type2 rec[u'Value1'] = self.Value1 rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + rec[u'Value6'] = self.Value6 + rec[u'Value7'] = self.Value7 + rec[u'Value8'] = self.Value8 rec[u'CmpValue'] = self.CmpValue rec[u'CmpValue2'] = self.CmpValue2 rec[u'CmpValue3'] = self.CmpValue3 + rec[u'DataLen'] = self.DataLen + rec[u'UserData'] = fix_incomingText(self.UserData) return rec def readRecord(self, rec): @@ -23838,9 +24198,17 @@ self.Type2 = rec.get(u'Type2', 0) self.Value1 = rec.get(u'Value1', 0) self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + self.Value6 = rec.get(u'Value6', 0) + self.Value7 = rec.get(u'Value7', 0) + self.Value8 = rec.get(u'Value8', 0) self.CmpValue = rec.get(u'CmpValue', 0) self.CmpValue2 = rec.get(u'CmpValue2', 0) self.CmpValue3 = rec.get(u'CmpValue3', 0) + self.DataLen = rec.get(u'DataLen', 0) + self.UserData = fix_outgoingText(rec.get(u'UserData', u'')) #Can not implement adoLoadStr method:No key defined! #Can not implement adoInsertStr method:No key defined! @@ -23886,9 +24254,17 @@ Type2 = %s, Value1 = %s, Value2 = %s, + Value3 = %s, + Value4 = %s, + Value5 = %s, + Value6 = %s, + Value7 = %s, + Value8 = %s, CmpValue = %s, CmpValue2 = %s, CmpValue3 = %s, + DataLen = %s, + UserData = %s, ADOResult = %s, '''%( self.GroupValue1, @@ -23901,15 +24277,23 @@ 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 def dumpString(self): - output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( self.GroupValue1, self.GroupValue2, self.BillboardType, @@ -23920,9 +24304,17 @@ self.Type2, self.Value1, self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, self.CmpValue, self.CmpValue2, self.CmpValue3, + self.DataLen, + self.UserData, ) return output @@ -23934,12 +24326,14 @@ self.Name1 = Str[:33] def SetName2(self,Str): - if len(Str)<=33: + if len(Str)<=65: self.Name2 = Str else: - self.Name2 = Str[:33] + self.Name2 = Str[:65] + + # 跨服补偿个人领取表 #tagDBCrossPersonalCompensation class tagDBCrossPersonalCompensation(Structure): _pack_ = 1 @@ -24885,7 +25279,7 @@ ) return output - + # 福地矿物表 #tagDBPyMineAreaItem class tagDBPyMineAreaItem(Structure): _pack_ = 1 @@ -25406,3 +25800,1054 @@ ) 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: + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) + mylog.error(msg) + return -1 + if len(buf) < pos + self.getLength(): + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + mylog.error(msg) + 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 getRecord(self): + '''组织存储记录''' + rec = {} + rec[u'PlayerID'] = self.PlayerID + rec[u'RecType'] = self.RecType + rec[u'Time'] = self.Time + rec[u'Value1'] = self.Value1 + rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + rec[u'Value6'] = self.Value6 + rec[u'Value7'] = self.Value7 + rec[u'Value8'] = self.Value8 + rec[u'UserDataLen'] = self.UserDataLen + rec[u'UserData'] = fix_incomingText(self.UserData) + return rec + + def readRecord(self, rec): + '''由于MongoDB读出来是unicode,所有字符串需要进行转换''' + self.PlayerID = rec.get(u'PlayerID', 0) + self.RecType = rec.get(u'RecType', 0) + self.Time = rec.get(u'Time', 0) + self.Value1 = rec.get(u'Value1', 0) + self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + self.Value6 = rec.get(u'Value6', 0) + self.Value7 = rec.get(u'Value7', 0) + self.Value8 = rec.get(u'Value8', 0) + self.UserDataLen = rec.get(u'UserDataLen', 0) + self.UserData = fix_outgoingText(rec.get(u'UserData', u'')) + +#Can not implement adoLoadStr method:No key defined! + + def adoInsert(self, collection): + '''执行插入''' + + trycnt = 0 + rec = self.getRecord() + while(True): + try: + collection.insert(rec, False, True) + break + except pymongo.errors.OperationFailure, err: + + if(DBConfig.TryCntOnWriteFail > trycnt): + trycnt += 1 + continue + + addADOExceptionCount() + mylog.info("%s.%s:rec = %s"%(self.__class__.__name__, inspect.stack()[0][3], rec)) + msg = error.formatMsg('error', error.ERROR_NO_152, 'Insert failed!PlayerID = %s, error = %s, trycnt = %d'%(self.PlayerID, err, trycnt)) + mylog.error(msg) + + return False + return True + +#Can not implement adoUpdateStr method:No key defined! + + def adoUpdateEx(self, collection, spec): + '''执行更新''' + trycnt = 0 + rec = self.getRecord() + while(True): + try: + collection.update(spec, {'$set':rec}, False, False, True, True) + break + except pymongo.errors.OperationFailure, err: + if(DBConfig.TryCntOnWriteFail > trycnt): + trycnt += 1 + continue + addADOExceptionCount() + mylog.info("%s.%s:rec = %s"%(self.__class__.__name__, inspect.stack()[0][3], rec)) + msg = error.formatMsg('error', error.ERROR_NO_154, 'Update failed!PlayerID = %s, error = %s, trycnt = %d'%(self.PlayerID, err, trycnt)) + mylog.error(msg) + + return False + return True + +#Can not implement adoCheckUpdateStr method:No key defined! +#Can not implement adoCheckUpdateExStr method:No key defined! + + def getAdoRecords(self, resultCollection): + '''查询结果打包成二进制流''' + result = '' + result = CommFunc.WriteDWORD(result, resultCollection.count()) + for rec in resultCollection: + self.readRecord(rec) + result += self.getBuffer() + return result + + + def adoQueryIndex(self, collection): + '''用索引字段查找''' + resultCollection = collection.find({'PlayerID':self.PlayerID}) + + return self.getAdoRecords(resultCollection) + + + def adoQueryCustom(self, collection, queryDict): + '''自定义查询''' + resultCollection = collection.find(queryDict) + + return self.getAdoRecords(resultCollection) + + + def adoQueryAll(self, collection): + '''查询所有''' + resultCollection = collection.find() + + return self.getAdoRecords(resultCollection) + + + def adoDeleteByIndex(self, collection): + '''根据索引删除''' + trycnt = 0 + while(True): + try: + collection.remove({'PlayerID':self.PlayerID}) + break + except pymongo.errors.OperationFailure, err: + if(DBConfig.TryCntOnWriteFail > trycnt): + trycnt += 1 + continue + addADOExceptionCount() + mylog.info("%s.%s:PlayerID = %s"%(self.__class__.__name__, inspect.stack()[0][3], self.PlayerID)) + msg = error.formatMsg('error', error.ERROR_NO_155, 'delete failure!self.PlayerID = %s, error = %s, trycnt = %d'%(self.PlayerID, err, trycnt)) + mylog.error(msg) + + return False + return True + + 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 + + def dumpString(self): + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + 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, + ) + 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: + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) + mylog.error(msg) + return -1 + if len(buf) < pos + self.getLength(): + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + mylog.error(msg) + 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 getRecord(self): + '''组织存储记录''' + rec = {} + rec[u'TeamID'] = self.TeamID + rec[u'PlayerID'] = self.PlayerID + rec[u'Value1'] = self.Value1 + rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + return rec + + def readRecord(self, rec): + '''由于MongoDB读出来是unicode,所有字符串需要进行转换''' + self.TeamID = rec.get(u'TeamID', 0) + self.PlayerID = rec.get(u'PlayerID', 0) + self.Value1 = rec.get(u'Value1', 0) + self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + +#Can not implement adoLoadStr method:No key defined! +#Can not implement adoInsertStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoCheckUpdateStr method:No key defined! +#Can not implement adoCheckUpdateExStr method:No key defined! + + def getAdoRecords(self, resultCollection): + '''查询结果打包成二进制流''' + result = '' + result = CommFunc.WriteDWORD(result, resultCollection.count()) + for rec in resultCollection: + self.readRecord(rec) + result += self.getBuffer() + return result + +#Can not implement adoQueryIndexStr method:No key defined! + + def adoQueryCustom(self, collection, queryDict): + '''自定义查询''' + resultCollection = collection.find(queryDict) + + return self.getAdoRecords(resultCollection) + + + def adoQueryAll(self, collection): + '''查询所有''' + resultCollection = collection.find() + + return self.getAdoRecords(resultCollection) + +#Can not implement adoDeleteByIndexStr method:No key defined! + 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 + + def dumpString(self): + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + self.TeamID, + self.PlayerID, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + ) + 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: + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) + mylog.error(msg) + return -1 + if len(buf) < pos + self.getLength(): + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + mylog.error(msg) + 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 getRecord(self): + '''组织存储记录''' + rec = {} + rec[u'TeamID'] = self.TeamID + rec[u'TeamName'] = fix_incomingText(self.TeamName) + rec[u'ZoneID'] = self.ZoneID + rec[u'FuncMapID'] = self.FuncMapID + rec[u'FuncMapEx'] = self.FuncMapEx + rec[u'CreateTime'] = self.CreateTime + rec[u'CaptainID'] = self.CaptainID + rec[u'MinLV'] = self.MinLV + rec[u'MinFightPower'] = self.MinFightPower + rec[u'MinFightPowerEx'] = self.MinFightPowerEx + rec[u'ServerOnly'] = self.ServerOnly + rec[u'NeedCheck'] = self.NeedCheck + rec[u'ApplyIDLen'] = self.ApplyIDLen + rec[u'ApplyIDList'] = fix_incomingText(self.ApplyIDList) + rec[u'Value1'] = self.Value1 + rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + return rec + + def readRecord(self, rec): + '''由于MongoDB读出来是unicode,所有字符串需要进行转换''' + self.TeamID = rec.get(u'TeamID', 0) + self.TeamName = fix_outgoingText(rec.get(u'TeamName', u'')) + self.ZoneID = rec.get(u'ZoneID', 0) + self.FuncMapID = rec.get(u'FuncMapID', 0) + self.FuncMapEx = rec.get(u'FuncMapEx', 0) + self.CreateTime = rec.get(u'CreateTime', 0) + self.CaptainID = rec.get(u'CaptainID', 0) + self.MinLV = rec.get(u'MinLV', 0) + self.MinFightPower = rec.get(u'MinFightPower', 0) + self.MinFightPowerEx = rec.get(u'MinFightPowerEx', 0) + self.ServerOnly = rec.get(u'ServerOnly', 0) + self.NeedCheck = rec.get(u'NeedCheck', 0) + self.ApplyIDLen = rec.get(u'ApplyIDLen', 0) + self.ApplyIDList = fix_outgoingText(rec.get(u'ApplyIDList', u'')) + self.Value1 = rec.get(u'Value1', 0) + self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + +#Can not implement adoLoadStr method:No key defined! +#Can not implement adoInsertStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoCheckUpdateStr method:No key defined! +#Can not implement adoCheckUpdateExStr method:No key defined! + + def getAdoRecords(self, resultCollection): + '''查询结果打包成二进制流''' + result = '' + result = CommFunc.WriteDWORD(result, resultCollection.count()) + for rec in resultCollection: + self.readRecord(rec) + result += self.getBuffer() + return result + +#Can not implement adoQueryIndexStr method:No key defined! + + def adoQueryCustom(self, collection, queryDict): + '''自定义查询''' + resultCollection = collection.find(queryDict) + + return self.getAdoRecords(resultCollection) + + + def adoQueryAll(self, collection): + '''查询所有''' + resultCollection = collection.find() + + return self.getAdoRecords(resultCollection) + +#Can not implement adoDeleteByIndexStr method:No key defined! + 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 + + def dumpString(self): + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + 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, + ) + 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: + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) + mylog.error(msg) + return -1 + if len(buf) < pos + self.getLength(): + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + mylog.error(msg) + 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 getRecord(self): + '''组织存储记录''' + rec = {} + rec[u'RecType'] = self.RecType + rec[u'RecID'] = self.RecID + rec[u'Time'] = self.Time + rec[u'Value1'] = self.Value1 + rec[u'Value2'] = self.Value2 + rec[u'Value3'] = self.Value3 + rec[u'Value4'] = self.Value4 + rec[u'Value5'] = self.Value5 + rec[u'Value6'] = self.Value6 + rec[u'Value7'] = self.Value7 + rec[u'Value8'] = self.Value8 + rec[u'UserDataLen'] = self.UserDataLen + rec[u'UserData'] = fix_incomingText(self.UserData) + return rec + + def readRecord(self, rec): + '''由于MongoDB读出来是unicode,所有字符串需要进行转换''' + self.RecType = rec.get(u'RecType', 0) + self.RecID = rec.get(u'RecID', 0) + self.Time = rec.get(u'Time', 0) + self.Value1 = rec.get(u'Value1', 0) + self.Value2 = rec.get(u'Value2', 0) + self.Value3 = rec.get(u'Value3', 0) + self.Value4 = rec.get(u'Value4', 0) + self.Value5 = rec.get(u'Value5', 0) + self.Value6 = rec.get(u'Value6', 0) + self.Value7 = rec.get(u'Value7', 0) + self.Value8 = rec.get(u'Value8', 0) + self.UserDataLen = rec.get(u'UserDataLen', 0) + self.UserData = fix_outgoingText(rec.get(u'UserData', u'')) + +#Can not implement adoLoadStr method:No key defined! +#Can not implement adoInsertStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoCheckUpdateStr method:No key defined! +#Can not implement adoCheckUpdateExStr method:No key defined! + + def getAdoRecords(self, resultCollection): + '''查询结果打包成二进制流''' + result = '' + result = CommFunc.WriteDWORD(result, resultCollection.count()) + for rec in resultCollection: + self.readRecord(rec) + result += self.getBuffer() + return result + +#Can not implement adoQueryIndexStr method:No key defined! + + def adoQueryCustom(self, collection, queryDict): + '''自定义查询''' + resultCollection = collection.find(queryDict) + + return self.getAdoRecords(resultCollection) + + + def adoQueryAll(self, collection): + '''查询所有''' + resultCollection = collection.find() + + return self.getAdoRecords(resultCollection) + +#Can not implement adoDeleteByIndexStr method:No key defined! + 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 + + def dumpString(self): + output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%( + 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, + ) + 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: + msg = error.formatMsg('error', error.ERROR_NO_148, '(pos = %s) > (length = %s)'%(pos, length)) + mylog.error(msg) + return -1 + if len(buf) < pos + self.getLength(): + msg = error.formatMsg('error', error.ERROR_NO_149, 'len = %s while %s expected!'%(len(buf) - pos, self.getLength())) + mylog.error(msg) + 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 getRecord(self): + '''组织存储记录''' + rec = {} + rec[u'PlayerID'] = self.PlayerID + rec[u'UpdTime'] = self.UpdTime + rec[u'PackDataSize'] = self.PackDataSize + rec[u'PackData'] = fix_incomingText(self.PackData) + return rec + + def readRecord(self, rec): + '''由于MongoDB读出来是unicode,所有字符串需要进行转换''' + self.PlayerID = rec.get(u'PlayerID', 0) + self.UpdTime = rec.get(u'UpdTime', 0) + self.PackDataSize = rec.get(u'PackDataSize', 0) + self.PackData = fix_outgoingText(rec.get(u'PackData', u'')) + +#Can not implement adoLoadStr method:No key defined! +#Can not implement adoInsertStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoUpdateStr method:No key defined! +#Can not implement adoCheckUpdateStr method:No key defined! +#Can not implement adoCheckUpdateExStr method:No key defined! + + def getAdoRecords(self, resultCollection): + '''查询结果打包成二进制流''' + result = '' + result = CommFunc.WriteDWORD(result, resultCollection.count()) + for rec in resultCollection: + self.readRecord(rec) + result += self.getBuffer() + return result + +#Can not implement adoQueryIndexStr method:No key defined! + + def adoQueryCustom(self, collection, queryDict): + '''自定义查询''' + resultCollection = collection.find(queryDict) + + return self.getAdoRecords(resultCollection) + + + def adoQueryAll(self, collection): + '''查询所有''' + resultCollection = collection.find() + + return self.getAdoRecords(resultCollection) + +#Can not implement adoDeleteByIndexStr method:No key defined! + 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 + + def dumpString(self): + output = '''%1s\t%1s\t%1s\t%1s'''%( + self.PlayerID, + self.UpdTime, + self.PackDataSize, + self.PackData, + ) + return output + -- Gitblit v1.8.0