Advertisement
MrHG

SmeltingTurtle 1.0

Jan 22nd, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.72 KB | None | 0 0
  1. -- Wireless Reading Turtle Smeltery Automation
  2. -- Requires Robust Turtle API: pastebin get 0TnEBf2P t
  3. os.loadAPI("t")
  4. programName="Smelting Turtle"
  5. programVersion="1.0"
  6. protocol="ST0"
  7. hostname="SmeltingTurtle"
  8. reader = nil
  9. gettingOre = false
  10. id = nil
  11. oreName = nil
  12. oreAmount = nil
  13. blocksFromHome = nil
  14. blocksDown = nil
  15. itemsFetched = nil
  16.  
  17. function FindPeripheral(p)
  18.  pFound = false
  19.  side = ""
  20.  local pList = peripheral.getNames()
  21.  for i = 1, #pList do
  22.   if peripheral.getType(pList[i]) == p then
  23.    pFound = true
  24.    side = pList[i]
  25.   end
  26.  end
  27.  if pFound then
  28.   return side
  29.  else
  30.   return false
  31.  end
  32. end
  33. --Read Full Contents of Sign and compare to input.
  34. function CompareSign(input)
  35.  signC = reader.readUp()
  36.  if signC[1] == "" then
  37.  t.strafeLeft(blocksFromHome)
  38.  gettingOre=false
  39.  print("Input not found")
  40.  rednet.send(id,"NO_ORE",protocol)
  41.  requestsServed = requestsServed + 1
  42.  end
  43.  for i=1, #signC do
  44.   if signC[i] == input then
  45.    blocksDown = i-1
  46.    return true
  47.   end
  48.  end
  49.  return false
  50. end
  51. -- Fill Inventory with all required Ore
  52. function FillInventory()
  53.  for i = 1, 16 do
  54.   turtle.select(i)
  55.   if oreAmount-itemsFetched > 64 then
  56.    turtle.suck()
  57.    itemsFetched = itemsFetched+64
  58.   elseif oreAmount-itemsFetched > 0 then
  59.    turtle.suck(oreAmount-itemsFetched)
  60.    itemsFetched = itemsFetched + (oreAmount-itemsFetched)
  61.   end
  62.  end
  63. end
  64.  
  65. -- Looking for Modem
  66. if FindPeripheral("modem") == false then
  67.  print("Modem not Found")
  68.  return
  69. else
  70.  modemSide = FindPeripheral("modem")
  71. end
  72. -- Looking for Reader
  73. if FindPeripheral("signReader") == false then
  74.  print("Reader not Found")
  75.  return
  76. else
  77.  readerSide = FindPeripheral("signReader")
  78.  reader = peripheral.wrap(readerSide)
  79. end
  80.  
  81. --Establishing Rednet
  82. rednet.open(modemSide)
  83. rednet.host(protocol,hostname)
  84. requestsServed = 0
  85.  
  86. -- Main loop
  87. while true do
  88. blocksFromHome=0
  89. blocksDown=0
  90. itemsFetched=0
  91. term.clear()
  92. term.setCursorPos(1,1)
  93.  print("Awaiting Request.")
  94.  print("Requests Served: "..tostring(requestsServed))
  95.  id, oreName = rednet.receive(protocol)
  96.  id, oreAmount = rednet.receive(protocol)
  97.  
  98.  gettingOre=true
  99.  print("Getting: "..oreName..":"..oreAmount)
  100.  while gettingOre do
  101.   if CompareSign(oreName) then
  102.    t.down(blocksDown)
  103.    FillInventory()
  104.    t.up(blocksDown)
  105.    t.strafeLeft(blocksFromHome)
  106.    t.turnAround()
  107.    t.forward(3)
  108.    for i=1, 16 do
  109.     turtle.select(i)
  110.     if turtle.getItemCount() > 0 then
  111.      turtle.drop()
  112.     end
  113.    end
  114.    t.turnAround()
  115.    t.forward(3)
  116.    rednet.send(id,"SUCCESS",protocol)
  117.    rednet.send(id,itemsFetched,protocol)
  118.    requestsServed = requestsServed+1
  119.    gettingOre = false
  120.   elseif gettingOre then
  121.    t.strafeRight(1)
  122.    blocksFromHome = blocksFromHome+1
  123.   end
  124.  end
  125. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement