View difference between Paste ID: RvKuYqau and Q5W6DBEp
SHOW: | | - or go back to the newest paste.
1
id=2
2
id2=163621
3
4-
rap={wyd="tartak", fun="drwal", orp=5, zgd=0, stn=0, akt=0, pal=0, pll=turtle.getFuelLevel(), sur=0, gpx=0, gpy=0, gpz=0, pro=0, fnn="", fno="", rod="", nrd=0, var=0, kom=""}
4+
rap={wyd="tartak", fun="drwal", nse=2, orp=5, oka=2, zgd=0, stn=0, akt=0, pal=0, pll=turtle.getFuelLevel(), sur=0, gpx=0, gpy=0, gpz=0, pro=0, fnn="", fno="", rod="", nrd=0, var=0, kom=""}
5
6
7
8
program=1
9
aktywnosc=0
10
11
P1={rodzaj="P1", tekst="Czy baza aktywna?"}
12
P2={rodzaj="P2", tekst="Czy pracowac?"}
13
14
function aktualizuj()
15
  while true do
16
    repeat
17
      a5, b5, c5, d5, e5, f5=os.pullEvent("modem_message")
18
    until e5.rod=="K"
19
    rap.oka=e.oka
20
    rap.zgd=e.zgd
21
    rap.orp=e.orp
22
    sleep(rap.oka)
23
  end
24
end
25
26
27
function napisz(arg1)
28
  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="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
29
  print(arg1)
30
  modem.transmit(1, id, tablica)
31
end
32
33
function uruchom_modem()
34
35
  modem=peripheral.wrap("right")
36
  modem.open(id)
37
  if modem.isOpen(id)==true then
38
    rap.fnn="W1"
39
    rap.fno="uruchom_modem"
40
    napisz("Modem otwarty na kanale"..id)
41
  else
42
    print("Modem nie zostal otwarty")
43
  end
44
end
45
46
function wyslij(arg1)
47
48
  tablica = {numer=id, stan=aktywnosc, rodzaj=arg1.rodzaj, tekst=arg1.tekst}
49
  modem.transmit(1, id, tablica)
50
end
51
52
function raportuj()
53
  while true do
54
    rap.pll=turtle.getFuelLevel()
55
    modem.transmit(1, id, rap)
56
    sleep(rap.orp)
57
  end
58
end
59
60
function odpbazy(q1, q2)
61
  os.startTimer(q2)
62
  repeat
63
    a1, b1, c1, d1, e1, f1 = os.pullEvent()
64
  until ((a1=="modem_message") and (q1==e1.rodzaj)) or (a1=="timer")
65
  if (a1=="modem_message") and (q1==e1.rodzaj) then
66
    return e1.tekst
67
  elseif a1=="timer" then
68
    return a1
69
  end    
70
end
71
72
function polaczenie_z_baza(arg1, arg2, arg3, arg4)
73
  rap.fnn="W2"
74
  rap.fno="polaczenie_z_baza"
75
  local warunek=0
76
  local licz=0
77
  napisz("Polaczenie_z_baza(): Wysylam pytanie numer:")
78
  napisz(arg1)
79
  repeat
80
    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}
81
    modem.transmit(1, id, tablica)
82
    napisz("Polaczenie_z_baza(): proba: "..licz)
83
    os.startTimer(arg3)
84
    repeat
85
      a1, b1, c1, d1, e1, f1 = os.pullEvent()
86
      if ((a1=="modem_message") and (e1.nrd==1) and (e1.rod=="P") and (e1.var==id2)) then
87
        warunek=1
88
      else
89
        warunek=0
90
      end
91
    until (warunek==1) or (a1=="timer")
92
    licz=licz+1
93
  until (warunek==1) or (licz==arg4)    
94
  if warunek==1 then
95
    napisz("Otrzymalem wiadomosc zwrotna!")
96
    return e1.kom
97
  elseif a1=="timer" then
98
    napisz("polaczenie_z_baza: Uplynal czas oczekiwania.")
99
    return a1
100
  else
101
    napisz("Nieznany wynik funkcji.")
102
  end    
103
end
104
105
function sluchaj(arg1, arg2)
106
  local odp=odpbazy(arg1.rodzaj, arg2)
107
  return odp  
108
end
109
110
function czypracowac()
111
  local odp=sluchaj(P2, 10)
112
  if odp=="TAK" then
113
    print("Mozna pracowac!")
114
    return odp
115
  elseif odp=="NIE" then
116
    print("Koniec pracy")
117
    return odp
118
  else
119
    print("Inny komunikat")
120
  end
121
end
122
123
function sygnal(kierunek)
124
  if kierunek=="przod" then
125
  czyjest, blok=turtle.inspect()
126
  elseif kierunek=="gora" then
127
  czyjest, blok=turtle.inspectUp()
128
  elseif kierunek=="dol" then
129
  czyjest, blok=turtle.inspectDown()
130
  else
131
  print("funkcja sygnal ze zlym parametrem")
132
133
  program=0
134
  end
135
136
  if czyjest==false then
137
    znaleziono="nic"
138
  elseif blok["name"]=="minecraft:log" then
139
    znaleziono="drewno"
140
  elseif blok["name"]=="minecraft:sapling" then
141
    znaleziono="sadzonka"
142
  elseif blok["name"]=="minecraft:glass" then
143
    znaleziono="szklo"
144
  elseif blok["name"]=="minecraft:chest" then
145
    znaleziono="skrzynia"
146
  elseif blok["name"]=="minecraft:leaves" then
147
    znaleziono="lisc"
148
  elseif blok["name"]=="minecraft:snow_layer" then
149
    znaleziono="snieg"
150
  elseif blok["name"]=="minecraft:nether_brick" then
151
    znaleziono="ceglanetheru"
152
  elseif blok["name"]=="minecraft:stone" then
153
    znaleziono="kamien"
154
  elseif blok["name"]=="minecraft:lit_pumpkin" then
155
    znaleziono="lampion"
156
  elseif blok["name"]=="minecraft:obsidian" then
157
    znaleziono="obsydian"
158
  elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="blue") then
159
    znaleziono="szklo_niebieskie"
160
  elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="red") then
161
    znaleziono="szklo_czerwone"
162
  elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="purple") then
163
    znaleziono="szklo_purpurowe"
164
  elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="yellow") then
165
    znaleziono="szklo_zolte"
166
  elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="orange") then
167
    znaleziono="szklo_pomaranczowe"
168
  else
169
    znaleziono="inne"
170
  end
171
  return znaleziono
172
end
173
174
function ruch()
175
  rap.fno="ruch"
176
  if sygnal("dol")=="ceglanetheru" then
177
    napisz("Jestem na linii. Zaczynam isc")
178
    while sygnal("dol")=="ceglanetheru" do
179
      if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then
180
        turtle.dig()
181
      end
182
      turtle.suck()
183
      turtle.forward()   
184
    end 
185
    napisz("Koniec linii.")
186
  else
187
    napisz("Nie jestem na linii. Nie mog isc.")
188
    rap.pro=1
189
  end
190
  rap.fno="N/A"
191
end
192
193
function wytnijpion()
194
  rap.fno="wytnij_pion"
195
  napisz("Zaczynam funkcj? wycinki.")
196
  local licz=0
197
  while (sygnal("przod")=="drewno") or (sygnal("gora")=="drewno") do
198
    turtle.dig()
199
    turtle.digUp()
200
    turtle.up()
201
    licz=licz+1
202
    napisz("Scialem: "..licz)
203
  end
204
  while turtle.down()==true do
205
  end
206
  turtle.dig()
207
  rap.fno=""
208
  napisz("Koniec funkcji wytnij_pion")
209
end
210
211
function posadzswierka()
212
  turtle.select(16)
213
  slot = turtle.getItemDetail()
214
  if (slot.name=="minecraft:sapling") and (slot.count>4) then
215
    turtle.digUp()
216
    turtle.up()
217
    turtle.placeDown()
218
    turtle.dig()
219
    turtle.forward()
220
    turtle.placeDown()
221
    turtle.turnRight()
222
    turtle.dig()
223
    turtle.forward()
224
    turtle.placeDown()
225
    turtle.turnRight()
226
    turtle.dig()
227
    turtle.forward()
228
    turtle.placeDown()
229
    turtle.turnLeft()
230
    turtle.turnLeft()
231
    turtle.forward()
232
    turtle.dig()
233
    turtle.forward()
234
    turtle.digDown()
235
    turtle.down()
236
  else
237
    print("Brak sadzonek")
238
    turtle.turnRight()
239
    turtle.forward()
240
    turtle.turnLeft()
241
    turtle.forward()
242
    turtle.dig()
243
    turtle.forward()
244
    turtle.dig()
245
    turtle.forward()
246
  end
247
  turtle.select(1)
248
end
249
250
function wycinka()
251
  if sygnal("dol")=="obsydian" then
252
    print("Ustawiony do ciecia")
253
    turtle.dig()
254
    turtle.forward()
255
    wytnijpion()
256
    turtle.turnLeft()
257
    turtle.dig()
258
    turtle.forward()
259
    turtle.turnRight()
260
    wytnijpion()
261
    posadzswierka()
262
  else
263
    print("wywolano wycinke w zlym miejscu")  
264
    program=0 
265
  end
266
267
end
268
269
function zawroc()
270
  if sygnal("dol")=="szklo_czerwone" then  
271
    turtle.turnRight()
272
    turtle.dig()
273
    turtle.forward()
274
    turtle.turnRight()
275
  else
276
    print("F:zawroc - Nie jestem ustawiony na polu zawracania")
277
  end
278
end
279
280
function powrot()
281
program=1
282
  if sygnal("dol")=="szklo_purpurowe" then
283
    while (sygnal("dol")=="szklo_purpurowe") or (sygnal("dol")=="kamien") or (sygnal("dol")=="lampion") do
284
      turtle.suck()
285
      if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then
286
        turtle.dig()
287
      end
288
      turtle.forward()
289
    end
290
    if sygnal("dol")=="szklo_czerwone" then
291
      print("Koniec powrotu. Pole poprawne.")
292
      program=1
293
    else
294
      print("Powrot zakonczony niepoprawnie.")
295
      program=0
296
    end
297
  else
298
    print("Nie jestem ustawiony na starcie powrotu")
299
    program=0
300
  end
301
end
302
303
function seriawycinka()
304
program=1
305
  if sygnal("dol")=="szklo_niebieskie" then
306
    turtle.dig()
307
    turtle.forward()
308
    repeat
309
      program=1
310
      ruch()
311
      wycinka()
312
    until (program==0) or (sygnal("dol")=="szklo_czerwone")
313
  else
314
    print("Nie jestem ustawiony na starcie serii wycinki.")
315
    program=0 
316
  end
317
end
318
319
function czypusty()
320
  local licz2=1
321
  local znaleziono=0
322
  repeat
323
    if turtle.getItemCount(licz2)>0 then
324
      znaleziono=1
325
    end   
326
    licz2=licz2+1
327
  until licz2==17
328
  if znaleziono==0 then
329
    print("F:czypusty. Rozladowano")
330
    return true
331
  else
332
    print("F:czypusty. Nie rozladowano!")
333
    return false
334
  end
335
end
336
337
function wysyp()
338
  if (sygnal("dol")=="szklo_niebieskie") and (sygnal("przod")=="skrzynia") then
339
    local licz=1
340
    repeat
341
      turtle.select(licz)
342
      turtle.drop()
343
      licz=licz+1
344
    until licz==17
345
    if czypusty()==true then
346
      print("F:wysyp. Material wysypany.")
347
      return true
348
    else
349
      print("F:wysyp. Wysypywanie nieskuteczne.")
350
      return false
351
    end
352
  else
353
    print("F:wysyp. Nie moge wysypac. Niewlasciwe pole.")
354
    return false
355
  end
356
end
357
358
function rozladunek()
359
  if sygnal("dol")=="szklo_czerwone" then
360
    if sygnal("przod")~="szklo" then
361
      repeat
362
        turtle.turnLeft()
363
      until sygal("przod")=="szklo"
364
    end
365
    turtle.turnRight()
366
    turtle.dig()
367
    turtle.forward()
368
    turtle.turnLeft()
369
  elseif sygnal("dol")=="szklo_zolte" then
370
    if sygnal("przod")~="skrzynia" then
371
      repeat
372
        turtle.turnLeft()
373
      until sygnal("przod")=="skrzynia"
374
    end
375
    turtle.turnLeft()
376
    turtle.dig()
377
    turtle.forward()
378
    turtle.dig()
379
    turtle.forward()
380
    turtle.dig()
381
    turtle.forward()
382
    turtle.turnRight() 
383
  elseif sygnal("dol")=="szklo_niebieskie" then
384
    if sygnal("przod")~="skrzynia" then
385
      repeat
386
        turtle.turnLeft()
387
      until sygnal("przod")=="skrzynia"
388
    end  
389
  elseif sygnal("dol")=="szklo_pomaranczowe" then
390
    if sygnal("przod")~="skrzynia" then
391
      repeat
392
        turtle.turnLeft()
393
      until sygnal("przod")=="skrzynia"
394
    end
395
    turtle.turnRight()
396
    turtle.dig()
397
    turtle.forward()
398
    turtle.dig()
399
    turtle.forward()
400
    turtle.turnLeft()
401
  else
402
    print("F:rozladunek. Nie stoje na pozycji do ustawiania")
403
  end
404
  
405
  if (sygnal("dol")=="szklo_niebieskie") and sygnal("przod")=="skrzynia" then
406
    wysyp()
407
    turtle.turnLeft()
408
    turtle.turnLeft()   
409
  else
410
    print("F:rozladunek - nie stoje na pozycji do wysypu")
411
  end
412
end
413
414
function tankuj()
415
416
  if czypusty()==true then
417
    if (sygnal("dol")=="szklo_zolte") and (sygnal("przod")=="skrzynia") then
418
      print("F:tankuj. Rozpoczynam tankowanie")
419
      turtle.select(1)
420
      local tank=1
421
      repeat 
422
        turtle.suck()
423
        turtle.refuel()
424
        tank=tank+1
425
      until tank==16  
426
      print("F:tankuj. Zakonczono tankowanie. Poziom paliwa: "..turtle.getFuelLevel())
427
    else
428
      print("F:tankuj. Nie ustawiony do tankowania.")  
429
    end
430
  else
431
    print("F:tankuj. Inwentaz nie oprozniony")  
432
  end
433
end
434
435
436
function tankowanie()
437
  if turtle.getFuelLevel()<2000 then
438
    if sygnal("dol")=="szklo_niebieskie" then
439
      repeat
440
        turtle.turnLeft()
441
      until sygnal("przod")=="skrzynia"
442
      turtle.turnRight()
443
      turtle.dig()
444
      turtle.forward()
445
      turtle.dig()
446
      turtle.forward()
447
      turtle.dig()
448
      turtle.forward()
449
      turtle.turnLeft()
450
      tankuj()
451
      elseif sygnal("dol")=="szklo_czerwone" then
452
      repeat
453
        turtle.turnLeft()
454
      until sygnal("dol")=="szklo"
455
      turtle.turnRight()
456
      turtle.dig()
457
      turtle.forward()
458
      turtle.dig()
459
      turtle.forward()
460
      turtle.dig()
461
      turtle.forward()
462
      turtle.dig()
463
      turtle.forward()
464
      turtle.turnLeft()    
465
      tankuj()
466
    elseif sygnal("dol")=="szklo_zolte" then
467
      repeat
468
        turtle.turnLeft()
469
      until sygnal("przod")=="skrzynia"
470
      tankuj()
471
    else
472
      print("F:tankowanie. Nie jestem ustawiony na pozycji wyjsciowej")
473
    end  
474
  else
475
    print("F:tankowanie. Bak pelny. Nie ma potrzeby ustawiania")
476
  end
477
end
478
479
function ust_pobor_sadzonek()
480
481
  if sygnal("dol")=="szklo_zolte" then
482
    if sygnal("przod")~="skrzynia" then
483
      repeat
484
        turtle.turnLeft()
485
      until sygnal("przod")=="skrzynia"
486
    end
487
    turtle.turnLeft()
488
    turtle.dig()
489
    turtle.forward()
490
    turtle.dig()
491
    turtle.forward()
492
    turtle.dig()
493
    turtle.forward()
494
    turtle.dig()
495
    turtle.forward()
496
    turtle.dig()
497
    turtle.forward()    
498
    turtle.turnRight()
499
  elseif sygnal("dol")=="szklo_niebieskie" then
500
    if sygnal("przod")~="skrzynia" then
501
      repeat
502
        turtle.turnLeft()
503
      until sygnal("przod")=="skrzynia" 
504
    end
505
    turtle.turnLeft()
506
    turtle.dig()
507
    turtle.forward()
508
    turtle.dig()
509
    turtle.forward()
510
    turtle.turnRight()
511
  elseif sygnal("dol")=="szklo_czerwone" then
512
    if sygnal("przod")~="szklo" then
513
      repeat
514
        turtle.turnLeft()
515
      until sygnal("przod")=="szklo"
516
    end
517
    turtle.turnLeft()
518
    turtle.dig()
519
    turtle.forward()
520
    turtle.turnRight()
521
  elseif sygnal("dol")=="szklo_pomaranczowe" then
522
    if sygnal("przod")~="skrzynia" then
523
      repeat
524
        turtle.turnLeft()
525
      until sygnal("przod")=="skrzynia"
526
    end
527
  else
528
    print("ERR! (F:ust_pobor_sadzonek). Nie znajduje sie na pozycji wyjsciowej")
529
  end
530
end
531
532
function czy_brac_sadzonki()
533
    
534
  if turtle.getItemCount(16)==0 then
535
    print("(F:czy_brac_sadzonki). Slot pusty, mozna brac")
536
    return "A"
537
  else
538
    local slot=turtle.getItemDetail(16)
539
    if slot.name~="minecraft:sapling" then
540
      print("(F:czy_brac_sadzonki). Slot zajety czyms innym")
541
      return "B"
542
    elseif (slot.name=="minecraft:sapling") and turtle.getItemCount(16)>41 then
543
      print("(F:czy_brac_sadzonki). Wystarczajaca ilosc sadzonek")
544
      return "C"
545
    else
546
      print("(F:czy_brac_sadzonki) Inne - mozna brac.")
547
      return "D"
548
    end
549
  end
550
end
551
552
function ladowanie_sadzonek()
553
 if (sygnal("dol")=="szklo_pomaranczowe") and (sygnal("przod")=="skrzynia") then
554
  turtle.select(16)
555
  local max=turtle.getItemSpace()
556
  print("Brakuje: "..max)
557
  turtle.suck(max)
558
  if turtle.getItemCount(16)==0 then
559
    print("F:ladowanie_sadzonek - slot pusty po ladowaniu")
560
  else
561
    local slot=turtle.getItemDetail(16)
562
    if (slot.name=="minecraft:sapling") and (slot.count>60) then
563
      print("F:ladowanie_sadzonek. Zaladowano. Jest OK")
564
    elseif (slot.name=="minecraft:sapling") and (slot.count<60) then  
565
      print("F:ladowanie_sadzonek. Po zaladunku mala ilosc sadzonek")
566
    elseif slot.name~="minecraft:sapling" then
567
      print("F:ladowanie_sadzonek. W slocie zly przedmiot")
568
      print(slot.name)
569
    else
570
      print("F:ladowanie_sadzonek. Inny wynik nieznany funkcji")  
571
    end      
572
  end
573
 else
574
   print("F:ladowanie_sadzonek. Ustawiony na zlym slocie")
575
 end
576
end
577
578
579
function pelnaseria()
580
  seriawycinka()  
581
  zawroc()
582
  powrot()
583
  zawroc()
584
  rozladunek()
585
  tankowanie()
586
end
587
588
function sadzonki()
589
  local warunek=0
590
  repeat
591
  ocena=czy_brac_sadzonki()
592
    if (ocena=="A") or (ocena=="D") then
593
      print("F:sadzonki - ustawiam i pobieram") 
594
      warunek=1
595
      ust_pobor_sadzonek()
596
      ladowanie_sadzonek()
597
      turtle.turnRight()
598
      turtle.dig()
599
      turtle.forward()
600
      turtle.dig()
601
      turtle.forward()
602
      turtle.turnRight()
603
    elseif ocena=="B" then
604
      print("F:sadzonki - slot zajety. Oprozniam")
605
      rozladunek()
606
    elseif ocena=="C" then
607
      print("F:sadzonki - nie ma potrzeby uzupelniania.")
608
      warunek=1
609
    else
610
      print("F:sadzonki- wynik funkcji ocen nieznany")
611
      warunek=1
612
    end
613
  until warunek==1
614
end
615
616
function zgodanaprace()
617
  local odp=odpbazy("P2", 10)
618
  if odp=="TAK" then
619
    print("Otrzymalem zgode na kolejny cykl")
620
    aktywnosc=1
621
    return true
622
  elseif odp=="NIE" then
623
    print("Otrzymalem rozkaz wstrzymania")
624
    aktywnosc=0
625
    return true
626
  elseif odp=="timer" then 
627
    print("Czas minal")
628
    return false
629
  else
630
    print("Inny przebieg funkcji")
631
    return false
632
  end
633
end
634
635
function sprawdzgotowosc()
636
  repeat
637
  until zgodanaprace()==true
638
  if aktywnosc==1 then
639
  end  
640
end
641
642
643
function cykl()
644
seriawycinka()
645
zawroc()
646
powrot()
647
zawroc()
648
rozladunek()
649
tankowanie()
650
sadzonki()
651
end
652
653
function wylaczone()
654
uruchom_modem()
655
while true do
656
raportuj()
657
turtle.forward()
658
turtle.back()
659
end
660
end
661
662
uruchom_modem()
663
polaczenie_z_baza("P", "1", 3, 144)