Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("API")
- if fs.exists("config") then os.loadAPI("config") end
- tst = API
- care = true
- function Main()
- while true do
- os.sleep(0.05)
- tijda = tijd()
- if tijdb ~= nil and tijda - tijdb <= 1 then
- os.sleep(10)
- else
- tijdb = tijd()
- print(' ')
- print("Send me something or press a key")
- if fs.exists("config") then rednet.broadcast(os.getComputerID()..'.main.request') else os.sleep(1.05) rednet.broadcast(os.getComputerID()..".main.config") end
- event, var1, var2, var3, var4, var5 = tst.pullEvent2()
- if event == 'key' then
- if parkedAt == nil then else rednet.broadcast(os.getComputerID..'park.done.'..parkedAt) end
- tst.refuel()
- print(' ')
- print("Manual operator selected")
- print("Arrow keys to move")
- print("'Space'/'Shift' to move up and down")
- print("Hit 'E' to exit, 'L' to view current location, 'R' to reassign location, 'T' to go to desired location, 'M' to mine on place, 'F' to farm on spot, 'S' to use the station and parking cycle or use 'C' to use the compass.")
- i = true
- while i do
- event, var1, var2, var3, var4, var5 = os.pullEvent('key')
- if var1 == 200 then
- tst.forward()
- elseif var1 == 205 then
- tst.turnRight()
- elseif var1 == 203 then
- tst.turnLeft()
- elseif var1 == 208 then
- tst.back()
- elseif var1 == 57 then
- tst.up()
- elseif var1 == 42 then
- tst.down()
- elseif var1 == 18 then
- i = false
- elseif var1 == 38 then
- local x, y, z = tst.getLocation() print("At: "..x.. " "..y.." "..z)
- elseif var1 == 46 then
- a, b = tst.compass() print(b)
- elseif var1 == 19 then
- tst.setLocation(5) local x, y, z = tst.getLocation() print("At: "..x.. " "..y.." "..z)
- elseif var1 == 20 then
- print('Goto to the next coordinates: X; ')
- x = tonumber(read())
- print('Y: ')
- y = tonumber(read())
- print('Z: ')
- z = tonumber(read())
- print('Fly height: ')
- heigth = tonumber(read())
- tst.toLocation(x,y,z,heigth, care)
- elseif var1 == 50 then
- mine()
- elseif var1 == 33 then
- farm()
- elseif var1 == 31 then
- if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
- if parkedAt == nil then else rednet.broadcast(os.getComputerID..'.park.done.'..parkedAt) end
- stationTime()
- rednet.broadcast(os.getComputerID()..'.station.done.'..tonumber(var4))
- parkTime()
- end
- end
- elseif event == 'modem_message' then
- ID, event, var1, var2, var3, var4 = tst.decrypt(var4)
- if ID == os.getComputerID() and event == "main" and var1 == 'mine' then
- care = true
- if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
- if parkedAt == nil then else rednet.broadcast(os.getComputerID()..'.park.done.'..parkedAt) end
- while legitRequest('mine', os.getComputerID()) == false do end
- tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), config.turtle.outGoingHeight, care)
- care = false
- mine()
- care = true
- stationTime()
- parkTime()
- rednet.broadcast(os.getComputerID()..'.mine.done')
- care = false
- elseif ID == os.getComputerID() and event == "main" and var1 == 'farm' then
- care = true
- if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
- if parkedAt == nil then else rednet.broadcast(os.getComputerID..'.park.done.'..parkedAt) end
- tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, inGoingHeight, care)
- tst.toLocation(SCx, SCy+1, SCz, outGoingHeight, care)
- farm()
- tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, inGoingHeight, care)
- stationTime()
- parkTime()
- rednet.broadcast(os.getComputerID..'.farm.done')
- care = false
- elseif ID == os.getComputerID() and event == "main" and var1 == 'pauze' then
- parallel.waitForAny(sleeping,wRead)
- elseif ID == os.getComputerID() and event == "main" and var1 == 'update' then
- shell.run("delete config")
- os.reboot()
- elseif ID == os.getComputerID() and event == "main" and var1 == "config" then
- local file = fs.open("config",'w')
- file.write("turtle = "..var2)
- file.close()
- end
- else
- print(event)
- end
- end
- end
- end
- function sleeping()
- os.sleep(config.turtle.sleepInPauze)
- end
- function wRead()
- read()
- end
- function farm() -- niet af!
- i = true
- tst.toLocation(SCx, SCy+1, SCz, SCy+1, care)
- turtle.select(7)
- turtle.suckDown()
- rednet.broadcast(os.getComputerID()..'.ready')
- while i do
- event, var1, var2, var3, var4, var5 = tst.pullEvent2()
- ID, event, var1, var2, var3 = tst.decrypt(var4)
- if event == 'done' or var1 == 'done' then
- i = false
- else
- tst.toLocation(var1, var2+1, var3, SCy+1, care)
- turtle.digDown()
- turtle.placeDown()
- rednet.broadcast(os.getComputerID()..'.done')
- end
- end
- tst.toLocation(SCx, SCy+1, SCz, SCy+1, care)
- for i = 2,16 do
- if i == 7 then
- else
- turtle.select(i)
- if turtle.getItemCount() == 0 then else
- if turtle.compareTo(1) then turtle.drop() end
- end
- end
- end
- end
- function parkTime()
- while legitRequest('park', os.getComputerID()) == false do end
- tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), tonumber(var2) + 2, care)
- parkedAt = var4
- turtle.suckDown()
- end
- function legitRequest(vars1, vars2) -- 1 = event, 2 = id.
- rednet.broadcast(os.getComputerID()..'.'..vars1..'.request')
- event, var1, var2, var3, message, var5 = os.pullEvent('modem_message')
- ID, event, var1, var2, var3, var4 = tst.decrypt(message)
- if event == vars1 and ID == vars2 then
- return true
- else
- os.sleep(0.2)
- return false
- end
- end
- function tijd()
- return (os.day()*24 + os.time())
- end
- function stationTime()
- tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, config.turtle.inGoingHeight, care)
- while legitRequest('station', os.getComputerID()) == false do end
- tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), tonumber(var2) + 1, care)
- tst.turn(config.turtle.coalChest)
- for i = 2,16 do
- turtle.select(i)
- if turtle.getItemCount() == 0 then else
- if turtle.compareTo(1) then turtle.drop() end
- end
- end
- turtle.select(1)
- turtle.drop()
- turtle.suck()
- tst.turn(config.turtle.dumpChest)
- for i = 2,16 do
- if i == 2 or i == 3 or i == 4 or i == 5 or i == 6 then
- turtle.select(i)
- if turtle.getItemCount(i) > 0 then
- turtle.drop(turtle.getItemCount(i) - 1)
- end
- else
- turtle.select(i)
- turtle.drop()
- end
- end
- rednet.broadcast(os.getComputerID()..'.station.done.'..tonumber(var4))
- end
- function mine()
- dept = 0
- downWard()
- trowUp()
- i = 0
- while i ~= 5 do
- if turtle.forward() then
- i = i + 1
- else
- if turtle.dig() then else turtle.attack() end
- end
- end
- upWard()
- end
- function downWard()
- noBedrock = true
- while noBedrock do
- if turtle.down() then
- dept = dept - 1
- print('going down')
- else
- print('digging down')
- if turtle.digDown() then
- if turtle.down() then
- dept = dept - 1
- for rotate = 1,4 do
- precieus = true
- a, b = turtle.inspect()
- print(b.name)
- for j in pairs(config.turtle.Dont) do
- if b.name == config.turtle.Dont[j] then precieus = false end
- end
- if precieus then turtle.select(1) turtle.dig() end
- turtle.turnLeft()
- a = nil b = nil
- end
- else
- turtle.attackDown()
- end
- else
- noBedrock = false
- print('reached bedrock')
- end
- end
- end
- end
- function upWard()
- while dept ~= 0 do
- if turtle.up() then
- dept = dept + 1
- print('going up')
- else
- print('digging up')
- if turtle.digUp() then
- if turtle.up() then
- dept = dept + 1
- for rotate = 1,4 do
- precieus = true
- a, b = turtle.inspect()
- print(b.name)
- for j in pairs(config.turtle.Dont) do
- if b.name == config.turtle.Dont[j] then precieus = false end
- end
- if precieus then turtle.select(1) turtle.dig() end
- turtle.turnLeft()
- a = nil b = nil
- end
- else
- turtle.attackDown()
- end
- end
- end
- end
- end
- function trowUp()
- for i = 1,16 do
- if turtle.getItemCount(i) >= 1 then
- for j in ipairs(config.turtle.Dont) do
- if turtle.getItemDetail(i).name == config.turtle.Dont[j] then
- turtle.select(i)
- turtle.drop()
- break
- end
- end
- end
- end
- end
- function takeOver()
- take = false
- while take == false do
- eventt, var1t, var2t, var3t, var4t, var5t = os.pullEvent("modem_message")
- idt, eventt, var1t, var2t, var3t, var4t, var5t = tst.decrypt(var4t)
- if idt == os.getComputerID() and eventt == "takeOver" then
- take = true
- end
- end
- end
- function takeControl()
- while take do
- eventt, var1t, var2t, var3t, var4t, var5t = os.pullEvent("modem_message")
- idt, eventt, var1t, var2t, var3t, var4t, var5t = tst.decrypt(var4t)
- if idt == os.getComputerID() and eventt == "takeOver" and var1t == "up" then
- tst.up()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "down" then
- tst.down()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "left" then
- tst.turnLeft()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "right" then
- tst.turnRight()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "forward" then
- tst.forward()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "back" then
- tst.back()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "dig" then
- turtle.dig()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "attack" then
- turtle.attack()
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "close" then
- take = false
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "to1" then
- tst.toLocation(tonumber(var2t), tonumber(var3t), tonumber(var4t), config.turtle.outGoingHeight, false)
- take = false
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "to2" then
- tst.toLocation(tonumber(var2t), tonumber(var3t), tonumber(var4t), config.turtle.outGoingHeight, false)
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "getFuelLevel" then
- rednet.broadcast(os.getComputerID()..".takeOver.getFuelLevel."..turtle.getFuelLevel())
- elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "getLocation" then
- rednet.broadcast(os.getComputerID().."takeOver.getLocation."..tst.xPos.."."..tst.yPos.."."..tst.zPos)
- else
- print("What the hell do you mean by that?!?")
- end
- end
- end
- --on startup
- if fs.exists("config") == false then
- rednet.broadcast(os.getComputerID()..".main.config")
- event, var1, var2, var3, var4, var5 = os.pullEvent("modem_message")
- while true do
- ID, event, var1, var2, var3, var4 = tst.decrypt(var4)
- if ID == os.getComputerID() and event == "main" and var1 == "config" then
- local file = fs.open("config",'w')
- file.write("turtle = "..var2)
- file.close()
- break
- end
- end
- os.unloadAPI("config")
- os.loadAPI("config")
- end
- tst.refuel()
- if redstone.getInput("bottom") then os.sleep(math.random(20)) end
- if os.getComputerLabel() == nil then os.setComputerLabel("t_"..os.getComputerID()) end
- care = true
- stationTime()
- parkTime()
- care = false
- --while loop
- while true do
- parallel.waitForAny(Main, takeOver)
- takeControl()
- end
Advertisement
Add Comment
Please, Sign In to add comment