SemlerPDX icon

Hollow

SemlerPDX | PRO | 08/06/21 11:20:59 PM UTC (Edited) | 0 ⭐ | 1180 👁️ | Never ⏰ | []
Lua |

3 KB

|

None

|

0 👍

/

0 👎

--Hollow Simple Script v1
--Turtle Program Computer Craft
--by SemlerPDX(July2021)
 
--pastebin get BfnmYS5q Hollow
 
--COMMENT SYNTAX EXPLAINATION
--torches must be in slot 1 (one for every 8th block, every 5th row)
 
--example:  Hollow 22 31 (makes empty room 22 blocks deep and 31 blocks wide, with full torch coverage)
 
 
-- Variables --
local args = {...}
local d = args[1] or 0
local w = args[2] or 0
local r = 0 + d
local dLit = 4
local wLit = 0
local t = turtle
 
-- F-ACK --
if #args ~= 2 then
  print("<error420: syntax>")
  print("<ex: Hollow 20 10 (starts digging hollow 20 blocks deep and 10 blocks wide)>")
  return
end
  
if d == 0 then
  print("<error421: missing depth>")
  print("<ex: Hollow 20 10 (starts digging hollow 20 blocks deep and 10 blocks wide)>")
  return
end
 
--if d <= 6 then
--  print("<error421: depth too small>")
--  print("<ex: Hollow 10 10 (starts digging hollow 10 blocks deep and 10 blocks wide)>")
--  return
--end
 
-- Functions --
--force forward function by CCCode
local function forceForward()
  while not t.forward() do
    t.dig()
  end
end
 
--dig down, decrement lit variable
local function fDown()
  t.digDown()
  t.down()
end
 
--dig up, turn around
local function fUp()
  t.digUp()
  t.up()
end
 
local function fRow()
  fUp()
  fUp()
  for v=1,3 do
    for s=1,d do
      if v == 3 then
      if dLit == 0 and wLit == 0 then
      dLit = 8
      fUp()
      t.placeDown()
      forceForward()
      fDown()
      else
          forceForward()
      end
    if wLit == 0 then
        dLit = dLit - 1
    end
    else
        forceForward()
    end
    end
    if v ~= 3 then
      t.turnLeft()
      t.turnLeft()
      fDown()
  end
  end
end
 
local function fTurn()
  t.turnLeft()
  forceForward()
  t.turnLeft()
end
 
 
--return home
local function fHome()
  fUp()
  t.turnLeft()
  t.turnLeft()
  r = 0 + d
  while r ~=0 do
    forceForward()
    r = r -1
  end
  fDown()
end
 
--clear display screen
local function fset()
  term.clear()
  term.setCursorPos(1,1)
end
 
-- Pre-fire scripts --
fset()
print("Beginning Hollow "..tostring(d).." blocks deep and "..tostring(w).." blocks wide...")
sleep(1)
print(" -press any key to cancel-")
sleep(2)
 
---- Main Loop ----
while w ~= 0 do
 
  local function fcancel()
    local event, key = os.pullEvent("key")
  end
 
  local function fmain()
    fRow()
  fHome()
  fTurn()
    w = w - 1
  if wLit == 0 then
    wLit = 5
  end
  wLit = wLit - 1
  dLit = 4
  end
 
  FunctionEnabled = parallel.waitForAny(fcancel,fmain)
 
  if FunctionEnabled == 1 then
    textutils.slowPrint("Cancelling Hollow...", 15)
    sleep(1.65)
    break
  end
 
end
 
-- Evaluate Ending --
if FunctionEnabled == 1 then    --(1 = functions cancelled, 2 = standard function looped)
  fset()
  print("Hollow Cancelled by user")
else
  fset()
  print("Hollow "..tostring(args[1]).." "..tostring(args[2]).." Finished")
  fset()
  print("...program complete")
end

Comments