我是编码的人。所以,请注意我是否面对某些事情。
无论如何,我正在为一个操作系统制作一个alpha阶段吗?我正在制作我的安装程序。两个问题。我可以从pastebin获取代码然后让我的lua脚本下载吗?二。我把代码的“打印”部分放在cmd中。我得到“非法人物”。我不知道出了什么问题。这是我的代码。
--Variables
Yes = True
No = False
--Loading Screen
print ("1")
sleep(0.5)
print("2")
sleep(0.5)
print("Dowloading OS")
sleep(2)
print("Done!")
sleep(0.2)
print("Would you like to open the OS?")
end
答案 0 :(得分:3)
我发现您的代码存在一些问题。
首先,True
和False
都是无意义的名称 - 除非您之前已经为其指定了某些内容,否则它们都等于nil
。因此,您的Yes
和No
变量也都设置为nil
。这不是因为在lua中不存在true和false - 它们只是小写:true
和false
。创建Yes
和No
变量是多余的,难以阅读 - 只需直接使用true
和false
。
其次,如果您使用从其网站下载的标准lua,sleep
不是有效的功能(虽然它是Lua的Roblox版本,或者我听说过)。与大写True
和False
一样,默认情况下,sleep为nil
,因此调用它将无效。根据您运行此功能的情况,如果您使用的是Mac,则需要使用os.execute("sleep " .. number_of_seconds)
;如果您使用的是PC,则需要os.execute("timeout /t " .. number_of_seconds)
。您可能希望将它们包装到function
function my_sleep_mac(number_of_seconds)
os.execute("sleep " .. number_of_seconds)
end
function my_sleep_PC(number_of_seconds)
os.execute("timeout /t " .. number_of_seconds)
end
至于您遇到的具体错误,我认为这是由于您的end
声明作为您的计划的结束。 lua中的end
并不完全符合您的想法 - 它没有指定程序的结束。 Lua可以通过查看文件中是否还有任何文本来确定程序的结束位置。没有你说它是代码的各个子块结束,IE if
语句的分支,function
等等,它无法弄清楚。例如,假设您编写代码< / p>
print("checking x...")
if x == 2 then
print("x is 2")
print("Isn't it awesome that x is 2?")
print("x was checked")
lua无法知道打印x
的最后一个语句是否仅在x
为2或始终为止时才会发生。因此,您需要明确说明代码的各个部分何时结束,您使用end
。但是对于文件来说,这是不必要的,实际上会导致错误。这是引入了if
的{{1}}语句
end
虽然lua不关心,但是缩进这些代码部分是一个非常好的主意,这样你就可以一眼就看出它的起点和终点:
print("checking x...")
if x == 2 then
print("x is 2")
print("isn't it awesome that x is 2?")
end
print("x was checked")
关于你的“pastebin”问题,你必须更加具体。
答案 1 :(得分:0)
您可以以独立于操作系统(但CPU密集型)的方式实现sleep
:
local function sleep(seconds)
local t0 = os.clock()
repeat
until os.clock() - t0 >= seconds
end