Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rednet.open("left")
- xCoord, yCoord, zCoord = gps.locate()
- if not xCoord then
- error("cannot find coordinates")
- end
- xQuarry = 999
- zQuarry = 999
- yQuarry = 150
- xProgress = 999
- zProgress = 999
- yProgress = 150
- oProgress = 1
- xHome = xCoord
- zHome = zCoord
- yHome = yCoord
- yTravel = 79
- orientation = 4
- orientations = {"north","east","south","west"}
- zDiff = {-1, 0, 1, 0}
- xDiff = {0, 1, 0, -1}
- lineLength = 10
- lines = 9
- yMin = 999
- jobAvailable = true
- manager = 43
- function inventoryFull()
- return turtle.getItemCount(16) > 0
- end
- function left()
- orientation = orientation - 1
- orientation = (orientation -1) % 4
- orientation = orientation + 1
- turtle.turnLeft()
- end
- function right()
- orientation = orientation - 1
- orientation = (orientation + 1) % 4
- orientation = orientation + 1
- turtle.turnRight()
- end
- function moveForward()
- xCoord = xCoord + xDiff[orientation]
- zCoord = zCoord + zDiff[orientation]
- turtle.dig()
- moved = false
- while not(moved) do
- moved = turtle.forward()
- end
- end
- function moveUP()
- yCoord = yCoord + 1
- turtle.digUp()
- moved = false
- while not(moved) do
- moved = turtle.up()
- end
- end
- function moveDown()
- yCoord = yCoord - 1
- turtle.digDown()
- moved = false
- while not(moved) do
- moved = turtle.down()
- end
- if yMin > yCoord then
- yMin = yCoord
- end
- end
- function look(direction)
- while direction ~= orientations[orientation] do
- right()
- end
- end
- function goto(xTarget, zTarget, yTarget)
- while yTarget < yCoord do
- moveDown()
- end
- while yTarget > yCoord do
- moveUP()
- end
- if xTarget < xCoord then
- look("west")
- while xTarget < xCoord do
- moveForward()
- end
- end
- if xTarget > xCoord then
- look("east")
- while xTarget > xCoord do
- moveForward()
- end
- end
- if zTarget < zCoord then
- look("north")
- while zTarget < zCoord do
- moveForward()
- end
- end
- if zTarget > zCoord then
- look("south")
- while zTarget > zCoord do
- moveForward()
- end
- end
- end
- function returnItems()
- xProgress = xCoord
- zProgress = zCoord
- yProgress = yCoord
- oProgress = orientation
- goto(xHome, zHome, yTravel)
- goto(xHome, zHome, yHome)
- look("west")
- for i = 1,16 do
- turtle.select(i)
- turtle.drop()
- end
- turtle.select(1)
- goto(xProgress, zProgress, yTravel)
- goto(xProgress, zProgress, yProgress)
- look(orientations[oProgress])
- end
- function digLine()
- for i = 1,lineLength do
- if inventoryFull() then
- returnItems()
- end
- moveForward()
- end
- end
- function digLayer()
- for i = 1,lines do
- digLine()
- if i%2 == 1 and i < lines then
- left()
- moveForward()
- left()
- elseif i < lines then
- right()
- moveForward()
- right()
- end
- end
- goto(xQuarry, zQuarry, yCoord)
- look("north")
- moveDown()
- end
- function digQuarry(xTarget, zTarget, yTarget)
- xQuarry = xTarget
- zQuarry = zTarget
- yQuarry = yTarget
- goto(xQuarry, zQuarry, yTravel)
- goto(xQuarry, zQuarry, yQuarry)
- while yMin > 7 do
- digLayer()
- end
- goto(xQuarry, zQuarry, yQuarry)
- goto(xHome, zHome, yTravel)
- goto(xHome, zHome, yHome)
- yMin = 999
- end
- function getjob()
- while jobAvailable do
- print("Requesting Job")
- rednet.send(manager, "getJob")
- id, message, dis = rednet.receive()
- if message == "yes" then
- id, xRec, dis = rednet.receive()
- id, zRec, dis = rednet.receive()
- id, yRec, dis = rednet.receive()
- xQuarry = tonumber(xRec)
- zQuarry = tonumber(zRec)
- yQuarry = tonumber(yRec)
- print("Job at"..xQuarry.." "..zQuarry)
- digQuarry(xQuarry, zQuarry, yQuarry)
- print("Finshed Job")
- elseif message == "no" then
- print("No more Jobs")
- jobAvailable = false
- end
- end
- end
- rednet.close("left")
- rednet.open("left")
- getjob()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement