Advertisement
mike1928734

delver

Jan 31st, 2023 (edited)
863
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.46 KB | None | 0 0
  1. -- delver
  2. -- pastebin run 4dsWfvHH
  3.  
  4. os.loadAPI("/dorflib/api/dt")
  5. os.loadAPI("/dorflib/api/dtb")
  6.  
  7.  
  8.  
  9.  
  10. function delver(ystart, xdist_in, zdist_in, ytarget, doubleback)
  11.  
  12.     ydelta = ystart - ytarget
  13.     if ydelta < 0 then
  14.         ygoer   = dt.dgup
  15.         ybacker = dt.dgdown
  16.         ydelta = ydelta * (-1)
  17.     else
  18.         ygoer   = dt.dgdown
  19.         ybacker = dt.dgup
  20.     end
  21.    
  22.     if xdist_in < 0 then
  23.         xdist = -1 * xdist_in
  24.         xturner1 = turtle.turnLeft
  25.         xturner2 = turtle.turnRight
  26.     else
  27.         xdist = xdist_in
  28.         xturner1 = turtle.turnRight
  29.         xturner2 = turtle.turnLeft
  30.     end
  31.    
  32.     if zdist_in < 0 then
  33.         zdist = -1 * zdist_in
  34.         zturns = 2
  35.     else
  36.         zdist = zdist_in
  37.         zturns = 0
  38.     end
  39.    
  40.     if doubleback then
  41.         doubleback = true
  42.     else
  43.         doubleback = false
  44.     end
  45.    
  46.     done = false
  47.    
  48.     while not done do
  49.  
  50.         dt.fforward()
  51.         dt.dgforward()
  52.        
  53.         for i = 1,ydelta,1 do
  54.             ygoer()
  55.         end
  56.        
  57.         for i = 1,zturns,1 do
  58.             turtle.turnRight()
  59.         end
  60.        
  61.         xtravelled = 0
  62.        
  63.         while ((dt.slots_full() < 13) and ((xtravelled <= xdist))) do
  64.             while ((not dt.is_solid(turtle.inspect)) or (dt.is_turtle(turtle.inspect))) do
  65.                 xturner1()
  66.                 digf()
  67.                 xtravelled = xtravelled + 1
  68.                 xturner2()
  69.             end
  70.            
  71.             for i = 1,zdist,1 do
  72.                 digf()
  73.             end
  74.            
  75.             if doubleback then
  76.                 for i = 1,zdist,1 do
  77.                     turtle.back()
  78.                 end
  79.             else
  80.                 xturner1()
  81.                 digf()
  82.                 xtravelled = xtravelled + 1
  83.                 xturner1()
  84.            
  85.                 for i = 1,zdist,1 do
  86.                     digf()
  87.                 end
  88.                 xturner2()
  89.                 xturner2()
  90.             end
  91.         end
  92.        
  93.         xturner2()
  94.         for i = 1,xtravelled,1 do
  95.             digf()
  96.         end
  97.         xturner1()
  98.        
  99.         for i = 1,zturns,1 do
  100.             turtle.turnRight()
  101.         end
  102.        
  103.         xturner2()
  104.         xturner2()
  105.        
  106.         dt.dgforward()
  107.         dt.dgforward()
  108.         dt.dgforward()
  109.         dt.dgforward()
  110.        
  111.         xturner2()
  112.         xturner2()
  113.        
  114.         for i = 1,ydelta,1 do
  115.             ybacker()
  116.         end
  117.  
  118.         dt.dgforward()
  119.         dt.dgforward()
  120.        
  121.         turtle.turnLeft()
  122.         dt.dump()
  123.         turtle.turnRight()
  124.        
  125.         if not dt.has_fuel(800) then
  126.             done = true
  127.         end
  128.         if (xtravelled >= xdist) then
  129.             done = true
  130.         end
  131.     end
  132.  
  133. end
  134.  
  135. function digf()
  136.     dt.dgforward()
  137.     dt.dup()
  138.     dt.ddown()
  139. end
  140.  
  141.  
  142.  
  143.  
  144. args = {...}
  145.  
  146. if #args < 3 then
  147.     print("Usage: delver [y start] [x] [z] [ytarget = 12] [doubleback = 0 (|1)]")
  148. else
  149.     if #args < 4 then
  150.         ytarget = 12
  151.     else
  152.         ytarget = tonumber(args[4])
  153.     end
  154.    
  155.     if #args < 5 then
  156.         doubleback = true
  157.     else
  158.         if tonumber(args[5]) > 0 then
  159.             doubleback = true
  160.         else
  161.             doubleback = false
  162.         end
  163.     end
  164.    
  165.     ydelta = tonumber(args[1])
  166.     xdist  = tonumber(args[2])
  167.     zdist  = tonumber(args[3])
  168.  
  169.     delver(ydelta, xdist, zdist, ytarget, doubleback)
  170. end
  171.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement