Minecraft-Java-Edition

如何讓烏龜在電腦技術中通過調製解調器 API 執行程序

  • May 15, 2022

我的世界裡有一台帶無線調製解調器的高級電腦,還有幾隻無線海龜。現在我想從那台電腦發送一個程序到烏龜並執行它。

我在ComputerCraft 網站上查找了調製解調器 API,但找不到方法。

我需要高級海龜嗎?FTB Mindcrack 1.4.7 有進階海龜嗎(不知道FTB Mindcrack 版中ComputerCraft 的版本)

如何向海龜發送程序並從我的高級電腦上執行它們?

首先讓我說 ComputerCraft 中的 Rednet API 很有趣。我想,我想任何給定的網路編碼都可能很有趣。

你可以做兩件事之一。您可以使用磁片將您的程序傳輸到海龜,然後向它發送命令以從電腦執行該程序,或者您可以將整個 lua 程序實際推送到電腦,然後命令它執行該程序。我將在這個答案中介紹這兩種解決方案。

您可以使用磁片將程序從電腦傳輸到海龜。要在電腦之間傳輸程序,您需要一個磁碟驅動器和一張空白磁片。將磁碟驅動器放在高級電腦旁邊,然後將磁片放入其中。您可以使用 將文件複製到磁碟copy <file> disk。現在您將程序儲存在磁片上。您現在可以使用磁片將程序放在 Turtle 上。把你的烏龜放在磁碟驅動器旁邊。您可以使用 .將文件從磁碟複製到海龜copy disk/<file> <file>。現在烏龜有了程序。確保你給那隻烏龜命名,label set <name>這樣當你破壞它時,所有的程序都會被儲存起來。

現在你有一個名為<file>你的海龜的文件。讓我們在海龜上設置一個名為 的程序server,它將偵聽一條消息,然後在 shell 中執行該消息。

rednet.open("right")
while true do
  senderID, message, distance = rednet.receive()
  if message == "exit" then
     break
  end
  shell.run(message)
end
rednet.close("right")

該程序將偵聽一條消息,將其作為 shell 命令執行,然後再次開始偵聽。因此,如果您發送它excavate 10,它將excavate使用參數啟動程序10,或者,如果您發送它<file>,它將執行您新複製的程序。相應的客戶端程序可能是這樣的:

rednet.open(<side>)
while true do
  input = read()
  rednet.send(<ID>, input)
  if input == "exit" then
     break
  end
end
rednet.close(<side>)

<ID>接收海龜的 ID 在哪裡。這將允許您在高級電腦上鍵入命令,以便海龜接收。


將整個 lua 程序推送到海龜會稍微複雜一些,但並不多。除了之前的 API 之外,您還需要使用fsAPI 來訪問海龜和電腦的文件系統shell

從一個名為send. 該程序的工作是讀取文件並將該文件作為字元串通過 rednet 發送。您可以使用fsAPI 完成此操作。讓我們首先從參數列表中打開一個文件並初始化所有內容:

args = {...}
infile = fs.open(args[1], "r")
rednet.open(<side>)
rednet.send(<ID>,args[1])
os.sleep(2)
filestring = infile.readAll()
rednet.send(<ID>,filestring)
rednet.close(<side>)
infile.close()

這將從參數中獲取輸入文件,並將其作為字元串通過 rednet 發送到位於<ID>. 然后海龜必須將此字元串寫入文件並執行該文件。

rednet.open("right")
while true do
  file = rednet.receive()
  contents = rednet.receive()
  outfile = fs.open(file, "w")
  outfile.write(contents)
  outfile.flush()
  shell.run(file)
end
rednet.close("right")

這應該接收一個文件名,後跟一個帶有文件內容的大字元串,將其寫入文件名,然後執行該文件。

所以你可以這樣做。您可以在海龜上預定義命令,也可以將整個 lua 文件作為消息發送,並讓海龜在執行之前將該消息寫入本地文件。無論哪種方式都有效。

引用自:https://gaming.stackexchange.com/questions/247948