Merge pull request #934 from diath/fix_login_protocol

Fix parsing the premium status in newer login protocol versions
master
Samuel Gros 6 years ago committed by GitHub
commit 07b4b785fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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…
Cancel
Save