Ir para conteúdo

Featured Replies

Postado
Em 08/02/2016 em 07:58, sertthoon disse:

Tenho uma dúvida, não sei se vou reviver, mas...

e se eu quiser que ele repita uma quantidade de vezes e depois pare?

por exemplo, como ele falou, aquele script vai ficar em um ciclo infinito, (até que alguem de reload)

e se eu quiser que ele execute apenas 5 vezes (faça 5 summons) e depois pare?

Use a recursividade pra isso, exemplo:

function doSomething (cid, times)
	if times == 0 then -- CRITÉRIO DE PARADA
		return true
	else
		addEvent (doSomething,     1000,      cid, times - 1) -- AO CHAMAR A FUNÇÃO NOVAMENTE TENHA CERTEZA Q SEU CRITERIO DE PARADA SERA ATINGIDO
		--         funcao        intervalo       parametros
	end
end

O que vai acontecer se eu chamar a função com doSomething (cid, 5)?

 

1) Vai para doSomething, times é diferente de 0 então vamos para o else. Else adiciona um evento para executar doSomething (cid, 4)

Passa um segundo do addEvent.

2) Vai para doSomething, times é diferente de 0 então vamos para o else. Else adiciona um evento para executar doSomething (cid, 3)

Passa um segundo do addEvent.

3) Vai para doSomething, times é diferente de 0 então vamos para o else. Else adiciona um evento para executar doSomething (cid, 2)

Passa um segundo do addEvent.

4) Vai para doSomething, times é diferente de 0, então vamos para o else. Else adiciona um evento para executar doSomething (cid, 1)

Passa um segundo do addEvent.

5) Vai para doSomething, times é IGUAL a zero, então encerramos a execução.

 

Nos slides desse site da federal de ouro preto: http://www.decom.ufop.br/romildo/2012-1/bcc222/slides/06-recursividade.pdf você tem a explicação com a linguagem de prog Haskell, a única coisa que você precisa saber pra não ficar perdido é que

pot2 n
		| n == 0 = 1
		| n > 0 = 2 * pot2 (n-1)

É equivalente ao que tem abaixo, em LUA:

function pot2(n)
	if n == 0 then
		return 1
	elseif n > 0 then
		return 2 * pot2 (n - 1)
	end
end

 

Editado por marcot (veja o histórico de edições)

  • Respostas 5
  • Visualizações 16.9k
  • Created
  • Última resposta

Top Posters In This Topic

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo