View difference between Paste ID: uCgAezvE and Xt62ndPN
SHOW: | | - or go back to the newest paste.
1
args = {...}
2
d = 0
3
distance = args[1]
4
tonumber(distance)
5
tx = args[1]
6
ty = args[2]
7
tz = args[3]
8
hx,hy,hz = gps.locate()
9
x = hx
10
y = hy
11
z = hz
12
print("home:",hx,hy,hz)
13
print("target:",tx,ty,tz)
14
planted = false
15
function Refuel()
16
    d2 = (2*math.abs(tx-hx)+2*math.abs(tz-hz)+math.abs(120-hy)+math.abs(120-ty))
17
    n=math.ceil(d2/80)
18
    print(n)
19
    turtle.select(1)
20
    turtle.refuel(n)
21
end
22
23
function Det()
24
 print(table.getn(args))
25
 i = table.getn(args)
26
 if i == 0 or i == nil then
27
 printError("Nothing Defined, Use distance or coordinates")
28
 elseif i == 1 then
29
 print("Running In Distance Mode")
30
 Run()
31
 elseif i == 3 then
32
 print("Running In GPS Mode")
33
 GPSCal()
34
 elseif i >= 3 then
35
 printError("Too many Arguments")
36
 end
37
end
38
39
function GPSCal()
40
    Refuel()
41
    --go up to lvl 120
42
    while y < 120 do
43
    turtle.up()
44
    y = y+1
45
    end
46
    --calibrate x and y
47
    ix,iy,iz = gps.locate()
48
    turtle.forward()
49
    x,y,z = gps.locate()
50
    if x - ix == 1 then
51
    RunGPS()
52
    elseif x - ix == -1 then
53
    turtle.turnRight()
54
    turtle.turnRight()
55
    RunGPS()
56
    elseif z - iz == 1 then
57
    turtle.turnLeft()
58
    RunGPS()
59
    elseif z - iz == -1 then
60
    turtle.turnRight()
61
    RunGPS()
62
    else
63
    printError("GPS ERROR")
64
    end 
65
end
66
67
function RunGPS()
68
    x,y,z = gps.locate()
69
    --go x
70
    if x < tonumber(tx) then
71
    while x<tonumber(tx) do
72
    if turtle.getFuelLevel() == 0 then
73
    Refuel()
74
    end
75
    turtle.forward()
76
    x=x+1
77
    end
78
    elseif x > tonumber(tx) then
79
    while x>tonumber(tx) do
80
    if turtle.getFuelLevel() == 0 then
81
    Refuel()
82
    end
83
    turtle.back()
84
    x=x-1
85
    end
86
    end
87
    --go z
88
    if z<tonumber(tz) then
89
    turtle.turnRight()
90
    while z<tonumber(tz) do
91
    if turtle.getFuelLevel() == 0 then
92
    Refuel()
93
    end
94
    turtle.forward()
95
    z=z+1
96
    end
97
    elseif z>tonumber(tz) then
98
    turtle.turnLeft()
99
    while z>tonumber(tz) do
100
    if turtle.getFuelLevel() == 0 then
101
    Refuel()
102
    end
103
    turtle.forward()
104
    z=z-1
105
    end
106
    end
107
    --DESCEND
108
    while y>tonumber(ty) or turtle.detectDown() == false do
109
    if turtle.getFuelLevel() == 0 then
110
    Refuel()
111
    end
112
    turtle.down()
113
    y=y-1
114
    if turtle.detectDown() == true then
115
    if planted == false then
116
    Plant()
117
    else 
118
    print("home")
119
    end
120
    end
121
    end
122
end
123
124
function Run()
125
turtle.refuel(math.ceil(tx/80))
126
redstone.setOutput("right", false)
127
while tonumber(d) < tonumber(distance) do
128
if turtle.detect() == false then
129
turtle.forward()
130
d = d+1
131
elseif turtle.detect() == true then
132
Plant()
133
elseif d == distance then
134
Plant()
135
end
136
end
137
end
138
139
function Plant()
140
turtle.back()
141
turtle.select(2)
142
turtle.place()
143
turtle.back()
144
turtle.back()
145
turtle.select(3)
146
turtle.place()
147
turtle.turnLeft()
148
redstone.setOutput("right", true)
149
planted = true
150
tx = hx
151
ty = hy
152
tz = hz
153
GPSCal()
154
end
155
Det()