TheKojent icon

platform.lua

TheKojent | PRO | 03/29/13 10:10:08 PM UTC | 0 ⭐ | 250 👁️ | Never ⏰ | []
Lua |

1.9 KB

|

None

|

0 👍

/

0 👎

os.loadAPI("check") --http://pastebin.com/Sc2TWpeH
os.loadAPI("try") --http://pastebin.com/ADttMQXz
 
local tArgs = { ... }
if #tArgs ~= 2 then
  print("Usage: platform <length> <width>")
  return
end
 
x = tonumber(tArgs[1])
z = tonumber(tArgs[2])
 
if not check.whole(x) or not check.positive(x) then
  print("Improper arguments!")
  return
end
 
if not check.whole(z) or not check.positive(z) then
  print("Improper arguments!")
  return
end
 
--Checking for block amount
local total = x * z
local inv = 0
local nItems = 0
for i = 1,16 do
  nItems = turtle.getItemCount(i)
  inv = inv + nItems
end
if total > inv then
  print("Not enough blocks!")
  return
end
 
local function tryPlace()
  while not turtle.placeDown() do
    if turtle.detectDown() then
      if not turtle.digDown() then
        print("Cannot place block, exiting script!")
        return false
      end
    elseif not turtle.attackDown() then
      sleep(0.5)
    end
  end
  return true
end
 
local function forward()
  if not try.forward() then
    print("Cannot move forward, exiting script!")
    return false
  end
  return true
end
 
local slot = 1
 
function checkSlot()
  turtle.select(slot)
  while turtle.getItemCount(slot) == 0 do
    slot = slot + 1
    turtle.select(slot)
  end
end
 
--Start building
local dir = true
local done = false
for j = 1,z-1 do
  for k = 1,x-1 do
    checkSlot()
    if not tryPlace() then return end
    if not forward() then return end
  end
  if not tryPlace() then return end
  if dir then
    turtle.turnRight()
    if not forward() then return end
    turtle.turnRight()
  else
    turtle.turnLeft()
    if not forward() then return end
    turtle.turnLeft()
  end
  dir = not dir
end
for k = 1,x-1 do
  checkSlot()
  if not tryPlace() then return end
  if not forward() then return end
end
if not tryPlace() then return end
 
print("Platform built! Used " .. tostring(total) .. " blocks.")

Comments