Guest User

tartak6

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