View difference between Paste ID: dm6eG7Dx and fEa4Qxef
SHOW: | | - or go back to the newest paste.
1
-- Leroki's smart miner on EEPROM --
2
3-
-- Умный робот карьер, копает все в указанных параметрах
3+
-- Умный робот карьер, капает все в указанных параметрах
4
5
-- Настройки --
6
7
trashSlots = 2 -- кол-во слотов под мусор, с 1 по указанный
8
lengh = 7 -- Длинна карьера
9
width = 4 -- Ширина карьера !!! ТОЛЬКО ЧЕТНЫЕ ЧИСЛА !!!
10-
deepM = 9 -- Высота карьера !!! ЧИСЛА КРАТНЫЕ 3 !!!
10+
deepM = 9 -- Высота карьера !!! ЧМСЛА КРАТНЫЕ 3 !!!
11
12
--------------------------------------------------------
13
toolSwich = false -- смена инструментов роботом true - да / false - нет
14
tool1 = 5 -- 1 слот для инструмента
15
tool2 = 9 -- последний слот для инструмента
16
--------------------------------------------------------
17
18
-- functions --
19
20
robot = component.proxy(component.list("robot")())
21
if toolSwich then
22
    inventory = component.proxy(component.list("inventory_controller")())
23
end
24
25
function sw(side)
26
  while robot.swing(side) do end
27
end
28
29
function moveFd()
30
    if direction == 0 then
31
        robot.move(3)
32
        z = z + 1
33
    elseif direction == 1 then
34
        robot.move(3)
35
        x = x - 1
36
    elseif direction == 2 then
37
        robot.move(3)
38
        z = z - 1
39
    elseif direction ==  3 then
40
        robot.move(3)
41
        x = x + 1
42
    end
43
end
44
45
function moveDn()
46
    robot.move(0)
47
    y = y - 1
48
end
49
50
function moveUp()
51
    robot.move(1)
52-
    if robot.durability() < 0.1 and tool1 <= tool2 and toolSwich then
52+
53
end
54
55
function tollCheck()
56
    if robot.durability() < 0.1 and tool1 <= tool2 and toolSwichw then
57
        robot.select(tool1)
58
        inventory.equip()
59
        tool1 = tool1 + 1
60
    end
61
end
62
63-
        robot.swing(3)
63+
64
    for i=1, (lengh - 1) do
65
        check(1)
66
        check(0)
67
        robot.sw(3)
68
        tollCheck()
69
        dropIt()
70
        moveFd()
71
    end
72
end
73
74
function turn(dir)
75
    if dir then
76
        direction = direction - 1
77
        robot.turn(dir)
78
    else
79
        direction = direction + 1
80
        robot.turn(dir)
81
    end
82
    if direction == -1 then
83
        direction = 3
84
    elseif direction == 4 then
85
        direction = 0
86
    end
87
end
88
89-
    robot.swing(3)
89+
90
    check(1)
91
    check(0)
92
    turn(engl)
93
    robot.sw(3)
94
    tollCheck()
95
    dropIt()
96
    moveFd()
97
    turn(engl)
98
end
99
100
function check(side)
101
    for inv = 1, trashSlots do
102
        robot.select(inv)
103-
    robot.swing(side)
103+
104
            return
105
        end
106
    end
107
    robot.sw(side)
108
end
109
110
function dropIt()
111
    for inv = 1, trashSlots do
112
        if robot.count(inv) >= 10 then
113
            robot.select(inv)
114
            robot.drop(0, 9)
115
        end
116
    end
117
end
118-
        robot.swing(0)
118+
119
function turnAround()
120
    check(1)
121
    for i = 1, 3 do
122
        robot.sw(0)
123
        tollCheck()
124
        dropIt()
125
        moveDn()
126
    end
127
    turn(true)
128
    turn(true)
129
end
130
131
-- main programm --
132
x = 0
133
y = 0
134
z = 0
135
direction = 0
136
137
deepM = deepM - (deepM % 3)
138-
    robot.swing(0)
138+
139
width = width - (width % 2)
140
141
for i = 1, 2 do
142
    robot.sw(0)
143
    tollCheck()
144
    dropIt()
145
    moveDn()
146
end
147
148
for deep = 1, (deepM / 3) do
149
    if (deep % 2) == 0 then
150
        for j = 1, (width / 2) do
151
            mine()
152
            corner(true)
153
            mine()
154
            if j == (width / 2) then
155
                if deep == (deepM / 3) then
156
                    check(0)
157
                    check(1)
158
                    break
159
                end
160
                turnAround()
161
                break
162
            end
163
            corner(false)
164
        end
165
    else
166
        for j = 1, (width / 2) do
167
            mine()
168
            corner(false)
169
            mine()
170
            if j == (width / 2) then
171
                if deep == (deepM / 3) then
172
                    check(0)
173
                    check(1)
174
                    break
175
                end
176
                turnAround()
177
                break
178
            end
179
            corner(true)
180
        end
181
    end
182
end
183-
        robot.swing(3)
183+
184
if x ~= 0 then
185
    turn(false)
186
    while x ~= 0 do
187
        robot.sw(3)
188
        tollCheck()
189
        dropIt()
190
        moveFd()
191
    end
192
    turn(false)
193-
    robot.swing(1)
193+
194
195
196
while y ~= 0 do
197
    robot.sw(1)
198
    tollCheck()
199
    dropIt()
200
    moveUp()
201
end
202
203
robot.select(trashSlots)
204
robot.place(0)
205
if direction ~= 0 then
206
    turn(false)
207
    turn(false)
208
end