Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local os = require("os")
- local robot = require("robot")
- local sides = require("sides")
- local component = require("component")
- local geolyzer = component.geolyzer
- local computer = require("computer")
- local FLOOR_COUNT = 2
- local FLOOR_HEIGHT = 3
- local FLOOR_WIDTH = 7
- local FLOOR_DEPTH = 15
- local FLOOR_ENTRY = 2
- function checkBeginningPos()
- --sprawdzanie lampy redstonowej
- local lamp = geolyzer.analyze(sides.bottom).name
- if lamp~="minecraft:lit_redstone_lamp"
- and lamp~="minecraft:redstone_lamp" then
- return false, "nie ma lampy kontrolnej pod robotem"
- end
- --sprawdzanie piecyka
- for i=1,4 do
- local smelter = geolyzer.analyze(sides.front).properties
- if smelter.recipe == "SMELTING" then break end
- if i==4 then return false, "nie ma stacji przepalającej" end
- robot.turnLeft()
- end
- --sprawdzanie chargera
- local charger = geolyzer.analyze(sides.left).name
- if charger ~= "opencomputers:charger" then
- return false, "nie ma chargera"
- end
- return true
- end
- function checkControlLamp()
- local lamp = geolyzer.analyze(sides.bottom).name
- return lamp=="minecraft:lit_redstone_lamp"
- end
- function moveMultiple(side, number)
- for i=1,number do
- component.robot.move(side)
- end
- end
- function doFloor()
- moveMultiple(sides.back, FLOOR_ENTRY-1)
- for r=1,FLOOR_DEPTH do
- robot.back()
- if r%2==0 then robot.turnLeft() else robot.turnRight() end
- for c=1,FLOOR_WIDTH do
- checkZiemniok()
- if c<FLOOR_WIDTH then robot.forward() end
- end
- if r%2==0 then robot.turnRight() else robot.turnLeft() end
- end
- if FLOOR_DEPTH%2==1 then
- robot.turnLeft()
- moveMultiple(sides.forward,FLOOR_WIDTH-1)
- robot.turnRight()
- end
- moveMultiple(sides.forward,FLOOR_DEPTH+FLOOR_ENTRY-1)
- end
- function checkZiemniok()
- local ziemniok = geolyzer.analyze(sides.bottom)
- if ziemniok.name == "minecraft:air" then
- robot.placeDown()
- elseif ziemniok.name == "minecraft:potatoes" then
- if ziemniok.properties.age==7 then
- robot.swingDown()
- robot.placeDown()
- end
- end
- end
- function depositZiemnioki()
- for i=16,1,-1 do
- robot.select(i)
- if not robot.drop() then robot.dropUp() end
- end
- end
- function waitForRecharge()
- while computer.energy()/computer.maxEnergy()<0.99 do
- os.sleep(0.25)
- end
- end
- local goodStart, err = checkBeginningPos()
- if not goodStart then print("Nieprawidłowa strefa startu: "..err)
- else
- while checkControlLamp() do
- for f=1,FLOOR_COUNT do
- if f>1 then moveMultiple(sides.up, FLOOR_HEIGHT) end
- doFloor()
- print("Ukończono piętro "..f)
- end
- moveMultiple(sides.down, FLOOR_HEIGHT * (FLOOR_COUNT-1))
- print("Wypierdalanie ziemnioków...")
- depositZiemnioki()
- print("Czekanie na naładowanie baterii")
- waitForRecharge()
- end
- print("Działanie zakończone przez użytkownika.")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement