Advertisement
guitarplayer616

Gpsi

Dec 26th, 2015
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.58 KB | None | 0 0
  1. function update(dir)
  2.         if dir == "forward" then
  3.             if face == "north" then
  4.                 lengthPos = lengthPos - 1
  5.             elseif face == "south" then
  6.                 lengthPos = lengthPos + 1
  7.             elseif face == "west" then
  8.                 widthPos = widthPos - 1
  9.             elseif face == "east" then
  10.                 widthPos = widthPos + 1
  11.             end
  12.         elseif dir == "backward" then
  13.                 if face == "north" then
  14.                         lengthPos = lengthPos + 1
  15.                 elseif face == "south" then
  16.                         lengthPos = lengthPos - 1
  17.                 elseif face == "west" then
  18.                         widthPos = widthPos + 1
  19.                 elseif face == "east" then
  20.                         widthPos = widthPos - 1
  21.                 end
  22.         elseif dir == "up" then
  23.                 heightPos = heightPos + 1
  24.         elseif dir == "down" then
  25.                 heightPos = heightPos - 1
  26.         elseif dir == "right" then
  27.                 if face == "north" then
  28.                         face = "east"
  29.                 elseif face == "east" then
  30.                         face = "south"
  31.                 elseif face == "south" then
  32.                         face = "west"
  33.                 elseif face == "west" then
  34.                         face = "north"
  35.                 end
  36.         elseif dir == "left" then
  37.                 if face == "north" then
  38.                         face = "west"
  39.                 elseif face == "west" then
  40.                         face = "south"
  41.                 elseif face == "south" then
  42.                         face = "east"
  43.                 elseif face == "east" then
  44.                         face = "north"
  45.                 end
  46.         end
  47.         recordPos(heightPos,widthPos,lengthPos,face)
  48. end
  49.  
  50. function goto(heightGoal,widthGoal,lengthGoal)
  51.     shell.run("position")
  52.     if turtle.getFuelLevel() < 200 then
  53.         refill()
  54.     end
  55.     if heightGoal > heightPos then
  56.         while heightGoal > heightPos do
  57.             up()
  58.         end
  59.     elseif heightGoal < heightPos then
  60.         while heightGoal < heightPos do
  61.             down()
  62.         end
  63.     end
  64.     if widthGoal > widthPos then
  65.         turn("east")
  66.         while widthGoal > widthPos do
  67.             forward()
  68.         end
  69.     elseif widthGoal < widthPos then
  70.         turn("west")
  71.         while widthGoal < widthPos do
  72.             forward()
  73.         end
  74.     end
  75.     if lengthGoal > lengthPos then
  76.         turn("south")
  77.         while lengthGoal > lengthPos do
  78.             forward()
  79.         end
  80.     elseif lengthGoal < lengthPos then
  81.         turn("north")
  82.         while lengthGoal < lengthPos do
  83.             forward()
  84.         end
  85.     end
  86. end
  87.  
  88. function recordPos(heightPos,widthPos,lengthPos,face)
  89.     local h = fs.open("position","w")
  90.     h.writeLine("heightPos = "..tostring(heightPos))
  91.     h.writeLine("widthPos = "..tostring(widthPos))
  92.     h.writeLine("lengthPos = "..tostring(lengthPos))
  93.     h.writeLine("face = ".."\""..tostring(face).."\"")
  94.     h.close()
  95. end
  96.  
  97. function gpsi.forward()
  98.   update("forward")
  99.   while not turtle.forward() do
  100.     turtle.dig()
  101.   end
  102. end
  103.  
  104. function gpsi.up()
  105.   update("up")
  106.   while not turtle.up() do
  107.     turtle.digUp()
  108.   end
  109. end
  110.  
  111. function gpsi.down()
  112.   update("down")
  113.   while not turtle.down() do
  114.     turtle.digDown()
  115.   end
  116. end
  117.  
  118. function gpsi.right()
  119.   update("right")
  120.   turtle.turnRight()
  121. end
  122.    
  123. function gpsi.left()
  124.   update("left")
  125.   turtle.turnLeft()
  126. end
  127.  
  128. function turn(dir)
  129.     if face == "north" then
  130.         if dir == "east" then
  131.             while face ~= dir do
  132.                 right()
  133.             end
  134.         else
  135.             while face ~= dir do
  136.                 left()
  137.             end
  138.         end
  139.    elseif face == "east" then
  140.         if dir == "south" then
  141.             while face ~= dir do
  142.                 right()
  143.             end
  144.         else
  145.             while face ~= dir do
  146.                 left()
  147.             end
  148.         end
  149.     elseif face == "south" then
  150.         if dir == "west" then
  151.             while face ~= dir do
  152.                 right()
  153.             end
  154.         else
  155.             while face ~= dir do
  156.                 left()
  157.             end
  158.         end
  159.     elseif face == "west" then
  160.         if dir == "north" then
  161.             while face ~= dir do
  162.                 right()
  163.             end
  164.         else
  165.             while face ~= dir do
  166.                 left()
  167.             end
  168.         end
  169.     end
  170. end
  171.  
  172. function gpsi.init()
  173.     if fs.exists("position") then
  174.         shell.run("position")
  175.     else
  176.         recordPos(0,0,0,"south")
  177.     end
  178. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement