Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function destroyDrop(drop)
- task.spawn(function()
- -- zapamiętaj obszar z którego pochodzi drop
- local oldParent = drop.Parent
- -- przenieś drop do folderu despawnedDrops
- drop.Parent = despawnedDrops
- -- poczekaj 4 sek
- wait(4)
- -- ustaw życie dropu na wartość maksymalną
- drop.CurrentPoints.Value = drop.MaxPoints.Value
- -- wstaw drop z powrotem do obszaru z którego pochodzi
- drop.Parent = oldParent
- end)
- end
- local function updateDamage()
- -- odczytaj aktualną listę petów gracza
- local playerPets = GetPlayerPets()
- -- pętla przechodząca po wszystkich petach gracza
- for _, pet in ipairs(playerPets) do
- -- ustaw ustaw target na cel ataku peta
- local target = pet.Attack.Value
- -- jeśli cel jest ustawiony (nie jest nil)
- if target then
- -- ustaw zmienną drop jako rodzica atakowego elementu
- -- (atakujemy PrimaryPart/model 3D naszego dropa)
- local drop = target.Parent
- -- ustaw zmienną currentPoints an aktualne punkty (życia) dropu
- local currentPoints = drop.CurrentPoints
- -- odejmij od punktów życia dropa wartość ataku peta
- -- jeśli wartość spadła poniżej zera - ustaw ją na z0
- currentPoints.Value = math.max(currentPoints.Value - pet.Damage.Value, 0)
- -- jeśli aktualne życie dropu jest równe 0:
- if currentPoints.Value == 0 then
- -- ustaw cel ataku petów jako pusty
- attackTarget.Value = nil
- SetAttackTarget(nil)
- -- usuń ten drop z planszy (za pomocą funkcji)
- destroyDrop(drop)
- end
- end
- end
- end
- -- funkcja aktualizująca paski życia dropów na scenie
- local function updateDropDisplay()
- -- pętla przechodząca po elementach w folderze drops
- for _, drop in pairs(drops:GetDescendants()) do
- -- jeśli obiekt jest modelem - czyli faktycznym dropem
- if drop:IsA("Model") then
- -- znajdź w dropie element o nazwie Display (jest to BilboardGui)
- local display = drop:FindFirstChild("Display")
- -- zmienna bar wskazuje na pasek w elemencie display
- local bar = display.Background.Bar
- -- zmienna displayText wskazuje na tekst z liczbą życia
- local displayText displayText = display.Background.Amount
- -- ustaw tekst displayText na wartość aktualnych punktów życia dropu
- displayText.Text = tostring(drop.CurrentPoints.Value)
- -- animacja paska z obecnej długości do tej
- -- przedstawianej przez punkty życia dropu
- bar:TweenSize(
- UDim2.fromScale(drop.CurrentPoints.Value / drop.MaxPoints.Value, 1),
- Enum.EasingDirection.Out,
- Enum.EasingStyle.Sine,
- 0.3)
- end
- end
- end
- task.spawn(function()
- while task.wait(1) do
- -- uruchom aktualizację obrażeń
- updateDamage()
- -- uruchom aktualizację pasków życia dropóW
- updateDropDisplay()
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement