From 9ee1d7c81171be2bf959226788d38e3caf85e0b6 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 22 三月 2019 16:58:10 +0800
Subject: [PATCH] 860312 优化开关服时间,memmove在大数据情况下耗时会几何数增加;并且优化个人邮件30天后清理,避免流失玩家合服后积累
---
ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 56 ++++++++-----
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py | 22 +++++
Tool/数据库/ChangeAccount/Collections/DataServerPlayerData.py | 151 ++++++++++++++++++++++---------------
3 files changed, 145 insertions(+), 84 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
index 75bf6eb..b456a80 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
@@ -853,11 +853,33 @@
return
+##清理超时30天的个人邮件, 否则流失玩家在不断合服情况下数据会累积
+# 个人邮件暂无过期时间设定,只有30天清理逻辑,以创建时间为准
+# @param None
+# @return None
+def ClearUpPersonalCompensation():
+ #校验过期补偿
+ curTime = datetime.datetime.today()
+ needClearGUIDList = []
+ allCnt = GameWorld.GetCompensationMgr().GetAllPersonalCompensationCount()
+ for i in xrange(allCnt):
+ curMail = GameWorld.GetCompensationMgr().AtAllPersonalCompensation(i)
+ # 超过接收邮件30天则完全删除此邮件
+ limitTime = datetime.datetime.strptime(curMail.CreateTime, ChConfig.TYPE_Time_Format) + datetime.timedelta(days = 30)
+ if limitTime < curTime:
+ needClearGUIDList.append([curMail.PlayerID, curMail.GUID])
+
+ #删除过期补偿信息, 没有主动通知在线玩家
+ for playerID, GUID in needClearGUIDList:
+ ClearPersonalCompensation(playerID, GUID)
+ return
+
## 清理超时补偿, 个人邮件在超过上限后才会自动删除
# @param None
# @return None
def ClearUpTimeOutCompensation():
+ ClearUpPersonalCompensation()
ClearUpEntireCompensation()
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
index b28d109..3b6241c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
@@ -605,14 +605,22 @@
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.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()
@@ -658,7 +666,7 @@
self.PlayerName = Str
else:
self.PlayerName = Str[:33]
-
+
#仙魔之争记录表#tagDBPyXMZZ
class tagDBPyXMZZ(Structure):
@@ -795,14 +803,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()
@@ -827,7 +836,6 @@
self.ADOResult,
)
return output
-
#Boss关注记录表#tagDBPyBossAttention
@@ -890,7 +898,6 @@
return output
-
#交易所物品最近成交单价表#tagDBPyBourseItemLastPrice
class tagDBPyBourseItemLastPrice(Structure):
_pack_ = 1
@@ -908,14 +915,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()
@@ -1101,7 +1108,6 @@
)
return output
-
#玩家黑名单 #tagDBPyPlayerBlack
class tagDBPyPlayerBlack(Structure):
_pack_ = 1
@@ -1119,14 +1125,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()
@@ -1168,14 +1174,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()
@@ -1218,14 +1225,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()
@@ -1249,6 +1256,7 @@
)
return output
+
#玩家仇人表#tagPlayerEnemy
class tagPlayerEnemy(Structure):
_pack_ = 1
@@ -1267,14 +1275,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()
@@ -1301,7 +1310,6 @@
return output
-
#个人社交总表 #tagPersonalSocial
class tagPersonalSocial(Structure):
_pack_ = 1
@@ -1324,14 +1332,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()
@@ -1372,5 +1385,4 @@
else:
self.PlayerName = Str[:33]
-
diff --git "a/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/Collections/DataServerPlayerData.py" "b/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/Collections/DataServerPlayerData.py"
index 67a0650..82f315c 100644
--- "a/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/Collections/DataServerPlayerData.py"
+++ "b/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/Collections/DataServerPlayerData.py"
@@ -13714,18 +13714,32 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Name, pos = CommFunc.ReadString(buf, pos, 33)
+ self.Sex, pos = CommFunc.ReadBYTE(buf, pos)
+ self.LV, pos = CommFunc.ReadWORD(buf, pos)
+ self.Job, pos = CommFunc.ReadBYTE(buf, pos)
+ self.FamilyLV, pos = CommFunc.ReadBYTE(buf, pos)
+ self.FamilyName, pos = CommFunc.ReadString(buf, pos, 33)
+ self.FamilyActiveValue, pos = CommFunc.ReadDWORD(buf, pos)
+ self.OfficialRank, pos = CommFunc.ReadBYTE(buf, pos)
+ self.Exattr1, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Exattr2, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Exattr3, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Exattr4, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Exattr5, pos = CommFunc.ReadDWORD(buf, pos)
+ self.ReincarnationLv, pos = CommFunc.ReadWORD(buf, pos)
+ self.OperateInfo, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -14004,8 +14018,6 @@
else:
self.FamilyName = Str[:33]
-
-
#------------------------------------------------------
#玩家骠车马匹表#tagPlayerHorseTable
@@ -16436,7 +16448,6 @@
-
#通用记录表#tagUniversalGameRec
class tagUniversalGameRec(Structure):
_pack_ = 1
@@ -16462,18 +16473,25 @@
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.Type, pos = CommFunc.ReadBYTE(buf, pos)
+ self.Time, pos = CommFunc.ReadDouble(buf, pos)
+ self.StrValue1, pos = CommFunc.ReadString(buf, pos, 33)
+ self.StrValue2, pos = CommFunc.ReadString(buf, pos, 33)
+ 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.StrValue3, pos = CommFunc.ReadString(buf, pos, 256)
return self.getLength()
@@ -16674,7 +16692,7 @@
self.StrValue3 = Str
else:
self.StrValue3 = Str[:256]
-
+
#阵法#tagBattleFormation
class tagBattleFormation(Structure):
@@ -18764,18 +18782,18 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.GUID, pos = CommFunc.ReadString(buf, pos, 40)
+ self.RecState, pos = CommFunc.ReadBYTE(buf, pos)
return self.getLength()
@@ -18861,6 +18879,8 @@
self.GUID = Str
else:
self.GUID = Str[:40]
+
+
#玩家数据查看缓存表#tagPlayerViewCache
@@ -19132,7 +19152,6 @@
-
#玩家好友表#tagDBPyPlayerFriend
class tagDBPyPlayerFriend(Structure):
_pack_ = 1
@@ -19150,18 +19169,17 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -19304,6 +19322,7 @@
)
return output
+
#个人社交总表 #tagPersonalSocial
class tagPersonalSocial(Structure):
_pack_ = 1
@@ -19326,18 +19345,22 @@
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.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()
@@ -19561,9 +19584,7 @@
self.PlayerName = Str[:33]
-
-
#玩家黑名单 #tagDBPyPlayerBlack
class tagDBPyPlayerBlack(Structure):
_pack_ = 1
@@ -19581,18 +19602,17 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -19754,18 +19774,18 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Timestamp, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -19932,18 +19952,18 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.TagID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.Timestamp, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -20090,6 +20110,7 @@
self.Timestamp,
)
return output
+
# 家族仓库物品表#tagDBPyFamilyStoreItem
@@ -20539,18 +20560,17 @@
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.ItemID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.LastPrice, pos = CommFunc.ReadDWORD(buf, pos)
return self.getLength()
@@ -20897,18 +20917,18 @@
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.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.LineID, pos = CommFunc.ReadBYTE(buf, pos)
+ self.Rank, pos = CommFunc.ReadWORD(buf, pos)
return self.getLength()
@@ -21344,18 +21364,25 @@
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.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()
--
Gitblit v1.8.0