-- Licznik pozwala na odliczanie czasu
local licznik = game.ReplicatedStorage:WaitForChild('Licznik')
-- Czas rundy określa ile sekund będzie trwała dana runda (fala)
local czasRundy = game.ReplicatedStorage:WaitForChild('CzasRundy')
-- Ilość zombie do wygenerowania, pozwoli generatorowi wygenerować odpowiednią ilość zombiaków
local zombieDoWygenerowania = game.ReplicatedStorage:WaitForChild('ZombieDoWygenerowania')
-- Ilość zombie do pokonania, pozwoli na sprawdzanie czy dana fala została pokonana
local zombieDoPokonania = game.ReplicatedStorage:WaitForChild('ZombieDoPokonania')
-- Finalna fala określa rundę z bossem
local finalnaFala = game.ReplicatedStorage:WaitForChild('FinalnaFala')
-- Zmienna logiczna aktywna gra, będzie określać, czy gra jest aktywna lub nie
local aktywnaGra = game.ReplicatedStorage:WaitForChild('AktywnaGra')
-- Aktualna fala określa jaki obecnie jest numer fali
local aktualnaFala = game.ReplicatedStorage:WaitForChild('AktualnaFala')
-- Komunikat gry pozwoli na przekazywanie informacji dla gracza
local komunikatGry = game.ReplicatedStorage:WaitForChild('KomunikatGry')
-- Ilość czasu w sekundach do rozpoczęcia gry
local czasDoGry = game.ReplicatedStorage:WaitForChild('CzasDoGry')
-- Ilość czasu w sekundach przerwy pomiędzy falami
local czasPrzerwy = game.ReplicatedStorage:WaitForChild('CzasPrzerwy')
-- Ilość czasu w sekundach po rozgrywce
local czasPoGrze = game.ReplicatedStorage:WaitForChild('CzasPoGrze')
-- Odwołanie do folderu Zombiaki, w którym będą umieszczane wygenerowane zombie
local folderZombiaki = game.Workspace.Zombiaki
-- Odwołanie do modelu bossa
local boss = game.ReplicatedStorage:WaitForChild("Boss")
-- Pętla nieskończona
while true do
-- Startowe odliczanie
for i = czasDoGry.Value, 0, -1 do
komunikatGry.Value = 'Rozpoczecie gry za: '.. i
wait(1)
end
-- Ustawienie licznika na wartość czasu rundy
licznik.Value = czasRundy.Value
-- Ustawienie ilości zombiaków do wygenerowania
zombieDoWygenerowania.Value = 10
-- Ustawienie ilości zombiaków do pokonania
zombieDoPokonania.Value = 10
-- Ustawienie numeru aktualnej fali
aktualnaFala.Value = 1
-- Aktywacja gry
aktywnaGra.Value = true
-- Powtarzaj (aż do momentu kiedy gra zostanie zakończona)
repeat
-- Jeżeli wartość licznika jest większa od 0
if licznik.Value > 0 then
-- Wyświetlanie informacji na temat aktualnego czasu rozgrywki
komunikatGry.Value = 'Pozostały czas: ' .. licznik.Value
-- Czekaj sekundę
wait(1)
-- Zmniejsz licznik o jeden
licznik.Value -= 1
else
-- Ustaw komunikat przegrana
komunikatGry.Value = 'Przegrana!'
-- Usuń wszystkie zombiaki w folderze Zombiaki
game.Workspace.Zombiaki:ClearAllChildren()
-- Dezaktywacja gry
aktywnaGra.Value = false
end
-- jeżeli wszystkie zombiaki zostają pokonane
if zombieDoPokonania.Value == 0 then
-- wartość aktualnej fali zostaje zwiększona
aktualnaFala.Value += 1
if aktualnaFala.Value < finalnaFala.Value + 1 then
for i = czasPrzerwy.Value, 0, -1 do
komunikatGry.Value = 'Następna fala za: ' .. i
wait(1)
end
-- ustawienie licznika na wartość czasu rundy
licznik.Value = czasRundy.Value
-- ustawienie ilości zombiaków do wygenerowania
zombieDoWygenerowania.Value = 10 * aktualnaFala.Value
-- ustawienie ilości zombiaków do pokonania
zombieDoPokonania.Value = 10 * aktualnaFala.Value
-- jeżeli fala jest falą finałową,
if aktualnaFala.Value == finalnaFala.Value then
-- sklonuj bossa
local nowyBoss = boss:Clone()
-- przypisz go do folderu z zombiakami (czyli do świata gry)
nowyBoss.Parent = game.Workspace.Zombiaki
-- zwiększ ilość zombiaków do pokonania o jeden
zombieDoPokonania.Value += 1
end
else -- jeżeli wartość fali jest większa o jeden od finałowej wygrywamy grę.
komunikatGry.Value = 'Gratulacje, pojedynek wygrany!'
aktywnaGra.Value = false
end
end
until aktywnaGra.Value == false -- warunek konca gry
wait(czasPoGrze)
end