Lua“尝试索引?(零值)

时间:2013-03-11 19:40:21

标签: lua computercraft

所以我的朋友和我正在尝试为ComputerCraft(Minecraft Mod)编写一个程序,它使用Lua作为编程语言。我之前没有做任何Lua,而且他玩了很多。基本上,我们试图用m.clear()清除一行文字,但我认为它可能不知道m是什么,即使我试图定义它。

对不起,如果问题措辞不当,请输入以下代码:

m = peripheral.wrap("right")
m.write("Shutting down.")
m.clear()
sleep(.1)
m.setcursorpos(1,1)
print("Shutting Down..")

其余代码的功能(更多相同)我不会发布,因为程序的功能是使它每次都添加.时间,如果你明白我的意思。但是,这不是重要的部分。 :)

注意: 我实际上并不知道peripheral.wrap("right")意味着什么,它是从计算机工具论坛上从另一个人的代码中获取的(他也想清除屏幕)。

6 个答案:

答案 0 :(得分:1)

这是在显示器上吗?

如果是,则显示器必须位于计算机的右侧。 m.clear()实际上被理解为peripheral.wrap("right").clear()并将访问右侧的监视器并使用命令clear()

如果您要在计算机上清除此内容,只需使用term.clear()

答案 1 :(得分:1)

函数peripheral.wrap(string side)返回一个表,其中包含计算机指定端外设的一些函数(如果没有找到,则返回nil)。 你得到了错误,因为你试图以零形式到达变量(nil = nothing)。

调用以下内容会将Hello, World打印到显示器正面:

monitor = peripheral.wrap("top")
monitor.print("Hello, World")

同样地,你可以对你的终端做同样的事情(计算机gui,你不必包装它):

term.print("Hello, World")

如果您只想与gui(而不是外部显示器)进行交互,则需要使用表术语而不是peripheral.wrap()。

term.write("Shutting down.")
term.clear()
sleep(.1)
term.setCursorPos(1,1) --This is supposed to be setCursorPos not setcursorpos!!!
print("Shutting Down..")

答案 2 :(得分:0)

而不是m.clear()你应该使用term.clear()

答案 3 :(得分:0)

我认为第一行应该是“本地m = ......” 另外,peripheral.wrap(“右”)表示它可以通过在计算机右侧发送任何命令而不是尝试在计算机上运行它来使计算机右侧的调制解调器,打印机等可用。

答案 4 :(得分:0)

尝试检查它是否首先是否为零..

if m ~= nil then
  m.clear()
else 
 print("can't connect")
end

答案 5 :(得分:0)

尝试使用term.clear()代替m.clear()