Ir para conteúdo
  • 0

[Resolvido] função contagem de tempo


brendoonh

Pergunta

Boa noite! 

Uso um sistema que a cada 1h online recebe 1 ponto, eu gostaria de adicionar na talkactions uma função que faz a contagem de tempo para recebe o proximo points. 

Se alguem puder ajudar, obrigado!
8.60 / 0.4

points/talkactions

 

function onSay(cid, words, param, channel)
local getP = getPoints(cid)

doPlayerPopupFYI(cid, "Voce possui ".. getP .." p-points!")

return true

end


points/globalevents

--[[
P Points System by LsM.

###### © 2011

Version : v1.0

]]--

 

local config = {

p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )

p_points = 1 -- Quantidade de pontos recebida a cada "p_time"

}

 

local function givePoints(cid, quant)

if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then

doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, proximo p-points daqui 2 horas.")

doPlayerAddPoints(cid, quant)

doCreatureSetStorage(cid, 1219, 0)

doCreatureSetStorage(cid, 1219, os.time())

end

return true

end

 

function onThink(interval)

for i, v in pairs(getPlayersOnline()) do

givePoints(v, config.p_points)

end

return true

end


 

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

tankactions:
 

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time()
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end


globalevent:
 

--[[
P Points System by LsM.

###### © 2011

Version : v1.0
]]--

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local function givePoints(cid, quant)
    if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, os.time())
    end
    return true
end

function onThink(interval)
    for i, v in pairs(getPlayersOnline()) do
        givePoints(v, config.p_points)
    end
    return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, El Rusher disse:

tankactions:
 

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time()
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end


globalevent:
 

--[[
P Points System by LsM.

###### © 2011

Version : v1.0
]]--

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local function givePoints(cid, quant)
    if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, os.time())
    end
    return true
end

function onThink(interval)
    for i, v in pairs(getPlayersOnline()) do
        givePoints(v, config.p_points)
    end
    return true
end

 

Obrigado pela ajuda!!


Testei aqui, n deu nenhum erro ao iniciar o servidor, porem, qnd uso o comando !ppoint não funciona e gera este erro que vou deixar a baixo..

[0:36:26.181] [Error - TalkAction Interface]
[0:36:26.184] data/talkactions/scripts/points.lua:onSay
[0:36:26.186] Description:
[0:36:26.188] data/talkactions/scripts/points.lua:6: attempt to index global 'config' (a nil value)
[0:36:26.193] stack traceback:
[0:36:26.194]   data/talkactions/scripts/points.lua:6: in function <data/talkactions/scripts/points.lua:1>

 

Link para o comentário
Compartilhar em outros sites

  • 0

no points.lua adicione o seguinte no inicio do script: 

 

local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}



 

local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time()
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end
 

Editado por El Rusher
Link para o comentário
Compartilhar em outros sites

  • 0

Perfeito!! Obrigado pela ajuda @El Rusher Deus te abençoe

 

22 horas atrás, El Rusher disse:

tankactions:
 

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time()
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end


globalevent:
 

--[[
P Points System by LsM.

###### © 2011

Version : v1.0
]]--

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local function givePoints(cid, quant)
    if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, os.time())
    end
    return true
end

function onThink(interval)
    for i, v in pairs(getPlayersOnline()) do
        givePoints(v, config.p_points)
    end
    return true
end

 

Notei que tem algo errado, criei um char novo, ele ja chegou ganhando 1 point.. 

 

Editado por brendoonh
Link para o comentário
Compartilhar em outros sites

  • 0
18 horas atrás, brendoonh disse:

Obrigado pela ajuda!!


Testei aqui, n deu nenhum erro ao iniciar o servidor, porem, qnd uso o comando !ppoint não funciona e gera este erro que vou deixar a baixo..

[0:36:26.181] [Error - TalkAction Interface]
[0:36:26.184] data/talkactions/scripts/points.lua:onSay
[0:36:26.186] Description:
[0:36:26.188] data/talkactions/scripts/points.lua:6: attempt to index global 'config' (a nil value)
[0:36:26.193] stack traceback:
[0:36:26.194]   data/talkactions/scripts/points.lua:6: in function <data/talkactions/scripts/points.lua:1>

 

@brendoonh

 

Este erro ainda está ocorrendo?

 

Caso não, a dúvida foi resolvida?

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho só a duvida sobre os novos personagens estarem chegando e ganhando 1 ppoint e n contando 1h apos o char ser criado.


@edit

Bom, o que está acontecendo que eu gostaria de saber se existe solução, quando o servidor fica "off" o tempo continua contando. Provavelmente por isso que quando cria um novo personagem ele ja chega recebendo 1 ppoint. Até o account manager recebe qnd loga nele.

Editado por brendoonh
Link para o comentário
Compartilhar em outros sites

  • 0

bom dia

talkaction:
 

local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time() -- Usa o tempo de jogo
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end



