Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- id=4
- id2=163621
- 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}
- function aktualizuj() --do aktualizowania parametrow (w tle)
- napisz("Uruchamiam funkcje aktualizacji.")
- while true do
- repeat
- a5, b5, c5, d5, e5, f5=os.pullEvent("modem_message")
- until e5.rod=="K"
- rap.oka=e5.oka
- rap.zgd=e5.zgd
- rap.orp=e5.orp
- rap.zpp=e5.zpp
- -- tu bylo sleep(e5.oka)
- end
- end
- function raportuj() --do raportowania parametrow (w tle)
- napisz("F: raportuj - Rozpoczynam raportowanie w tle")
- while true do
- 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}
- rap.pll=turtle.getFuelLevel()
- modem.transmit(1, id, tablica)
- sleep(rap.orp)
- end
- end
- function napisz(arg1) --do komentowania w ramach funkcji
- 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
- print(arg1)
- modem.transmit(1, id, tablica)
- end
- function uruchom_modem() -- uruchamia modem, zwraca true jesli otwarty na kanale id
- modem=peripheral.wrap("right")
- modem.open(id)
- if modem.isOpen(id)==true then
- rap.fnn="W1"
- rap.fno="uruchom_modem"
- napisz("Modem otwarty na kanale"..id)
- return true
- else
- print("Modem nie zostal otwarty")
- return false
- end
- end
- 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).
- rap.fnn="W2"
- rap.fno="polaczenie_z_baza"
- local warunek=0
- local licz=0
- napisz("Polaczenie_z_baza(): Wysylam pytanie numer:")
- napisz(arg1)
- repeat
- 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}
- modem.transmit(1, id, tablica)
- napisz("Polaczenie_z_baza(): proba: "..licz)
- os.startTimer(arg3)
- repeat
- a1, b1, c1, d1, e1, f1 = os.pullEvent()
- if ((a1=="modem_message") and (e1.nrd==1) and (e1.rod=="P") and (e1.var==id2)) then
- warunek=1
- else
- warunek=0
- end
- until (warunek==1) or (a1=="timer")
- licz=licz+1
- until (warunek==1) or (licz==arg4)
- if warunek==1 then
- napisz("Otrzymalem wiadomosc zwrotna!")
- return e1.kom
- elseif a1=="timer" then
- napisz("polaczenie_z_baza: Uplynal czas oczekiwania.")
- return a1
- else
- napisz("Nieznany wynik funkcji.")
- end
- end
- function sygnal(kierunek)
- if kierunek=="przod" then
- czyjest, blok=turtle.inspect()
- elseif kierunek=="gora" then
- czyjest, blok=turtle.inspectUp()
- elseif kierunek=="dol" then
- czyjest, blok=turtle.inspectDown()
- else
- napisz("F: sygnal - funkcja sygnal ze zlym parametrem")
- end
- if czyjest==false then
- znaleziono="nic"
- elseif blok["name"]=="minecraft:log" then
- znaleziono="drewno"
- elseif blok["name"]=="minecraft:sapling" then
- znaleziono="sadzonka"
- elseif blok["name"]=="minecraft:glass" then
- znaleziono="szklo"
- elseif blok["name"]=="minecraft:chest" then
- znaleziono="skrzynia"
- elseif blok["name"]=="minecraft:leaves" then
- znaleziono="lisc"
- elseif blok["name"]=="minecraft:snow_layer" then
- znaleziono="snieg"
- elseif blok["name"]=="minecraft:nether_brick" then
- znaleziono="ceglanetheru"
- elseif blok["name"]=="minecraft:stone" then
- znaleziono="kamien"
- elseif blok["name"]=="minecraft:lit_pumpkin" then
- znaleziono="lampion"
- elseif blok["name"]=="minecraft:obsidian" then
- znaleziono="obsydian"
- elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="blue") then
- znaleziono="szklo_niebieskie"
- elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="red") then
- znaleziono="szklo_czerwone"
- elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="purple") then
- znaleziono="szklo_purpurowe"
- elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="yellow") then
- znaleziono="szklo_zolte"
- elseif (blok["name"]=="minecraft:stained_glass") and (blok.state["color"]=="orange") then
- znaleziono="szklo_pomaranczowe"
- elseif blok["name"]=="minecraft:dirt" then
- znaleziono="ziemia"
- elseif blok["name"]=="minecraft:grass" then
- znaleziono="trawa"
- else
- znaleziono="inne"
- end
- return znaleziono
- end
- -- koniec czesci ogolnej
- function rusz()
- while turtle.forward()==false do
- if (sygnal("przod")=="lisc") or (sygnal("przod")=="snieg") then
- turtle.dig()
- else
- napisz("F:ruch - natrafilem na przeszkode")
- sleep(5)
- end
- end
- turtle.suck()
- end
- function obroc()
- while (sygnal("przod")~="szklo_zolte" and sygnal("przod")~="szklo_pomaranczowe" and sygnal("przod")~="obsydian" and sygnal("przod")~="skrzynia") do
- turtle.turnLeft()
- end
- end
- function ustaw(arg1)
- if (arg1=="rozladunek") then
- if sygnal("dol")=="szklo_czerwone" then
- obroc()
- turtle.turnRight()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- rusz()
- elseif sygnal("dol")=="szklo_zolte" then
- obroc()
- turtle.turnLeft()
- rusz()
- obroc()
- elseif sygnal("dol")=="szklo_niebieskie" then
- obroc()
- turtle.turnLeft()
- rusz()
- turtle.turnRight()
- rusz()
- rusz()
- elseif sygnal("dol")=="szklo_purpurowe" then
- obroc()
- else
- napisz("F:ustaw - wywolano funkcje w zlym miejscu")
- end
- elseif arg1=="tankuj" then
- if sygnal("dol")=="szklo_czerwone" then
- obroc()
- turtle.turnRight()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- elseif sygnal("dol")=="szklo_zolte" then
- obroc()
- elseif sygnal("dol")=="szklo_niebieskie" then
- obroc()
- turtle.turnLeft()
- rusz()
- turtle.turnRight()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- elseif sygnal("dol")=="szklo_purpurowe" then
- obroc()
- turtle.turnLeft()
- rusz()
- else
- napisz("F:ustaw - wywolano funkcje w zlym miejscu")
- end
- elseif arg1=="start" then
- if sygnal("dol")=="szklo_niebieskie" then
- obroc()
- elseif sygnal("dol")=="szklo_czerwone" then
- obroc()
- turtle.turnRight()
- rusz()
- rusz()
- rusz()
- turtle.turnRight()
- elseif sygnal("dol")=="szklo_zolte" then
- obroc()
- turtle.turnLeft()
- rusz()
- turtle.turnRight()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- turtle.turnRight()
- elseif sygnal("dol")=="szklo_purpurowe" then
- obroc()
- turtle.turnLeft()
- turtle.turnLeft()
- rusz()
- rusz()
- turtle.turnLeft()
- rusz()
- turtle.turnRight()
- else
- napisz("F:ustaw - wywolano funkcje w zlym miejscu")
- end
- else
- napisz("F:ustaw - funkcja ze zlym parametrem")
- end
- end
- function seria()
- local seria=rap.fno
- rap.fno="seria"
- if (sygnal("dol")=="szklo_niebieskie") or (sygnal("dol")=="szklo_pomaranczowe") or (sygnal("dol")=="szklo_purpurowe") or (sygnal("dol")=="szklo") then
- napisz("F: ruch - Jestem na linii. Zaczynam isc")
- rusz()
- while (sygnal("dol")=="ziemia") or (sygnal("dol")=="trawa") do
- rusz()
- end
- napisz("F: seria - Koniec linii.")
- else
- napisz("Nie jestem na linii. Nie mog isc.")
- rap.pro=1
- end
- rap.fno=seria
- end
- function zawroc()
- local zawroc=rap.fno
- rap.fno="zawroc"
- if sygnal("dol")=="szklo_purpurowe" then
- napisz("F: zawroc - zawracam")
- turtle.turnRight()
- rusz()
- turtle.turnRight()
- elseif sygnal("dol")=="szklo_pomaranczowe" then
- napisz("F: zawroc - zawracam")
- turtle.turnLeft()
- rusz()
- turtle.turnLeft()
- else
- napisz("F:zawroc - Nie jestem ustawiony na polu zawracania")
- end
- rap.fno=zawroc
- end
- function seriaglowna()
- seria()
- zawroc()
- seria()
- zawroc()
- seria()
- zawroc()
- seria()
- end
- function czypusty()
- local czypusty = rap.fno
- rap.fno="czypusty"
- local licz2=1
- local znaleziono=0
- repeat
- if turtle.getItemCount(licz2)>0 then
- znaleziono=1
- end
- licz2=licz2+1
- until licz2==17
- if znaleziono==0 then
- napisz("F:czypusty. Rozladowano")
- return true
- else
- napisz("F:czypusty. Nie rozladowano!")
- return false
- end
- rap.fno=czypusty
- end
- function wysyp()
- local wysyp=rap.fno
- rap.fno="wysyp"
- if (sygnal("dol")=="szklo_niebieskie") and (sygnal("przod")=="skrzynia") then
- napisz("F: wysyp - zaczynam wysypywac")
- local licz=1
- repeat
- turtle.select(licz)
- turtle.drop()
- licz=licz+1
- until licz==17
- else
- napisz("F:wysyp. Nie moge wysypac. Niewlasciwe pole.")
- return false
- end
- rap.fno=wysyp
- end
- function rozladunek()
- if czypusty()==true then
- napisz("F: rozladunek - nie ma potrzeby rozladunku")
- else
- local rozladunek=rap.fno
- rap.fno="rozladunek"
- napisz("F: rozladunek - ustawiam do rozladunku")
- ustaw("rozladunek")
- if (sygnal("dol")=="szklo_niebieskie") and sygnal("przod")=="skrzynia" then
- napisz("Ustawiony na polu rozladunku. Wywoluje funkcje wysyp()")
- wysyp()
- if czypusty()==false then
- rap.psp=1
- napisz("F:rozladunek - skrzynia pelna!")
- ustaw("start")
- else
- rap.psp=0
- napisz("F:rozladunek - material rozladowany")
- ustaw("start")
- end
- else
- napisz("F:rozladunek - nie stoje na pozycji do wysypu")
- end
- end
- rap.fno=rozladunek
- end
- function tankuj()
- local tankuj=rap.fno
- rap.fno="tankuj"
- if turtle.getFuelLevel()<rap.zpp then
- if czypusty()==true then
- ustaw("tankuj")
- if (sygnal("dol")=="szklo_zolte") and (sygnal("przod")=="skrzynia") then
- napisz("F:tankuj. Rozpoczynam tankowanie")
- turtle.select(1)
- local tank=1
- repeat
- turtle.suck()
- turtle.refuel()
- tank=tank+1
- until tank==10
- if turtle.getFuelLevel()<rap.zpp then
- rap.ptp=1
- napisz("Zatankowano - skrzynia z paliwem pusta, niedobor paliwa")
- else
- rap.ptp=0
- napisz("Zatankowano - poziom paliwa OK")
- end
- else
- napisz("F:tankuj. Nie ustawiony do tankowania.")
- end
- ustaw("start")
- else
- napisz("F:tankuj. Inwentaz nie oprozniony")
- ustaw("start")
- end
- else
- napisz("F: tankuj. Bak pelny, nie ma potrzeby tankowania")
- end
- rap.fno=tankuj
- end
- function gotowosc()
- turtle.select(16)
- local warunek=0
- local data=turtle.getItemDetail()
- napisz("Sprawdzam gotowosc. Paliwo zalecane to:")
- napisz(rap.zpp)
- if turtle.getFuelLevel()<rap.zpp then
- warunek=1
- napisz("F: gotowosc: brak paliwa")
- elseif turtle.getItemCount(1)>0 then
- warunek=1
- napisz("F: gotowosc: zajety slot 1")
- elseif turtle.getItemCount(4)>0 then
- napisz("F: gotowosc: zajety slot 4")
- warunek=1
- elseif turtle.getItemCount(8)>0 then
- napisz("F: gotowosc: zajety slot 8")
- warunek=1
- elseif turtle.getItemCount(16)>0 then
- if data["name"]~="minecraft:sapling" then
- napisz("F: gotowosc: zly przedmiot w slocie 16")
- warunek=1
- else
- print("")
- end
- else
- warunek=0
- end
- turtle.select(1)
- return warunek
- end
- function cyklglowny()
- local petla=1
- while true do
- if rap.zgd==1 then
- rozladunek()
- tankuj()
- sadzonki()
- if gotowosc()==0 then
- print("tne!")
- sleep(5)
- seriawycinka()
- zawroc()
- powrot()
- zawroc()
- napisz("Koniec cyklu glownego. Czekam 100 sekund.")
- sleep(100)
- else
- sleep(50)
- end
- else
- napisz("Brak zgody na rozpoczecie cyklu. Proba:")
- napisz(petla)
- sleep(10)
- petla=petla+1
- end
- end
- end
- function nawiazpolaczenie()
- if uruchom_modem()==true then
- if polaczenie_z_baza(1, "Oczekuje na polaczenie", 5, 20)=="sygnal" then
- return "2"
- else
- return "1"
- end
- else
- return "0"
- end
- end
- function program()
- ocenawstepna=nawiazpolaczenie()
- if ocenawstepna=="0" then
- print("Modem nieaktywny")
- elseif ocenawstepna=="1" then
- napisz("Brak polaczenia z baza")
- raportuj()
- elseif ocenawstepna=="2" then
- parallel.waitForAny(cyklglowny, aktualizuj, raportuj)
- else
- print("Nieznany wynik funkcji program")
- end
- end
- uruchom_modem()
- seriaglowna()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement