Ir para conteúdo
Propaganda

Posts Recomendados

Olá hoje trago a voces um sistema de login diario feito diretamete em login.lua...vamos la.

em login.lua antes de onLogin(cid) coloque:

 

local STORAGE_LOGIN_DAYS = 50012 -- Armazena o número de dias de login do jogador
local STORAGE_LAST_LOGIN = 50013 -- Armazena a data do último login do jogador

-- Número máximo de dias para o prêmio de login antes de resetar
local MAX_LOGIN_DAYS = 30

-- Tabela de prêmios diários. Cada entrada representa um dia com um item e uma quantidade
local dailyRewards = {
    {itemId = 2148, count = 100},   -- Exemplo: 100 gold coins no Dia 1
    {itemId = 2152, count = 10},    -- Exemplo: 10 platinum coins no Dia 2
    {itemId = 2160, count = 1},     -- Exemplo: 1 crystal coin no Dia 3
    {itemId = 7632, count = 5},     -- Exemplo: 5 health potions no Dia 4
    {itemId = 7620, count = 3},     -- Exemplo: 3 mana potions no Dia 5
    -- Adicione mais dias e prêmios aqui até o dia 30
}

-- Função para dar o prêmio do dia específico ao jogador
local function giveDailyReward(cid, day)
    local reward = dailyRewards[day]
    if reward then
        local itemName = getItemNameById(reward.itemId) -- Obtém o nome do item
        doPlayerAddItem(cid, reward.itemId, reward.count)

        -- Exibe uma mensagem animada de recompensa de login
        local playerPosition = getCreaturePosition(cid)
        doSendAnimatedText(playerPosition, "Login Reward!", TEXTCOLOR_GREEN)
        doSendMagicEffect(playerPosition, CONST_ME_GIFT_WRAPS)

        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu um prêmio de login: " .. reward.count .. " unidades de " .. itemName .. "!")
    else
        print("Erro: prêmio para o dia " .. day .. " não encontrado.")
    end
end

Antes do  return true do arquivo coloque:

 

    local lastLoginDate = getPlayerStorageValue(cid, STORAGE_LAST_LOGIN)
    local currentDate = os.time()
    if lastLoginDate <= 0 or os.difftime(currentDate, lastLoginDate) >= 86400 then
    local loginDays = getPlayerStorageValue(cid, STORAGE_LOGIN_DAYS)
        if loginDays < 0 then loginDays = 0 end 
        if lastLoginDate > 0 and os.difftime(currentDate, lastLoginDate) > 86400 then
            loginDays = 0
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você perdeu a sequência de login diária. A sequência foi reiniciada.")
        end
        loginDays = loginDays + 1
        if loginDays > MAX_LOGIN_DAYS then
            loginDays = 1
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você completou 30 dias de login! A sequência foi reiniciada.")
        end
        setPlayerStorageValue(cid, STORAGE_LOGIN_DAYS, loginDays)
        setPlayerStorageValue(cid, STORAGE_LAST_LOGIN, currentDate)

        giveDailyReward(cid, loginDays)
    else
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem-vindo de volta! Você já recebeu o prêmio de login nas últimas 24 horas.")
    end

VAMOS AS EXPLICAÇÕES:
ESSE SITEMA VAI ARMAZENANDO OS DIAS QUE VOCÊ ENTRA NO GAME, CASO NÃO ENTRE UM DIA ELE RESETA OS DIAS VOLTANDO DO 1º DIA.

  • Like 4
  • Thanks 3
Link para o comentário
https://tibiadevs.com/forums/topic/841-login-di%C3%A1rio/
Compartilhar em outros sites

  • Administrador

Tópico Aprovado!
Somos gratos por sua contribuição ❤️  REP+

  • Like 1
Link para o comentário
https://tibiadevs.com/forums/topic/841-login-di%C3%A1rio/#findComment-4432
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...