local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") if PlayerGui:FindFirstChild("SkyChangerGUI") then PlayerGui:FindFirstChild("SkyChangerGUI"):Destroy() end local OriginalSkyData = nil local ExistingSky = Lighting:FindFirstChildOfClass("Sky") if ExistingSky then OriginalSkyData = { SkyboxBk = ExistingSky.SkyboxBk, SkyboxDn = ExistingSky.SkyboxDn, SkyboxFt = ExistingSky.SkyboxFt, SkyboxLf = ExistingSky.SkyboxLf, SkyboxRt = ExistingSky.SkyboxRt, SkyboxUp = ExistingSky.SkyboxUp, SunTextureId = ExistingSky.SunTextureId, MoonTextureId = ExistingSky.MoonTextureId, StarCount = ExistingSky.StarCount, CelestialBodiesShown = ExistingSky.CelestialBodiesShown, } end local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "SkyChangerGUI" ScreenGui.Parent = PlayerGui ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true local Main = Instance.new("Frame") Main.Parent = ScreenGui Main.Size = UDim2.new(0, 340, 0, 182) Main.Position = UDim2.new(0.5, -170, 0.5, -91) Main.BackgroundColor3 = Color3.fromRGB(18, 18, 18) Main.BorderSizePixel = 0 local MainCorner = Instance.new("UICorner", Main) MainCorner.CornerRadius = UDim.new(0, 14) local MainStroke = Instance.new("UIStroke", Main) MainStroke.Color = Color3.fromRGB(60, 60, 60) MainStroke.Thickness = 1.2 local Shadow = Instance.new("ImageLabel") Shadow.Parent = Main Shadow.BackgroundTransparency = 1 Shadow.Size = UDim2.new(1, 30, 1, 30) Shadow.Position = UDim2.new(0, -15, 0, -15) Shadow.ZIndex = 0 Shadow.Image = "rbxassetid://1316045217" Shadow.ImageTransparency = 0.55 Shadow.ScaleType = Enum.ScaleType.Slice Shadow.SliceCenter = Rect.new(10, 10, 118, 118) local TopBar = Instance.new("Frame") TopBar.Parent = Main TopBar.Size = UDim2.new(1, 0, 0, 38) TopBar.BackgroundColor3 = Color3.fromRGB(24, 24, 24) TopBar.BorderSizePixel = 0 local TopCorner = Instance.new("UICorner", TopBar) TopCorner.CornerRadius = UDim.new(0, 14) local Fix = Instance.new("Frame") Fix.Parent = TopBar Fix.Size = UDim2.new(1, 0, 0, 12) Fix.Position = UDim2.new(0, 0, 1, -12) Fix.BackgroundColor3 = Color3.fromRGB(24, 24, 24) Fix.BorderSizePixel = 0 local Title = Instance.new("TextLabel") Title.Parent = TopBar Title.BackgroundTransparency = 1 Title.Position = UDim2.new(0, 12, 0, 0) Title.Size = UDim2.new(1, -90, 1, 0) Title.Font = Enum.Font.GothamBold Title.Text = "Sky Changer" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextSize = 15 Title.TextXAlignment = Enum.TextXAlignment.Left local Close = Instance.new("ImageButton") Close.Parent = TopBar Close.Size = UDim2.new(0, 24, 0, 24) Close.Position = UDim2.new(1, -32, 0.5, -12) Close.BackgroundTransparency = 1 Close.Image = "rbxassetid://17186557205" local Minimize = Instance.new("ImageButton") Minimize.Parent = TopBar Minimize.Size = UDim2.new(0, 22, 0, 22) Minimize.Position = UDim2.new(1, -62, 0.5, -11) Minimize.BackgroundTransparency = 1 Minimize.Image = "rbxassetid://11644512450" local Input = Instance.new("TextBox") Input.Parent = Main Input.Size = UDim2.new(1, -24, 0, 40) Input.Position = UDim2.new(0, 12, 0, 55) Input.BackgroundColor3 = Color3.fromRGB(30, 30, 30) Input.BorderSizePixel = 0 Input.PlaceholderText = "Digite ID, link ou rbxassetid" Input.Text = "" Input.ClearTextOnFocus = false Input.Font = Enum.Font.Gotham Input.TextSize = 14 Input.TextColor3 = Color3.fromRGB(255, 255, 255) Input.PlaceholderColor3 = Color3.fromRGB(140, 140, 140) local InputCorner = Instance.new("UICorner", Input) InputCorner.CornerRadius = UDim.new(0, 10) local InputStroke = Instance.new("UIStroke", Input) InputStroke.Color = Color3.fromRGB(55, 55, 55) InputStroke.Thickness = 1 local Inject = Instance.new("TextButton") Inject.Parent = Main Inject.Size = UDim2.new(1, -24, 0, 32) Inject.Position = UDim2.new(0, 12, 0, 104) Inject.BackgroundColor3 = Color3.fromRGB(45, 110, 255) Inject.BorderSizePixel = 0 Inject.Text = "INJETAR CÉU" Inject.Font = Enum.Font.GothamBold Inject.TextSize = 14 Inject.TextColor3 = Color3.fromRGB(255, 255, 255) local InjectCorner = Instance.new("UICorner", Inject) InjectCorner.CornerRadius = UDim.new(0, 10) local Reset = Instance.new("TextButton") Reset.Parent = Main Reset.Size = UDim2.new(1, -24, 0, 28) Reset.Position = UDim2.new(0, 12, 0, 141) Reset.BackgroundColor3 = Color3.fromRGB(40, 40, 40) Reset.BorderSizePixel = 0 Reset.Text = "RESTAURAR CÉU" Reset.Font = Enum.Font.GothamBold Reset.TextSize = 13 Reset.TextColor3 = Color3.fromRGB(255, 255, 255) local ResetCorner = Instance.new("UICorner", Reset) ResetCorner.CornerRadius = UDim.new(0, 10) local FloatButton = Instance.new("ImageButton") FloatButton.Parent = ScreenGui FloatButton.Size = UDim2.new(0, 58, 0, 58) FloatButton.Position = UDim2.new(0, 20, 0.5, -29) FloatButton.BackgroundColor3 = Color3.fromRGB(20, 20, 20) FloatButton.BorderSizePixel = 0 FloatButton.Image = "rbxassetid://131063369441851" FloatButton.Visible = false local FloatCorner = Instance.new("UICorner", FloatButton) FloatCorner.CornerRadius = UDim.new(1, 0) local FloatStroke = Instance.new("UIStroke", FloatButton) FloatStroke.Color = Color3.fromRGB(70, 70, 70) FloatStroke.Thickness = 1.2 local FloatShadow = Instance.new("ImageLabel") FloatShadow.Parent = FloatButton FloatShadow.BackgroundTransparency = 1 FloatShadow.Size = UDim2.new(1, 24, 1, 24) FloatShadow.Position = UDim2.new(0, -12, 0, -12) FloatShadow.ZIndex = 0 FloatShadow.Image = "rbxassetid://1316045217" FloatShadow.ImageTransparency = 0.6 FloatShadow.ScaleType = Enum.ScaleType.Slice FloatShadow.SliceCenter = Rect.new(10, 10, 118, 118) local function extractAssetId(text) text = tostring(text or ""):gsub("%s+", "") if text == "" then return nil end local direct = text:match("^rbxassetid://(%d+)$") if direct then return direct end local idParam = text:match("[?&]id=(%d+)") if idParam then return idParam end local library = text:match("/library/(%d+)") if library then return library end local decal = text:match("/catalog/(%d+)") if decal then return decal end local raw = text:match("(%d+)") if raw then return raw end return nil end local function getOrCreateSky() local sky = Lighting:FindFirstChild("CustomSkyChanger") if not sky then sky = Instance.new("Sky") sky.Name = "CustomSkyChanger" sky.Parent = Lighting end return sky end local function applySky(rawInput) local id = extractAssetId(rawInput) if not id then Input.Text = "ID inválido" return end local asset = "rbxassetid://" .. id local sky = getOrCreateSky() local ok = pcall(function() sky.SkyboxBk = asset sky.SkyboxDn = asset sky.SkyboxFt = asset sky.SkyboxLf = asset sky.SkyboxRt = asset sky.SkyboxUp = asset sky.SunTextureId = "" sky.MoonTextureId = "" sky.StarCount = 0 sky.CelestialBodiesShown = false end) if ok then Input.Text = id else Input.Text = "Falhou nesse asset" end end local function restoreSky() local custom = Lighting:FindFirstChild("CustomSkyChanger") if custom then custom:Destroy() end local currentSky = Lighting:FindFirstChildOfClass("Sky") if not currentSky then currentSky = Instance.new("Sky") currentSky.Parent = Lighting end if OriginalSkyData then pcall(function() currentSky.SkyboxBk = OriginalSkyData.SkyboxBk currentSky.SkyboxDn = OriginalSkyData.SkyboxDn currentSky.SkyboxFt = OriginalSkyData.SkyboxFt currentSky.SkyboxLf = OriginalSkyData.SkyboxLf currentSky.SkyboxRt = OriginalSkyData.SkyboxRt currentSky.SkyboxUp = OriginalSkyData.SkyboxUp currentSky.SunTextureId = OriginalSkyData.SunTextureId currentSky.MoonTextureId = OriginalSkyData.MoonTextureId currentSky.StarCount = OriginalSkyData.StarCount currentSky.CelestialBodiesShown = OriginalSkyData.CelestialBodiesShown end) end end local function tween(obj, info, props) return TweenService:Create(obj, info, props) end Inject.MouseButton1Click:Connect(function() applySky(Input.Text) end) Input.FocusLost:Connect(function(enterPressed) if enterPressed then applySky(Input.Text) end end) Reset.MouseButton1Click:Connect(function() restoreSky() end) Minimize.MouseButton1Click:Connect(function() local hideTween = tween(Main, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = UDim2.new(0, 340, 0, 0), BackgroundTransparency = 0.15 }) hideTween:Play() hideTween.Completed:Wait() Main.Visible = false Main.Size = UDim2.new(0, 340, 0, 182) Main.BackgroundTransparency = 0 FloatButton.Visible = true FloatButton.Size = UDim2.new(0, 0, 0, 0) tween(FloatButton, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = UDim2.new(0, 58, 0, 58) }):Play() end) FloatButton.MouseButton1Click:Connect(function() Main.Visible = true Main.Size = UDim2.new(0, 340, 0, 0) tween(Main, TweenInfo.new(0.22, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = UDim2.new(0, 340, 0, 182) }):Play() FloatButton.Visible = false end) Close.MouseButton1Click:Connect(function() ScreenGui:Destroy() end) local function makeDraggable(dragObject, moveObject) local dragging = false local dragStart local startPos local function update(input) local delta = input.Position - dragStart moveObject.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end dragObject.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = moveObject.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) dragObject.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then if dragging then update(input) end end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input) end end) end makeDraggable(TopBar, Main) makeDraggable(FloatButton, FloatButton)