Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local drone = component.proxy(component.list("drone")())
- local FARM_DIRECTION_NS = 0
- local FARM_DIRECTION_EW = -1
- local FARM_WIDTH = 8
- local FARM_HEIGHT = 8
- local function sleep(timeout)
- checkArg(1, timeout, "number", "nil")
- local deadline = computer.uptime() + (timeout or 0)
- repeat
- computer.pullSignal(deadline - computer.uptime())
- until computer.uptime() >= deadline
- end
- local function move(x,y,z)
- drone.move(x,y,z)
- travelx = travelx + x
- travely = travely + y
- travelz = travelz + z
- end
- local function moveLeft(a)
- sleep(0.5)
- if FARM_DIRECTION_EW ~= 0 then
- move(0, -a, 0)
- else
- move(-a, 0, 0)
- end
- sleep(0.5)
- end
- local function moveRight(a)
- sleep(0.5)
- if FARM_DIRECTION_EW ~= 0 then
- move(0, a, 0)
- else
- move(a, 0, 0)
- end
- sleep(0.5)
- end
- local function moveForward(a)
- sleep(0.5)
- move(a * FARM_DIRECTION_EW, a * FARM_DIRECTION_NS, 0)
- sleep(0.5)
- end
- local function moveBackward(a)
- sleep(0.5)
- move(-a * FARM_DIRECTION_EW, -a * FARM_DIRECTION_NS, 0)
- sleep(0.5)
- end
- local function checkE()
- local en = computer.energy()
- return en
- end
- local function drop()
- drone.drop(2)
- end
- local function dropAll()
- for i=4,2,-1
- do
- drone.select(i)
- drop()
- end
- drone.select(1)
- end
- local function move(x,y,z)
- drone.move(x,y,z)
- travelx = travelx + x
- travely = travely + y
- travelz = travelz + z
- end
- local function swing()
- for i=5,0,-1 do
- drone.swing(i)
- end
- sleep(0.2)
- end
- local function swingHor()
- for i=1,5,1 do
- drone.swing(i)
- end
- sleep(0.2)
- end
- local function suck(x)
- drone.suck(x)
- end
- local function suckAll()
- for i=0,5,1 do
- suck(i)
- end
- end
- local function placeD()
- drone.place(1)
- end
- local function plant()
- drone.setStatusText("PLANTING")
- drone.select(1)
- move(-8,1,0)
- sleep(2)
- placeD()
- move(-1,0,0)
- sleep(0.3)
- placeD()
- move(0,0,-1)
- sleep(0.3)
- placeD()
- move(1,0,0)
- sleep(0.3)
- placeD()
- returnHome()
- end
- local function harvest()
- drone.setStatusText("CUTTING")
- moveLeft(20)
- for i=1,4,1 do
- for i=1,8,1 do
- suckAll()
- swingHor()
- moveForward(1)
- end
- moveRight(1)
- for i=1,8,1 do
- suckAll()
- swingHor()
- moveBackward(1)
- end
- moveRight(1)
- end
- dropAll()
- sleep(2)
- end
- local function resetP()
- travelx, travely, travelz = 0,0,0
- end
- function returnHome()
- travelx = travelx * -1
- travely = travely * -1
- travelz = travelz * -1
- sleep(1)
- move(travelx,travely,travelz)
- sleep(2)
- resetP()
- end
- local function setup()
- resetP()
- job = 0
- drone.setStatusText("CHECKING")
- drone.select(1)
- for i=1,40,1 do
- if not drone.compare(0, true) then
- break
- end
- moveForward(1)
- end
- end
- --start
- resetP()
- job = 0
- drone.setStatusText("ROM\nOK.v4.14.")
- sleep(1)
- -- Main loop
- setup()
- harvest()
- returnHome()
- drone.setStatusText(tostring(job))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement