Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Wireless Reading Turtle Smeltery Automation
- -- Requires Robust Turtle API: pastebin get 0TnEBf2P t
- os.loadAPI("t")
- programName="Smelting Turtle"
- programVersion="1.0"
- protocol="ST0"
- hostname="SmeltingTurtle"
- reader = nil
- gettingOre = false
- id = nil
- oreName = nil
- oreAmount = nil
- blocksFromHome = nil
- blocksDown = nil
- itemsFetched = nil
- function FindPeripheral(p)
- pFound = false
- side = ""
- local pList = peripheral.getNames()
- for i = 1, #pList do
- if peripheral.getType(pList[i]) == p then
- pFound = true
- side = pList[i]
- end
- end
- if pFound then
- return side
- else
- return false
- end
- end
- --Read Full Contents of Sign and compare to input.
- function CompareSign(input)
- signC = reader.readUp()
- if signC[1] == "" then
- t.strafeLeft(blocksFromHome)
- gettingOre=false
- print("Input not found")
- rednet.send(id,"NO_ORE",protocol)
- requestsServed = requestsServed + 1
- end
- for i=1, #signC do
- if signC[i] == input then
- blocksDown = i-1
- return true
- end
- end
- return false
- end
- -- Fill Inventory with all required Ore
- function FillInventory()
- for i = 1, 16 do
- turtle.select(i)
- if oreAmount-itemsFetched > 64 then
- turtle.suck()
- itemsFetched = itemsFetched+64
- elseif oreAmount-itemsFetched > 0 then
- turtle.suck(oreAmount-itemsFetched)
- itemsFetched = itemsFetched + (oreAmount-itemsFetched)
- end
- end
- end
- -- Looking for Modem
- if FindPeripheral("modem") == false then
- print("Modem not Found")
- return
- else
- modemSide = FindPeripheral("modem")
- end
- -- Looking for Reader
- if FindPeripheral("signReader") == false then
- print("Reader not Found")
- return
- else
- readerSide = FindPeripheral("signReader")
- reader = peripheral.wrap(readerSide)
- end
- --Establishing Rednet
- rednet.open(modemSide)
- rednet.host(protocol,hostname)
- requestsServed = 0
- -- Main loop
- while true do
- blocksFromHome=0
- blocksDown=0
- itemsFetched=0
- term.clear()
- term.setCursorPos(1,1)
- print("Awaiting Request.")
- print("Requests Served: "..tostring(requestsServed))
- id, oreName = rednet.receive(protocol)
- id, oreAmount = rednet.receive(protocol)
- gettingOre=true
- print("Getting: "..oreName..":"..oreAmount)
- while gettingOre do
- if CompareSign(oreName) then
- t.down(blocksDown)
- FillInventory()
- t.up(blocksDown)
- t.strafeLeft(blocksFromHome)
- t.turnAround()
- t.forward(3)
- for i=1, 16 do
- turtle.select(i)
- if turtle.getItemCount() > 0 then
- turtle.drop()
- end
- end
- t.turnAround()
- t.forward(3)
- rednet.send(id,"SUCCESS",protocol)
- rednet.send(id,itemsFetched,protocol)
- requestsServed = requestsServed+1
- gettingOre = false
- elseif gettingOre then
- t.strafeRight(1)
- blocksFromHome = blocksFromHome+1
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement