Fix parsing the premium status in newer login protocol versions
Closes #933
This commit is contained in:
parent
a7b910a755
commit
2bb9fdc82b
|
@ -254,12 +254,21 @@ function CharacterList.create(characters, account, otui)
|
|||
end
|
||||
|
||||
-- account
|
||||
if account.premDays > 0 and account.premDays < 65535 then
|
||||
accountStatusLabel:setText(tr("Premium Account (%s) days left", account.premDays))
|
||||
elseif account.premDays >= 65535 then
|
||||
accountStatusLabel:setText(tr("Lifetime Premium Account"))
|
||||
else
|
||||
accountStatusLabel:setText(tr('Free Account'))
|
||||
local status = ''
|
||||
if account.status == AccountStatus.Frozen then
|
||||
status = tr(' (Frozen)')
|
||||
elseif account.status == AccountStatus.Suspended then
|
||||
status = tr(' (Suspended)')
|
||||
end
|
||||
|
||||
if account.subStatus == SubscriptionStatus.Free then
|
||||
accountStatusLabel:setText(('%s%s'):format(tr('Free Account'), status))
|
||||
elseif account.subStatus == SubscriptionStatus.Premium then
|
||||
if account.premDays == 0 or account.premDays == 65535 then
|
||||
accountStatusLabel:setText(('%s%s'):format(tr('Gratis Premium Account'), status))
|
||||
else
|
||||
accountStatusLabel:setText(('%s%s'):format(tr('Premium Account (%s) days left', account.premDays), status))
|
||||
end
|
||||
end
|
||||
|
||||
if account.premDays > 0 and account.premDays <= 7 then
|
||||
|
|
|
@ -322,4 +322,15 @@ StoreState = {
|
|||
Timed = 3
|
||||
}
|
||||
|
||||
AccountStatus = {
|
||||
Ok = 0,
|
||||
Frozen = 1,
|
||||
Suspended = 2,
|
||||
}
|
||||
|
||||
SubscriptionStatus = {
|
||||
Free = 0,
|
||||
Premium = 1,
|
||||
}
|
||||
|
||||
-- @}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue