Advertisement
Jerrin

Untitled

Mar 24th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. local function getInput(str, conversion, sign)
  2. write(str);
  3.  
  4. while true do
  5. local ret = read();
  6. local val = ret:lower();
  7.  
  8. if (not conversion) then
  9. return ret;
  10. elseif (conversion == 'boolean') then
  11. if (val == 'true') or (val == 'yes') or (val == 'y') then
  12. return true;
  13. elseif (val == 'false') or (val == 'no') or (val == 'n') then
  14. return false;
  15. else
  16. write('Value must be boolean');
  17. end
  18. elseif (conversion == 'number') or (conversion == 'integer') then
  19. ret = tonumber(ret);
  20.  
  21. if (ret) then
  22. local continue = true; if (sign) then
  23. if (sign == '-') and (ret > 0) then
  24. write('Value must be negative'); continue = true;
  25. elseif (sign == '+') and (ret < 0) then
  26. write('Value must be positive'); continue = false;
  27. end
  28. end
  29.  
  30. if (continue) then
  31. if (conversion == 'integer') then
  32. ret = math.floor(ret);
  33. end
  34.  
  35. return ret;
  36. end
  37. else
  38. if (conversion == 'integer') then
  39. write('Value must be an integer');
  40. else
  41. write('Value must be a number');
  42. end
  43. end
  44. elseif (type(conversion) == 'table') then
  45. if (conversion[val]) then
  46. return conversion[val];
  47. else
  48. write('Invalid response');
  49. end
  50. end
  51. end
  52. end
  53.  
  54. write('Negative values will reverse the direction. -Y will go down instead of up. -X will go left instead of Right. Z cannot be negative. Note that all directions are local.\n');
  55.  
  56. local x, y, z;
  57.  
  58. while true do
  59. write('Room Size\n');
  60. x, y, z = getInput('X: ', 'integer'), getInput('Y: ', 'integer'), getInput('Z: ', 'integer', '+');
  61.  
  62. if (not getInput('\nIs the following data correct? (y/n)\n' .. math.abs(x) .. ' blocks to the ' .. ((x>0 and 'right') or 'left') .. ', ' .. math.abs(y) .. ' blocks ' .. ((x>0 and 'up') or 'down') .. ', and ' .. z .. ' blocks forward.\n', 'boolean')) then term.clear(); else break; end
  63. end
  64.  
  65. for Y = 1, math.abs(y)-1 do
  66. for X = 1, math.abs(x)-1 do
  67. for Z = 1, z-1 do
  68. turtle.dig();
  69. turtle.forward();
  70. end
  71.  
  72. if (x<0) then X=X-1; end
  73.  
  74. if (X%2 == 1) then
  75. turtle.turnLeft();
  76. turtle.dig();
  77. turtle.forward();
  78. turtle.turnLeft();
  79. else
  80. turtle.turnRight();
  81. turtle.dig();
  82. turtle.forward();
  83. turtle.turnRight();
  84. end
  85. end
  86.  
  87. if (Y ~= math.abs(y)-1) then
  88. if (y>0) then
  89. turtle.digUp();
  90. turtle.up();
  91. else
  92. turtle.digDown();
  93. turtle.down();
  94. end
  95. end
  96. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement