Merge pull request #934 from diath/fix_login_protocol
Fix parsing the premium status in newer login protocol versions
This commit is contained in:
commit
07b4b785fc
|
@ -254,12 +254,21 @@ function CharacterList.create(characters, account, otui)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- account
|
-- account
|
||||||
if account.premDays > 0 and account.premDays < 65535 then
|
local status = ''
|
||||||
accountStatusLabel:setText(tr("Premium Account (%s) days left", account.premDays))
|
if account.status == AccountStatus.Frozen then
|
||||||
elseif account.premDays >= 65535 then
|
status = tr(' (Frozen)')
|
||||||
accountStatusLabel:setText(tr("Lifetime Premium Account"))
|
elseif account.status == AccountStatus.Suspended then
|
||||||
else
|
status = tr(' (Suspended)')
|
||||||
accountStatusLabel:setText(tr('Free Account'))
|
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
|
end
|
||||||
|
|
||||||
if account.premDays > 0 and account.premDays <= 7 then
|
if account.premDays > 0 and account.premDays <= 7 then
|
||||||
|
|
|
@ -322,4 +322,15 @@ StoreState = {
|
||||||
Timed = 3
|
Timed = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AccountStatus = {
|
||||||
|
Ok = 0,
|
||||||
|
Frozen = 1,
|
||||||
|
Suspended = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
SubscriptionStatus = {
|
||||||
|
Free = 0,
|
||||||
|
Premium = 1,
|
||||||
|
}
|
||||||
|
|
||||||
-- @}
|
-- @}
|
||||||
|
|
|
@ -240,7 +240,20 @@ function ProtocolLogin:parseCharacterList(msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
local account = {}
|
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)
|
signalcall(self.onCharacterList, self, characters, account)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -258,4 +271,4 @@ end
|
||||||
function ProtocolLogin:onError(msg, code)
|
function ProtocolLogin:onError(msg, code)
|
||||||
local text = translateNetworkError(code, self:isConnecting(), msg)
|
local text = translateNetworkError(code, self:isConnecting(), msg)
|
||||||
signalcall(self.onLoginError, self, text)
|
signalcall(self.onLoginError, self, text)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue