Função wait() em Lua

wait() em Lua

Boa tarde, eu estava aqui pensando se tem algum modo de criar a função wait() da API do Roblox em Lua pura. Então eu tentei:

segundos = 5 * 10000;

for i = 0, segundos do
    i = i + 1;
end

print("Ufa!");

E não funciona, o print vai na mesma hora que dou Debug.

Então eu tentei com while, tentei criar uma função, tentei botar um return e nada funciona. Alguém tem alguma ideia de como fazer isso?

Lua é uma linguagem de scripting embutida em outros sistemas, logo é dependente da implementação de onde ela está embutida. Por padrão ela não tem sleep nem wait.

Mas, existem muitas formas de replicar isso:
http://lua-users.org/wiki/SleepFunction

Duas que achei legais:

function sleep(s)
  local ntime = os.time() + s
  repeat until os.time() > ntime
end

E essa que usa o sleep do próprio sistema (talvez não funcione em Windows):

require "posix"
posix.sleep(3)
3 Curtidas

Valeu de verdade Split :heart:!

2 Curtidas

Também tem como fazer assim, que é quase a mesma coisa:

local function wait(s)
	repeat until os.clock() > s
end
2 Curtidas

Essa opção vai ter flutuação dependendo do FPS e de quando ocupada esteja a CPU e os threads do OS, então a espera não vai ser exatamente s. Mas, ela é útil e direta ao ponto! A mais fácil, na verdade.

2 Curtidas