Also on pastebin:
zcmDcV15--(( Variables ))--
local cutCount = 0
local moves = {
dig = {
["f"] = turtle.dig,
["u"] = turtle.digUp,
["d"] = turtle.digDown,
},
move = {
["f"] = turtle.forward,
["u"] = turtle.up,
["d"] = turtle.down,
},
attack = {
["f"] = turtle.attack,
["u"] = turtle.attackUp,
["d"] = turtle.attackDown,
},
}
--(( Functions ))--
function go(direction, fromNum, toNum)
while not moves.move[direction]() do
if fromNum and toNum then
select(fromNum,toNum)
end
if not moves.dig[direction]() then
moves.attack[direction]()
end
sleep(.5)
end
end
function select(fromNum, toNum, option)
if not toNum or fromNum == toNum then
turtle.select(fromNum)
return true
end
for slot = fromNum, toNum do
option = loadstring("turtle.getItem"..option.."(slot)")
if option() > 0 then
turtle.select(slot)
return true
end
end
return false
end
function cutTree()
if turtle.getItemSpace(1) > 0 then
turtle.select(1)
else
if not select(5,16,"Space") then
turtle.select(1)
return false
end
end
go("f")
turtle.select(1)
while turtle.compareUp() do
if not select(5,16,"Space") then
turtle.select(1)
return false
end
go("u",5,16)
end
while not turtle.detectDown() do
go("d",5,16)
end
if not turtle.back() then
for turns = 1, 2 do
turtle.turnLeft()
end
go("f",5,16)
for turns = 1, 2 do
turtle.turnRight()
end
end
return true
end
--(( Main program ))--
if not fs.exists("."..shell.getRunningProgram().."Data") then
file = fs.open("."..shell.getRunningProgram().."Data","w")
file.write(cutCount)
file.close()
else
file = fs.open("."..shell.getRunningProgram().."Data","r")
cutCount = tonumber(file.readLine())
file.close()
end
term.setCursorPos(1,1)
term.clear()
while true do
if turtle.getItemCount(1) < 1 then
break
end
term.setCursorPos(1,1)
term.clear()
print("Remove the log to stop!")
print()
print("Have log in slot 1!")
print("Have saplings in slot 2-4!")
print()
print("Trees cut: "..cutCount)
print()
if not turtle.detect() then
if not select(2,4,"count") then
print("Out of saplings!")
break
end
while not turtle.place() do
moves.attack["f"]()
sleep(.5)
end
end
turtle.select(1)
if turtle.compare() then
if chopTree() then
cutCount = cutCount + 1
file = fs.open("."..shell.getRunningProgram().."Data","w")
file.write(cutCount)
file.close()
else
print("Failed to chop tree!")
break
end
end
sleep(.5)
end
turtle.select(1)