Minecraft-Java-Edition

這段程式碼我哪裡出錯了?

  • April 29, 2014

FTB Direwolf20 v 1.0.21 CC 1.57

我有一個海龜探勘腳本,我在第 18 行收到錯誤“嘗試呼叫 nil”:

if turtle.getFuelLevel() >= turtle.getFuelLimit() - 500 then

並且看不到是什麼原因造成的。這是完整的程式碼:

chestFuel = 15
fuel = 14

function CheckFuel()
if turtle.getFuelLevel() ~= 'unlimited' then
if turtle.getItemCount(fuel) == 0 then
 turtle.select(chestFuel)
 turtle.placeUp()
 turtle.select(fuel)
 turtle.suckUp()
 turtle.digUp()
 turtle.select(1)
 end
 if turtle.getFuelLevel() < 200 then
  print('Current fuel lvl: ' .. turtle.getFuelLevel() .. ': Refueling...')
  turtle.select(fuel)
  while true do
   if turtle.getFuelLevel() >= turtle.getFuelLimit() - 500 then
    print('Fueled Up')
    break
   end
   turtle.refuel()
   print('Fuel lvl: ' .. turtle.getFuelLevel())
  end
  turtle.select(1)
 end
end
end

查看Turtle API,您將看到getFuelLimit()僅在 1.6 版中實現,並且您正在執行 1.57 版。

來自維基:

由 ComputerCraft 1.6 版添加,此命令返回海龜可以儲存的最大燃料量。預設情況下,普通海龜可容納 20,000 個單位,高級模型可容納 100,000 個單位;這兩個值都可以在 ComputerCraft.cfg 中更改。

在 1.6 之前的版本中,海龜幾乎可以儲存無限量的燃料。

要使其向前兼容,您可以執行以下操作:

function getFuelLimit()
   if turtle.getFuelLimit ~= nil then
       return turtle.getFuelLimit()
   else
       return 0;
   end
end

並在檢查燃料時添加檢查 0 或設置您自己的燃料限制

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