solidity

Untitled

May 20th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.82 KB | None | 0 0
  1. -- startup script for mining turtles
  2.  
  3. function ack(id)
  4.     rednet.send(id, "ack")
  5. end
  6.  
  7. rednet.close("right")
  8. rednet.open("right")
  9.  
  10. function findDirection()
  11.     local ret = 0
  12.     local oldX, _, oldZ = gps.locate(1)
  13.     print("location 1: "..oldX.." "..oldZ)
  14.     local moved = false
  15.     for d = 1,4 do
  16.         print("testing direction "..d)
  17.         if not turtle.detect() then
  18.             while not turtle.forward() do
  19.                 turtle.attack()
  20.                 sleep(0.25)
  21.             end
  22.             moved = true
  23.             break
  24.         else
  25.             turtle.turnRight()
  26.         end
  27.     end
  28.     if not moved then
  29.         turtle.dig()
  30.         while not turtle.forward() do
  31.             turtle.attack()
  32.             sleep(0.25)
  33.         end
  34.     end
  35.     local newX, _, newZ = gps.locate(1)
  36.     print("location 2: "..newX.." "..newZ)
  37.     while not turtle.back() do
  38.         sleep(0.25)
  39.     end
  40.     local deltaX = newX - oldX
  41.     local deltaZ = newZ - oldZ
  42.     if deltaX == 1 then
  43.         ret = 4
  44.     elseif deltaX == -1 then
  45.         ret = 2
  46.     elseif deltaZ == 1 then
  47.         ret = 1
  48.     elseif deltaZ == -1 then
  49.         ret = 3
  50.     end
  51.     print("found direction: "..ret)
  52.     return ret
  53. end
  54.  
  55. local pos = {}
  56. -- print("which direction am i facing?")
  57. -- pos[4] = tonumber(read())
  58. sleep(5)
  59. pos[4] = findDirection()
  60. pos[1], pos[2], pos[3] = gps.locate(1)
  61. local statefile = "state"
  62. local fh = fs.open(statefile, "w")
  63. for i = 1,4 do
  64.     fh.writeLine(tostring(pos[i]))
  65. end
  66. fh.close()
  67.  
  68. local state = {}
  69. local metastatefile = "metastate"
  70. local mfh = fs.open(metastatefile, "r")
  71. for i = 1,10 do
  72.     state[i] = tonumber(mfh.readLine())
  73. end
  74. mfh.close()
  75.  
  76. for Z = 1,state[8] do
  77.     for X = 1,state[7] do
  78.         local mineX = state[1] + (X - 1) * 5
  79.         local mineZ = state[2] + (Z - 1) * 5
  80.         if (Z >= state[10]) and (X >= state[9]) then
  81.             print("going to mine at "..mineX.." "..mineZ)--..", dropping loot at "..state[3].." "..state[4].." "..state[5].." "..state[6])
  82.             shell.run("miminer "..mineX.." "..mineZ.." "..state[3].." "..state[4].." "..state[5].." "..state[6])
  83.             mfh = fs.open(metastatefile, "w")
  84.             for i = 1,8 do
  85.                 mfh.writeLine(tostring(state[i]))
  86.             end
  87.             mfh.writeLine(tostring(X))
  88.             mfh.writeLine(tostring(Z))
  89.             mfh.close()
  90.             sleep(5)
  91.         else
  92.             print("already mined out "..mineX.." "..mineZ)
  93.         end
  94.     end
  95. end
  96. -- while true do
  97.     -- local msg = ""
  98.     -- print("broadcasting ready signal")
  99.     -- rednet.broadcast("drone ready")
  100.  
  101.     -- id, msg, _ = rednet.receive(10)
  102.     -- if msg ~= "" then
  103.         -- print("answer received")
  104.         -- if msg == "mine at" then
  105.             -- ack(id)
  106.             -- args = {}
  107.             -- for i = 1,6 do
  108.                 -- id, args[i], _ = rednet.receive()
  109.                 -- print("received: ", args[i])
  110.                 -- ack(id)
  111.             -- end
  112.             -- print("going to mine at "..args[1].." "..args[2]..", dropping loot at "..args[3].." "..args[4].." "..args[5].." "..args[6])
  113.             -- shell.run("miminer ", args[1].." "..args[2].." "..args[3].." "..args[4].." "..args[5].." "..args[6]) -- go do stuff
  114.         -- else        
  115.             -- os.sleep(10)
  116.         -- end
  117.     -- end
  118. -- end
Advertisement
Add Comment
Please, Sign In to add comment