tuekats

tillapi

Nov 15th, 2015
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.18 KB | None | 0 0
  1. local actualPosition = {}
  2. local homePos = {}
  3.  
  4. function goTo(x3,y3,z3,facing3)
  5.     if actualPosition["y"] == nil then
  6.         print("getting actual position")
  7.         getActualPosition()
  8.     end
  9.     print(actualPosition["x"])
  10.     print(x3)
  11.     while actualPosition["y"]> y3 do
  12.         forceMoveDown()
  13.     end
  14.     while actualPosition["y"]< y3 do
  15.         forceMoveUp()
  16.     end
  17.     while actualPosition["x"]< x3 do
  18.         turnToFacing(2)
  19.         forceMoveForward()
  20.     end
  21.     while actualPosition["x"]> x3 do
  22.         turnToFacing(4)
  23.         forceMoveForward()
  24.     end
  25.     while actualPosition["z"]< z3 do
  26.         turnToFacing(3)
  27.         forceMoveForward()
  28.     end
  29.     while actualPosition["z"]> z3 do
  30.         turnToFacing(1)
  31.         forceMoveForward()
  32.     end
  33.     turnToFacing(facing3)
  34. end
  35.  
  36. function forceMoveForward()
  37.     turtle.dig()
  38.     fuelCheck()
  39.     turtle.forward()
  40.     if actualPosition["facing"]==1 then
  41.         actualPosition["z"]=actualPosition["z"]-1
  42.     elseif actualPosition["facing"]==2 then
  43.         actualPosition["x"]=actualPosition["x"]+1
  44.     elseif actualPosition["facing"]==3 then
  45.         actualPosition["z"]=actualPosition["z"]+1
  46.     elseif actualPosition["facing"]==4 then
  47.         actualPosition["x"]=actualPosition["x"]-1
  48.     end
  49. end
  50.  
  51. function moveTurnLeft()
  52.     turtle.turnLeft()
  53.     actualPosition["facing"]=actualPosition["facing"]-1
  54.     if actualPosition["facing"]==0 then
  55.         actualPosition["facing"]=4
  56.     end
  57. end
  58.  
  59. function moveTurnRight()
  60.     turtle.turnRight()
  61.     actualPosition["facing"]=actualPosition["facing"]+1
  62.     if actualPosition["facing"]==5 then
  63.         actualPosition["facing"]=1
  64.     end
  65. end
  66.  
  67. function forceMoveBack()
  68.     for i=1,2 do moveTurnLeft() end
  69.     forceMoveForward()
  70.     for i=1,2 do moveTurnLeft() end
  71. end
  72.  
  73. function forceMoveUp()
  74.     turtle.digUp()
  75.     fuelCheck()
  76.     turtle.up()
  77.     actualPosition["y"]=actualPosition["y"]+1
  78. end
  79.  
  80. function forceMoveDown()
  81.     turtle.digDown()
  82.     fuelCheck()
  83.     turtle.down()
  84.     actualPosition["y"]=actualPosition["y"]-1
  85. end
  86.  
  87. function turnToFacing(facing1)
  88.     while actualPosition["facing"]~=facing1 do
  89.         moveTurnLeft()
  90.     end
  91. end
  92.  
  93. function getFacing()
  94.     local x0,y0,z0 = gps.locate()
  95.     for i = 1,2 do
  96.         if turtle.forward() then
  97.             local x1,y1,z1 = gps.locate()
  98.             turtle.back()
  99.             if x0 > x1 then
  100.                 return 4
  101.             elseif x0 < x1 then
  102.                 return 2
  103.             elseif z0 > z1 then
  104.                 return 1
  105.             elseif z0 < z1 then
  106.                 return 3
  107.         end
  108.         elseif turtle.back() then
  109.             x1,y1,z1 = gps.locate()
  110.             turtle.forward()
  111.             if x0 > x1 then
  112.                 return 2
  113.             elseif x0 < x1 then
  114.                 return 4
  115.             elseif z0 > z1 then
  116.                 return 3
  117.             elseif z0 < z1 then
  118.                 return 1
  119.         end
  120.         else  
  121.             turtle.turnRight()
  122.         end
  123.     end
  124.     print("unable to get facing")
  125.     print("now executing force mode")
  126.     turtle.turnLeft()
  127.     turtle.turnLeft()
  128.     forceMoveForward()
  129.     local x1,y1,z1 = gps.locate()
  130.     forceMoveBack()
  131.     if x0 > x1 then
  132.         return 4
  133.     elseif x0 < x1 then
  134.         return 2
  135.     elseif z0 > z1 then
  136.         return 1
  137.     elseif z0 < z1 then
  138.         return 3
  139.     end
  140. end
  141.  
  142. function getActualPosition()
  143.     local x,y,z = gps.locate()
  144.     local facing =  getFacing()
  145.     actualPosition["x"]=x
  146.     actualPosition["y"]=y
  147.     actualPosition["z"]=z
  148.     actualPosition["facing"]=facing
  149.     return actualPosition
  150. end
  151.  
  152. function printActualPosition()
  153.     print(textutils.serialize(actualPosition))
  154. end
  155.  
  156. function setHomePosition()
  157.     if fs.exists("homePosition") then
  158.         fs.delete("homePosition")
  159.     end
  160.     local file = fs.open("homePosition","w")
  161.     file.write( textutils.serialize ( getActualPosition() ) )
  162.     file.flush()
  163.     file.close()
  164. end
  165.  
  166. function getHomePosition()
  167.     if fs.exists("homePosition") then
  168.         local file0 = fs.open("homePosition","r")
  169.         local homePosition0 = {}
  170.         homePosition0 = textutils.unserialize(file0.readAll())
  171.         homePos = homePosition0
  172.         print(textutils.serialize(homePosition0))
  173.         return homePosition0
  174.     else
  175.         print("no home position was set ...")
  176.         return
  177.     end
  178. end
  179.  
  180. function homePositionDialog()
  181.     print("press any key to set current position to home position ...")
  182.     local timer1 = os.startTimer(4)
  183.     while true do
  184.         local event, param = os.pullEvent()
  185.         if event=="timer" and param==timer1 then
  186.             print("no new home position was set ...")
  187.             break
  188.         end
  189.         if event=="key" then
  190.             setHomePosition()
  191.             print("a new home position was set...")
  192.             break
  193.         end
  194.      end
  195. end
  196.  
  197. function checkIfActualPositionIsHomePosition()
  198.     actualPosition = getActualPosition()
  199.         homePos = getHomePosition()
  200.         if textutils.serialize(actualPosition)==textutils.serialize(homePos) then
  201.             print("i am at my home position")
  202.         else
  203.             print("i am going to my home position")
  204.             goTo(homePos["x"], homePos["y"], homePos["z"], homePos["facing"])
  205.         end
  206. end
  207.  
  208. function fuelCheck()
  209.     print("checking for fuel ...")
  210.     if turtle.getFuelLevel()<10000 then
  211.         local detail3 = turtle.getItemDetail(16)
  212.         if detail3~=nil and detail3["name"]=="EnderStorage:enderChest" then
  213.            
  214.             turtle.digUp()
  215.             turtle.select(16)
  216.             turtle.placeUp()
  217.             turtle.select(12)
  218.             turtle.drop()
  219.             turtle.suckUp(64)
  220.             turtle.refuel()
  221.             turtle.select(16)
  222.             turtle.digUp()
  223.         else
  224.             print("put a fuel chest in slot 16")
  225.         end
  226.     end
  227. end
  228.  
  229. function itemCheck()
  230.     print("checking for items ...")
  231.     if turtle.getItemCount()<=4 then
  232.       local slot = turtle.getSelectedSlot()
  233.         local detail4 = turtle.getItemDetail(slot+12)
  234.         --print(detail4)
  235.         if detail4~=nil and detail4["name"]=="EnderStorage:enderChest" then
  236.             turtle.select(slot+12)
  237.             turtle.digUp()
  238.             turtle.placeUp()
  239.             turtle.select(slot)
  240.                 while turtle.getItemCount(slot)<64 do
  241.                     turtle.suckUp(64-turtle.getItemCount(slot))
  242.                     sleep(1)
  243.                 end
  244.             turtle.select(slot+12)
  245.             turtle.digUp()
  246.             turtle.select(slot)
  247.         else
  248.             print("no refill chest in slot " ..(slot+12))
  249.         end
  250.     end
  251. end
  252.  
  253. --checkForItems()
  254.  
  255. --fuelCheck()
Advertisement
Add Comment
Please, Sign In to add comment