Advertisement
Parg60

serverNEW

Nov 25th, 2022 (edited)
937
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. modem = peripheral.wrap("left")
  2. modem.open(5555)
  3.  
  4. function setup()
  5.     modem.open(403)
  6.  
  7.     accepted = false
  8.     fullSlotCounter = 0
  9.     temp = 0
  10.     awaitVar = true
  11. end
  12.  
  13.  
  14. function await(x)
  15.     awaitVar = true
  16.     while awaitVar == true do
  17.         event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  18.         if message == x then
  19.             awaitVar = false
  20.         end
  21.     end
  22. end
  23.  
  24.  
  25. function getValues()  
  26.     event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  27.     width = tonumber(message)
  28.  
  29.     event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  30.     height = tonumber(message)
  31.  
  32.     event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  33.     depth = tonumber(message)
  34. end
  35.  
  36.  
  37. function calculateWidth()
  38.     print("calculating")
  39.  
  40.     slaveAmount = turtle.getItemCount(13)
  41.  
  42.     if width % slaveAmount == 0 then
  43.         slaveWidth = width / slaveAmount
  44.         lastSlaveWidth = slaveWidth
  45.     elseif width < slaveAmount then
  46.         i = 0
  47.         while not (((width - i) % slaveAmount - 1) == 0) do
  48.             i = i + 1
  49.         end
  50.         lastSlaveWidth = slaveWidth + i
  51.     end
  52.  
  53.     print(slaveAmount)
  54.     print(slaveWidth)
  55.     print(lastSlaveWidth)
  56.  
  57.     for i = 1, slaveAmount, 1 do
  58.         modem.open(100 + i)
  59.     end
  60. end
  61.  
  62.  
  63. function approximitTime()
  64.     approximitTime = (((width * height * depth) * 0.75) / slaveAmount) + (slaveAmount + width * 1)
  65.     modem.transmit(5555, 5555, "Mining started, approximitly "..approximitTime.." seconds left...")
  66. end
  67.  
  68.  
  69. function checkFuel()
  70.     if turtle.getFuelLevel() < 801 then
  71.         turtle.select(14)
  72.         turtle.refuel(16)
  73.         turtle.select(1)
  74.     end
  75. end
  76.  
  77.  
  78. function checkInv()
  79.     if turtle.getItemCount(14) < 8 then
  80.         enderChests()
  81.     elseif turtle.getItemCount(8) > 0 then
  82.         enderChests()
  83.     end
  84.        
  85.        
  86.     fullSlotCounter = 0
  87.     checkFuel()
  88. end
  89.  
  90.  
  91.  
  92. function enderChests()
  93.     -- Unload slot 1 - 10
  94.     turtle.dig()
  95.     turtle.select(15)
  96.     turtle.place()
  97.     for i = 1, 10 , 1 do
  98.         turtle.select(i)
  99.         turtle.drop()
  100.     end
  101.     turtle.select(15)
  102.     turtle.dig()
  103.  
  104.     -- Load Slot 14 with coal
  105.     turtle.select(16)
  106.     turtle.place()
  107.    
  108.     if turtle.getItemCount(14) < 64 then
  109.         turtle.select(14)
  110.         turtle.suck(64 - turtle.getItemCount(14))
  111.     end
  112.    
  113.     turtle.select(16)
  114.     turtle.dig()
  115. end
  116.  
  117.  
  118. function buildSpwan()
  119.     print("building spawn...")
  120.     turtle.select(1)
  121.     turtle.turnLeft()
  122.     turtle.dig()
  123.     turtle.forward()
  124.     turtle.turnRight()
  125.     turtle.turnRight()
  126.     turtle.digUp()
  127.     turtle.digDown()
  128.     turtle.select(12)
  129.     turtle.placeDown()
  130.     turtle.select(11)
  131.     turtle.dropDown()
  132.     turtle.up()
  133. end
  134.  
  135.  
  136. function summonSlaves()
  137.     print("summoning slaves...")
  138.     print(slaveAmount)
  139.  
  140.     for i = 1, slaveAmount, 1 do
  141.         checkInv()
  142.         turtle.select(13)
  143.         turtle.placeDown()
  144.  
  145.         print("slave summoned")
  146.  
  147.         peripheral.call('bottom','turnOn')
  148.  
  149.         sleep(1.5)
  150.         turtle.select(15)
  151.         turtle.dropDown(1)
  152.         sleep(.5)
  153.         turtle.select(16)
  154.         turtle.dropDown(1)
  155.         sleep(.5)
  156.         turtle.select(14)
  157.         turtle.dropDown(4)
  158.        
  159.  
  160.         await("listening-port")
  161.         print("accept")
  162.         modem.transmit(403, 403, 100 + i)
  163.  
  164.         if i == 1 then
  165.             distanceToGo = width - lastSlaveWidth
  166.         else
  167.             distanceToGo = width - lastSlaveWidth - (slaveWidth * (i - 1))
  168.         end
  169.  
  170.         print(distanceToGo)
  171.  
  172.         await("listening-position")
  173.         modem.transmit(100 + i, 100 + i, distanceToGo)
  174.        
  175.         if i == 1 then
  176.             sleep((width / 3) * 2)
  177.         end
  178.        
  179.         sleep(slaveWidth + 5)
  180.     end
  181.  
  182.     sleep(15)
  183. end
  184.  
  185.  
  186. function destroySpawn()
  187.     print("destroying spawn...")
  188.     turtle.down()
  189.     turtle.select(11)
  190.     turtle.suckDown()
  191.     turtle.select(12)
  192.     turtle.digDown()
  193.     checkInv()
  194. end
  195.  
  196.  
  197. function giveOrder()
  198.     print("sending parameters")
  199.     for i = 1, slaveAmount, 1 do
  200.         modem.transmit(100 + i, 100 + i, "values-incoming")
  201.        
  202.         if i == 1 then
  203.             modem.transmit(100 + i, 100 + i, lastSlaveWidth)
  204.             modem.transmit(100 + i, 100 + i, height)
  205.             modem.transmit(100 + i, 100 + i, depth)
  206.         else
  207.             modem.transmit(100 + i, 100 + i, slaveWidth)
  208.             modem.transmit(100 + i, 100 + i, height)
  209.             modem.transmit(100 + i, 100 + i, depth)
  210.         end
  211.     end
  212. end
  213.  
  214. function eatSlaves()
  215.     for i = 1, slaveAmount, 1 do
  216.         await("arrived-home")
  217.     end
  218.    
  219.     for i = 1, width, 1 do
  220.         turtle.forward()
  221.         turtle.dig()
  222.     end
  223.     turtle.turnRight()
  224.     turtle.turnRight()
  225.     for i = 1, width, 1 do
  226.         turtle.forward()
  227.         turtle.dig()
  228.     end
  229.     turtle.turnRight()
  230. end
  231.  
  232.  
  233.  
  234. -- Actual program
  235.  
  236. await("start-mining")
  237.  
  238. getValues()
  239. calculateWidth()
  240. approximitTime()
  241.  
  242. checkInv()
  243. setup()
  244.  
  245. buildSpwan()
  246. summonSlaves()
  247.    
  248. giveOrder()
  249. sleep(15)
  250. destroySpawn()
  251.  
  252.  
  253. eatSlaves()
  254. checkInv()
  255. sleep(5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement