martijnenco

Client

Sep 7th, 2014
829
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.61 KB | None | 0 0
  1.  
  2. os.loadAPI("API")
  3. if fs.exists("config") then os.loadAPI("config") end
  4. tst = API
  5. care = true
  6.  
  7. function Main()
  8.     while true do
  9.         os.sleep(0.05)
  10.         tijda = tijd()
  11.         if tijdb ~= nil and tijda - tijdb <= 1 then
  12.             os.sleep(10)
  13.         else
  14.             tijdb = tijd()
  15.             print(' ')
  16.             print("Send me something or press a key")
  17.             if fs.exists("config") then rednet.broadcast(os.getComputerID()..'.main.request') else os.sleep(1.05) rednet.broadcast(os.getComputerID()..".main.config") end
  18.             event, var1, var2, var3, var4, var5 = tst.pullEvent2()
  19.             if event == 'key' then
  20.                 if parkedAt == nil then else rednet.broadcast(os.getComputerID..'park.done.'..parkedAt) end
  21.                 tst.refuel()
  22.                 print(' ')
  23.                 print("Manual operator selected")
  24.                 print("Arrow keys to move")
  25.                 print("'Space'/'Shift' to move up and down")
  26.                 print("Hit 'E' to exit, 'L' to view current location, 'R' to reassign location, 'T' to go to desired location, 'M' to mine on place, 'F' to farm on spot, 'S' to use the station and parking cycle or use 'C' to use the compass.")
  27.                 i = true
  28.                 while i do
  29.                     event, var1, var2, var3, var4, var5 = os.pullEvent('key')
  30.                     if var1 == 200 then
  31.                         tst.forward()
  32.                     elseif var1 == 205 then
  33.                         tst.turnRight()
  34.                     elseif var1 == 203 then
  35.                         tst.turnLeft()
  36.                     elseif var1 == 208 then
  37.                         tst.back()
  38.                     elseif var1 == 57 then
  39.                         tst.up()
  40.                     elseif var1 == 42 then
  41.                         tst.down()
  42.                     elseif var1 == 18 then
  43.                         i = false
  44.                     elseif var1 == 38 then
  45.                         local x, y, z = tst.getLocation() print("At: "..x.. " "..y.." "..z)
  46.                     elseif var1 == 46 then
  47.                         a, b = tst.compass() print(b)
  48.                     elseif var1 == 19 then
  49.                         tst.setLocation(5) local x, y, z = tst.getLocation() print("At: "..x.. " "..y.." "..z)
  50.                     elseif var1 == 20 then
  51.                         print('Goto to the next coordinates: X; ')
  52.                         x = tonumber(read())
  53.                         print('Y: ')
  54.                         y = tonumber(read())
  55.                         print('Z: ')
  56.                         z = tonumber(read())
  57.                         print('Fly height: ')
  58.                         heigth = tonumber(read())
  59.                         tst.toLocation(x,y,z,heigth, care)
  60.                     elseif var1 == 50 then
  61.                         mine()
  62.                     elseif var1 == 33 then
  63.                         farm()
  64.                     elseif var1 == 31 then
  65.                         if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
  66.                         if parkedAt == nil then else rednet.broadcast(os.getComputerID..'.park.done.'..parkedAt) end
  67.                         stationTime()
  68.                         rednet.broadcast(os.getComputerID()..'.station.done.'..tonumber(var4))
  69.                         parkTime()
  70.                     end
  71.                 end
  72.             elseif event == 'modem_message' then
  73.                 ID, event, var1, var2, var3, var4 = tst.decrypt(var4)
  74.                 if ID == os.getComputerID() and event == "main" and var1 == 'mine' then
  75.                     care = true
  76.                     if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
  77.                     if parkedAt == nil then else rednet.broadcast(os.getComputerID()..'.park.done.'..parkedAt) end
  78.                     while legitRequest('mine', os.getComputerID()) == false do end
  79.                     tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), config.turtle.outGoingHeight, care)
  80.                     care = false
  81.                     mine()
  82.                     care = true
  83.                     stationTime()
  84.                     parkTime()
  85.                     rednet.broadcast(os.getComputerID()..'.mine.done')
  86.                     care = false
  87.                 elseif ID == os.getComputerID() and event == "main" and var1 == 'farm' then
  88.                     care = true
  89.                     if tst.refuel() then else rednet.broadcast(os.getComputerID()..'.failed') return false end
  90.                     if parkedAt == nil then else rednet.broadcast(os.getComputerID..'.park.done.'..parkedAt) end
  91.                     tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, inGoingHeight, care)
  92.                     tst.toLocation(SCx, SCy+1, SCz, outGoingHeight, care)
  93.                     farm()
  94.                     tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, inGoingHeight, care)
  95.                     stationTime()
  96.                     parkTime()
  97.                     rednet.broadcast(os.getComputerID..'.farm.done')
  98.                     care = false
  99.                 elseif ID == os.getComputerID() and event == "main" and var1 == 'pauze' then
  100.                     parallel.waitForAny(sleeping,wRead)
  101.                 elseif ID == os.getComputerID() and event == "main" and var1 == 'update' then
  102.                     shell.run("delete config")
  103.                     os.reboot()
  104.                 elseif ID == os.getComputerID() and event == "main" and var1 == "config" then
  105.                     local file = fs.open("config",'w')
  106.                     file.write("turtle = "..var2)
  107.                     file.close()
  108.                 end
  109.             else
  110.                 print(event)
  111.             end
  112.         end
  113.     end
  114. end
  115.  
  116. function sleeping()
  117.     os.sleep(config.turtle.sleepInPauze)
  118. end
  119. function wRead()
  120.     read()
  121. end
  122.  
  123. function farm() -- niet af!
  124.     i = true
  125.     tst.toLocation(SCx, SCy+1, SCz, SCy+1, care)
  126.     turtle.select(7)
  127.     turtle.suckDown()
  128.     rednet.broadcast(os.getComputerID()..'.ready')
  129.     while i do
  130.         event, var1, var2, var3, var4, var5 = tst.pullEvent2()
  131.         ID, event, var1, var2, var3 = tst.decrypt(var4)
  132.         if event == 'done' or var1 == 'done' then
  133.             i = false
  134.         else
  135.             tst.toLocation(var1, var2+1, var3, SCy+1, care)
  136.             turtle.digDown()
  137.             turtle.placeDown()
  138.             rednet.broadcast(os.getComputerID()..'.done')
  139.         end
  140.     end
  141.     tst.toLocation(SCx, SCy+1, SCz, SCy+1, care)
  142.     for i = 2,16 do
  143.         if i == 7 then
  144.         else
  145.             turtle.select(i)
  146.             if turtle.getItemCount() == 0 then else
  147.                 if turtle.compareTo(1) then turtle.drop() end
  148.             end
  149.         end
  150.     end
  151. end
  152.  
  153. function parkTime()
  154.     while legitRequest('park', os.getComputerID()) == false do end
  155.     tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), tonumber(var2) + 2, care)
  156.     parkedAt = var4
  157.     turtle.suckDown()
  158. end
  159.  
  160. function legitRequest(vars1, vars2) -- 1 = event, 2 = id.
  161.     rednet.broadcast(os.getComputerID()..'.'..vars1..'.request')
  162.     event, var1, var2, var3, message, var5 = os.pullEvent('modem_message')
  163.     ID, event, var1, var2, var3, var4 = tst.decrypt(message)
  164.     if event == vars1 and ID == vars2 then
  165.         return true
  166.     else
  167.         os.sleep(0.2)
  168.         return false
  169.     end
  170. end
  171.  
  172. function tijd()
  173.     return (os.day()*24 + os.time())
  174. end
  175.  
  176. function stationTime()
  177.     tst.toLocation(config.turtle.stationCoords.x, config.turtle.stationCoords.y, config.turtle.stationCoords.z, config.turtle.inGoingHeight, care)
  178.     while legitRequest('station', os.getComputerID()) == false do end
  179.     tst.toLocation(tonumber(var1), tonumber(var2), tonumber(var3), tonumber(var2) + 1, care)
  180.     tst.turn(config.turtle.coalChest)
  181.         for i = 2,16 do
  182.             turtle.select(i)
  183.             if turtle.getItemCount() == 0 then else
  184.                 if turtle.compareTo(1) then turtle.drop() end
  185.             end
  186.         end
  187.         turtle.select(1)
  188.         turtle.drop()
  189.         turtle.suck()
  190.     tst.turn(config.turtle.dumpChest)
  191.         for i = 2,16 do
  192.             if i == 2 or i == 3 or i == 4 or i == 5 or i == 6 then
  193.                 turtle.select(i)
  194.                 if turtle.getItemCount(i) > 0 then
  195.                     turtle.drop(turtle.getItemCount(i) - 1)
  196.                 end
  197.             else
  198.                 turtle.select(i)
  199.                 turtle.drop()
  200.             end
  201.         end
  202.     rednet.broadcast(os.getComputerID()..'.station.done.'..tonumber(var4))
  203. end
  204.  
  205. function mine()
  206.     dept = 0
  207.     downWard()
  208.     trowUp()
  209.     i = 0
  210.     while i ~= 5 do
  211.         if turtle.forward() then
  212.             i = i + 1
  213.         else
  214.             if turtle.dig() then else turtle.attack() end
  215.         end
  216.     end
  217.     upWard()
  218. end
  219.  
  220. function downWard()
  221.     noBedrock = true
  222.     while noBedrock do
  223.         if turtle.down() then
  224.             dept = dept - 1
  225.             print('going down')
  226.         else
  227.             print('digging down')
  228.             if turtle.digDown() then
  229.                 if turtle.down() then
  230.                     dept = dept - 1
  231.                     for rotate = 1,4 do
  232.                         precieus = true
  233.                         a, b = turtle.inspect()
  234.                         print(b.name)
  235.                         for j in pairs(config.turtle.Dont) do
  236.                             if b.name == config.turtle.Dont[j] then precieus = false end
  237.                         end
  238.                         if precieus then turtle.select(1) turtle.dig() end
  239.                         turtle.turnLeft()
  240.                         a = nil b = nil
  241.                     end
  242.                 else
  243.                     turtle.attackDown()
  244.                 end
  245.             else
  246.                 noBedrock = false
  247.                 print('reached bedrock')
  248.             end
  249.         end
  250.     end
  251. end
  252.  
  253. function upWard()
  254.     while dept ~= 0 do
  255.         if turtle.up() then
  256.             dept = dept + 1
  257.             print('going up')
  258.         else
  259.             print('digging up')
  260.             if turtle.digUp() then
  261.                 if turtle.up() then
  262.                     dept = dept + 1
  263.                     for rotate = 1,4 do
  264.                         precieus = true
  265.                         a, b = turtle.inspect()
  266.                         print(b.name)
  267.                         for j in pairs(config.turtle.Dont) do
  268.                             if b.name == config.turtle.Dont[j] then precieus = false end
  269.                         end
  270.                         if precieus then turtle.select(1) turtle.dig() end
  271.                         turtle.turnLeft()
  272.                         a = nil b = nil
  273.                     end
  274.                 else
  275.                     turtle.attackDown()
  276.                 end
  277.             end
  278.         end
  279.     end
  280. end
  281.  
  282. function trowUp()
  283.     for i = 1,16 do
  284.         if turtle.getItemCount(i) >= 1 then
  285.             for j in ipairs(config.turtle.Dont) do
  286.                 if turtle.getItemDetail(i).name == config.turtle.Dont[j] then
  287.                     turtle.select(i)
  288.                     turtle.drop()
  289.                     break
  290.                 end
  291.             end
  292.         end
  293.     end
  294. end
  295.  
  296. function takeOver()
  297.     take = false
  298.     while take == false do
  299.         eventt, var1t, var2t, var3t, var4t, var5t = os.pullEvent("modem_message")
  300.         idt, eventt, var1t, var2t, var3t, var4t, var5t = tst.decrypt(var4t)
  301.         if idt == os.getComputerID() and eventt == "takeOver" then
  302.             take = true
  303.         end
  304.     end
  305. end
  306.  
  307. function takeControl()
  308.     while take do
  309.         eventt, var1t, var2t, var3t, var4t, var5t = os.pullEvent("modem_message")
  310.         idt, eventt, var1t, var2t, var3t, var4t, var5t = tst.decrypt(var4t)
  311.         if idt == os.getComputerID() and eventt == "takeOver" and var1t == "up" then
  312.             tst.up()
  313.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "down" then
  314.             tst.down()
  315.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "left" then
  316.             tst.turnLeft()
  317.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "right" then
  318.             tst.turnRight()
  319.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "forward" then
  320.             tst.forward()
  321.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "back" then
  322.             tst.back()
  323.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "dig" then
  324.             turtle.dig()
  325.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "attack" then
  326.             turtle.attack()
  327.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "close" then
  328.             take = false
  329.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "to1" then
  330.             tst.toLocation(tonumber(var2t), tonumber(var3t), tonumber(var4t), config.turtle.outGoingHeight, false)
  331.             take = false
  332.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "to2" then
  333.             tst.toLocation(tonumber(var2t), tonumber(var3t), tonumber(var4t), config.turtle.outGoingHeight, false)
  334.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "getFuelLevel" then
  335.             rednet.broadcast(os.getComputerID()..".takeOver.getFuelLevel."..turtle.getFuelLevel())
  336.         elseif idt == os.getComputerID() and eventt == "takeOver" and var1t == "getLocation" then
  337.             rednet.broadcast(os.getComputerID().."takeOver.getLocation."..tst.xPos.."."..tst.yPos.."."..tst.zPos)
  338.         else
  339.             print("What the hell do you mean by that?!?")
  340.         end
  341.     end
  342. end
  343.  
  344. --on startup
  345. if fs.exists("config") == false then
  346.     rednet.broadcast(os.getComputerID()..".main.config")
  347.     event, var1, var2, var3, var4, var5 = os.pullEvent("modem_message")
  348.     while true do
  349.         ID, event, var1, var2, var3, var4 = tst.decrypt(var4)
  350.         if ID == os.getComputerID() and event == "main" and var1 == "config" then
  351.             local file = fs.open("config",'w')
  352.             file.write("turtle = "..var2)
  353.             file.close()
  354.             break
  355.         end
  356.     end
  357.     os.unloadAPI("config")
  358.     os.loadAPI("config")
  359.  end
  360. tst.refuel()
  361. if redstone.getInput("bottom") then os.sleep(math.random(20)) end
  362. if os.getComputerLabel() == nil then os.setComputerLabel("t_"..os.getComputerID()) end
  363. care = true
  364. stationTime()
  365. parkTime()
  366. care = false
  367.  
  368. --while loop
  369. while true do
  370.     parallel.waitForAny(Main, takeOver)
  371.     takeControl()
  372. end
Advertisement
Add Comment
Please, Sign In to add comment