Advertisement
AlertK

Untitled

Oct 29th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 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_zolte" then
  169.       obroc()
  170.       turtle.turnLeft()
  171.       rusz()
  172.       obroc()
  173.     elseif sygnal("dol")=="szklo_niebieskie" then
  174.       obroc()    
  175.       turtle.turnLeft()
  176.       rusz()
  177.       turtle.turnRight()
  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.       rusz()
  205.       rusz()  
  206.       turtle.turnLeft()
  207.       rusz()
  208.  elseif sygnal("dol")=="szklo_purpurowe" then
  209.       obroc()
  210.       turtle.turnLeft()
  211.       rusz()
  212.     else
  213.       napisz("F:ustaw - wywolano funkcje w zlym miejscu")
  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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement