Ir para conteúdo

Repeatfunction(Func, Stopfunc, Sin, Result, Quant, ...)


caotic

Posts Recomendados

Ola galera.

Fiz esta função para que ela repita uma função X vezes até que outra função seja verdadeira.

 

Vamos aos scripts crie um arquivo Lua chamado functions em Lib e coloque este codigo:

function repeatFunction(func, stopfunc, sin, result, quant, ...)
if tostring(sin) == "maior" then
k = 0
while stopfunc < result do
func(...)
k = k+1
if k >= quant then
return false
end
end
end
if tostring(sin) == "menor" then
k = 0
while stopfunc > result do
func(...)
k = k+1
if k >= quant then
return false
end
end
end
if tostring(sin) == "igual" then
k = 0
while stopfunc ~= result do
func(...)
k = k+1
if k >= quant then
return false
end
end
end
end

 

Pode parecer confusa mais e muito simples.

 

Exemplos de usos:

 

repeatFunction(print, getPlayerLevel(cid), "menor", 40, 10, "Xtibia")

 

No exemplo acima ela da print 10 vezes "xtibia" se o level do player seja maior do que 40.

Se o level do player for menor do que 40 a função para.

 

Vamos para mais exemplos:

 

repeatFunction(doSendMagicEffect, getPlayerLevel(cid), "igual", 40, 10, getCreaturePosition(cid), 2)

 

Neste exemplo ele via mandar um efeito 2 dez vezes ate que o level do player seja igual a 40

Vamos ver os paramêtros da função:

repeatFunction(func, stopfunc, sin, result, quant, ...)

func -- função que irá repetir

stopfunc -- função que precisa ser verdadeira para parar a repetição

sin -- sinal da verificação da stopfunc [igual,menor,maior]

result --que valor stopfunc precisa ser para ser verdadeira

quant -- quantidade de vezes que func irá repetir ate que stopfunc seja verdadeira

... -- Coloque os parâmetros da função (func)

 

Obs:

Eu achei a função cheia de "blabla" mais ela e funcional e podera achar ultilidade para ela

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

Bem como o Demonbholder disse, dá pra simplificar MUITO usando loadstring, sintaxe do loadstring:

loadstring("print 'oi'")()

 

Exemplo de uso:


function repeatFunction(func, qnt, cond, vars)
  for a = 1, qnt do
     if loadstring(vars .. " return ".. cond)() then
        loadstring("local cid = _G['cid'] ".. func)()
     end
  end
  return true
end

repeatFunction("print('oi')", 5, "a > 0", "a = 2")

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...