AlertK

Untitled

Oct 30th, 2016
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. id=5
  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 turtle.forward()==false do
  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.   end
  148.   turtle.suck()
  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.   turtle.turnLeft()
  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.       rusz()
  168.     elseif sygnal("dol")=="szklo_pomaranczowe" then
  169.       obroc()
  170.       turtle.turnRight()
  171.       rusz()
  172.       obroc()
  173.     elseif sygnal("dol")=="szklo_zolte" then
  174.       obroc()
  175.       turtle.turnLeft()
  176.       rusz()
  177.       obroc()
  178.     elseif sygnal("dol")=="szklo_niebieskie" then
  179.       obroc()    
  180.       turtle.turnLeft()
  181.       rusz()
  182.       turtle.turnRight()
  183.       rusz()
  184.       rusz()
  185.     elseif sygnal("dol")=="szklo_purpurowe" then
  186.       obroc()  
  187.     else
  188.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  189.     end
  190.    
  191.   elseif arg1=="tankuj" then
  192.    if sygnal("dol")=="szklo_czerwone" then
  193.       obroc()
  194.       turtle.turnRight()
  195.       rusz()
  196.       rusz()
  197.       turtle.turnLeft()
  198.       rusz()
  199.       rusz()  
  200.       turtle.turnLeft()
  201.       rusz()
  202.     elseif sygnal("dol")=="szklo_zolte" then
  203.       obroc()
  204.     elseif sygnal("dol")=="szklo_pomaranczowe" then
  205.       obroc()
  206.       turtle.turnRight()
  207.       rusz()
  208.       rusz()
  209.       obroc()
  210.     elseif sygnal("dol")=="szklo_niebieskie" then
  211.       obroc()    
  212.       turtle.turnLeft()
  213.       rusz()
  214.       turtle.turnRight()
  215.       rusz()
  216.       rusz()  
  217.       turtle.turnLeft()
  218.       rusz()
  219.  elseif sygnal("dol")=="szklo_purpurowe" then
  220.       obroc()
  221.       turtle.turnLeft()
  222.       rusz()
  223.     else
  224.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  225.     end
  226.  
  227. elseif arg1=="sadzonki" then
  228.    if sygnal("dol")=="szklo_czerwone" then
  229.       obroc()
  230.       turtle.turnRight()
  231.       rusz()
  232.       rusz()
  233.       turtle.turnLeft()
  234.       rusz()
  235.       rusz()  
  236.       turtle.turnRight()
  237.       rusz()
  238.     elseif sygnal("dol")=="szklo_zolte" then
  239.       obroc()
  240.       turtle.turnLeft()
  241.       rusz()
  242.       rusz()
  243.     elseif sygnal("dol")=="szklo_pomaranczowe" then
  244.       obroc()
  245.     elseif sygnal("dol")=="szklo_niebieskie" then
  246.       obroc()    
  247.       turtle.turnLeft()
  248.       rusz()
  249.       turtle.turnRight()
  250.       rusz()
  251.       rusz()  
  252.       turtle.turnRight()
  253.       rusz()
  254.  elseif sygnal("dol")=="szklo_purpurowe" then
  255.       obroc()
  256.       turtle.turnRight()
  257.       rusz()
  258.     else
  259.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  260.     end
  261.  
  262.   elseif arg1=="start" then
  263.     if sygnal("dol")=="szklo_niebieskie" then
  264.       obroc()
  265.     elseif sygnal("dol")=="szklo_pomaranczowe" then
  266.       obroc()
  267.       turtle.turnRight()
  268.       rusz()
  269.       turtle.turnLeft()
  270.       rusz()
  271.       rusz()
  272.       turtle.turnLeft()
  273.       rusz()
  274.       turtle.turnRight()
  275.     elseif sygnal("dol")=="szklo_czerwone" then
  276.       obroc()
  277.       turtle.turnRight()
  278.       rusz()
  279.       rusz()
  280.       rusz()
  281.       turtle.turnRight()  
  282.     elseif sygnal("dol")=="szklo_zolte" then
  283.       obroc()
  284.       turtle.turnLeft()
  285.       rusz()
  286.       turtle.turnRight()
  287.       rusz()
  288.       rusz()
  289.       turtle.turnLeft()
  290.       rusz()
  291.       turtle.turnRight()
  292.   elseif sygnal("dol")=="szklo_purpurowe" then
  293.       obroc()
  294.       turtle.turnLeft()
  295.       turtle.turnLeft()
  296.       rusz()
  297.       rusz()
  298.       turtle.turnLeft()
  299.       rusz()
  300.       turtle.turnRight()      
  301.     else
  302.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  303.     end
  304.  
  305.   else  
  306.     napisz("F:ustaw - funkcja ze zlym parametrem")  
  307.   end
  308.  
  309. end
  310.  
  311. function seria()
  312.   local seria=rap.fno
  313.   rap.fno="seria"
  314.   if (sygnal("dol")=="szklo_niebieskie") or (sygnal("dol")=="szklo_pomaranczowe") or (sygnal("dol")=="szklo_purpurowe") or (sygnal("dol")=="szklo") then
  315.     napisz("F: ruch - Jestem na linii. Zaczynam isc")
  316.     rusz()
  317.     while (sygnal("dol")=="ziemia") or (sygnal("dol")=="trawa") do
  318.       rusz()
  319.     end
  320.     napisz("F: seria - Koniec linii.")
  321.   else
  322.     napisz("Nie jestem na linii. Nie mog isc.")
  323.     rap.pro=1
  324.   end
  325.   rap.fno=seria
  326. end
  327.  
  328. function zawroc()
  329.   local zawroc=rap.fno
  330.   rap.fno="zawroc"
  331.   if sygnal("dol")=="szklo_purpurowe" then  
  332.     napisz("F: zawroc - zawracam")
  333.     turtle.turnRight()
  334.     rusz()
  335.     turtle.turnRight()
  336.   elseif sygnal("dol")=="szklo_pomaranczowe" then  
  337.     napisz("F: zawroc - zawracam")
  338.     turtle.turnLeft()
  339.     rusz()
  340.     turtle.turnLeft()
  341.   else
  342.     napisz("F:zawroc - Nie jestem ustawiony na polu zawracania")
  343.   end
  344.   rap.fno=zawroc
  345. end
  346.  
  347. function seriaglowna()
  348.   seria()
  349.   zawroc()
  350.   seria()
  351.   zawroc()
  352.   seria()
  353.   zawroc()
  354.   seria()
  355. end
  356.  
  357. function czypusty()
  358.   local czypusty = rap.fno
  359.   rap.fno="czypusty"
  360.   local licz2=1
  361.   local znaleziono=0
  362.   repeat
  363.     if turtle.getItemCount(licz2)>0 then
  364.       znaleziono=1
  365.     end  
  366.     licz2=licz2+1
  367.   until licz2==17
  368.   if znaleziono==0 then
  369.     napisz("F:czypusty. Rozladowano")
  370.     return true
  371.   else
  372.     napisz("F:czypusty. Nie rozladowano!")
  373.     return false
  374.   end
  375.   rap.fno=czypusty
  376. end
  377.  
  378. function wysypsadzonki()
  379.   local wysypsadzonki=rap.fno
  380.   rap.fno="wysypsadzonki"
  381.   if sygnal("dol")=="szklo_pomaranczowe" then
  382.     local licznik=1
  383.     repeat
  384.       turtle.select(licznik)
  385.       local slot=turtle.getItemDetail()
  386.       if slot.name="minecraft:sapling" then
  387.         turtle.dropUp()
  388.       end
  389.       licznik=licznik+1
  390.     until licznik=16
  391.   else
  392.     napisz("F:wysypsadzonki - nie znajduje sie na odpowiednim polu!")
  393.   end
  394.   rap.fno=wysypsadzonki
  395. end
  396.  
  397. function wysyp()
  398.   local wysyp=rap.fno
  399.   rap.fno="wysyp"
  400.   if (sygnal("dol")=="szklo_purpurowe") and (sygnal("przod")=="skrzynia") then
  401.     napisz("F: wysyp - zaczynam wysypywac")
  402.     local licz=1
  403.     repeat
  404.       turtle.select(licz)
  405.       turtle.drop()
  406.       licz=licz+1
  407.     until licz==17    
  408.   else
  409.     napisz("F:wysyp. Nie moge wysypac. Niewlasciwe pole.")
  410.     return false
  411.   end
  412.   rap.fno=wysyp
  413. end
  414.  
  415. function rozladunek_sadzonek()
  416.   local rozladunek_sadzonek=rap.fno
  417.   rap.fno="rozladunek_sadzonek"
  418.   if czypusty()==true then
  419.     napisz("F: rozladunek - nie ma potrzeby rozladunku")
  420.   else    
  421.     napisz("F: rozladunek_sadzonek - ustawiam do rozladunku")
  422.     ustaw("sadzonki")  
  423.     if sygnal("dol")=="szklo_pomaranczowe" then
  424.       napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysypsadzonki()")
  425.       wysypsadzonki()
  426.       if czypusty()==false then
  427.         napisz("F:rozladunek_sadzonek - Pozostal material. Wysypuje do skrzyni.")      
  428.         rozladunek()
  429.       else
  430.         napisz("F:rozladunek_sadzonek - caly material rozladowany")
  431.         ustaw("start")
  432.       end
  433.     else
  434.       napisz("F:rozladunek_sadzonek - nie stoje na pozycji do wysypu")
  435.     end
  436.   end  
  437.   rap.fno=rozladunek_sadzonek
  438. end
  439.  
  440. function rozladunek()
  441.   local rozladunek=rap.fno
  442.   rap.fno="rozladunek"
  443.   if czypusty()==true then
  444.     napisz("F: rozladunek - nie ma potrzeby rozladunku")
  445.   else    
  446.     napisz("F: rozladunek - ustawiam do rozladunku")
  447.     ustaw("rozladunek")  
  448.     if (sygnal("dol")=="szklo_purpurowe") and sygnal("przod")=="skrzynia" then
  449.       napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysyp()")
  450.       wysyp()
  451.       if czypusty()==false then
  452.         rap.psp=1
  453.         napisz("F:rozladunek - skrzynia pelna!")      
  454.         ustaw("start")
  455.       else
  456.         rap.psp=0
  457.         napisz("F:rozladunek - material rozladowany")
  458.         ustaw("start")
  459.       end
  460.     else
  461.       napisz("F:rozladunek - nie stoje na pozycji do wysypu")
  462.     end
  463.   end  
  464.   rap.fno=rozladunek
  465. end
  466.  
  467. function tankuj()
  468.   local tankuj=rap.fno
  469.   rap.fno="tankuj"
  470.   if turtle.getFuelLevel()<rap.zpp then  
  471.     if czypusty()==true then
  472.       ustaw("tankuj")
  473.       if sygnal("dol")=="szklo_zolte" then
  474.         napisz("F:tankuj. Rozpoczynam tankowanie")
  475.         turtle.select(1)
  476.         local tank=1
  477.         repeat        
  478.           turtle.suckUp()
  479.           turtle.refuel()
  480.           tank=tank+1
  481.         until tank==10  
  482.         if turtle.getFuelLevel()<rap.zpp then
  483.           rap.ptp=1
  484.           napisz("Zatankowano - skrzynia z paliwem pusta, niedobor paliwa")
  485.         else
  486.           rap.ptp=0
  487.           napisz("Zatankowano - poziom paliwa OK")
  488.         end    
  489.       else
  490.         napisz("F:tankuj. Nie ustawiony do tankowania.")          
  491.       end
  492.       ustaw("start")
  493.     else
  494.       napisz("F:tankuj. Inwentaz nie oprozniony")  
  495.       ustaw("start")
  496.     end
  497.   else
  498.     napisz("F: tankuj. Bak pelny, nie ma potrzeby tankowania")  
  499.   end  
  500.   rap.fno=tankuj
  501. end
  502.  
  503. function gotowosc()
  504.   local warunek=0
  505.   napisz("Sprawdzam gotowosc. Paliwo zalecane to:")
  506.   napisz(rap.zpp)
  507.   if turtle.getFuelLevel()<rap.zpp then
  508.     warunek=1
  509.     napisz("F: gotowosc: brak paliwa")
  510.   elseif turtle.getItemCount(8)>0 then
  511.     napisz("F: gotowosc: zajety slot 8")
  512.     warunek=1
  513.   elseif turtle.getItemCount(16)>0 then
  514.     napisz("F: gotowosc: zajety slot 16")
  515.     warunek=1    
  516.   else
  517.     warunek=0
  518.   end    
  519.   return warunek
  520. end
  521.  
  522. function cyklglowny()
  523.   local petla=1
  524.   while true do
  525.     if rap.zgd==1 then
  526.       rozladunek_sadzonek()
  527.       tankuj()      
  528.       if gotowosc()==0 then
  529.         print("zbieram!")
  530.         seriaglowna()
  531.         ustaw("start")
  532.         napisz("Koniec cyklu glownego.")
  533.       else
  534.         napisz("Brak gotowosci logistycznej. Czekam 50.")
  535.         sleep(50)
  536.       end
  537.     else
  538.       napisz("Brak zgody na rozpoczecie cyklu. Proba:")
  539.       napisz(petla)
  540.       sleep(10)
  541.       petla=petla+1
  542.     end
  543.   end
  544. end
  545.  
  546. function nawiazpolaczenie()
  547.   if uruchom_modem()==true then
  548.     if polaczenie_z_baza(1, "Oczekuje na polaczenie", 5, 20)=="sygnal" then
  549.       return "2"
  550.     else
  551.       return "1"
  552.     end
  553.   else
  554.     return "0"
  555.   end
  556. end
  557.  
  558. function program()
  559.   ocenawstepna=nawiazpolaczenie()
  560.   if ocenawstepna=="0" then
  561.     print("Modem nieaktywny")
  562.   elseif ocenawstepna=="1" then
  563.     napisz("Brak polaczenia z baza")
  564.     raportuj()
  565.   elseif ocenawstepna=="2" then
  566.     parallel.waitForAny(cyklglowny, aktualizuj, raportuj)
  567.   else
  568.     print("Nieznany wynik funkcji program")
  569.   end
  570. end
  571.  
  572. program()
Add Comment
Please, Sign In to add comment