Advertisement
kreezxil

fenceBuilder

May 10th, 2014
1,785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement