Advertisement
AlertK

Untitled

Nov 24th, 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:hopper" then
  118.     znaleziono="lej"
  119.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="blue") then
  120.     znaleziono="szklo_niebieskie"
  121.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="red") then
  122.     znaleziono="szklo_czerwone"
  123.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="purple") then
  124.     znaleziono="szklo_purpurowe"
  125.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="yellow") then
  126.     znaleziono="szklo_zolte"
  127.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="orange") then
  128.     znaleziono="szklo_pomaranczowe"
  129.   elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="lightBlue") then
  130.     znaleziono="szklo_jasnoniebieskie"  
  131.   elseif blok["name"]=="minecraft:dirt" then
  132.     znaleziono="ziemia"
  133.   elseif blok["name"]=="minecraft:grass" then
  134.     znaleziono="trawa"
  135.   else
  136.     znaleziono="inne"
  137.   end
  138.   return znaleziono
  139. end
  140.  
  141. -- koniec czesci ogolnej
  142.  
  143. function rusz()
  144.   while turtle.forward()==false do
  145.     if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then
  146.       turtle.dig()
  147.     else
  148.       napisz("F:ruch - natrafilem na przeszkode")
  149.       sleep(5)
  150.     end
  151.   end  
  152. end  
  153.  
  154. function obroc()
  155.   while (sygnal("przod")~="szklo_niebieskie" and sygnal("przod")~="obsydian") do
  156.   turtle.turnLeft()
  157.   end
  158. end
  159.  
  160. --DO PRZEROBIENIA
  161. function seriaglowna()
  162.   seria()
  163.   zawroc()
  164.   seria()
  165.   zawroc()
  166.   seria()
  167.   zawroc()
  168.   seria()
  169. end
  170.  
  171. function czypusty() --funkcja sprawdza czy w inwentarzu robota znajduje sie jakikolwiek przedmiot
  172.   local czypusty = rap.fno
  173.   rap.fno="czypusty"
  174.   local licz2=1
  175.   local znaleziono=0
  176.   repeat
  177.     if turtle.getItemCount(licz2)>0 then
  178.       znaleziono=1
  179.     end  
  180.     licz2=licz2+1
  181.   until licz2==17
  182.   if znaleziono==0 then
  183.     napisz("F:czypusty. Rozladowano")
  184.     return true
  185.   else
  186.     napisz("F:czypusty. Nie rozladowano!")
  187.     return false
  188.   end
  189.   rap.fno=czypusty
  190. end
  191.  
  192. function wysyp()
  193.   local wysyp=rap.fno
  194.   rap.fno="wysyp"
  195.   if (sygnal("dol")=="szklo_purpurowe") and (sygnal("przod")=="skrzynia") then
  196.     napisz("F: wysyp - zaczynam wysypywac")
  197.     local licz=1
  198.     repeat
  199.       turtle.select(licz)
  200.       turtle.drop()
  201.       licz=licz+1
  202.     until licz==17    
  203.   else
  204.     napisz("F:wysyp. Nie moge wysypac. Niewlasciwe pole.")
  205.     return false
  206.   end
  207.   rap.fno=wysyp
  208. end
  209.  
  210.  
  211. function rozladunek()
  212.   local rozladunek=rap.fno
  213.   rap.fno="rozladunek"
  214.   if czypusty()==true then
  215.     napisz("F: rozladunek - nie ma potrzeby rozladunku")
  216.   else    
  217.     napisz("F: rozladunek - ustawiam do rozladunku")
  218.     ustaw("rozladunek")  
  219.     if (sygnal("dol")=="szklo_purpurowe") and sygnal("przod")=="skrzynia" then
  220.       napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysyp()")
  221.       wysyp()
  222.       if czypusty()==false then
  223.         rap.psp=1
  224.         napisz("F:rozladunek - skrzynia pelna!")      
  225.         ustaw("start")
  226.       else
  227.         rap.psp=0
  228.         napisz("F:rozladunek - material rozladowany")
  229.         ustaw("start")
  230.       end
  231.     else
  232.       napisz("F:rozladunek - nie stoje na pozycji do wysypu")
  233.     end
  234.   end  
  235.   rap.fno=rozladunek
  236. end
  237.  
  238. function tankuj()
  239.   local tankuj=rap.fno
  240.   rap.fno="tankuj"
  241.   if turtle.getFuelLevel()<rap.zpp then  
  242.     if czypusty()==true then
  243.      
  244.       if sygnal("dol")=="szklo_niebieskie" then
  245.         napisz("F:tankuj. Rozpoczynam tankowanie")
  246.         turtle.select(1)
  247.         local tank=1
  248.         repeat        
  249.           turtle.suckUp()
  250.           turtle.refuel()
  251.           tank=tank+1
  252.         until tank==10  
  253.         if turtle.getFuelLevel()<rap.zpp then
  254.           rap.ptp=1
  255.           napisz("Zatankowano - skrzynia z paliwem pusta, niedobor paliwa")
  256.         else
  257.           rap.ptp=0
  258.           napisz("Zatankowano - poziom paliwa OK")
  259.         end    
  260.       else
  261.         napisz("F:tankuj. Nie ustawiony do tankowania.")          
  262.       end
  263.      
  264.     else
  265.       napisz("F:tankuj. Inwentaz nie oprozniony")  
  266.      
  267.     end
  268.   else
  269.     napisz("F: tankuj. Bak pelny, nie ma potrzeby tankowania")  
  270.   end  
  271.   rap.fno=tankuj
  272. end
  273.  
  274. function gotowosc()
  275.   local warunek=0
  276.   napisz("Sprawdzam gotowosc. Paliwo zalecane to:")
  277.   napisz(rap.zpp)
  278.   if turtle.getFuelLevel()<rap.zpp then
  279.     warunek=1
  280.     napisz("F: gotowosc: brak paliwa")
  281.   elseif turtle.getItemCount(8)>0 then
  282.     napisz("F: gotowosc: zajety slot 8")
  283.     warunek=1
  284.   elseif turtle.getItemCount(16)>0 then
  285.     napisz("F: gotowosc: zajety slot 16")
  286.     warunek=1    
  287.   else
  288.     warunek=0
  289.   end    
  290.   return warunek
  291. end
  292.  
  293. function cyklglowny()
  294.   local petla=1
  295.   while true do
  296.     if rap.zgd==1 then
  297.       rozladunek_sadzonek()
  298.       tankuj()      
  299.       if gotowosc()==0 then
  300.         print("zbieram!")
  301.         seriaglowna()
  302.         ustaw("start")
  303.         napisz("Koniec cyklu glownego.")
  304.       else
  305.         napisz("Brak gotowosci logistycznej. Czekam 50.")
  306.         sleep(50)
  307.       end
  308.     else
  309.       napisz("Brak zgody na rozpoczecie cyklu. Proba:")
  310.       napisz(petla)
  311.       sleep(10)
  312.       petla=petla+1
  313.     end
  314.   end
  315. end
  316.  
  317. function nawiazpolaczenie()
  318.   if uruchom_modem()==true then
  319.     if polaczenie_z_baza(1, "Oczekuje na polaczenie", 5, 20)=="sygnal" then
  320.       return "2"
  321.     else
  322.       return "1"
  323.     end
  324.   else
  325.     return "0"
  326.   end
  327. end
  328.  
  329. function program()
  330.   ocenawstepna=nawiazpolaczenie()
  331.   if ocenawstepna=="0" then
  332.     print("Modem nieaktywny")
  333.   elseif ocenawstepna=="1" then
  334.     napisz("Brak polaczenia z baza")
  335.     raportuj()
  336.   elseif ocenawstepna=="2" then
  337.     parallel.waitForAny(cyklglowny, aktualizuj, raportuj)
  338.   else
  339.     print("Nieznany wynik funkcji program")
  340.   end
  341. end
  342.  
  343. function zaladuj_dol()
  344.   if sygnal("dol")=="skrzynia" then
  345.     local licz=1
  346.     repeat
  347.       turtle.suckDown()
  348.       licz=licz+1
  349.     until licz==17
  350.   else
  351.     napisz("F: Zaladuj_dol - Nie stoje na skrzyni")
  352.   end
  353. end
  354.  
  355. function rozladuj_dol(arg1)
  356.   napisz("F:rozladuj_dol - zaczynam")
  357.   if sygnal("dol")=="skrzynia" then
  358.     local licz=1
  359.     if arg1=="wszystko" then
  360.       repeat
  361.         turtle.select(licz)
  362.         turtle.dropDown()
  363.         licz=licz+1
  364.       until licz==17
  365.       turtle.select(1)
  366.     else
  367.       repeat
  368.         turtle.select(licz)
  369.         if turtle.getItemCount()>0 then        
  370.           local slot=turtle.getItemDetail()
  371.           if slot.name==arg1 then
  372.             turtle.dropDown()
  373.           end
  374.         end
  375.         licz=licz+1
  376.       until licz==17
  377.     end
  378.   else
  379.     napisz("F:rozladuj_dol - nie stoje na polu do rozladunku")
  380.   end
  381. end
  382.  
  383. function zaladuj_przod(arg1)
  384.   napisz("F: zaladuj_przod - zaczynam")
  385.   if sygnal("przod")=="skrzynia" then    
  386.     repeat
  387.          
  388.     until turtle.suck()==false
  389.     local licz2=arg1+1
  390.     while licz2<17 do
  391.       turtle.select(licz2)
  392.       turtle.drop()
  393.       licz2=licz2+1      
  394.     end
  395.     turtle.select(1)    
  396.   else
  397.     napisz("Nie stoje na polu do zaladunku")
  398.   end
  399. end
  400.  
  401. function rozladuj_przod()
  402.   napisz("F: rozladuj_przod - zaczynam")
  403.   if sygnal("przod")=="skrzynia" then
  404.     local licz=1
  405.     repeat
  406.       turtle.select(licz)
  407.       turtle.drop()
  408.       licz=licz+1
  409.     until licz==17
  410.     turtle.select(1)
  411.   else
  412.     napisz("F: rozladuj_przod - nie stoje przed skrzynia")
  413.   end
  414. end
  415.  
  416. function sprawdz_ekwipunek(arg1)
  417.   local licz=1
  418.   repeat
  419.     turtle.select(licz)
  420.     if turtle.getItemCount()>0 then
  421.       local slot=turtle.getItemDetail()
  422.       if slot.name~=arg1 then
  423.         napisz("Zaladowano niewlasciwy przedmiot. Przerywam funkcje")
  424.         return "NOK"
  425.       end
  426.     end
  427.     licz=licz+1  
  428.   until licz==17
  429.   napisz("Sprawdzono. Material OK")
  430.   return "OK"
  431. end
  432.  
  433. function zaladuj_paliwo()
  434.   if sygnal("dol")~="szklo_niebieskie" then
  435.     napisz("Nie jestem ustawiony na polu startowym")
  436.     return
  437.   end
  438.   napisz("Uruchamiam funkcje zaladunku wegla")
  439.   obroc()
  440.   turtle.turnRight()  
  441.   napisz("Pobieram paliwo ze zbiornika")
  442.   redstone.setOutput("left", true)
  443.   zaladuj_przod(16)
  444.   redstone.setOutput("left", false)
  445.   napisz("Sprawdzam co pobrano")
  446.   if sprawdz_ekwipunek("minecraft:coal")=="NOK" then
  447.     napisz("Masakra!")    
  448.     return
  449.   end  
  450.   turtle.up()
  451.   turtle.up()
  452.   turtle.up()
  453.   turtle.up()
  454.   turtle.turnLeft()
  455.   turtle.turnLeft()
  456.   local licz2=1
  457.   repeat
  458.     rusz()
  459.     turtle.select(licz2)
  460.     turtle.dropDown()
  461.     licz2=licz2+1
  462.   until licz2==11
  463.   turtle.turnLeft()
  464.   turtle.turnLeft()
  465.   repeat
  466.     rusz()
  467.     licz2=licz2-1
  468.   until licz2==1  
  469.   turtle.down()
  470.   turtle.down()
  471.   turtle.down()
  472.   turtle.down()
  473.   rozladuj_przod()
  474. end
  475.  
  476. function zaladuj_drewno()
  477.   if sygnal("dol")~="szklo_niebieskie" then
  478.     napisz("Nie jestem ustawiony na polu do startowym")
  479.     return
  480.   end
  481.   obroc()
  482.   turtle.turnLeft()
  483.   turtle.turnLeft()
  484.   turtle.up()
  485.   napisz("Pobieram drewno")
  486.   zaladuj_przod(10)
  487.   napisz("Sprawdzam co pobrano")
  488.   if sprawdz_ekwipunek("minecraft:log")=="NOK" then
  489.     napisz("Masakra")
  490.     return
  491.   end
  492.   turtle.turnRight()  
  493.   turtle.up()
  494.   turtle.up()  
  495.   turtle.turnRight()  
  496.   rusz()
  497.   turtle.turnLeft()
  498.   local licz2=1
  499.   repeat
  500.     rusz()
  501.     turtle.select(licz2)
  502.     turtle.dropDown()
  503.     licz2=licz2+1
  504.   until licz2==11
  505.   turtle.turnLeft()
  506.   turtle.turnLeft()
  507.   repeat
  508.     rusz()
  509.     licz2=licz2-1
  510.   until licz2==1
  511.   turtle.turnRight()
  512.   rusz()
  513.   turtle.turnLeft()  
  514.   turtle.down()
  515.   turtle.down()
  516.   turtle.turnRight()
  517.   rozladuj_przod("wszystko")
  518.   turtle.turnLeft()
  519.   turtle.down()  
  520. end
  521.  
  522. --program()
  523. uruchom_modem()
  524. tankuj()
  525. zaladuj_paliwo()
  526. zaladuj_drewno()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement