Postado Janeiro 12, 2017 8 anos Uma função que pode ser útil de varias maneiras: Spoiler function getNumberVector(k) if(type(k) ~= "string") then return error("bad argument #1 to function '" .. debug.getinfo(1, "n").name .. "' (string expected, got " .. type(k) .. ")", 2) end local ret, sep = {}, k:explode(";") for _, vec in ipairs(sep) do if(vec:find("-")) then local fromTo = vec:explode("-") if(fromTo and tonumber(fromTo[1]) and tonumber(fromTo[2])) then for i = tonumber(fromTo[1]), tonumber(fromTo[2]) do table.insert(ret, i) end end elseif(tonumber(vec)) then table.insert(ret, vec) end end return ret end Como funciona? Bom... Ela retorna uma tabela contendo os números do vector, da mesma forma que no XML. Exemplo: "1-50;60;80" ele retornaria uma tabela contendo os números de 1 a 50 e também o 60 e 80. Ainda não entendeu? Então aqui vai alguns scripts de exemplo: Exemplo 1: Spoiler local conf = { ["1;5"] = "Sorcerer", ["2;6"] = "Druid", ["3;7"] = "Paladin", ["4;8"] = "Knight" } function onSay(cid, words, param, channel) for k, v in pairs(conf) do local vec = getNumberVector(k) if(isInArray(vec, getPlayerVocation(cid))) then doPlayerSendTextMessage(cid, 22, "You are " .. v .. ".") -- retorna o nome da vocação baseada no vocationId break end end return true end Exemplo 2: Spoiler local conf = { ["1-49"] = "Very Weak", ["50-99"] = "Weak", ["100-149"] = "Medium", ["150-199"] = "Strong", ["200-299"] = "Very Strong", ["300-449"] = "Incredible", ["450-699"] = "Immortal" } function onSay(cid, words, param, channel) local s for k, v in pairs(conf) do local vec = getNumberVector(k) if(isInArray(vec, getPlayerLevel(cid))) then s = v break end end doPlayerSendTextMessage(cid, 22, "Based in your level you are: " .. (s or "Invincible").. ".") -- retorna titulo baseado no level return true end Já da pra ter uma noção de como funciona.
Postado Janeiro 12, 2017 8 anos Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP. Spoiler Congratulations, your content has been approved! Thank you for your contribution, we of Tibia King we are grateful. Your content will help many other users, you received +1 REP.
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.