globalevent:
 

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos (1 hora)
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local GLOBAL_TIME_STORAGE = 1220 -- Define um storage global para o tempo de jogo

local function givePoints(cid, quant)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time() -- Usa o tempo de jogo
    if currentTime - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, currentTime)
    end
    return true
end

function onThink(interval)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time()
    setGlobalStorageValue(GLOBAL_TIME_STORAGE, currentTime + interval)

    for i, v in pairs(getPlayersOnline()) do
        if getCreatureStorage(v, 1219) > 0 then -- Verifica se o storage está inicializado
            givePoints(v, config.p_points)
        else
            doCreatureSetStorage(v, 1219, currentTime) -- Inicializa o storage para novos personagens
        end
    end
    return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, El Rusher disse:

bom dia

talkaction:
 

local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time() -- Usa o tempo de jogo
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end



globalevent:
 

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos (1 hora)
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local GLOBAL_TIME_STORAGE = 1220 -- Define um storage global para o tempo de jogo

local function givePoints(cid, quant)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time() -- Usa o tempo de jogo
    if currentTime - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, currentTime)
    end
    return true
end

function onThink(interval)
    local currentTime = getGlobalStorageValue(GLOBAL_TIME_STORAGE) or os.time()
    setGlobalStorageValue(GLOBAL_TIME_STORAGE, currentTime + interval)

    for i, v in pairs(getPlayersOnline()) do
        if getCreatureStorage(v, 1219) > 0 then -- Verifica se o storage está inicializado
            givePoints(v, config.p_points)
        else
            doCreatureSetStorage(v, 1219, currentTime) -- Inicializa o storage para novos personagens
        end
    end
    return true
end

 

 

Bugou geral... ta espalhando pontos para todos os personagens a cada sei la, 2 ou 3 segundos. o tempo pelo comando ficou marcando horas para ganhar o proximo, mas na vdd ta sendo a cada intervalo de tempo citado anteriormente.

 

Spoiler

n1AaoBO.png

 

 

 

 

 

 

Editado por brendoonh
Link para o comentário
Compartilhar em outros sites

  • 0
local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time() -- Usa o tempo de jogo
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end



 

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos (1 hora)
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local GLOBAL_TIME_STORAGE = 1220 -- Define um storage global para o tempo de jogo

local function givePoints(cid, quant)
    local currentTime = os.time() -- Usa o tempo de jogo
    if currentTime - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, currentTime)
    end
    return true
end

function onThink(interval)
    local currentTime = os.time()
    setGlobalStorageValue(GLOBAL_TIME_STORAGE, currentTime)

    for i, v in pairs(getPlayersOnline()) do
        if getCreatureStorage(v, 1219) > 0 then -- Verifica se o storage está inicializado
            givePoints(v, config.p_points)
        else
            doCreatureSetStorage(v, 1219, currentTime) -- Inicializa o storage para novos personagens
        end
    end
    return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
25 minutos atrás, El Rusher disse:
local config = {
    p_time = 3600 -- Tempo em segundos para receber os pontos (1 hora)
}

function onSay(cid, words, param, channel)
    local getP = getPoints(cid)
    local lastTime = getCreatureStorage(cid, 1219)
    local currentTime = os.time() -- Usa o tempo de jogo
    local timeElapsed = currentTime - lastTime
    local timeRemaining = config.p_time - timeElapsed

    if timeRemaining < 0 then
        timeRemaining = 0
    end

    local hours = math.floor(timeRemaining / 3600)
    local minutes = math.floor((timeRemaining % 3600) / 60)
    local seconds = timeRemaining % 60

    doPlayerPopupFYI(cid, string.format("Você possui %d p-points!\nPróximo ponto em: %02d:%02d:%02d", getP, hours, minutes, seconds))

    return true
end



 

local config = {
    p_time = 3600, -- Tempo em segundos para receber os pontos (1 hora)
    p_points = 1 -- Quantidade de pontos recebida a cada "p_time"
}

local GLOBAL_TIME_STORAGE = 1220 -- Define um storage global para o tempo de jogo

local function givePoints(cid, quant)
    local currentTime = os.time() -- Usa o tempo de jogo
    if currentTime - getCreatureStorage(cid, 1219) >= config.p_time then
        doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, próximo p-points daqui 1 hora.")
        doPlayerAddPoints(cid, quant)
        doCreatureSetStorage(cid, 1219, currentTime)
    end
    return true
end

function onThink(interval)
    local currentTime = os.time()
    setGlobalStorageValue(GLOBAL_TIME_STORAGE, currentTime)

    for i, v in pairs(getPlayersOnline()) do
        if getCreatureStorage(v, 1219) > 0 then -- Verifica se o storage está inicializado
            givePoints(v, config.p_points)
        else
            doCreatureSetStorage(v, 1219, currentTime) -- Inicializa o storage para novos personagens
        end
    end
    return true
end

 

Aparentemente funcionou certinho!! Você é fera!! Valeu!

Algum moderador pode fechar o topico se quiser!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...