kreezxil

Turtlescripts Fence Builder Command

Jul 23rd, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. --[[
  2. Source: http://adf.ly/mQGKM
  3. Authors: Lyqyd, Zaflis, Kreezxil
  4. Ripped by: Kreezxil
  5. Notes: Until now this code sat freely in forum, its still free, but now its encapsulated in a program that can be run and given arguments as well as loaded with 'pastebin get'
  6. Changelog:
  7. 2/22/14 - Requested Concept by Narny123 - http://adf.ly/mQFxT
  8. 2/22/14 - Original Code by Lyqyd - http://adf.ly/mQG5h
  9. 2/28/14 - Modified Code by Zaflis - http://adf.ly/mQGD2
  10. - now supports digging through gravel, and digs high enough tunnel for player to follow through
  11. - added code to allow fence removal
  12. 5/10/14 - Modified Code by Kreezxil
  13. - rearranged and encapsulated with function declarations parts of code to allow it to be in a program much easier
  14. - added arguments for variable sized fence building and removing
  15. - added help when arguments fail to match or nothing slot 1
  16. --]]
  17.  
  18. local index = 1
  19. turtle.select(1)
  20.  
  21. function place()
  22. while turtle.detectUp() do
  23. turtle.digUp()
  24. end
  25. turtle.digDown()
  26. turtle.placeDown()
  27. if turtle.getItemCount(index) == 0 then
  28. index = index + 1
  29. end
  30. if index > 16 then
  31. index = 1
  32. end
  33. turtle.select(index)
  34. end
  35.  
  36. function removeFence(length,width)
  37. turtle.digDown()
  38. for i = 1, 4 do
  39. if i==1 or i==3 then
  40. side=length
  41. else
  42. side=width
  43. end
  44. for j = 1, side-1 do
  45. turtle.dig()
  46. turtle.forward()
  47. turtle.digDown()
  48. end
  49. turtle.turnRight()
  50. end
  51. end
  52.  
  53. function buildFence(length,width)
  54. place()
  55. for i = 1, 4 do
  56. if i==1 or i==3 then
  57. side=length
  58. else
  59. side=width
  60. end
  61. for j = 1, side-1 do
  62. while turtle.detect() do
  63. turtle.dig()
  64. end
  65. turtle.forward()
  66. place()
  67. end
  68. turtle.turnRight() -- Goes clockwise
  69. end
  70. end
  71.  
  72. function myName()
  73. fullName = shell.getRunningProgram()
  74. return fs.getName(fullName)
  75. end
  76.  
  77. function mats()
  78. count=0
  79. for i=1,16 do
  80. count = count + turtle.getItemCount(i)
  81. end
  82. return count
  83. end
  84.  
  85. function needed(length,width)
  86. return (length*2)+(width*2)
  87. end
  88.  
  89. args = {...}
  90.  
  91. if #args < 3 then
  92. print("Usage:")
  93. print(" "..myName().." <length> <width> <remove|build>")
  94. print(" Turtle should also contain materials to be used as fences, preferably fences.")
  95. return
  96. end
  97.  
  98. if tonumber(args[1])==nil or tonumber(args[2])==nil then
  99. print("Dimensions must be numerical.")
  100. return
  101. end
  102.  
  103. if tonumber(args[1]) < 1 or tonumber(args[2]) < 1 then
  104. print("A dimension may not be less than 1")
  105. return
  106. end
  107.  
  108. if mats() < needed(tonumber(args[1]),tonumber(args[2])) then
  109. print("Not enough materials in turtle to build fence, please add more materials.")
  110. return
  111. end
  112.  
  113. if args[3]== "remove" then
  114. removeFence(tonumber(args[1]),tonumber(args[2]))
  115. elseif args[3]=="build" then
  116. buildFence(tonumber(args[1]),tonumber(args[2]))
  117. else
  118. print("The third option must be either 'remove' or 'build'")
  119. end
Add Comment
Please, Sign In to add comment