Postado Fevereiro 12, 2015 10 anos Gostaria de saber como faço um math.random sem repetir os random. Estou fazendo assim mais sempre repete? if getCreatureOutfit(cid).lookType == 511 then roupas = {437, 438, 439, 440} else roupas = {43, 43, 49, 40} end doCreatureChangeOutfit(pk[a], {lookType = roupas[math.random(#roupas)]})
Postado Fevereiro 12, 2015 10 anos Palavras do elwyn : Antes de usar o math.random() usa o math.randomseed(os.time()). Sobre o porquê de ser assim: Computadores não geram nada realmente aleatório. O que o math.random faz é pegar um numero para usar como base para gerar outros números. Se o número que ele pega, o chamado seed, for sempre igual, então ele vai gerar números sempre iguais. if getCreatureOutfit(cid).lookType == 511 then roupas = {437, 438, 439, 440} else roupas = {43, 43, 49, 40} end math.randomseed(os.time()) doCreatureChangeOutfit(pk[a], {lookType = roupas[math.random(#roupas)]}) Editado Fevereiro 12, 2015 10 anos por Summ (veja o histórico de edições)
Postado Fevereiro 12, 2015 10 anos Autor Palavras do elwyn : Antes de usar o math.random() usa o math.randomseed(os.time()). Sobre o porquê de ser assim: Computadores não geram nada realmente aleatório. O que o math.random faz é pegar um numero para usar como base para gerar outros números. Se o número que ele pega, o chamado seed, for sempre igual, então ele vai gerar números sempre iguais. if getCreatureOutfit(cid).lookType == 511 then roupas = {437, 438, 439, 440} else roupas = {43, 43, 49, 40} end math.randomseed(os.time()) doCreatureChangeOutfit(pk[a], {lookType = roupas[math.random(#roupas)]}) Mas então agora o random repete todos gostaria que fosse todos diferentes se eu me expressei errado desculpa.
Postado Fevereiro 12, 2015 10 anos tenta isso: local function norepeat(a, b) local z = math.random(#a) local p = a[z] if b == p then table.remove(a, z) return a[math.random(#a)] else return p end end local outfit = getCreatureOutfit(cid).lookType local roupas = {437, 438, 439, 440} if(not outfit == 511) then roupas = {43, 43, 49, 40} end doCreatureChangeOutfit(pk[a], norepeat(roupas, outfit)) Editado Fevereiro 12, 2015 10 anos por fireelement (veja o histórico de edições)
Postado Fevereiro 12, 2015 10 anos Autor Como não foi acabei optando por fazer um if já que com random ta dificil, ficando assim e o que vcs acham já que são mais experientes? if getCreatureOutfit(cid).lookType == 511 then outfit1 = 43 outfit2 = 44 outfit3 = 45 outfit4 = 46 outfit5 = 47 outfit6 = 48 elseif outfit == 512 then outfit1 = 49 outfit2 = 50 outfit3 = 51 outfit4 = 52 outfit5 = 53 outfit6 = 54 else outfit1 = 55 outfit2 = 56 outfit3 = 57 outfit4 = 58 outfit5 = 59 outfit6 = 60 end e pra cada pokemon eu chamo a funçao doCreatureChangeOutfit(pk[1], {lookType = Unown1}) doCreatureChangeOutfit(pk[2], {lookType = Unown2}) doCreatureChangeOutfit(pk[3], {lookType = Unown2}) etc... Editado Fevereiro 12, 2015 10 anos por nociam (veja o histórico de edições)
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.