Fix parsing the premium status in newer login protocol versions

Closes #933
This commit is contained in:
Kamil Chojnowski
2018-01-01 05:10:57 +01:00
parent a7b910a755
commit 2bb9fdc82b
3 changed files with 41 additions and 8 deletions

View File

@@ -322,4 +322,15 @@ StoreState = {
Timed = 3
}
AccountStatus = {
Ok = 0,
Frozen = 1,
Suspended = 2,
}
SubscriptionStatus = {
Free = 0,
Premium = 1,
}
-- @}

View File

@@ -240,7 +240,20 @@ function ProtocolLogin:parseCharacterList(msg)
end
local account = {}
account.premDays = msg:getU16()
if g_game.getProtocolVersion() > 1077 then
account.status = msg:getU8()
account.subStatus = msg:getU8()
account.premDays = msg:getU32()
if account.premDays ~= 0 and account.premDays ~= 65535 then
account.premDays = math.floor((account.premDays - os.time()) / 86400)
end
else
account.status = AccountStatus.Ok
account.premDays = msg:getU16()
account.subStatus = account.premDays > 0 and SubscriptionStatus.Premium or SubscriptionStatus.Free
end
signalcall(self.onCharacterList, self, characters, account)
end
@@ -258,4 +271,4 @@ end
function ProtocolLogin:onError(msg, code)
local text = translateNetworkError(code, self:isConnecting(), msg)
signalcall(self.onLoginError, self, text)
end
end