Postado Fevereiro 15, 2015 10 anos Pensei em fazer esta função há um tempo. Alguns membros, que também programam, tentaram desenvolve-la quando comentei sobre ela em um grupo do skype.math.round reconhece, automaticamente, se o número é um inteiro ou decimal e o arredonda para cima ou para baixo, seguindo a condição >= ou < do que 5, respectivamente. Eu preferi fazer para que o arredondamento sempre resulte em um inteiro não-negativo e não-nulo. Ao meu ver, a função tem mais utilidade desse modo e, já que o resultado de n segue essa regra, não é possível utilizar números negativos ou nulos. Se utilizados, nil é retornado. Sem mais delongas, adicione a qualquer arquivo com extensão Lua da library do seu servidor (data\lib): math.round = function (n) -- Developed by Wise ~ TibiaKing.com if not tonumber(n) or n < 1 then return nil end n = tostring(n) local d = string.format('%.1f', n) if n:find('%.') then n = tonumber(string.explode(d, '.')[2]) > 4 and math.round(math.ceil(tonumber(d))) or math.round(math.floor(tonumber(d))) else local r = tonumber(n:sub(n:len())) n = tonumber(n) n = n > 10 and (r > 4 and n + (10 - r) or n - r) or (n > 4 and 10 or 1) end return n end Mas, quando e como ela seria útil? t = {10, 30, 50, 70, 90} if isInArray(t, math.round(getPlayerStorageValue(cid, storage))) then block end Por exemplo, temos uma tabela com n elementos. Os n elementos são números inteiros não-negativos e não-nulos, e um creatureid recebe values em quantidades decimais ou simplesmente aleatórios, dos quais serão arredondados pela função, formando um value "final". Se esse value estiver incluso na tabela, então executará um bloco..etc. Há inúmeras possibilidades, use a sua criatividade..mentalize. Saiba também que, para executar a função de arredondamento, é necessário ter a função string.explode: string.explode = function (str, separator) local ret = {} str = tostring(str) .. separator local sep for a = 1, #str do if not sep then sep = a end for b = a, #str do if a ~= 1 and str:sub(a, b) == separator then table.insert(ret, str:sub(sep, b - 1)) sep = nil end end end return ret end No caso, essa função acima não é a própria para o Open Tibia, portanto, pode ser utilizada em qualquer ambiente que tenha Lua como linguagem. Abraços. The corrupt fear us. The honest support us. The heroic join us.
Postado Fevereiro 15, 2015 10 anos Boa suicide! Gostei da ideia, ta manjando:) Ot Design: https://discord.gg/VgtVRNmCD7
Postado Fevereiro 15, 2015 10 anos Autor Que nada, coisa simples..moça do cabelo flamejante. Obrigado. The corrupt fear us. The honest support us. The heroic join us.
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.