2013-03-11 135 views
0

所以我和我的朋友正在爲ComputerCraft(Minecraft Mod)編寫一個程序,該程序使用Lua作爲編程語言。我之前沒有做過任何Lua,他是基本上,我們試圖用m.clear()來清除一行文字,但我認爲它可能不知道m是什麼,即使我試圖定義它也是如此。Lua「嘗試索引?(一個零值)

對不起,如果問題是措辭不當,下面的代碼:

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

和代碼的其餘部分的功能(這只是更多的相同),我將不會發布,因爲ŧ如果你明白我的意思,那麼程序的功能就是使它每次都會添加一個.。但是,這不是重要的部分。 :)

說明: 我實際上不知道什麼peripheral.wrap("right")的意思,它是從另一個人的代碼ComputerCraft論壇(他也想清除屏幕)。

+8

哪行引發錯誤? 'm.write( 「...」)'?如果是這樣,當您調用peripheral.wrap()時,API不會返回對象,並且您必須進行調查才能看到原因。 – 2013-03-11 20:31:58

回答

0

代替m.clear(),你應該使用term.clear()

+0

部分正確......如果他想讓它在屏幕上顯示,那麼術語。'是**不正確 – Mischa 2017-07-03 13:22:19

1

這是在監視器上?

如果是,則顯示器必須位於計算機的右側。 m.clear()實際上理解爲peripheral.wrap("right").clear(),並將訪問右側的顯示器並使用命令clear()

如果您試圖在計算機上清除此項,只需使用term.clear()即可。

0

我認爲第一行應該是「local m = ...」 另外,peripheral.wrap(「right」)表示它通過發送任何命令使得計算機右側的調制解調器,打印機等可用而不是試圖在電腦上運行它。

0

嘗試檢查,看它是否是零第一或不..

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

函數​​返回一個包含計算機指定側的外設的一些函數的表(如果沒有找到,則返回nil)。 你得到了錯誤,因爲你試圖在零(nil =無)的變量。

調用下面將打印Hello, World到監視器前面:

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

同樣,你可以做同樣的與你的終端(計算機圖形用戶界面,你不必把它包起來):

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..") 
相關問題