Ir para conteúdo

Featured Replies

Postado

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)]})
  • Respostas 6
  • Visualizações 558
  • Created
  • Última resposta

Top Posters In This Topic

Postado

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 por Summ (veja o histórico de edições)

Postado
  • 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

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 por fireelement (veja o histórico de edições)

Postado
  • 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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo