Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bem, resolvi trazer duas funções simples que já utilizo há um bom tempo e que creio que é realmente útil para o desenvolvimento de alguns scripts que envolvem operações com "tempo". Basicamente, elas evitam aqueles comentários "-- tempo em segundos" ou "-- tempo em minutos" e por aí vai, que acabam por diminuir a flexibilidade do script (uma das maiores vantagens da nossa querida linguagem Lua!).

 

São elas:

  • mathtime
function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return error("Bad declaration in mathtime function.")
end

Explicação: Essa função converte o tempo (especificado em um vetor que será o argumento da função) sempre para segundos. O primeiro elemento do vetor deve ser um número e o segundo a unidade de tempo.

 

As unidades de tempo aceitáveis são:

 

"sec" - segundo(s)

"min" - minuto(s)

"hour" - hora(s)

"day" - dia(s)

 

Exemplo: 

local tempo = {2, "min"}

print(mathtime(tempo))

-- valor retornado: 120

 

  • getStrTime
function getStrTime(table) -- by dwarfer
local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"}
return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or ""))
end

Explicação: Essa função bem simples é basicamente para converter o tempo especificado em texto (em inglês) como um complemento à função mathtime.

 

Exemplo:

local tempo = {3, "hour"}

print(getStrTime(tempo))

-- valor retornado: 3 hours

 

Um exemplo simples e prático de um script utilizando ambas as funções acima e que envia uma mensagem depois de determinado tempo do player ter clicado em um item é demonstrado abaixo:

local tempo_para_receber_msg = {3, "min"}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You will receive the surprise message in "..getStrTime(tempo_para_receber_msg)..".")
    addEvent(function()
        if isPlayer(cid) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Tibia King: All about Tibia, bots and Ot servers!")
        end
    end, mathtime(tempo_para_receber_msg) * 1000)
    return true
end

Quem quiser ver para crer é só testar! :)

Contato:

 

Link para o post
Compartilhar em outros sites

Não faço códigos, mas já tentei criar actions e movements usando tempo e foi muito confuso, sem falar que procurei em diversos lugares e não encontrei o que eu precisava. Belo tópico, organizado e ótimo conteúdo!

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo