# goto turtle

Jun 19th, 2013
64
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. local tArgs = {...}
2. local face = 0
3. local r = 1
4. rednet.open("right")
5. local cx,cy,cz = gps.locate(2,false)
6. if #tArgs ~= 3 then
7. print("Incorrect usage of Function.")
8. print("goto <x> <y> <z>")
9. else
10. local gx = tonumber(tArgs[1])
11. local gy = tonumber(tArgs[2])
12. local gz = tonumber(tArgs[3])
13. local x
14. local y
15. local z
16. function PL()
17. print("Going to:")
18. write(gx) write(" ") write(gy) write(" ") print(gz)
19. end
20. function c_face()
21. if face == 5 then
22. face = 1
23. elseif face == 0 then
24. face = 4
25. end
26. end
27. function get_Face()
28. while turtle.forward() == false do
29. if turtle.up() == false then
30. turtle.digUp()
31. end
32. end
33.
34. nx,ny,nz = gps.locate(3,false)
35. if nx > cx then
36. face = 1
37. end
38. if nx < cx then
39. face = 3
40. end
41. if nz > cz then
42. face = 2
43. end
44. if nz < cz then
45. face = 4
46. end
47. end
48. function calc()
49. x = nx - gx
50. y = ny - gy
51. z = nz - gz
52. end
53. function setDir(dir)
54. while dir ~= face do
55. turtle.turnLeft()
56. face = face - 1
57. c_face()
58. end
59. end
60. function f()
61. while not turtle.forward() do
62. if not turtle.up() then
63. turtle.digUp()
64. end
65. y = y + 1
66. end
67. end
68. function go()
69. if x < 0 then
70. setDir(1)
71. while x ~= 0 do
72. f()
73. x = x + 1
74. end
75. end
76. if x > 0 then
77. setDir(3)
78. while x ~= 0 do
79. f()
80. x = x - 1
81. end
82. end
83. if z < 0 then
84. setDir(2)
85. while z ~= 0 do
86. f()
87. z = z + 1
88. end
89. end
90. if z > 0 then
91. setDir(4)
92. while z ~= 0 do
93. f()
94. z = z - 1
95. end
96. end
97. while y < 0 do
98. if turtle.up() ~= true then
99. turtle.digUp()
100. end
101. y = y + 1
102. end
103. while y > 0 do
104. if turtle.down() ~= true then
105. turtle.digDown()
106. end
107. y = y - 1
108. end
109. end
110.
111.
112.
113. tonumber(gx)
114. tonumber(gy)
115. tonumber(gz)
116. PL()
117. get_Face()
118. calc()
119. go()
120.
121. end
RAW Paste Data Copied