SHOW:
|
|
- or go back to the newest paste.
1 | id=4 | |
2 | id2=163621 | |
3 | ||
4 | rap={wyd="tartak", fun="zbieracz", nse=2, orp=5, oka=2, zgd=0, zpp=12000, stn=0, akt=0, pal=0, pll=turtle.getFuelLevel(), sur=0, gpx=0, gpy=0, gpz=0, pro=0, fnn="", fno="startUp", rod="", nrd=0, var=0, kom="", psp=0, ptp=0, psd=0} | |
5 | ||
6 | function aktualizuj() --do aktualizowania parametrow (w tle) | |
7 | napisz("Uruchamiam funkcje aktualizacji.") | |
8 | while true do | |
9 | repeat | |
10 | a5, b5, c5, d5, e5, f5=os.pullEvent("modem_message") | |
11 | until e5.rod=="K" | |
12 | rap.oka=e5.oka | |
13 | rap.zgd=e5.zgd | |
14 | rap.orp=e5.orp | |
15 | rap.zpp=e5.zpp | |
16 | -- tu bylo sleep(e5.oka) | |
17 | end | |
18 | end | |
19 | ||
20 | function raportuj() --do raportowania parametrow (w tle) | |
21 | napisz("F: raportuj - Rozpoczynam raportowanie w tle") | |
22 | while true do | |
23 | local tablica={wyd=rap.wyd, fun=rap.fun, nse=rap.nse, orp=rap.orp, oka=rap.oka, zgd=rap.zgd, stn=rap.stn, akt=rap.akt, pal=rap.pal, pll=rap.pll, sur=rap.sur, gpx=rap.gpx, gpy=rap.gpy, gpz=rap.gpz, pro=rap.pro, fnn=rap.fnn, fno=rap.fno, rod="R", nrd=rap.nrd, var=rap.var, kom=rap.kom, psp=rap.psp, ptp=rap.ptp, psd=rap.psd, zpp=rap.zpp} | |
24 | rap.pll=turtle.getFuelLevel() | |
25 | modem.transmit(1, id, tablica) | |
26 | sleep(rap.orp) | |
27 | end | |
28 | end | |
29 | ||
30 | function napisz(arg1) --do komentowania w ramach funkcji | |
31 | local tablica={wyd=rap.wyd, fun=rap.fun, nse=rap.nse, oka=rap.oka, orp=rap.orp, zgd=rap.zgd, stn=rap.stn, akt=rap.akt, pal=rap.pal, pll=rap.pll, sur=rap.sur, gpx=rap.gpx, gpy=rap.gpy, gpz=rap.gpz, pro=rap.pro, rod="F", nrd=0, var=0, kom=arg1, fnn=rap.fnn, fno=rap.fno} --pobiera zmienne z tablicy glownej (wiekszosc) ale przypisuje wlasny rodzaj i tresc komunikatu | |
32 | print(arg1) | |
33 | modem.transmit(1, id, tablica) | |
34 | end | |
35 | ||
36 | function uruchom_modem() -- uruchamia modem, zwraca true jesli otwarty na kanale id | |
37 | ||
38 | modem=peripheral.wrap("right") | |
39 | modem.open(id) | |
40 | if modem.isOpen(id)==true then | |
41 | rap.fnn="W1" | |
42 | rap.fno="uruchom_modem" | |
43 | napisz("Modem otwarty na kanale"..id) | |
44 | return true | |
45 | else | |
46 | print("Modem nie zostal otwarty") | |
47 | return false | |
48 | end | |
49 | end | |
50 | ||
51 | function polaczenie_z_baza(arg1, arg2, arg3, arg4) --czeka na odpowiedz zwrotna na tablice rodzaju "P" o tresci: ARG1 (rodzaj pytania-nrd), ARG2 (tresc komunikatu-kom) przez ARG3 czasu i czynnosc te powtarza ARG4 razy. Zwraca tresc komentarza tablicy zwroconej (kom), jezeli spelnione zostaly warunki (zgodnosc zmiennej var). | |
52 | rap.fnn="W2" | |
53 | rap.fno="polaczenie_z_baza" | |
54 | local warunek=0 | |
55 | local licz=0 | |
56 | napisz("Polaczenie_z_baza(): Wysylam pytanie numer:") | |
57 | napisz(arg1) | |
58 | repeat | |
59 | local tablica={wyd=rap.wyd, fun=rap.fun, orp=rap.orp, zgd=rap.zgd, stn=rap.stn, akt=rap.akt, pal=rap.pal, pll=rap.pll, sur=rap.sur, gpx=rap.gpx, gpy=rap.gpy, gpz=rap.gpz, pro=rap.pro, rod="P", nrd=arg1, kom=arg2, var=id2, fnn=rap.fnn, fno=rap.fno} | |
60 | modem.transmit(1, id, tablica) | |
61 | napisz("Polaczenie_z_baza(): proba: "..licz) | |
62 | os.startTimer(arg3) | |
63 | repeat | |
64 | a1, b1, c1, d1, e1, f1 = os.pullEvent() | |
65 | if ((a1=="modem_message") and (e1.nrd==1) and (e1.rod=="P") and (e1.var==id2)) then | |
66 | warunek=1 | |
67 | else | |
68 | warunek=0 | |
69 | end | |
70 | until (warunek==1) or (a1=="timer") | |
71 | licz=licz+1 | |
72 | until (warunek==1) or (licz==arg4) | |
73 | if warunek==1 then | |
74 | napisz("Otrzymalem wiadomosc zwrotna!") | |
75 | return e1.kom | |
76 | elseif a1=="timer" then | |
77 | napisz("polaczenie_z_baza: Uplynal czas oczekiwania.") | |
78 | return a1 | |
79 | else | |
80 | napisz("Nieznany wynik funkcji.") | |
81 | end | |
82 | end | |
83 | ||
84 | function sygnal(kierunek) | |
85 | if kierunek=="przod" then | |
86 | czyjest, blok=turtle.inspect() | |
87 | elseif kierunek=="gora" then | |
88 | czyjest, blok=turtle.inspectUp() | |
89 | elseif kierunek=="dol" then | |
90 | czyjest, blok=turtle.inspectDown() | |
91 | else | |
92 | napisz("F: sygnal - funkcja sygnal ze zlym parametrem") | |
93 | end | |
94 | ||
95 | if czyjest==false then | |
96 | znaleziono="nic" | |
97 | elseif blok["name"]=="minecraft:log" then | |
98 | znaleziono="drewno" | |
99 | elseif blok["name"]=="minecraft:sapling" then | |
100 | znaleziono="sadzonka" | |
101 | elseif blok["name"]=="minecraft:glass" then | |
102 | znaleziono="szklo" | |
103 | elseif blok["name"]=="minecraft:chest" then | |
104 | znaleziono="skrzynia" | |
105 | elseif blok["name"]=="minecraft:leaves" then | |
106 | znaleziono="lisc" | |
107 | elseif blok["name"]=="minecraft:snow_layer" then | |
108 | znaleziono="snieg" | |
109 | elseif blok["name"]=="minecraft:nether_brick" then | |
110 | znaleziono="ceglanetheru" | |
111 | elseif blok["name"]=="minecraft:stone" then | |
112 | znaleziono="kamien" | |
113 | elseif blok["name"]=="minecraft:lit_pumpkin" then | |
114 | znaleziono="lampion" | |
115 | elseif blok["name"]=="minecraft:obsidian" then | |
116 | znaleziono="obsydian" | |
117 | elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="blue") then | |
118 | znaleziono="szklo_niebieskie" | |
119 | elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="red") then | |
120 | znaleziono="szklo_czerwone" | |
121 | elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="purple") then | |
122 | znaleziono="szklo_purpurowe" | |
123 | elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="yellow") then | |
124 | znaleziono="szklo_zolte" | |
125 | elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="orange") then | |
126 | znaleziono="szklo_pomaranczowe" | |
127 | elseif blok["name"]=="minecraft:dirt" then | |
128 | znaleziono="ziemia" | |
129 | elseif blok["name"]=="minecraft:grass" then | |
130 | znaleziono="trawa" | |
131 | else | |
132 | znaleziono="inne" | |
133 | end | |
134 | return znaleziono | |
135 | end | |
136 | ||
137 | -- koniec czesci ogolnej | |
138 | ||
139 | function rusz() | |
140 | - | while (sygnal("przod")~="szklo" and sygnal("przod")~="skrzynia") do |
140 | + | |
141 | if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then | |
142 | turtle.dig() | |
143 | else | |
144 | napisz("F:ruch - natrafilem na przeszkode") | |
145 | sleep(5) | |
146 | end | |
147 | - | if (arg1=="rozladunek") or (arg1=="start") then |
147 | + | |
148 | - | if sygnal("dol")=="szklo_pomaranczowe" then |
148 | + | |
149 | end | |
150 | ||
151 | function obroc() | |
152 | while (sygnal("przod")~="szklo_zolte" and sygnal("przod")~="szklo_pomaranczowe" and sygnal("przod")~="obsydian" and sygnal("przod")~="skrzynia") do | |
153 | - | obroc() |
153 | + | |
154 | end | |
155 | end | |
156 | ||
157 | function ustaw(arg1) | |
158 | ||
159 | if (arg1=="rozladunek") then | |
160 | if sygnal("dol")=="szklo_czerwone" then | |
161 | obroc() | |
162 | turtle.turnRight() | |
163 | rusz() | |
164 | rusz() | |
165 | turtle.turnLeft() | |
166 | rusz() | |
167 | - | obroc() |
167 | + | rusz() |
168 | elseif sygnal("dol")=="szklo_zolte" then | |
169 | obroc() | |
170 | turtle.turnLeft() | |
171 | - | if arg1=="start" then |
171 | + | |
172 | obroc() | |
173 | elseif sygnal("dol")=="szklo_niebieskie" then | |
174 | obroc() | |
175 | turtle.turnLeft() | |
176 | rusz() | |
177 | - | if sygnal("dol")=="szklo_pomaranczowe" then |
177 | + | |
178 | rusz() | |
179 | rusz() | |
180 | elseif sygnal("dol")=="szklo_purpurowe" then | |
181 | obroc() | |
182 | else | |
183 | napisz("F:ustaw - wywolano funkcje w zlym miejscu") | |
184 | end | |
185 | ||
186 | elseif arg1=="tankuj" then | |
187 | if sygnal("dol")=="szklo_czerwone" then | |
188 | obroc() | |
189 | turtle.turnRight() | |
190 | rusz() | |
191 | rusz() | |
192 | turtle.turnLeft() | |
193 | rusz() | |
194 | rusz() | |
195 | turtle.turnLeft() | |
196 | rusz() | |
197 | elseif sygnal("dol")=="szklo_zolte" then | |
198 | obroc() | |
199 | elseif sygnal("dol")=="szklo_niebieskie" then | |
200 | obroc() | |
201 | turtle.turnLeft() | |
202 | rusz() | |
203 | turtle.turnRight() | |
204 | - | napisz("F:ustaw = wywolano funkcje w zlym miejscu") |
204 | + | |
205 | - | end |
205 | + | rusz() |
206 | - | elseif arg1=="sadzonki" then |
206 | + | |
207 | - | if sygnal("dol")=="szklo_pomaranczowe" then |
207 | + | |
208 | elseif sygnal("dol")=="szklo_purpurowe" then | |
209 | obroc() | |
210 | turtle.turnLeft() | |
211 | rusz() | |
212 | else | |
213 | - | obroc() |
213 | + | |
214 | end | |
215 | elseif arg1=="start" then | |
216 | if sygnal("dol")=="szklo_niebieskie" then | |
217 | obroc() | |
218 | elseif sygnal("dol")=="szklo_czerwone" then | |
219 | obroc() | |
220 | turtle.turnRight() | |
221 | rusz() | |
222 | rusz() | |
223 | rusz() | |
224 | turtle.turnRight() | |
225 | elseif sygnal("dol")=="szklo_zolte" then | |
226 | obroc() | |
227 | turtle.turnLeft() | |
228 | rusz() | |
229 | turtle.turnRight() | |
230 | rusz() | |
231 | rusz() | |
232 | turtle.turnLeft() | |
233 | rusz() | |
234 | turtle.turnRight() | |
235 | elseif sygnal("dol")=="szklo_purpurowe" then | |
236 | obroc() | |
237 | turtle.turnLeft() | |
238 | turtle.turnLeft() | |
239 | rusz() | |
240 | rusz() | |
241 | turtle.turnLeft() | |
242 | rusz() | |
243 | turtle.turnRight() | |
244 | else | |
245 | napisz("F:ustaw - wywolano funkcje w zlym miejscu") | |
246 | end | |
247 | ||
248 | else | |
249 | napisz("F:ustaw - funkcja ze zlym parametrem") | |
250 | end | |
251 | ||
252 | end | |
253 | ||
254 | function seria() | |
255 | local seria=rap.fno | |
256 | rap.fno="seria" | |
257 | if (sygnal("dol")=="szklo_niebieskie") or (sygnal("dol")=="szklo_pomaranczowe") or (sygnal("dol")=="szklo_purpurowe") or (sygnal("dol")=="szklo") then | |
258 | napisz("F: ruch - Jestem na linii. Zaczynam isc") | |
259 | rusz() | |
260 | while (sygnal("dol")=="ziemia") or (sygnal("dol")=="trawa") do | |
261 | rusz() | |
262 | end | |
263 | napisz("F: seria - Koniec linii.") | |
264 | else | |
265 | napisz("Nie jestem na linii. Nie mog isc.") | |
266 | rap.pro=1 | |
267 | end | |
268 | rap.fno=seria | |
269 | end | |
270 | ||
271 | function zawroc() | |
272 | local zawroc=rap.fno | |
273 | rap.fno="zawroc" | |
274 | if sygnal("dol")=="szklo_purpurowe" then | |
275 | napisz("F: zawroc - zawracam") | |
276 | turtle.turnRight() | |
277 | rusz() | |
278 | turtle.turnRight() | |
279 | elseif sygnal("dol")=="szklo_pomaranczowe" then | |
280 | napisz("F: zawroc - zawracam") | |
281 | turtle.turnLeft() | |
282 | rusz() | |
283 | turtle.turnLeft() | |
284 | else | |
285 | napisz("F:zawroc - Nie jestem ustawiony na polu zawracania") | |
286 | end | |
287 | rap.fno=zawroc | |
288 | end | |
289 | ||
290 | function seriaglowna() | |
291 | seria() | |
292 | zawroc() | |
293 | seria() | |
294 | zawroc() | |
295 | seria() | |
296 | zawroc() | |
297 | seria() | |
298 | end | |
299 | ||
300 | function czypusty() | |
301 | local czypusty = rap.fno | |
302 | rap.fno="czypusty" | |
303 | local licz2=1 | |
304 | local znaleziono=0 | |
305 | repeat | |
306 | if turtle.getItemCount(licz2)>0 then | |
307 | znaleziono=1 | |
308 | end | |
309 | licz2=licz2+1 | |
310 | until licz2==17 | |
311 | if znaleziono==0 then | |
312 | napisz("F:czypusty. Rozladowano") | |
313 | return true | |
314 | else | |
315 | napisz("F:czypusty. Nie rozladowano!") | |
316 | return false | |
317 | end | |
318 | rap.fno=czypusty | |
319 | end | |
320 | ||
321 | function wysyp() | |
322 | local wysyp=rap.fno | |
323 | rap.fno="wysyp" | |
324 | if (sygnal("dol")=="szklo_niebieskie") and (sygnal("przod")=="skrzynia") then | |
325 | napisz("F: wysyp - zaczynam wysypywac") | |
326 | local licz=1 | |
327 | repeat | |
328 | turtle.select(licz) | |
329 | turtle.drop() | |
330 | licz=licz+1 | |
331 | until licz==17 | |
332 | else | |
333 | napisz("F:wysyp. Nie moge wysypac. Niewlasciwe pole.") | |
334 | return false | |
335 | end | |
336 | rap.fno=wysyp | |
337 | end | |
338 | ||
339 | function rozladunek() | |
340 | if czypusty()==true then | |
341 | napisz("F: rozladunek - nie ma potrzeby rozladunku") | |
342 | else | |
343 | local rozladunek=rap.fno | |
344 | rap.fno="rozladunek" | |
345 | napisz("F: rozladunek - ustawiam do rozladunku") | |
346 | ustaw("rozladunek") | |
347 | if (sygnal("dol")=="szklo_niebieskie") and sygnal("przod")=="skrzynia" then | |
348 | napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysyp()") | |
349 | wysyp() | |
350 | if czypusty()==false then | |
351 | rap.psp=1 | |
352 | napisz("F:rozladunek - skrzynia pelna!") | |
353 | ustaw("start") | |
354 | else | |
355 | rap.psp=0 | |
356 | napisz("F:rozladunek - material rozladowany") | |
357 | ustaw("start") | |
358 | end | |
359 | else | |
360 | napisz("F:rozladunek - nie stoje na pozycji do wysypu") | |
361 | end | |
362 | end | |
363 | rap.fno=rozladunek | |
364 | end | |
365 | ||
366 | function tankuj() | |
367 | local tankuj=rap.fno | |
368 | rap.fno="tankuj" | |
369 | if turtle.getFuelLevel()<rap.zpp then | |
370 | if czypusty()==true then | |
371 | ustaw("tankuj") | |
372 | if (sygnal("dol")=="szklo_zolte") and (sygnal("przod")=="skrzynia") then | |
373 | napisz("F:tankuj. Rozpoczynam tankowanie") | |
374 | turtle.select(1) | |
375 | local tank=1 | |
376 | repeat | |
377 | turtle.suck() | |
378 | turtle.refuel() | |
379 | tank=tank+1 | |
380 | until tank==10 | |
381 | if turtle.getFuelLevel()<rap.zpp then | |
382 | rap.ptp=1 | |
383 | napisz("Zatankowano - skrzynia z paliwem pusta, niedobor paliwa") | |
384 | else | |
385 | rap.ptp=0 | |
386 | napisz("Zatankowano - poziom paliwa OK") | |
387 | end | |
388 | else | |
389 | napisz("F:tankuj. Nie ustawiony do tankowania.") | |
390 | end | |
391 | ustaw("start") | |
392 | else | |
393 | napisz("F:tankuj. Inwentaz nie oprozniony") | |
394 | ustaw("start") | |
395 | end | |
396 | else | |
397 | napisz("F: tankuj. Bak pelny, nie ma potrzeby tankowania") | |
398 | end | |
399 | rap.fno=tankuj | |
400 | end | |
401 | ||
402 | function gotowosc() | |
403 | turtle.select(16) | |
404 | local warunek=0 | |
405 | local data=turtle.getItemDetail() | |
406 | napisz("Sprawdzam gotowosc. Paliwo zalecane to:") | |
407 | napisz(rap.zpp) | |
408 | if turtle.getFuelLevel()<rap.zpp then | |
409 | warunek=1 | |
410 | napisz("F: gotowosc: brak paliwa") | |
411 | elseif turtle.getItemCount(1)>0 then | |
412 | warunek=1 | |
413 | napisz("F: gotowosc: zajety slot 1") | |
414 | elseif turtle.getItemCount(4)>0 then | |
415 | napisz("F: gotowosc: zajety slot 4") | |
416 | warunek=1 | |
417 | elseif turtle.getItemCount(8)>0 then | |
418 | napisz("F: gotowosc: zajety slot 8") | |
419 | warunek=1 | |
420 | elseif turtle.getItemCount(16)>0 then | |
421 | if data["name"]~="minecraft:sapling" then | |
422 | napisz("F: gotowosc: zly przedmiot w slocie 16") | |
423 | warunek=1 | |
424 | else | |
425 | print("") | |
426 | end | |
427 | else | |
428 | warunek=0 | |
429 | end | |
430 | turtle.select(1) | |
431 | return warunek | |
432 | end | |
433 | ||
434 | function cyklglowny() | |
435 | local petla=1 | |
436 | while true do | |
437 | if rap.zgd==1 then | |
438 | rozladunek() | |
439 | tankuj() | |
440 | sadzonki() | |
441 | if gotowosc()==0 then | |
442 | print("tne!") | |
443 | sleep(5) | |
444 | seriawycinka() | |
445 | zawroc() | |
446 | powrot() | |
447 | zawroc() | |
448 | napisz("Koniec cyklu glownego. Czekam 100 sekund.") | |
449 | sleep(100) | |
450 | else | |
451 | sleep(50) | |
452 | end | |
453 | else | |
454 | napisz("Brak zgody na rozpoczecie cyklu. Proba:") | |
455 | napisz(petla) | |
456 | sleep(10) | |
457 | petla=petla+1 | |
458 | end | |
459 | end | |
460 | end | |
461 | ||
462 | function nawiazpolaczenie() | |
463 | if uruchom_modem()==true then | |
464 | if polaczenie_z_baza(1, "Oczekuje na polaczenie", 5, 20)=="sygnal" then | |
465 | return "2" | |
466 | else | |
467 | return "1" | |
468 | end | |
469 | else | |
470 | return "0" | |
471 | end | |
472 | end | |
473 | ||
474 | function program() | |
475 | ocenawstepna=nawiazpolaczenie() | |
476 | if ocenawstepna=="0" then | |
477 | print("Modem nieaktywny") | |
478 | elseif ocenawstepna=="1" then | |
479 | napisz("Brak polaczenia z baza") | |
480 | raportuj() | |
481 | elseif ocenawstepna=="2" then | |
482 | parallel.waitForAny(cyklglowny, aktualizuj, raportuj) | |
483 | else | |
484 | print("Nieznany wynik funkcji program") | |
485 | end | |
486 | end | |
487 | uruchom_modem() | |
488 | seriaglowna() |