我正在尝试通过改变一天中的时间为游戏创建一个简单的脚本,但我想以快速动作完成它。所以这就是我所说的:
function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end
等等。我该怎么做呢?
答案 0 :(得分:14)
Lua没有提供标准sleep
功能,但有多种方法可以实现,有关详细信息,请参阅Sleep Function。
对于Linux,这可能是最简单的一个:
function sleep(n)
os.execute("sleep " .. tonumber(n))
end
在Windows中,您可以使用ping
:
function sleep(n)
if n > 0 then os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL") end
end
使用select
的人应该得到一些关注,因为它是获得亚秒级分辨率的唯一可移植方式:
require "socket"
function sleep(sec)
socket.select(nil, nil, sec)
end
sleep(0.2)
答案 1 :(得分:3)
如果您安装了luasocket:
local socket = require 'socket'
socket.sleep(0.2)
答案 2 :(得分:2)
wxLua有三个睡眠功能:
local wx = require 'wx'
wx.wxSleep(12) -- sleeps for 12 seconds
wx.wxMilliSleep(1200) -- sleeps for 1200 milliseconds
wx.wxMicroSleep(1200) -- sleeps for 1200 microseconds (if the system supports such resolution)
答案 3 :(得分:1)
这个自制软件功能的精度可以降至十分之一秒或更短。
function sleep (a)
local sec = tonumber(os.clock() + a);
while (os.clock() < sec) do
end
end
答案 4 :(得分:0)
如果您使用的是基于 MacBook 或 UNIX 的系统,请使用:
VIRTUAL_ENV='path/to/._venv'
答案 5 :(得分:0)
我需要一些简单的投票脚本,所以我尝试了 Yu Hao's answer 中的 os.execute
选项。但至少在我的机器上,我不能再用 Ctrl+C 终止脚本。所以我使用 io.popen
尝试了一个非常相似的函数,这个函数确实允许提前终止。
function wait (s)
local timer = io.popen("sleep " .. s)
timer:close()
end
答案 6 :(得分:-1)
function wait(time)
local duration = os.time() + time
while os.time() < duration do end
end
这可能是向脚本添加等待/睡眠功能的最简单方法之一