Lua - 情侣问题

时间:2013-04-25 03:01:58

标签: lua

我是编码的人。所以,请注意我是否面对某些事情。

无论如何,我正在为一个操作系统制作一个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

2 个答案:

答案 0 :(得分:3)

我发现您的代码存在一些问题。

首先,TrueFalse都是无意义的名称 - 除非您之前已经为其指定了某些内容,否则它们都等于nil。因此,您的YesNo变量也都设置为nil。这不是因为在lua中不存在true和false - 它们只是小写:truefalse。创建YesNo变量是多余的,难以阅读 - 只需直接使用truefalse

其次,如果您使用从其网站下载的标准lua,sleep不是有效的功能(虽然它是Lua的Roblox版本,或者我听说过)。与大写TrueFalse一样,默认情况下,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