Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function ENT:GetCrafting() //nawet nie mysl ze ci to wytlumacze, sam ledwo to wymyslilem XDDDD EDIT: albo w sumie sie postaram
- for k, v in pairs(self.Craftings) do //self.Craftings to tablica zawierajaca wszystkie craftingi wiec po prostu przez nia przelatujemy w tym forze
- //v w kazdej iteracji staje sie po prostu kolejnym craftingiem z tejze tablicy
- local contains = true
- local modifiedcrafting = {}
- for x, y in pairs(v.items) do
- if(modifiedcrafting[y] == nil) then
- modifiedcrafting[y] = 1
- else
- modifiedcrafting[y] = modifiedcrafting[y] + 1
- end
- end
- for x, y in pairs(modifiedcrafting) do
- /*logiczny and, oba warunki musza byc spelnione, a wiec jesli zabranknie jakiegos przedmiotu, to prawa strona operatora && zmieni sie na false,
- a co za tym idzie zmienna contains zmieni sie na false i to w sumie koniec, bo potem nie wazne czy kolejny przedmiot bedzie czy nie to i tak contains
- jest rowne false i juz sie nie zmieni na true
- P.S. v.items oznacza ze z obecnego craftingu (ktory jest podstawiony pod v przez petle for) bierzemy tablice itemow i lecimy przez nie,
- y to kolejny item z tej tablicy. Czemu x, y a nie k, v? K, v juz wykorzystalismy w tym przedziale kodu w najwyzszej petli.
- */
- contains = contains && (self.StoredItems[x] != nil && self.StoredItems[x] >= y)
- end
- if(!contains) then
- continue //jesli nie zawiera choc jednego przedmiotu to klapa, lecimy z kolejnym craftingiem,
- //continue tak samo jak return to operator przeplywu sterowania, decyduje on o tym gdzie dalej udac sie w programie
- //ale continue nie wychodzi z funkcji tak jak return, ani nie przerywa petli tak jak break
- //continue po prostu zarzuca prace nad obecna iteracja (jak gdyby okrazeniem petli) i skacze do nastepnej iteracji
- //pomijajac jakikolwiek kod
- end
- //jesli wykona sie continue to odtąd
- if(self.CurrentCrafting == nil || #self.CurrentCrafting.items < #v.items) then
- self.CurrentCrafting = v //tutaj sprawdzamy czy mamy juz jakis prawidlowy crafting, i jesli mamy, to sprawdzamy
- //z ilu itemow sie on sklada, system faworyzuje zlozone kraftingi, a wiec jesli masz materialy na kilka kraftingow
- //a mozesz wykraftowac przeciez tylko jeden w czasie jednego uzycia, to wykona sie ten ktory wymaga najwiecej przedmiotow,
- //czyli np. wiadro + butelka + hamburger wykona sie wczesniej niz np wiadro + butelka, butelka z wodą itp.
- end
- //dotąd nic sie nie wykona
- end
- if(self.CurrentCrafting == nil) then
- return false //jesli mimo sprawdzenia kazdego craftingu na zaden nas nie stac to zwracamy falsz
- end
- //tu juz mozemy k,v poniewaz wyszlismy z tamtej petli (z reszta patrz jak wciecia sa)
- for k, v in pairs(self.CurrentCrafting.items) do //jesli udalo sie znalezc dobry crafting to lecimy przez jego przedmioty
- self.StoredItems[v] = self.StoredItems[v] - 1 //i odejmujemy je z naszego EQ
- self.NumStoredItems = self.NumStoredItems - 1
- end
- return true //zwracamy prawde
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement