AlertK

Untitled

Oct 29th, 2016
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. id=3
  2. id2=163621
  3.  
  4. rap={wyd="tartak", fun="drwal", 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("left")
  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 obroc()
  140.   while (sygnal("przod")~="szklo" and sygnal("przod")~="skrzynia") do
  141.   turtle.turnLeft()
  142.   end
  143. end
  144.  
  145. function ustaw(arg1)
  146.  
  147.   if (arg1=="rozladunek") or (arg1=="start") then
  148.     if sygnal("dol")=="szklo_pomaranczowe" then
  149.       obroc()
  150.       turtle.turnRight()
  151.       rusz()
  152.       rusz()
  153.       obroc()          
  154.     elseif sygnal("dol")=="szklo_czerwone" then
  155.       obroc()
  156.       turtle.turnRight()
  157.       rusz()
  158.       obroc()
  159.     elseif sygnal("dol")=="szklo_niebieskie" then
  160.       obroc()    
  161.     elseif sygnal("dol")=="szklo_zolte" then
  162.       obroc()
  163.       turtle.turnLeft()
  164.       rusz()
  165.       rusz()
  166.       rusz()
  167.       obroc()  
  168.     else
  169.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  170.     end
  171.     if arg1=="start" then
  172.       turtle.turnLeft()
  173.       turtle.turnLeft()
  174.     end
  175.  
  176.   elseif arg1=="tankuj" then
  177.     if sygnal("dol")=="szklo_pomaranczowe" then
  178.       obroc()
  179.       turtle.turnRight()
  180.       rusz()
  181.       rusz()
  182.       rusz()
  183.       rusz()
  184.       rusz()
  185.       obroc()  
  186.     elseif sygnal("dol")=="szklo_czerwone" then
  187.       obroc()
  188.       turtle.turnRight()
  189.       rusz()
  190.       rusz()
  191.       rusz()
  192.       rusz()
  193.       obroc()
  194.     elseif sygnal("dol")=="szklo_niebieskie" then
  195.       obroc()
  196.       turtle.turnRight()
  197.       rusz()
  198.       rusz()
  199.       rusz()
  200.       obroc()
  201.     elseif sygnal("dol")=="szklo_zolte" then
  202.       obroc()
  203.     else
  204.       napisz("F:ustaw = wywolano funkcje w zlym miejscu")  
  205.     end  
  206.   elseif arg1=="sadzonki" then
  207.     if sygnal("dol")=="szklo_pomaranczowe" then
  208.       obroc()
  209.     elseif sygnal("dol")=="szklo_czerwone" then
  210.       obroc()
  211.       turtle.turnLeft()
  212.       rusz()
  213.       obroc()    
  214.     elseif sygnal("dol")=="szklo_niebieskie" then
  215.       obroc()
  216.       turtle.turnLeft()
  217.       rusz()
  218.       rusz()
  219.       obroc()
  220.     elseif sygnal("dol")=="szklo_zolte" then
  221.       obroc()
  222.       turtle.turnLeft()
  223.       rusz()
  224.       rusz()
  225.       rusz()
  226.       rusz()
  227.       rusz()
  228.       obroc()  
  229.     else
  230.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  231.     end
  232.  
  233.   else  
  234.     napisz("F:ustaw - funkcja ze zlym parametrem")  
  235.   end
  236.  
  237. end
  238.  
  239. function rusz()
  240.   if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then
  241.     turtle.dig()
  242.   end
  243.   turtle.suck()
  244.   if turtle.forward()==false then
  245.     napisz("F:ruch - natrafilem na przeszkode")
  246.     sleep(5)
  247.   end
  248. end  
  249.  
  250. function seria()
  251.   local seria=rap.fno
  252.   rap.fno="seria"
  253.   if (sygnal("dol")=="szklo_niebieskie") or (sygnal("dol")=="szklo_pomaranczowe") or (sygnal("dol")=="szklo_purpurowe") then
  254.     napisz("F: ruch - Jestem na linii. Zaczynam isc")
  255.     while (sygnal("dol")=="ziemia") or (sygnal("dol")=="trawa") or (sygnal("dol")=="szklo_niebieskie") or (sygnal("dol")=="szklo_pomaranczowe") or (sygnal("dol")=="szklo_purpurowe") do
  256.       rusz()
  257.     end
  258.     napisz("F: seria - Koniec linii.")
  259.   else
  260.     napisz("Nie jestem na linii. Nie mog isc.")
  261.     rap.pro=1
  262.   end
  263.   rap.fno=seria
  264. end
  265.  
  266. function zawroc()
  267.   local zawroc=rap.fno
  268.   rap.fno="zawroc"
  269.   if sygnal("dol")=="szklo_purpurowe" then  
  270.     napisz("F: zawroc - zawracam")
  271.     turtle.turnRight()
  272.     rusz()
  273.     turtle.turnRight()
  274.   elseif sygnal("dol")=="szklo_pomaranczowe" then  
  275.     napisz("F: zawroc - zawracam")
  276.     turtle.turnLeft()
  277.     rusz()
  278.     turtle.turnLeft()
  279.   else
  280.     napisz("F:zawroc - Nie jestem ustawiony na polu zawracania")
  281.   end
  282.   rap.fno=zawroc
  283. end
  284.  
  285. function seriaglowna()
  286.   seria()
  287.   zawroc()
  288.   seria()
  289.   zawroc()
  290.   seria()
  291.   zawroc()
  292.   seria()
  293. end
  294.  
  295. function czypusty()
  296.   local czypusty = rap.fno
  297.   rap.fno="czypusty"
  298.   local licz2=1
  299.   local znaleziono=0
  300.   repeat
  301.     if turtle.getItemCount(licz2)>0 then
  302.       znaleziono=1
  303.     end  
  304.     licz2=licz2+1
  305.   until licz2==17
  306.   if znaleziono==0 then
  307.     napisz("F:czypusty. Rozladowano")
  308.     return true
  309.   else
  310.     napisz("F:czypusty. Nie rozladowano!")
  311.     return false
  312.   end
  313.   rap.fno=czypusty
  314. end
  315.  
  316. function wysyp()
  317.   local wysyp=rap.fno
  318.   rap.fno="wysyp"
  319.   if (sygnal("dol")=="szklo_niebieskie") and (sygnal("przod")=="skrzynia") then
  320.     napisz("F: wysyp - zaczynam wysypywac")
  321.     local licz=1
  322.     repeat
  323.       turtle.select(licz)
  324.       turtle.drop()
  325.       licz=licz+1
  326.     until licz==17    
  327.   else
  328.     napisz("F:wysyp. Nie moge wysypac. Niewlasciwe pole.")
  329.     return false
  330.   end
  331.   rap.fno=wysyp
  332. end
  333.  
  334. function rozladunek()
  335.   if czypusty()==true then
  336.     napisz("F: rozladunek - nie ma potrzeby rozladunku")
  337.   else    
  338.     local rozladunek=rap.fno
  339.     rap.fno="rozladunek"
  340.     napisz("F: rozladunek - ustawiam do rozladunku")
  341.     ustaw("rozladunek")  
  342.     if (sygnal("dol")=="szklo_niebieskie") and sygnal("przod")=="skrzynia" then
  343.       napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysyp()")
  344.       wysyp()
  345.       if czypusty()==false then
  346.         rap.psp=1
  347.         napisz("F:rozladunek - skrzynia pelna!")      
  348.         ustaw("start")
  349.       else
  350.         rap.psp=0
  351.         napisz("F:rozladunek - material rozladowany")
  352.         ustaw("start")
  353.       end
  354.     else
  355.       napisz("F:rozladunek - nie stoje na pozycji do wysypu")
  356.     end
  357.   end  
  358.   rap.fno=rozladunek
  359. end
  360.  
  361. function tankuj()
  362.   local tankuj=rap.fno
  363.   rap.fno="tankuj"
  364.   if turtle.getFuelLevel()<rap.zpp then  
  365.     if czypusty()==true then
  366.       ustaw("tankuj")
  367.       if (sygnal("dol")=="szklo_zolte") and (sygnal("przod")=="skrzynia") then
  368.         napisz("F:tankuj. Rozpoczynam tankowanie")
  369.         turtle.select(1)
  370.         local tank=1
  371.         repeat
  372.           turtle.suck()
  373.           turtle.refuel()
  374.           tank=tank+1
  375.         until tank==10  
  376.         if turtle.getFuelLevel()<rap.zpp then
  377.           rap.ptp=1
  378.           napisz("Zatankowano - skrzynia z paliwem pusta, niedobor paliwa")
  379.         else
  380.           rap.ptp=0
  381.           napisz("Zatankowano - poziom paliwa OK")
  382.         end    
  383.       else
  384.         napisz("F:tankuj. Nie ustawiony do tankowania.")          
  385.       end
  386.       ustaw("start")
  387.     else
  388.       napisz("F:tankuj. Inwentaz nie oprozniony")  
  389.       ustaw("start")
  390.     end
  391.   else
  392.     napisz("F: tankuj. Bak pelny, nie ma potrzeby tankowania")  
  393.   end  
  394.   rap.fno=tankuj
  395. end
  396.  
  397. function gotowosc()
  398.   turtle.select(16)
  399.   local warunek=0
  400.   local data=turtle.getItemDetail()
  401.   napisz("Sprawdzam gotowosc. Paliwo zalecane to:")
  402.   napisz(rap.zpp)
  403.   if turtle.getFuelLevel()<rap.zpp then
  404.     warunek=1
  405.     napisz("F: gotowosc: brak paliwa")
  406.   elseif turtle.getItemCount(1)>0 then
  407.     warunek=1
  408.     napisz("F: gotowosc: zajety slot 1")
  409.   elseif turtle.getItemCount(4)>0 then
  410.     napisz("F: gotowosc: zajety slot 4")
  411.     warunek=1
  412.   elseif turtle.getItemCount(8)>0 then
  413.     napisz("F: gotowosc: zajety slot 8")
  414.     warunek=1
  415.   elseif turtle.getItemCount(16)>0 then
  416.     if data["name"]~="minecraft:sapling" then
  417.       napisz("F: gotowosc: zly przedmiot w slocie 16")
  418.       warunek=1
  419.     else
  420.       print("")
  421.     end
  422.   else
  423.     warunek=0
  424.   end  
  425.   turtle.select(1)
  426.   return warunek
  427. end
  428.  
  429. function cyklglowny()
  430.   local petla=1
  431.   while true do
  432.     if rap.zgd==1 then
  433.       rozladunek()
  434.       tankuj()
  435.       sadzonki()
  436.       if gotowosc()==0 then
  437.         print("tne!")
  438.         sleep(5)
  439.         seriawycinka()
  440.         zawroc()
  441.         powrot()
  442.         zawroc()
  443.         napisz("Koniec cyklu glownego. Czekam 100 sekund.")
  444.         sleep(100)
  445.       else
  446.         sleep(50)
  447.       end
  448.     else
  449.       napisz("Brak zgody na rozpoczecie cyklu. Proba:")
  450.       napisz(petla)
  451.       sleep(10)
  452.       petla=petla+1
  453.     end
  454.   end
  455. end
  456.  
  457. function nawiazpolaczenie()
  458.   if uruchom_modem()==true then
  459.     if polaczenie_z_baza(1, "Oczekuje na polaczenie", 5, 20)=="sygnal" then
  460.       return "2"
  461.     else
  462.       return "1"
  463.     end
  464.   else
  465.     return "0"
  466.   end
  467. end
  468.  
  469. function program()
  470.   ocenawstepna=nawiazpolaczenie()
  471.   if ocenawstepna=="0" then
  472.     print("Modem nieaktywny")
  473.   elseif ocenawstepna=="1" then
  474.     napisz("Brak polaczenia z baza")
  475.     raportuj()
  476.   elseif ocenawstepna=="2" then
  477.     parallel.waitForAny(cyklglowny, aktualizuj, raportuj)
  478.   else
  479.     print("Nieznany wynik funkcji program")
  480.   end
  481. end
  482.  
  483.  
  484. program()
Add Comment
Please, Sign In to add comment