Advertisement
drakon-firestone

Untitled

Oct 20th, 2023 (edited)
635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.73 KB | None | 0 0
  1. local function destroyDrop(drop)
  2.     task.spawn(function()
  3.         -- zapamiętaj obszar z którego pochodzi drop
  4.         local oldParent = drop.Parent
  5.         -- przenieś drop do folderu despawnedDrops
  6.         drop.Parent = despawnedDrops
  7.         -- poczekaj 4 sek
  8.         wait(4)
  9.         -- ustaw życie dropu na wartość maksymalną
  10.         drop.CurrentPoints.Value = drop.MaxPoints.Value
  11.         -- wstaw drop z powrotem do obszaru z którego pochodzi
  12.         drop.Parent = oldParent
  13.     end)
  14. end
  15. local function updateDamage()
  16.     -- odczytaj aktualną listę petów gracza
  17.     local playerPets = GetPlayerPets()
  18.     -- pętla przechodząca po wszystkich petach gracza
  19.     for _, pet in ipairs(playerPets) do
  20.         -- ustaw ustaw target na cel ataku peta
  21.         local target = pet.Attack.Value
  22.         -- jeśli cel jest ustawiony (nie jest nil)
  23.         if target then
  24.             -- ustaw zmienną drop jako rodzica atakowego elementu
  25.             -- (atakujemy PrimaryPart/model 3D naszego dropa)
  26.             local drop = target.Parent
  27.             -- ustaw zmienną currentPoints an aktualne punkty (życia) dropu
  28.             local currentPoints = drop.CurrentPoints
  29.             -- odejmij od punktów życia dropa wartość ataku peta
  30.             -- jeśli wartość spadła poniżej zera - ustaw ją na z0
  31.             currentPoints.Value = math.max(currentPoints.Value - pet.Damage.Value, 0)
  32.            
  33.             -- jeśli aktualne życie dropu jest równe 0:
  34.            
  35.             if currentPoints.Value == 0 then
  36.                 -- ustaw cel ataku petów jako pusty
  37.                 attackTarget.Value = nil
  38.                 SetAttackTarget(nil)
  39.                 -- usuń ten drop z planszy (za pomocą funkcji)
  40.                 destroyDrop(drop)
  41.             end
  42.         end
  43.     end
  44. end
  45.  
  46.  
  47. -- funkcja aktualizująca paski życia dropów na scenie
  48. local function updateDropDisplay()
  49.     -- pętla przechodząca po elementach w folderze drops
  50.     for _, drop in pairs(drops:GetDescendants()) do
  51.         -- jeśli obiekt jest modelem - czyli faktycznym dropem
  52.         if drop:IsA("Model") then
  53.             -- znajdź w dropie element o nazwie Display (jest to BilboardGui)
  54.             local display = drop:FindFirstChild("Display")
  55.             -- zmienna bar wskazuje na pasek w elemencie display
  56.             local bar = display.Background.Bar
  57.             -- zmienna displayText wskazuje na tekst z liczbą życia
  58.             local displayText displayText = display.Background.Amount
  59.             -- ustaw tekst displayText na wartość aktualnych punktów życia dropu
  60.             displayText.Text = tostring(drop.CurrentPoints.Value)
  61.             -- animacja paska z obecnej długości do tej
  62.             -- przedstawianej przez punkty życia dropu
  63.             bar:TweenSize(
  64.                 UDim2.fromScale(drop.CurrentPoints.Value / drop.MaxPoints.Value, 1),
  65.                 Enum.EasingDirection.Out,
  66.                 Enum.EasingStyle.Sine,
  67.                 0.3)
  68.         end
  69.     end
  70. end
  71.  
  72. task.spawn(function()
  73.     while task.wait(1) do
  74.         -- uruchom aktualizację obrażeń
  75.         updateDamage()
  76.         -- uruchom aktualizację pasków życia dropóW
  77.         updateDropDisplay()
  78.     end
  79. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement