Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---------------
- -- functions --
- ---------------
- function mineCycle()
- turtle.dig()
- turtle.forward()
- turtle.digDown()
- turtle.turnLeft()
- turtle.dig()
- turtle.down()
- turtle.dig()
- turtle.turnRight()
- turtle.turnRight()
- turtle.dig()
- turtle.up()
- turtle.dig()
- turtle.turnLeft()
- end
- function isInventoryFull()
- local slotsOccupied = 0
- for i=1,16 do
- if turtle.getItemCount(i) > 0 then
- slotsOccupied = slotsOccupied + 1
- end
- end
- if slotsOccupied == 16 then return true end
- end
- function placeTorch(torchAmount)
- turtle.placeDown()
- torchAmount = torchAmount - 1
- if turtle.getItemCount(1) == 0 then
- turtle.select(math.ceil(torchAmount / 64) + 1)
- turtle.transferTo(1)
- turtle.select(1)
- end
- end
- function goBack_noFuel(traveledBlocks, torchAmount)
- turtle.turnRight()
- turtle.turnRight()
- for i=1,traveledBlocks / 3 do
- if turtle.forward() == false then
- turtle.dig()
- turtle.forward()
- end
- end
- turtle.down()
- turtle.turnLeft()
- dumpItems(torchAmount)
- print("\n\nGorivoto mi svurshi, spiram programata!")
- end
- function goBack_finished(traveledBlocks, distance)
- turtle.turnRight()
- turtle.turnRight()
- for i=1,traveledBlocks / 3 do
- if turtle.forward() == false then
- turtle.dig()
- turtle.forward()
- end
- end
- turtle.down()
- turtle.turnLeft()
- dumpItems_full()
- print("\n\nUspeshno izkopah "..distance.." bloka tunel :)")
- end
- function dumpItems(torchAmount)
- if torchAmount > 0 then
- for i=math.ceil(torchAmount / 64) + 1,16 do
- turtle.select(i)
- if (turtle.drop() == false) and (turtle.getItemCount() ~= 0) then
- print("Chesta e pulen, nemoga da se raztovarq, spiram programata")
- end
- end
- else
- dumpItems_full()
- end
- turtle.select(1)
- end
- function dumpItems_full()
- for i=1,16 do
- turtle.select(i)
- if (turtle.drop() == false) and (turtle.getItemCount() ~= 0) then
- print("Chesta e pulen, nemoga da se raztovarq, no programata veche beshe svurshila :)")
- end
- end
- end
- ----------
- -- CODE --
- ----------
- -- automine <distance>
- local distance = ...
- if distance == nil then
- print("automine <rastoqnie>\n")
- print("Lqv chest = Tuk se slagat torchovete\n")
- print("Desen chest = Tuk se slaga gorivoto (samo purviq put predi start, posle ne e nujno), i se slagat resursite koito sa izkopani")
- return
- elseif tonumber(distance) == nil then
- print("Samo chislo e pozvoleno, "..distance.." ne e chislo!")
- return
- end
- --inv check
- for i=1,16 do
- if turtle.getItemCount(i) > 0 then
- print("Izchistete inventara na miner-a.")
- return
- end
- end
- -- fuel check
- print("Proverqvam za gorivo..")
- turtle.turnRight()
- if turtle.suck() == false then
- print("Nqma nikakvo gorivo vuv desniq chest.")
- turtle.turnLeft()
- return
- end
- while turtle.suck() == true do
- turtle.suck()
- end
- local rawFuelAmount = 0
- for i=1,16 do
- rawFuelAmount = rawFuelAmount + turtle.getItemCount(i)
- end
- -- refuiling
- local oldFuel = turtle.getFuelLevel()
- for i=1,16 do
- turtle.select(i)
- if turtle.getFuelLevel() ~= turtle.getFuelLimit() then
- turtle.refuel()
- end
- end
- if turtle.getFuelLevel() < 300 then
- print("Imash samo "..turtle.getFuelLevel().." gorivo. Ne e dustatachno! Slujete gorivo vuv desniq chest i pusnete programata otnovo.")
- for i=1,16 do
- if turtle.getItemCount(i) > 0 then
- turtle.select(i)
- if turtle.drop() == false then
- print("Nemoga da vurna predmetite koito ne sa gorivo! (Pulen e desniq chest).")
- end
- end
- end
- turtle.select(1)
- end
- if (turtle.getFuelLevel() - oldFuel) == 0 then
- print("Gorivoto e pulno do-gore, nqma nujda za prezarejdane, vrushtat se predmetite v desniq chest")
- else
- print("Imash "..rawFuelAmount.." predmeta, ot koito se napraviha "..(turtle.getFuelLevel() - oldFuel).." gorivo.")
- end
- -- inventory cleanup if junk items found
- for i=1,16 do
- if turtle.getItemCount(i) > 0 then
- turtle.select(i)
- if turtle.drop() == false then
- print("Nemoga da vurna predmetite koito ne sa gorivo! (Pulen e desniq chest).")
- end
- end
- end
- turtle.select(1)
- turtle.turnLeft()
- -- torch check
- print("\nProverqvam za torch-ove..")
- turtle.turnLeft()
- if turtle.suck() == false then
- print("Nqma nikakvi predmeti vuv leviq chest.")
- turtle.turnRight()
- return
- end
- while turtle.suck() == true do
- turtle.suck()
- end
- local torchAmount = 0
- for i=1,16 do
- torchAmount = torchAmount + turtle.getItemCount(i)
- end
- print("Imash "..torchAmount.." torch-a koito shte budat izpolzvani (ako ne svurshi gorivoto predi tova).")
- turtle.select(1)
- turtle.turnRight()
- -- Mining
- local traveledBlocks = 0
- print("\n\nZapochvam da kupaq "..distance.." bloka tunel..")
- turtle.digUp()
- turtle.up()
- traveledBlocks = traveledBlocks + 1
- while true do
- if (math.floor(traveledBlocks / 3)) == tonumber(distance) then
- goBack_finished(traveledBlocks, distance)
- turtle.turnLeft()
- return
- end
- if (traveledBlocks + 3 + 1) >= turtle.getFuelLevel() then
- goBack_noFuel(traveledBlocks, torchAmount)
- turtle.turnLeft()
- return
- end
- mineCycle()
- traveledBlocks = traveledBlocks + 3
- if ((math.floor(traveledBlocks / 3) - 1) % 11) == 0 then
- placeTorch(torchAmount)
- end
- if isInventoryFull() then
- local temp_traveledBlocks = 0
- turtle.turnRight()
- turtle.turnRight()
- for i=1,traveledBlocks / 3 do
- turtle.forward()
- temp_traveledBlocks = temp_traveledBlocks + 1
- end
- traveledBlocks = traveledBlocks + temp_traveledBlocks + 1
- turtle.down()
- turtle.turnLeft()
- dumpItems(torchAmount)
- turtle.turnLeft()
- turtle.up()
- local temp_traveledBlocksBack = 0
- for i=1,temp_traveledBlocks do
- turtle.forward()
- temp_traveledBlocksBack = temp_traveledBlocksBack + 1
- end
- traveledBlocks = traveledBlocks + temp_traveledBlocksBack
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement