Merge pull request #934 from diath/fix_login_protocol

Fix parsing the premium status in newer login protocol versions
This commit is contained in:
Samuel Gros
2018-07-13 00:11:40 +02:00
committed by GitHub
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