Postado Agosto 18, 2018 6 anos 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!
Postado Agosto 23, 2018 6 anos Parabéns por disponibilizar essa funções, são realmente uteis, até acho que vou usar!
Postado Agosto 23, 2018 6 anos 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!
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.