Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.70 KB | None | 0 0
  1. local partnerID   = 0
  2. local debug       = false
  3.  
  4. --Constants
  5. local MY_ID              = os.getComputerID()
  6. local MINING_DELAY       = 4
  7. local CHARGE_LEVEL       = 500
  8. local DIG_DELAY          = 1
  9. local ENDER_CHEST        = 2
  10. local FUEL               = 16
  11. local MINING_WELL        = 1
  12. local RESERVE_FUEL_LEVEL = 10
  13. local FUEL_DELAY         = 10
  14. local FUEL_RATION        = 4
  15.  
  16. function checkItem(item)
  17.    
  18.     if(turtle.getItemCount(item.slot) < 1) then
  19.         print("\t->"..item.name..": FAILURE")
  20.         print("\t\tPlease insert a "..item.name.." into slot "..item.slot)
  21.        
  22.         --If it doesn't exist, prompt for it and wait until it gets it
  23.         turtle.select(item.slot)
  24.         while(turtle.getItemCount(item.slot) == 0) do
  25.             sleep(1)
  26.         end
  27.  
  28.     end
  29.    
  30.     print("\t->"..item.name..": OK")
  31. end
  32.  
  33.  
  34. function checkStatus()
  35.  
  36.     print("----------Checking Biggs's Schedule----------")
  37.     --Check tor the Mining Well
  38.     checkItem{slot=1,  name="Mining Well"}
  39.  
  40.     --Check for Ender Chest
  41.     checkItem{slot=2,  name="Ender Chest"}
  42.  
  43.     checkFuel()
  44.     print("-------------BIGGS READY TO ROLL-------------")
  45. end
  46.  
  47. function pairWithWedge()
  48.     rednet.open("right")
  49.     rednet.broadcast("Waiting to pair with partner")
  50.  
  51.     local id,msg, distance
  52.     while (id==nil or id==MY_ID) do
  53.         id, msg, distance = rednet.receive()
  54.     end
  55.  
  56.     partnerID = id
  57.     rednet.broadcast("Partner found")
  58.    
  59. end
  60.  
  61. function sendMessageToWedge(message)
  62.     rednet.send(partnerID,message)
  63. end
  64.  
  65. function waitForWedge(message)
  66.    
  67.     local id, msg, distance
  68.     while(id==nil or id==MY_ID or id ~= partnerID) do
  69.         id, msg, distance = rednet.receive()
  70.     end
  71.    
  72.     if (msg ~= message) then
  73.         print("ERROR - Unexpected Partner Message")
  74.         print("Expected:" .. message)
  75.         print("Received: .. msg")
  76.         shell.exit()
  77.     end
  78. end
  79.  
  80. function moveForward()
  81.     while(turtle.forward()==false) do
  82.         turtle.dig()
  83.         sleep(DIG_DELAY)
  84.     end
  85. end
  86.  
  87. function moveUp()
  88.     while(turtle.up()==false) do
  89.         turtle.digUp()
  90.         sleep(DIG_DELAY)
  91.     end
  92. end
  93.  
  94. function turn180()
  95.     turtle.turnLeft
  96.     turtle.turnLeft
  97. end
  98.  
  99. function placeItem(item)
  100.     turtle.select(item.slot)
  101.  
  102.     while(turtle.placeDown() == false) do
  103.         turtle.digDown()
  104.         sleep(DIG_DELAY)
  105.     end
  106. end
  107.  
  108. function digItem(item)
  109.     turtle.select(item.slot)
  110.  
  111.     --If there's something already in the slot, junk it
  112.     if(turtle.getItemCount(item.slot) > 0) then
  113.         turtle.dropDown()
  114.     end
  115.  
  116.     turtle.digDown()
  117. end
  118.  
  119. function refuel()
  120.     prevSlot = turtle.getSelectedSlot()
  121.        
  122.     turtle.select(FUEL)
  123.     while(turtle.refuel(FUEL_RATION) == false) do
  124.         print("Error: Not enough fuel in slot 16 to refuel! Minimal 4")
  125.         sleep(FUEL_DELAY)
  126.     end
  127.    
  128.     turtle.select(prevSlot)
  129. end
  130.  
  131. function checkFuel()
  132.     if(turtle.getFuelLevel() < RESERVE_FUEL_LEVEL) then
  133.         print("\t->Fuel: FAILURE")
  134.         print("\t\tOut of fuel, attempting refuel")
  135.         refuel()
  136.     end
  137. end
  138.  
  139. --Check to make sure it has all the items it needs
  140. checkStatus()
  141.  
  142. --Wait to find Wedge
  143. pairWithWedge()
  144.  
  145. --Main loop
  146. while true do
  147.     checkFuel()
  148.  
  149.     placeItem{slot=MINING_WELL, "Mining well"}
  150.     moveUp()
  151.  
  152.     placeItem{slot=ENDER_CHEST, "Ender chest"}
  153.    
  154.     sendMessageToWedge("powerdown")
  155.     waitForWedge("powerdown")
  156.     sleep(MINING_DELAY)
  157.  
  158.     sendMessageToWedge("powerup")
  159.     waitForWedge("powerup")
  160.    
  161.     digItem{slot=ENDER_CHEST}
  162.     turtle.down()
  163.  
  164.     digItem{slot=MINING_WELL}
  165.     moveForward()
  166.    
  167.     sendMessageToWedge("forward")
  168.     waitForWedge("forward")
  169. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement