Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("chests")
- --GLOB CONFIG
- local nbMiners = 8
- local nbLoaders = 0
- -- MODEM CONFIG
- local idChannel = 10
- local idRespChannel = 11
- local cmdChannel = 12
- local cmdRespChannel = 13
- --CHESTS API CONFIG
- chests.slots["signal"] = 5
- chests.slots["coal"] = 6
- print("signal slot = "..chests.slots["signal"])
- print("coal slot = "..chests.slots["coal"])
- --CONNECT MODEM
- local modem = peripheral.wrap("right")
- -- MINING PROCESS
- function startMiners()
- local op={name="mine", mode=1}
- modem.transmit(cmdChannel,cmdRespChannel,textutils.serialize(op))
- end
- function wait4Miners()
- local repMinerCount = 0
- local repLoaderCount = 0
- local waiting = true
- modem.open(cmdRespChannel)
- while ( waiting ) do
- local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- if ( modemSide == "right") then
- local rep=textutils.unserialize(message)
- if (rep.name == "waiting" ) then
- print("ID:"..(rep.ID).."label:"..(rep.label).."type:"..(rep.wType))
- if ( rep.wType == "miner" ) then
- repMinerCount = repMinerCount + 1
- elseif ( rep.wType == "chunkLoader" ) then
- repLoaderCount = repLoaderCount +1
- end
- end
- if ( repMinerCount == nbMiners and repLoaderCount == nbLoaders ) then
- waiting = false
- modem.close(cmdRespChannel)
- print(repMinerCount.." miners waiting.")
- print(repLoaderCount.." chunk loaders waiting.")
- end
- end
- end
- modem.close(cmdRespChannel)
- end
- -- GATHER WORKERS DATA
- function getWorkersId()
- print("open idRespChannel")
- modem.open(idRespChannel)
- print("Transmit request to idChannel("..idChannel..")")
- local op={name="ID"}
- print("op.name= "..op.name)
- modem.transmit(idChannel,idRespChannel,textutils.serialize(op))
- print("transmit OK")
- local repMinerCount = 0
- local repLoaderCount = 0
- local waiting = true
- while ( waiting ) do
- print("Waiting for answers")
- local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
- local rep=textutils.unserialize(message)
- if (rep.name == "ID" ) then
- print("ID:"..(rep.ID).."label:"..(rep.label).."type:"..(rep.wType))
- if ( rep.wType == "miner" ) then
- repMinerCount = repMinerCount + 1
- elseif ( rep.wType == "chunkLoader" ) then
- repLoaderCount = repLoaderCount +1
- end
- end
- if ( repMinerCount == nbMiners and repLoaderCount == nbLoaders ) then
- waiting = false
- modem.close(idRespChannel)
- print(repMinerCount.." miners identified.")
- print(repLoaderCount.." chunk loaders identified.")
- end
- end
- modem.close(idRespChannel)
- end
- -- move SpotLoader
- function moveSpotLoader(mode)
- if ( mode == 1 ) then
- turtle.select(1)
- turtle.turnRight()
- --get spot loader behind
- turtle.forward()
- turtle.turnLeft()
- turtle.dig()
- --go forward and place the spot loader
- turtle.turnLeft()
- turtle.forward()
- while ( turtle.detect() ) do
- turtle.dig()
- sleep(2)
- end
- turtle.forward()
- turtle.turnRight()
- while ( turtle.detect() ) do
- turtle.dig()
- sleep(2)
- end
- turtle.place()
- return true
- elseif ( mode == 2 ) then
- if( move1() ) then
- sleep(2)
- return move1()
- end
- end
- return false
- end
- function refuelBoss()
- local lastLevel = turtle.getFuelLevel()
- if ( lastLevel < 1000 ) then
- print(" [FUEL] ALERT low level")
- chests.useCoalChest("top")
- end
- end
- while true do
- if ( chests.useSignalChest("top") ) then
- print("START MINERS")
- startMiners()
- print("MOVE SPOT LOADER")
- refuelBoss()
- moveSpotLoader(1)
- print("WAIT 4 MINERS")
- wait4Miners()
- end
- sleep(5)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement