Kaerius

Digger rooms

Feb 28th, 2013
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.49 KB | None | 0 0
  1. --"Digger rooms" to Kaerius, 01-03-2013
  2. local tArgs = {...}
  3. if #tArgs < 6 then
  4.  print( "<Visota> <Dlina> <Shirina> <Up/Down( u/d )> <Left or Right?( l/r )> <Gravel/Sand control mod( y/n )>" )
  5.  return
  6. end
  7. local digd = 0
  8. local digu = 0
  9. local dig = 0
  10. local step = 0
  11. local every = 0
  12. local gou = 0
  13. local god = 0
  14. local gof = 0
  15. local height = tonumber( tArgs[1] ) - 1 -- Высота
  16. local width = tonumber( tArgs[2] ) - 1 -- Ширина
  17. local length = tonumber( tArgs[3] ) -- Длина
  18. local modud = tArgs[4]
  19. local modlr = tArgs[5]
  20. local modg = tArgs[6]
  21. if modud == "u" then
  22.   vert = 0
  23. else
  24.   vert = height
  25. end
  26. if modlr == "l" then
  27.   party = 1
  28. else
  29.   party = 2
  30. end
  31. local function report()
  32.   local all = ( height + 1 ) * ( width + 1 ) * ( length ) - 2
  33.   local progress1 = ( digd + digu + dig )
  34.   local progress2 = ( gou + god + gof )
  35.   shell.run( 'clear' )
  36.   print( "Visota: ", height + 1 )
  37.   print( "Dlina: ", width + 1 )
  38.   print( "Shirina: ", length )
  39.   print( "Fuel spend: ", all )
  40.   print( "Up/Down( u/d): ", modud )
  41.   print( "Left or Right?( l/r ): ", modlr )
  42.   print( "Gravel/Sand control mod( y/n ): ", modg )
  43.   print( " - / - / - / - / - / - / - / - / - / - " )
  44.   print( "Fuel level: ", turtle.getFuelLevel() )
  45.   print( "Pass block: ", progress2 )
  46.   print( "Excavated blocks: ", progress1 )
  47. end
  48. local function digi( direction )
  49.   report()
  50.   if direction == 1 then
  51.     if turtle.digUp() then
  52.       digu = digu + 1
  53.     end
  54.   end
  55.   if direction == 2 then
  56.     if turtle.dig() then
  57.       dig = dig + 1
  58.     end
  59.   end
  60.   if direction == 3 then
  61.     if turtle.digDown() then
  62.       digd = digd + 1
  63.     end
  64.   end
  65. end
  66. local function fuel()
  67.   if fuelLevel == "unlimited" then
  68.     return true
  69.   end
  70.   local needed = ( ( height + 1 ) * ( width + 1 ) * ( length ) - 2 ) - ( gou + god + gof )
  71.   if turtle.getFuelLevel() < needed then
  72.     for n = 1, 16 do
  73.       if turtle.getItemCount( n ) > 0 then
  74.         turtle.select( n )
  75.         if turtle.refuel( 1 ) then
  76.           while turtle.getFuelLevel() < needed and turtle.getItemCount( n ) > 0 do
  77.             turtle.refuel( 1 )
  78.           end
  79.           if turtle.getFuelLevel() >= needed then
  80.             turtle.select( 1 )
  81.             return true
  82.           end
  83.         end
  84.       end
  85.     end
  86.   turtle.select( 1 )
  87.   return false
  88.   end
  89. end
  90. local function vertical()
  91.   if vert == 0 then
  92.     while true do
  93.       fuel()
  94.       if turtle.up() then
  95.         vert = vert + 1
  96.         gou = gou + 1
  97.       else
  98.         digi( 1 )
  99.       end
  100.       if vert == height then
  101.         break    
  102.       end
  103.     end
  104.   else
  105.     while true do
  106.       fuel()
  107.       if turtle.down()then
  108.         vert = vert - 1
  109.         god = god + 1
  110.       else
  111.         digi( 3 )
  112.       end
  113.       if vert == 0 then
  114.         break
  115.       end
  116.     end
  117.   end
  118. end
  119. local function go()
  120.   fuel()
  121.   while true do
  122.     if turtle.forward()then
  123.       gof = gof + 1
  124.       return true
  125.     else
  126.       digi( 2 )
  127.       if modg == "y" then
  128.         sleep( 0.5 )
  129.       end
  130.     end
  131.   end
  132. end
  133. local function turn()
  134.   if party == 1 then
  135.     turtle.turnLeft()
  136.     go()
  137.     turtle.turnLeft()
  138.     party = party + 1
  139.   else
  140.     turtle.turnRight()
  141.     go()
  142.     turtle.turnRight()
  143.     party = party - 1
  144.   end
  145. end
  146. while true do
  147.   vertical()
  148.   if step == width then
  149.     every = every + 1
  150.     step = 0
  151.     if every == length then
  152.       return true
  153.     end
  154.     turn()
  155.   else
  156.     go()
  157.     step = step + 1
  158.   end
  159.   if every == length then
  160.     return true
  161.   end
  162. end
Advertisement
Add Comment
Please, Sign In to add comment