Advertisement
Himeki

Dig

Jul 13th, 2013
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.65 KB | None | 0 0
  1. local tArgs = { ... }
  2.  
  3. --predeclare functions
  4. local printUsage
  5. local digSuccess
  6. local digFail
  7. local turtleReturn
  8.  
  9. --predeclare variables
  10. local nDistance
  11. local sDirection
  12. local nReturnDistance
  13. local bTurtleReturn
  14. local fnDigHandle
  15. local fnMoveHandle
  16. local fnReverseMove
  17.  
  18. --error avoidance
  19. local sDirection = "forward"
  20.  
  21. local tDigHandle = {
  22.     ["f"] = turtle.dig,
  23.     ["fd"] = turtle.dig,
  24.     ["fw"] = turtle.dig,
  25.     ["forward"] = turtle.dig,
  26.     ["forwards"] = turtle.dig,
  27.     ["u"] = turtle.digUp,
  28.     ["up"] = turtle.digUp,
  29.     ["d"] = turtle.digDown,
  30.     ["dn"] = turtle.digDown,
  31.     ["down"] = turtle.digDown
  32. }
  33.  
  34. local tMoveHandle = {
  35.     ["f"] = turtle.forward,
  36.     ["fd"] = turtle.forward,
  37.     ["fw"] = turtle.forward,
  38.     ["forward"] = turtle.forward,
  39.     ["forwards"] = turtle.forward,
  40.     ["u"] = turtle.up,
  41.     ["up"] = turtle.up,
  42.     ["d"] = turtle.down,
  43.     ["dn"] = turtle.down,
  44.     ["down"] = turtle.down,
  45. }
  46.  
  47. --reverses original movement
  48. local tReverseMove = {
  49.     ["f"] = turtle.back,
  50.     ["fd"] = turtle.back,
  51.     ["fw"] = turtle.back,
  52.     ["forward"] = turtle.back,
  53.     ["forwards"] = turtle.back,
  54.     ["u"] = turtle.down,
  55.     ["up"] = turtle.down,
  56.     ["d"] = turtle.up,
  57.     ["dn"] = turtle.up,
  58.     ["down"] = turtle.up,
  59. }
  60.  
  61. function turtleReturn()
  62.     while nReturnDistance > 0 do
  63.         if fnReverseMove() then
  64.             nReturnDistance = nReturnDistance - 1
  65.         else
  66.             sleep(0.5)
  67.         end
  68.     end
  69. end
  70.  
  71. function printUsage()
  72.     print( "Usage: dig <distance> <direction> <return?>" )
  73.     return
  74. end
  75.  
  76. if ( #tArgs < 1 ) or ( #tArgs > 3 ) then
  77.     printUsage()
  78. end
  79.  
  80. nDistance = tonumber(tArgs[1])
  81. if #tArgs == 2 then
  82.     sDirection = tArgs[2]
  83. elseif ( #tArgs == 3 ) and ( ( string.lower(tArgs[3]) == "return" ) or ( string.lower(tArgs[3]) == "r" ) or ( string.lower(tArgs[3]) == "ret" ) ) then
  84.     sDirection = tArgs[2]
  85.     bTurtleReturn = true
  86.     nReturnDistance = tonumber(tArgs[1])
  87. elseif ( #tArgs == 3 ) and ( ( string.lower(tArgs[3]) ~= "return" ) or ( string.lower(tArgs[3]) ~= "r" ) or ( string.lower(tArgs[3]) ~= "ret" ) ) then
  88. end
  89.  
  90. fnDigHandle = tDigHandle[string.lower(sDirection)]
  91. fnMoveHandle = tMoveHandle[string.lower(sDirection)]
  92. fnReverseMove = tReverseMove[string.lower(sDirection)]
  93.  
  94. if fnDigHandle then
  95.     while nDistance > 0 do
  96.         fnDigHandle()
  97.         if fnMoveHandle() then
  98.             nDistance = nDistance - 1
  99.         else
  100.             sleep(0.5)
  101.         end
  102.     end
  103.     if bTurtleReturn == true then
  104.         turtleReturn()
  105.     end
  106. else
  107.     print( "No such direction: "..sDirection )
  108.     print( "Try: forward, up, or down" )
  109.     return
  110. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement