SHOW:
|
|
- or go back to the newest paste.
1 | - | -- Function to set the heading of the turtle -- |
1 | + | |
2 | if(heading ~= 'N' and heading ~= 'n' and heading ~= 'E' and heading ~= 'e' and heading ~= 'S' and heading ~= 's' and heading ~= 'W' and heading ~= 'w') then | |
3 | if(turtle.getFuelLevel() < 2) then | |
4 | error("Insufficient fuel") | |
5 | end | |
6 | local start = vector.new(gps.locate()) | |
7 | while(turtle.detect()) do | |
8 | turtle.dig() | |
9 | - | local heading = "" |
9 | + | |
10 | - | if(turtle.detect()) then |
10 | + | |
11 | local current = vector.new(gps.locate()) | |
12 | turtle.back() | |
13 | if(start.z - current.z > 0) then | |
14 | heading = 'N' | |
15 | elseif (start.z - current.z < 0) then | |
16 | heading = 'S' | |
17 | end | |
18 | if(start.x - current.x > 0) then | |
19 | heading = 'W' | |
20 | elseif (start.x - current.x < 0) then | |
21 | heading = 'E' | |
22 | end | |
23 | end | |
24 | ||
25 | if(heading ~= newHeading) then | |
26 | if(newHeading == 'N' or newHeading == 'n') then | |
27 | if(heading == 'S' or heading == 's') then | |
28 | turtle.turnLeft() | |
29 | turtle.turnLeft() | |
30 | end | |
31 | if(heading == 'E' or heading == 'e') then | |
32 | turtle.turnLeft() | |
33 | end | |
34 | if(heading == 'W' or heading == 'w') then | |
35 | turtle.turnRight() | |
36 | end | |
37 | end | |
38 | if(newHeading == 'E' or newHeading == 'e') then | |
39 | if(heading == 'S' or heading == 's') then | |
40 | turtle.turnLeft() | |
41 | end | |
42 | if(heading == 'N' or heading == 'n') then | |
43 | turtle.turnRight() | |
44 | end | |
45 | if(heading == 'W' or heading == 'w') then | |
46 | turtle.turnRight() | |
47 | turtle.turnRight() | |
48 | end | |
49 | end | |
50 | if(newHeading == 'S' or newHeading == 's') then | |
51 | if(heading == 'N' or heading == 'n') then | |
52 | turtle.turnLeft() | |
53 | turtle.turnLeft() | |
54 | end | |
55 | if(heading == 'E' or heading == 'e') then | |
56 | turtle.turnRight() | |
57 | end | |
58 | if(heading == 'W' or heading == 'w') then | |
59 | turtle.turnLeft() | |
60 | end | |
61 | end | |
62 | if(newHeading == 'W' or newHeading == 'w') then | |
63 | if(heading == 'S' or heading == 's') then | |
64 | turtle.turnRight() | |
65 | end | |
66 | if(heading == 'E' or heading == 'e') then | |
67 | turtle.turnLeft() | |
68 | turtle.turnLeft() | |
69 | end | |
70 | if(heading == 'N' or heading == 'n') then | |
71 | turtle.turnLeft() | |
72 | end | |
73 | end | |
74 | end | |
75 | end | |
76 | ||
77 | function getHeading() | |
78 | if(turtle.getFuelLevel() < 2) then | |
79 | error("Insufficient fuel") | |
80 | end | |
81 | - | -- Function to get the heading of the turtle -- |
81 | + | |
82 | while(turtle.detect()) do | |
83 | turtle.dig() | |
84 | end | |
85 | turtle.forward() | |
86 | local current = vector.new(gps.locate()) | |
87 | turtle.back() | |
88 | - | local heading = "" |
88 | + | |
89 | - | if(turtle.detect()) then |
89 | + | |
90 | elseif (start.z - current.z < 0) then | |
91 | heading = 'S' | |
92 | end | |
93 | if(start.x - current.x > 0) then | |
94 | heading = 'W' | |
95 | elseif (start.x - current.x < 0) then | |
96 | heading = 'E' | |
97 | end | |
98 | return heading | |
99 | end | |
100 | ||
101 | function goToLocation(location,heading) | |
102 | if(heading ~= 'N' and heading ~= 'n' and heading ~= 'E' and heading ~= 'e' and heading ~= 'S' and heading ~= 's' and heading ~= 'W' and heading ~= 'w') then | |
103 | heading = getHeading() | |
104 | end | |
105 | ||
106 | local current = vector.new(gps.locate()) | |
107 | if(location.x ~= current.x or location.y ~= current.y or location.z ~= current.z) then | |
108 | if(turtle.getFuelLevel() < 2) then | |
109 | - | -- Function to go to a specific location -- |
109 | + | |
110 | end | |
111 | end | |
112 | while(location.y ~= current.y) do | |
113 | - | local heading = getHeading() |
113 | + | |
114 | while(turtle.detectUp()) do | |
115 | turtle.digUp() | |
116 | end | |
117 | turtle.up() | |
118 | else | |
119 | while(turtle.detectDown()) do | |
120 | turtle.digDown() | |
121 | end | |
122 | turtle.down() | |
123 | end | |
124 | - | if(turtle.detectUp()) then |
124 | + | |
125 | end | |
126 | ||
127 | while(location.z ~= current.z) do | |
128 | if(location.z > current.z) then | |
129 | - | if(turtle.detectDown()) then |
129 | + | |
130 | heading = 'S' | |
131 | elseif(location.z < current.z) then | |
132 | setHeading(heading,'N') | |
133 | heading = 'N' | |
134 | end | |
135 | while(turtle.detect()) do | |
136 | turtle.dig() | |
137 | end | |
138 | turtle.forward() | |
139 | current = vector.new(gps.locate()) | |
140 | end | |
141 | ||
142 | while(location.x ~= current.x) do | |
143 | if(location.x > current.x) then | |
144 | setHeading(heading,'E') | |
145 | - | if(turtle.detect()) then |
145 | + | |
146 | elseif(location.x < current.x) then | |
147 | setHeading(heading,'W') | |
148 | heading = 'W' | |
149 | end | |
150 | while(turtle.detect()) do | |
151 | turtle.dig() | |
152 | end | |
153 | turtle.forward() | |
154 | current = vector.new(gps.locate()) | |
155 | end | |
156 | return heading | |
157 | end | |
158 | ||
159 | print("X: ") | |
160 | - | if(turtle.detect()) then |
160 | + | x = tonumber(read()) |
161 | print("Y: ") | |
162 | y = tonumber(read()) | |
163 | print("Z: ") | |
164 | z = tonumber(read()) | |
165 | print("Heading: ") | |
166 | heading = read() | |
167 | ||
168 | location = vector.new(x,y,z) | |
169 | ||
170 | - | -- Function to check if turtle has sufficient fuel -- |
170 | + | |
171 | print(goToLocation(location,heading)) |