local AssetService = game:GetService("AssetService") local SoundService = game:GetService("SoundService") local Players = game:GetService("Players") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") if PlayerGui:FindFirstChild("MiniFixHub") then PlayerGui.MiniFixHub:Destroy() end local ScreenGui = Instance.new("ScreenGui", PlayerGui) ScreenGui.Name = "MiniFixHub" local Preview = Instance.new("Sound", SoundService) local CurrentPages = nil local PageNum = 1 -- MAIN FRAME (Mini & Smooth Drag) local Main = Instance.new("Frame", ScreenGui) Main.Size = UDim2.new(0, 220, 0, 260) Main.Position = UDim2.new(0.5, -110, 0.2, 0) Main.BackgroundColor3 = Color3.fromRGB(15, 15, 15) Main.ClipsDescendants = true Main.Active = true Main.Draggable = true -- Standard drag for mobile local Stroke = Instance.new("UIStroke", Main) Stroke.Color = Color3.fromRGB(0, 255, 150) Stroke.Thickness = 2 Instance.new("UICorner", Main) -- TOP BAR local SearchBox = Instance.new("TextBox", Main) SearchBox.Size = UDim2.new(0, 140, 0, 30) SearchBox.Position = UDim2.new(0, 5, 0, 5) SearchBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) SearchBox.PlaceholderText = "Search..." SearchBox.TextColor3 = Color3.new(1, 1, 1) SearchBox.TextSize = 12 Instance.new("UICorner", SearchBox) local StopBtn = Instance.new("TextButton", Main) StopBtn.Size = UDim2.new(0, 60, 0, 30) StopBtn.Position = UDim2.new(1, -65, 0, 5) StopBtn.BackgroundColor3 = Color3.fromRGB(150, 0, 0) StopBtn.Text = "STOP" StopBtn.TextColor3 = Color3.new(1, 1, 1) Instance.new("UICorner", StopBtn) -- SCROLL AREA local Scroll = Instance.new("ScrollingFrame", Main) Scroll.Size = UDim2.new(1, -10, 0, 110) Scroll.Position = UDim2.new(0, 5, 0, 40) Scroll.BackgroundTransparency = 1 Scroll.ScrollBarThickness = 2 Scroll.CanvasSize = UDim2.new(0, 0, 0, 0) local Layout = Instance.new("UIListLayout", Scroll) Layout.Padding = UDim.new(0, 3) -- ID BOX local Info = Instance.new("Frame", Main) Info.Size = UDim2.new(1, -10, 0, 40) Info.Position = UDim2.new(0, 5, 0, 155) Info.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Instance.new("UICorner", Info) local IdDisplay = Instance.new("TextBox", Info) IdDisplay.Size = UDim2.new(1, -10, 0, 30) IdDisplay.Position = UDim2.new(0.5, -100, 0.5, -15) IdDisplay.BackgroundColor3 = Color3.fromRGB(10, 10, 10) IdDisplay.Text = "ID WILL SHOW" IdDisplay.TextColor3 = Color3.fromRGB(255, 255, 0) IdDisplay.ClearTextOnFocus = false IdDisplay.TextEditable = true Instance.new("UICorner", IdDisplay) -- THE FIXED PAGINATION ( < 1 > ) local Footer = Instance.new("Frame", Main) Footer.Size = UDim2.new(1, 0, 0, 35) Footer.Position = UDim2.new(0, 0, 1, -40) Footer.BackgroundTransparency = 1 local Prev = Instance.new("TextButton", Footer) Prev.Name = "PrevBtn" Prev.Text = "<" Prev.Size = UDim2.new(0, 40, 0, 30) Prev.Position = UDim2.new(0, 10, 0, 0) Prev.BackgroundColor3 = Color3.fromRGB(45, 45, 45) Prev.TextColor3 = Color3.new(1, 1, 1) Instance.new("UICorner", Prev) local Next = Instance.new("TextButton", Footer) Next.Name = "NextBtn" Next.Text = ">" Next.Size = UDim2.new(0, 40, 0, 30) Next.Position = UDim2.new(1, -50, 0, 0) Next.BackgroundColor3 = Color3.fromRGB(45, 45, 45) Next.TextColor3 = Color3.new(1, 1, 1) Instance.new("UICorner", Next) local PageLbl = Instance.new("TextLabel", Footer) PageLbl.Size = UDim2.new(1, -100, 1, 0) PageLbl.Position = UDim2.new(0, 50, 0, -5) PageLbl.Text = "Page 1" PageLbl.TextColor3 = Color3.new(1, 1, 1) PageLbl.BackgroundTransparency = 1 --- LOGIC --- local function ClearList() for _, v in pairs(Scroll:GetChildren()) do if v:IsA("Frame") then v:Destroy() end end end local function LoadCurrent() ClearList() local data = CurrentPages:GetCurrentPage() for _, audio in pairs(data) do local id = audio.AssetId or audio.assetId or audio.Id or audio.id local Row = Instance.new("Frame", Scroll) Row.Size = UDim2.new(1, -5, 0, 30) Row.BackgroundColor3 = Color3.fromRGB(35, 35, 35) Instance.new("UICorner", Row) local B = Instance.new("TextButton", Row) B.Size = UDim2.new(1, 0, 1, 0); B.BackgroundTransparency = 1; B.TextColor3 = Color3.new(1, 1, 1) B.Text = " " .. audio.Title; B.TextXAlignment = "Left"; B.TextTruncate = "AtEnd"; B.TextSize = 10 B.MouseButton1Click:Connect(function() Preview:Stop() Preview.SoundId = "rbxassetid://" .. tostring(id) Preview:Play() IdDisplay.Text = tostring(id) end) end Scroll.CanvasSize = UDim2.new(0, 0, 0, Layout.AbsoluteContentSize.Y) PageLbl.Text = "Page " .. PageNum end local function NewSearch(q) local p = Instance.new("AudioSearchParams"); p.SearchKeyword = q local s, r = pcall(function() return AssetService:SearchAudio(p) end) if s and r then CurrentPages = r PageNum = 1 LoadCurrent() end end SearchBox.FocusLost:Connect(function(e) if e then NewSearch(SearchBox.Text) end end) StopBtn.MouseButton1Click:Connect(function() Preview:Stop() end) -- FIXED BUTTON LOGIC Next.MouseButton1Click:Connect(function() if CurrentPages and not CurrentPages.IsFinished then CurrentPages:AdvanceToNextPageAsync() PageNum = PageNum + 1 LoadCurrent() end end) Prev.MouseButton1Click:Connect(function() if PageNum > 1 then -- Roblox API workaround: Restart and skip (simplified here as refresh) NewSearch(SearchBox.Text) end end)