Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local analyzer = peripheral.wrap("right")
- Z = {1,2,3,5,6,7,9,10,11}
- x={}
- tCraft={}
- function oddaj()
- for i=1,16 do
- if turtle.getItemCount(i)>0 then
- turtle.select(i)
- turtle.drop()
- end
- end
- end
- function zlicz(recka2)
- ZLICZ={}
- for i=1,9 do
- ZLICZ[i]={ID,META,COUNT}
- end
- for i=1,9 do
- if recka2[i][1] == nil then
- else
- ZLICZ[1].ID = recka2[i][1]
- ZLICZ[1].META = recka2[i][2]
- ZLICZ[1].COUNT = 1
- w = i
- break
- end
- end
- k = 1
- for i = w+1,9 do
- check = false
- if recka2[i][1] == nil then
- else
- X = recka2[i][1]
- Y = recka2[i][2]
- --print("Wyraz nr " ..i.. " wynosi " ..X.."")
- for j = 1,k do
- if X == ZLICZ[j].ID and Y == ZLICZ[j].META then
- ZLICZ[j].COUNT = ZLICZ[j].COUNT + 1
- --print("Zwiekszam ilosc liczb "..X.." o jeden")
- check = true
- end
- end
- if check == false then
- k = k+1
- ZLICZ[k].ID = X
- ZLICZ[k].META = Y
- --print("Dopisuje element o nr " ..k.. " o wartosci "..X.."")
- ZLICZ[k].COUNT = 1
- end
- end
- end
- return ZLICZ,k
- end
- function sprawdz(dane,rekordy)
- sprawdzenie = true
- for i=1,rekordy do
- slot = 0
- X = 0
- Y = 0
- ilosc = 0
- --print("Poszukuje bloku o ID rownym " ..dane[i].ID.. "")
- repeat
- slot = slot + 1
- X = analyzer.getBlockIdAt(slot)
- Y = analyzer.getBlockMetadataAt(slot)
- if X == dane[i].ID and dane[i].META == nil then
- ilosc = ilosc + analyzer.getBlockCountAt(slot)
- elseif X == dane[i].ID and Y == dane[i].META then
- --print("znalazlem w slocie "..slot.." blok o ID rownym "..ID.."")
- ilosc = ilosc + analyzer.getBlockCountAt(slot)
- end
- until slot == 109
- if ilosc < dane[i].COUNT then
- sprawdzenie = false
- if dane[i].META == nil then
- brak = dane[i].ID
- else
- brak = ""..dane[i].ID..":"..dane[i].META..""
- end
- print("braklo itemu o ID: "..dane[i].ID.." w liczbie: "..dane[i].COUNT - ilosc.."")
- end
- end
- return sprawdzenie, brak
- end
- function craft(recka3)
- for i=1,9 do
- if recka3[i][1] == nil then
- else
- slot = 0
- repeat
- slot = slot +1
- X = analyzer.getBlockIdAt(slot)
- Y = analyzer.getBlockMetadataAt(slot)
- until (X == recka3[i][1] and recka3[i][2] == nil) or (X == recka3[i][1] and Y == recka3[i][2])
- --print("Znalazlem w slocie "..slot.."")
- ilosc = analyzer.getBlockCountAt(slot)
- turtle.select(Z[i])
- analyzer.takeAt(slot)
- turtle.drop(ilosc - 1)
- end
- end
- turtle.craft()
- oddaj()
- end
- function craftuj(recka)
- print("craftuje "..b.."")
- a = false
- while not a do
- a,b = sprawdz(zlicz(recka))
- if a == false then
- print("braklo "..b.."")
- b = tostring(b)
- crafting()
- a = false
- else
- craft(recka)
- end
- end
- end
- function crafting()
- if tCraft[b] then
- craftuj(tCraft[b])
- else
- print("Braklo: "..b.."") os.pullEvent()
- end
- end
- function craftujemy()
- odczyt = io.open ("receptury","r")
- while true do -- odczyt recek
- tekst=odczyt:read()
- if tekst == nil then break end
- item1, x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9] = string.match(tekst, "([%w%:]+)=([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+);([%w%:]+)")
- tCraft[item1]={}
- for i=1,9 do
- if(x[i] == "0") then
- tCraft[item1][i]={nil}
- elseif(string.find(x[i],":")) then
- id,meta = string.match(x[i],"(%d+):(%d+)")
- tCraft[item1][i]={tonumber(id),tonumber(meta)}
- else
- tCraft[item1][i]={tonumber(x[i])}
- end
- end
- end
- odczyt:close()
- print("Co mam craftowac? Podaj ID lub ID:META")
- b = read()
- b1 = b
- print("ile? ")
- c = read()
- for zz=1,c do
- crafting()
- b = b1
- end
- end
- function menu()
- term.clear()
- opcja = 2
- term.setCursorPos(1,1)
- term.write("Ultimate Crafting Program")
- term.setCursorPos(1,2)
- term.write("[ ] Craftuj")
- term.setCursorPos(1,3)
- term.write("[ ] Dodaj recepture przez skanowanie")
- term.setCursorPos(1,4)
- term.write("[ ] Dodaj recepture przez wpisanie")
- end
- function odswiez()
- for i=2,10 do
- term.setCursorPos(2,i)
- term.write(" ")
- end
- term.setCursorPos(2,opcja)
- term.write("X")
- end
- function zapisz()
- print("Uloz recepture w inventory turtla")
- os.pullEvent()
- x={}
- for i=1,9 do
- turtle.select(Z[i]) -- wybierz slot
- x[i] = {} -- stworz tablice
- id=analyzer.getBlockId() -- pobierz id
- if(id == false) then -- jesli nie ma nic
- x[i].ID = nil -- przypisz nil
- else
- x[i].ID = id -- przypisz id
- x[i].META = analyzer.getBlockMetadata() -- przypisz meta
- end
- end
- z={}
- for i=1,9 do
- if x[i].ID == nil then -- jezli id = nil
- z[i] = 0; -- przypisz 0
- elseif x[i].META == nil then -- jezeli meta = nil
- z[i] = x[i].ID -- przypisz samo id
- else -- w przeciwnym wypadku
- z[i] = ""..x[i].ID..":"..x[i].META.."" -- wpisz ID:META
- end
- end
- turtle.craft()
- turtle.select(11)
- item = analyzer.getBlockId()..":"..analyzer.getBlockMetadata()
- zapis = io.open ("receptury","a") -- otworz plik
- zapis:write(string.format("%s=%s;%s;%s;%s;%s;%s;%s;%s;%s\n",item,z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8],z[9]))
- zapis:close()
- end
- function podaj()
- term.clear()
- print("podaj recepture wedlug skladni: ")
- print("ID:META=ID:META;ID:META; ... ;ID:META")
- print("mozna podawac rowniez ID bez podania Metadanych")
- nowa=read()
- zapis = io.open ("receptury","a") -- otworz plik
- zapis:write(nowa.."\n")
- zapis:close()
- end
- menu()
- odswiez()
- while true do
- przycisk,kod = os.pullEvent()
- if przycisk == "key" and kod == 208 and opcja < 4 then
- opcja=opcja+1
- end
- if przycisk == "key" and kod == 200 and opcja > 2 then
- opcja = opcja - 1
- end
- if przycisk == "key" and kod == 28 then
- term.clear()
- term.setCursorPos(1,1)
- if opcja == 2 then
- craftujemy()
- elseif opcja == 3 then
- zapisz()
- elseif opcja == 4 then
- podaj()
- end
- menu()
- end
- odswiez()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement