Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Ustawienie modułu
- local module = {}
- -- Pobranie usługi "TweenService" z "game"
- local tweenService = game:GetService("TweenService")
- -- Pobranie obiektu "ScreenGui" z rodzica skryptu
- local screenGui = script.Parent:WaitForChild("ScreenGui")
- -- Ustawienie prędkości animacji otwierania i zamykania okna
- local OpenSpeed = 0.8
- local CloseSpeed = 0.2
- -- Ustawienie stylów i kierunków animacji otwierania i zamykania okna
- local OpenEasingStyle = Enum.EasingStyle.Back
- local OpenEasingDirection = Enum.EasingDirection.Out
- local ClosingEasingStyle = Enum.EasingStyle.Sine
- local ClosingEasingDirection = Enum.EasingDirection.Out
- -- Funkcja do pobierania okna (ramy) po nazwie
- function module.GetFrame(frameName)
- -- Pobranie wszystkich potomków "ScreenGui"
- local frames = screenGui:GetDescendants()
- -- Zmienna na okno (ramę)
- local frame = nil
- -- Przeszukiwanie potomków w celu znalezienia okna o podanej nazwie
- for i, item in pairs(frames) do
- if item.Name == frameName then
- frame = item
- end
- end
- -- Zwrócenie znalezionego okna
- return frame
- end
- -- Funkcja do otwierania okna
- function module.OpenFrame(frameName)
- -- Pobranie okna (ramy) z funkcji "module.GetFrame"
- local frame = module.GetFrame(frameName)
- -- Jeśli okno zostało znalezione
- if frame then
- -- Pobranie normalnego rozmiaru okna
- local normalSize = frame.Size
- -- Ustawienie okna na bardzo mały rozmiar
- frame.Size = UDim2.fromScale(0, 0)
- -- Poczekanie na zakończenie zamykania
- task.wait(CloseSpeed + 0.1)
- -- Ustawienie widoczności okna na true
- frame.Visible = true
- -- Utworzenie animacji otwierania okna
- local openTween = tweenService:Create(
- frame,
- TweenInfo.new(
- OpenSpeed,
- OpenEasingStyle,
- OpenEasingDirection),
- {
- Size = normalSize
- }
- )
- -- Odtworzenie animacji otwierania
- openTween:Play()
- end
- end
- -- Funkcja module.CloseFrame służy do zamknięcia okna (ramy)
- function module.CloseFrame(frameName)
- -- Pobranie obiektu ramy na podstawie nazwy
- local frame = module.GetFrame(frameName)
- -- Sprawdzenie czy rama istnieje
- if frame then
- -- Zapisanie aktualnego rozmiaru ramy
- local normalSize = frame.Size
- -- Utworzenie animacji zmniejszania rozmiaru ramy do 0
- local closeTween = tweenService:Create(
- frame,
- TweenInfo.new(
- CloseSpeed,
- ClosingEasingStyle,
- ClosingEasingDirection),
- {
- Size = UDim2.fromScale(0, 0)
- }
- )
- -- Rozpoczęcie animacji
- closeTween:Play()
- -- Po zakończeniu animacji ukrycie ramy i przywrócenie jej oryginalnego rozmiaru
- closeTween.Completed:Connect(function()
- frame.Visible = false
- frame.Size = normalSize
- end)
- end
- end
- -- Pętla po wszystkich potomkach obiektu screenGui
- for _, v in pairs(screenGui:GetDescendants()) do
- -- Jeśli obiekt jest typu GuiButton (przyciskiem)
- if v:IsA("GuiButton") then
- -- Jeśli przycisk posiada dziecko o nazwie "Opens"
- if v:FindFirstChild("Opens") then
- -- Jeśli właściwość "Opens" nie jest pusta
- if v:FindFirstChild("Opens").Value ~= nil then
- -- Po kliknięciu w przycisk wywołanie funkcji module.OpenFrame
- -- z parametrem nazwy ramy do otwarcia
- v.MouseButton1Click:Connect(function()
- module.OpenFrame(v:FindFirstChild("Opens").Value.Name)
- end)
- end
- end
- -- Jeśli przycisk posiada dziecko o nazwie "Closes"
- if v:FindFirstChild("Closes") then
- -- Jeśli właściwość "Closes" nie jest pusta
- if v:FindFirstChild("Closes").Value ~= nil then
- -- Po kliknięciu w przycisk wywołanie funkcji module.CloseFrame
- -- z parametrem nazwy ramy do zamknięcia
- v.MouseButton1Click:Connect(function()
- module.CloseFrame(v:FindFirstChild("Closes").Value.Name)
- end)
- end
- end
- end
- end
- return module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement