Advertisement
Guest User

biggs

a guest
Aug 23rd, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.84 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. local CONDUIT            = 3
  16.  
  17. function checkItem(item)
  18.    
  19.     if(turtle.getItemCount(item.slot) < 1) then
  20.         print("\t->"..item.name..": FAILURE")
  21.         print("\t\tPlease insert a "..item.name.." into slot "..item.slot)
  22.        
  23.         --If it doesn't exist, prompt for it and wait until it gets it
  24.         turtle.select(item.slot)
  25.         while(turtle.getItemCount(item.slot) == 0) do
  26.             sleep(1)
  27.         end
  28.  
  29.     end
  30.    
  31.     print("\t->"..item.name..": OK")
  32. end
  33.  
  34.  
  35. function checkStatus()
  36.  
  37.     print("-------Checking Biggs's Schedule-------")
  38.     --Check tor the Mining Well
  39.     checkItem{slot=1,  name="Mining Well"}
  40.  
  41.     --Check for Ender Chest
  42.     checkItem{slot=2,  name="Ender Chest"}
  43.  
  44.     checkFuel()
  45.     print("----------BIGGS READY TO ROLL----------")
  46. end
  47.  
  48. function pairWithWedge()
  49.     rednet.open("right")
  50.     rednet.broadcast("Waiting to pair with partner")
  51.  
  52.     local id,msg, distance
  53.     while (id==nil or id==MY_ID) do
  54.         id, msg, distance = rednet.receive()
  55.     end
  56.  
  57.     partnerID = id
  58.     rednet.broadcast("Partner found")
  59.    
  60. end
  61.  
  62. function sendMessageToWedge(message)
  63.     rednet.send(partnerID,message)
  64. end
  65.  
  66. function waitForWedge(message)
  67.    
  68.     local id, msg, distance
  69.     while(id==nil or id==MY_ID or id ~= partnerID) do
  70.         id, msg, distance = rednet.receive()
  71.     end
  72.    
  73.     if (msg ~= message) then
  74.         print("ERROR - Unexpected Partner Message")
  75.         print("Expected:" .. message)
  76.         print("Received: .. msg")
  77.         shell.exit()
  78.     end
  79. end
  80.  
  81. function moveForward()
  82.     while(turtle.forward()==false) do
  83.         turtle.dig()
  84.         sleep(DIG_DELAY)
  85.     end
  86. end
  87.  
  88. function moveUp()
  89.     while(turtle.up()==false) do
  90.         turtle.digUp()
  91.         sleep(DIG_DELAY)
  92.     end
  93. end
  94.  
  95. function turn180()
  96.     turtle.turnLeft()
  97.     turtle.turnLeft()
  98. end
  99.  
  100. function placeItem(item)
  101.     turtle.select(item.slot)
  102.  
  103.     while(turtle.placeDown() == false) do
  104.         turtle.digDown()
  105.         sleep(DIG_DELAY)
  106.     end
  107. end
  108.  
  109. function digItem(item)
  110.     turtle.select(item.slot)
  111.  
  112.     --If there's something already in the slot, junk it
  113.     if(turtle.getItemCount(item.slot) > 0) then
  114.         turtle.dropDown()
  115.     end
  116.  
  117.     turtle.digDown()
  118. end
  119.  
  120. function refuel()
  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(1)
  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.     turtle.back()
  154.  
  155.     turtle.down()
  156.     placeItem{slot=CONDUIT, "Energy Conduit"}        
  157.                
  158.     sendMessageToWedge("powerdown")
  159.     waitForWedge("powerdown")
  160.     sleep(MINING_DELAY)
  161.  
  162.     sendMessageToWedge("powerup")
  163.     waitForWedge("powerup")
  164.  
  165.     digItem{slot=CONDUIT}
  166.     turtle.up()
  167.     turtle.forward()    
  168.  
  169.     digItem{slot=ENDER_CHEST}
  170.     turtle.down()
  171.  
  172.     digItem{slot=MINING_WELL}
  173.     moveForward()
  174.    
  175.     sendMessageToWedge("forward")
  176.     waitForWedge("forward")
  177. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement