local lp = game.Players.LocalPlayer local pgui = lp:WaitForChild("PlayerGui") local ts = game:GetService("TweenService") local uis = game:GetService("UserInputService") local run = game:GetService("RunService") -- esto se queda igual por si lo ejecutas dos veces if pgui:FindFirstChild("SoniqueWindowsFinal") then pgui.SoniqueWindowsFinal:Destroy() end local sg = Instance.new("ScreenGui") sg.Name = "SoniqueWindowsFinal" sg.ResetOnSpawn = false -- esto es lo que necesitabas, genio sg.Parent = pgui local main = Instance.new("Frame") main.Name = "Main" main.Size = UDim2.new(0, 280, 0, 320) main.Position = UDim2.new(0.5, -140, 0.5, -160) main.BackgroundColor3 = Color3.fromRGB(30, 30, 35) main.BorderSizePixel = 0 main.Active = true main.ClipsDescendants = true main.Parent = sg local mainCorner = Instance.new("UICorner", main) mainCorner.CornerRadius = UDim.new(0, 4) local titleBar = Instance.new("Frame", main) titleBar.Name = "TitleBar" titleBar.Size = UDim2.new(1, 0, 0, 32) titleBar.BackgroundColor3 = Color3.fromRGB(45, 45, 50) titleBar.BorderSizePixel = 0 titleBar.ZIndex = 15 local titleTxt = Instance.new("TextLabel", titleBar) titleTxt.Size = UDim2.new(1, -50, 1, 0) titleTxt.Position = UDim2.new(0, 12, 0, 0) titleTxt.BackgroundTransparency = 1 titleTxt.Text = "Sonique Media Station" titleTxt.TextColor3 = Color3.new(1, 1, 1) titleTxt.Font = Enum.Font.SourceSansBold titleTxt.TextSize = 14 titleTxt.TextXAlignment = Enum.TextXAlignment.Left titleTxt.ZIndex = 16 local close = Instance.new("TextButton", titleBar) close.Name = "CloseBtn" close.Size = UDim2.new(0, 46, 1, 0) close.Position = UDim2.new(1, -46, 0, 0) close.BackgroundColor3 = Color3.fromRGB(45, 45, 50) close.BorderSizePixel = 0 close.Text = "✕" close.TextColor3 = Color3.new(1, 1, 1) close.TextSize = 18 close.ZIndex = 17 close.AutoButtonColor = false local content = Instance.new("Frame", main) content.Size = UDim2.new(1, -20, 1, -95) content.Position = UDim2.new(0, 10, 0, 40) content.BackgroundColor3 = Color3.fromRGB(20, 20, 20) content.BorderSizePixel = 0 local scroll = Instance.new("ScrollingFrame", content) scroll.Size = UDim2.new(1, -4, 1, -4) scroll.Position = UDim2.new(0, 2, 0, 2) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 6 scroll.ScrollBarImageColor3 = Color3.fromRGB(80, 80, 80) local layout = Instance.new("UIListLayout", scroll) layout.Padding = UDim.new(0, 1) local vizArea = Instance.new("Frame", main) vizArea.Size = UDim2.new(1, -20, 0, 40) vizArea.Position = UDim2.new(0, 10, 1, -50) vizArea.BackgroundTransparency = 1 local bars = {} for i = 1, 24 do local b = Instance.new("Frame", vizArea) b.Size = UDim2.new(1/24, -2, 0.1, 0) b.Position = UDim2.new((i-1)/24, 0, 1, 0) b.AnchorPoint = Vector2.new(0, 1) b.BackgroundColor3 = Color3.fromRGB(0, 170, 255) b.BorderSizePixel = 0 table.insert(bars, b) end local function createResizer(name, pos) local r = Instance.new("Frame", main) r.Name = name r.Size = UDim2.new(0, 15, 0, 15) r.Position = pos r.BackgroundTransparency = 1 r.ZIndex = 30 return r end local resBR = createResizer("BR", UDim2.new(1, -15, 1, -15)) local resBL = createResizer("BL", UDim2.new(0, 0, 1, -15)) local resTR = createResizer("TR", UDim2.new(1, -15, 0, 0)) local resTL = createResizer("TL", UDim2.new(0, 0, 0, 0)) local dragging, activeResizer = false, nil local dragStart, startPos, startSize, startPosResize local function handleInput(obj, isResizing) obj.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then if isResizing then activeResizer = obj.Name startSize = main.Size startPosResize = main.Position else dragging = true startPos = main.Position end dragStart = i.Position end end) end handleInput(titleBar, false) handleInput(resBR, true); handleInput(resBL, true) handleInput(resTR, true); handleInput(resTL, true) uis.InputChanged:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseMovement then local delta = i.Position - dragStart if dragging then main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) elseif activeResizer then local nX, nY, pX, pY = startSize.X.Offset, startSize.Y.Offset, startPosResize.X.Offset, startPosResize.Y.Offset if activeResizer:find("B") then nY = math.clamp(startSize.Y.Offset + delta.Y, 200, 900) end if activeResizer:find("R") then nX = math.clamp(startSize.X.Offset + delta.X, 250, 1200) end if activeResizer:find("T") then local moveY = math.clamp(startSize.Y.Offset - delta.Y, 200, 900) pY = startPosResize.Y.Offset + (startSize.Y.Offset - moveY) nY = moveY end if activeResizer:find("L") then local moveX = math.clamp(startSize.X.Offset - delta.X, 250, 1200) pX = startPosResize.X.Offset + (startSize.X.Offset - moveX) nX = moveX end main.Size = UDim2.new(0, nX, 0, nY) main.Position = UDim2.new(startPosResize.X.Scale, pX, startPosResize.Y.Scale, pY) end end end) uis.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging, activeResizer = false, nil end end) local soundList = {} local function scan() for _, v in pairs(scroll:GetChildren()) do if v:IsA("TextButton") then v:Destroy() end end soundList = {} for _, s in pairs(game:GetDescendants()) do if s:IsA("Sound") and (s.TimeLength > 10 or s.Name:lower():find("music")) then local b = Instance.new("TextButton", scroll) b.Size = UDim2.new(1, 0, 0, 30) b.BackgroundColor3 = Color3.fromRGB(35, 35, 40) b.BorderSizePixel = 0 b.Text = " " .. s.Name:sub(1, 30) b.TextColor3 = Color3.new(0.8, 0.8, 0.8) b.Font = Enum.Font.SourceSans b.TextSize = 14 b.TextXAlignment = Enum.TextXAlignment.Left b.MouseButton1Click:Connect(function() s.Volume = (s.Volume > 0) and 0 or 0.5 end) table.insert(soundList, {obj = s, btn = b}) end end scroll.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y) end run.RenderStepped:Connect(function() local t = tick() local activeSound = false for _, itm in pairs(soundList) do if itm.obj.IsPlaying and itm.obj.Volume > 0 then activeSound = itm.obj itm.btn.TextColor3 = Color3.fromRGB(0, 180, 255) itm.btn.BackgroundColor3 = Color3.fromRGB(40, 45, 60) else itm.btn.TextColor3 = Color3.fromRGB(130, 130, 130) itm.btn.BackgroundColor3 = Color3.fromRGB(25, 25, 25) end end for i, bar in pairs(bars) do local factor = activeSound and activeSound.PlaybackLoudness/300 or 0.1 local noise = math.noise(t * 5, i * 0.4) local val = math.clamp((noise + 1) * 0.5 * factor, 0.05, 1) bar.Size = bar.Size:Lerp(UDim2.new(1/24, -2, val, 0), 0.2) end end) close.MouseButton1Click:Connect(function() sg:Destroy() end) scan() local function updateScroll() if sg.Parent then scroll.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y) end end task.spawn(function() while task.wait(1) do updateScroll() end end) print("[Sonique]: System Booted - Inmortal Mode")