Lua“尝试索引?(无值)

问题描述 投票:1回答:7

所以我和我的朋友正在尝试为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")是什么意思,它是从ComputerCraft论坛的另一个人的代码中提取的(他也想清除屏幕)。

lua computercraft
7个回答
1
投票

是在监视器上吗?

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

[如果您想在计算机上清除它,只需使用term.clear()


1
投票

功能peripheral.wrap(string side)从计算机的指定端返回包含一些功能的表(如果未找到,则返回nil)。您收到错误是因为您试图以nil的形式到达变量(nil =无)。

调用以下命令将在显示器的前面打印Hello, World

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

类似地,您可以在终端机上进行相同的操作(计算机gui,您不必包装它:]

term.print("Hello, World")

如果只想与gui(而不是外部监视器)进行交互,则要使用表术语而不是pheral.wrap()。

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

0
投票

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


0
投票

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


0
投票

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

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

0
投票

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


0
投票

我遇到类似的错误,我是程序名试图建立索引? (零值)

© www.soinside.com 2019 - 2024. All rights reserved.