2017-08-26 16 views
0

私はコンピュータ、モニタ、モデムなどを追加するMinecraftのModであるComputerCraftを使用しています。これはLuaスクリプトを使ってプログラムすることができます。基本的なLUAの問題

http://www.computercraft.info/wiki/Main_Page

私のスクリプトを実行している間、私はこのエラーを取得する: "BIOS:171:悪い引数:文字列が期待されるが、皆無だし"。

私のコードは30行を超えていませんが、それは行171と言われているので、私は理解しません。誰かが説明できますか?

monitor = peripheral.wrap("right") 
monitor.clear() 
monitor.setCursorPos(1, 1) 
monitor.setTextScale(1) 
monitor.write("Current mode:") 
monitor.setCursorPos(1, 3) 
monitor.write("furnace") 
redstone.setOutput("back", false) 
print("blablabla") 
write() 
if input == ja then 
    print("k") 
    redstone.setOutput("back", true) 
    monitor.clear() 
    monitor.setCursorPos(1, 1) 
    monitor.write("blabla") 
else 
    print("u sux") 
end 

ヘルプが高く評価されます。

+0

私はわかりません、何が '周辺機器'なのですか? –

+0

はい、周辺機器を知らずに推測するのはほとんど不可能ですが、 'write()'と同じようにこのコマンドを見てください。 – macroland

+0

@JacekCz http: /computercraft.info/wiki/Peripheral_(API) – Ynk

答えて

3

スクリプトで使用できる関数を実装するbios.luaでエラーが発生しました。 writeのように。

bios.luaを調べると、171行目が実際にwriteの実装の一部であることがわかります。

それは言う:while string.len(sText) > 0 dosText

はライン154

function write(sText)への入力引数ですsTextnilである場合には、適切なエラー処理やデフォルト値はありません。プログラマーはここでうんざりした仕事をしました。

この場合、行171のstring.len(sText)は受け取ったエラーを引き起こします。

writeへの空の呼び出しを削除する必要があることを修正するには、write(nil)に相当するか、入力文字列を入力する必要があります。

write("something")エラーは発生しません。空の文字列を印刷する場合は、write("")を呼び出してください。