caotic 393 Postado Novembro 15, 2012 Share Postado Novembro 15, 2012 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 https://xtibia.com/forum/topic/198947-repeatfunctionfunc-stopfunc-sin-result-quant/ Compartilhar em outros sites More sharing options...
Yan Oliveira 215 Postado Novembro 15, 2012 Share Postado Novembro 15, 2012 Parabéns achei dahora, depois te do Rep+ pq to sem agora. Link para o comentário https://xtibia.com/forum/topic/198947-repeatfunctionfunc-stopfunc-sin-result-quant/#findComment-1388152 Compartilhar em outros sites More sharing options...
SmiX 265 Postado Novembro 21, 2012 Share Postado Novembro 21, 2012 Parabéns Caotic, bela function... Gostei muito mesmo.. RESP + pra ti.. Link para o comentário https://xtibia.com/forum/topic/198947-repeatfunctionfunc-stopfunc-sin-result-quant/#findComment-1391872 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Novembro 23, 2012 Share Postado Novembro 23, 2012 Nossa, dava pra diminuir muito a função usando loadstring. Link para o comentário https://xtibia.com/forum/topic/198947-repeatfunctionfunc-stopfunc-sin-result-quant/#findComment-1393441 Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Janeiro 4, 2013 Share Postado Janeiro 4, 2013 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 https://xtibia.com/forum/topic/198947-repeatfunctionfunc-stopfunc-sin-result-quant/#findComment-1430377 Compartilhar em outros sites More sharing options...
Posts Recomendados