local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local MIN_FPS = 1 local MAX_FPS = 340 local currentCap = 60 local function applyCap(fps) fps = math.clamp(math.round(fps), MIN_FPS, MAX_FPS) currentCap = fps pcall(function() settings().Rendering.FrameRateManager = Enum.FrameRateManagerMode.Disabled end) if syn and syn.set_fps_cap then syn.set_fps_cap(fps) elseif setfpscap then setfpscap(fps) elseif fps_cap then fps_cap(fps) end end local old = PlayerGui:FindFirstChild("SimpleFPSGui") if old then old:Destroy() end local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "SimpleFPSGui" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true ScreenGui.Parent = PlayerGui local Panel = Instance.new("Frame") Panel.Size = UDim2.new(0, 200, 0, 106) Panel.Position = UDim2.new(0, 24, 0.5, -53) Panel.BackgroundColor3 = Color3.fromRGB(14, 14, 22) Panel.BorderSizePixel = 0 Panel.Parent = ScreenGui Instance.new("UICorner", Panel).CornerRadius = UDim.new(0, 10) local Stroke = Instance.new("UIStroke") Stroke.Color = Color3.fromRGB(70, 110, 255) Stroke.Thickness = 1.5 Stroke.Transparency = 0.5 Stroke.Parent = Panel local dragging, dragStart, startPos = false, Vector2.new(), UDim2.new() Panel.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = Vector2.new(i.Position.X, i.Position.Y) startPos = Panel.Position end end) UserInputService.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = Vector2.new(i.Position.X, i.Position.Y) - dragStart Panel.Position = UDim2.new(0, math.clamp(startPos.X.Offset + d.X, 0, ScreenGui.AbsoluteSize.X - Panel.AbsoluteSize.X), 0, math.clamp(startPos.Y.Offset + d.Y, 0, ScreenGui.AbsoluteSize.Y - Panel.AbsoluteSize.Y)) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) local LiveLabel = Instance.new("TextLabel") LiveLabel.Size = UDim2.new(1, -16, 0, 22) LiveLabel.Position = UDim2.new(0, 8, 0, 8) LiveLabel.BackgroundTransparency = 1 LiveLabel.Font = Enum.Font.Code LiveLabel.TextSize = 13 LiveLabel.TextColor3 = Color3.fromRGB(100, 220, 100) LiveLabel.TextXAlignment = Enum.TextXAlignment.Left LiveLabel.Text = "LIVE: — fps | CAP: 60 fps" LiveLabel.Parent = Panel local Box = Instance.new("TextBox") Box.Size = UDim2.new(1, -16, 0, 32) Box.Position = UDim2.new(0, 8, 0, 36) Box.BackgroundColor3 = Color3.fromRGB(24, 26, 42) Box.BorderSizePixel = 0 Box.Font = Enum.Font.GothamBold Box.TextSize = 16 Box.TextColor3 = Color3.fromRGB(200, 215, 255) Box.PlaceholderText = "Enter FPS (1-340)" Box.PlaceholderColor3 = Color3.fromRGB(80, 90, 130) Box.Text = "60" Box.ClearTextOnFocus = true Box.Parent = Panel Instance.new("UICorner", Box).CornerRadius = UDim.new(0, 6) local BoxStroke = Instance.new("UIStroke") BoxStroke.Color = Color3.fromRGB(70, 110, 255) BoxStroke.Thickness = 1 BoxStroke.Transparency = 0.6 BoxStroke.Parent = Box local ApplyBtn = Instance.new("TextButton") ApplyBtn.Size = UDim2.new(1, -16, 0, 24) ApplyBtn.Position = UDim2.new(0, 8, 0, 76) ApplyBtn.BackgroundColor3 = Color3.fromRGB(50, 90, 220) ApplyBtn.BorderSizePixel = 0 ApplyBtn.Font = Enum.Font.GothamBold ApplyBtn.TextSize = 12 ApplyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ApplyBtn.Text = "SET FPS" ApplyBtn.AutoButtonColor = false ApplyBtn.Parent = Panel Instance.new("UICorner", ApplyBtn).CornerRadius = UDim.new(0, 6) local function tryApply() local num = tonumber(Box.Text) if num then local clamped = math.clamp(math.round(num), MIN_FPS, MAX_FPS) applyCap(clamped) Box.Text = tostring(clamped) TweenService:Create(ApplyBtn, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(40, 180, 80)}):Play() task.delay(0.4, function() TweenService:Create(ApplyBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(50, 90, 220)}):Play() end) else TweenService:Create(ApplyBtn, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(180, 40, 40)}):Play() task.delay(0.4, function() TweenService:Create(ApplyBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(50, 90, 220)}):Play() end) end end ApplyBtn.MouseButton1Click:Connect(tryApply) Box.FocusLost:Connect(function(enterPressed) if enterPressed then tryApply() end end) local history, lastTime = {}, tick() RunService.RenderStepped:Connect(function() local now = tick() local dt = now - lastTime lastTime = now if dt > 0 then history[#history + 1] = 1 / dt if #history > 30 then table.remove(history, 1) end local sum = 0 for _, v in ipairs(history) do sum = sum + v end local live = math.round(sum / #history) LiveLabel.Text = string.format("LIVE: %d fps | CAP: %d fps", live, currentCap) local ratio = live / currentCap if ratio >= 0.9 then LiveLabel.TextColor3 = Color3.fromRGB(100, 220, 100) elseif ratio >= 0.6 then LiveLabel.TextColor3 = Color3.fromRGB(220, 200, 60) else LiveLabel.TextColor3 = Color3.fromRGB(220, 70, 70) end end end) LocalPlayer.CharacterAdded:Connect(function() task.wait(1) applyCap(currentCap) end) applyCap(currentCap) print("[FPS Changer] Ready")