--[[ Script: FPS + RAM + Control de gráficos para Roblox (Solara) ACTUALIZACIÓN: FPS y RAM en TIEMPO REAL (actualizan cada frame). Depende totalmente del rendimiento del dispositivo. ]] -- Servicios local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserSettings = game:GetService("UserSettings") local Lighting = game:GetService("Lighting") local player = Players.LocalPlayer -- ============================================ -- CREAR GUI -- ============================================ local gui = Instance.new("ScreenGui") gui.Name = "FPS_RAM_GUI" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 220, 0, 160) frame.Position = UDim2.new(0, 10, 0, 10) frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.BackgroundTransparency = 0.6 frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = gui -- Título local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 25) title.Position = UDim2.new(0, 0, 0, 0) title.BackgroundTransparency = 1 title.Text = "📊 Monitor (Tiempo Real)" title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 16 title.Font = Enum.Font.SourceSansBold title.Parent = frame -- Etiqueta FPS (se actualizará cada frame) local fpsLabel = Instance.new("TextLabel") fpsLabel.Size = UDim2.new(1, 0, 0, 20) fpsLabel.Position = UDim2.new(0, 0, 0, 30) fpsLabel.BackgroundTransparency = 1 fpsLabel.Text = "FPS: 0" fpsLabel.TextColor3 = Color3.new(1, 1, 0) fpsLabel.TextSize = 14 fpsLabel.Font = Enum.Font.SourceSans fpsLabel.TextXAlignment = Enum.TextXAlignment.Left fpsLabel.Parent = frame -- Etiqueta RAM (se actualizará cada frame) local ramLabel = Instance.new("TextLabel") ramLabel.Size = UDim2.new(1, 0, 0, 20) ramLabel.Position = UDim2.new(0, 0, 0, 52) ramLabel.BackgroundTransparency = 1 ramLabel.Text = "RAM: 0 MB" ramLabel.TextColor3 = Color3.new(0, 1, 1) ramLabel.TextSize = 14 ramLabel.Font = Enum.Font.SourceSans ramLabel.TextXAlignment = Enum.TextXAlignment.Left ramLabel.Parent = frame -- Botón "Bajar" local lowerBtn = Instance.new("TextButton") lowerBtn.Size = UDim2.new(0, 70, 0, 25) lowerBtn.Position = UDim2.new(0, 10, 0, 80) lowerBtn.Text = "⬇ Bajar" lowerBtn.BackgroundColor3 = Color3.new(0.2, 0.2, 0.8) lowerBtn.TextColor3 = Color3.new(1, 1, 1) lowerBtn.TextSize = 12 lowerBtn.Font = Enum.Font.SourceSansBold lowerBtn.Parent = frame -- Botón "Subir" local raiseBtn = Instance.new("TextButton") raiseBtn.Size = UDim2.new(0, 70, 0, 25) raiseBtn.Position = UDim2.new(0, 85, 0, 80) raiseBtn.Text = "⬆ Subir" raiseBtn.BackgroundColor3 = Color3.new(0.8, 0.2, 0.2) raiseBtn.TextColor3 = Color3.new(1, 1, 1) raiseBtn.TextSize = 12 raiseBtn.Font = Enum.Font.SourceSansBold raiseBtn.Parent = frame -- Botón "Efectos" local effectsBtn = Instance.new("TextButton") effectsBtn.Size = UDim2.new(0, 70, 0, 25) effectsBtn.Position = UDim2.new(0, 160, 0, 80) effectsBtn.Text = "🎨 Efectos" effectsBtn.BackgroundColor3 = Color3.new(0.2, 0.6, 0.2) effectsBtn.TextColor3 = Color3.new(1, 1, 1) effectsBtn.TextSize = 12 effectsBtn.Font = Enum.Font.SourceSansBold effectsBtn.Parent = frame -- Botón "Restaurar" local restoreBtn = Instance.new("TextButton") restoreBtn.Size = UDim2.new(0, 70, 0, 25) restoreBtn.Position = UDim2.new(0, 85, 0, 115) restoreBtn.Text = "🔄 Restaurar" restoreBtn.BackgroundColor3 = Color3.new(0.6, 0.6, 0.2) restoreBtn.TextColor3 = Color3.new(1, 1, 1) restoreBtn.TextSize = 12 restoreBtn.Font = Enum.Font.SourceSansBold restoreBtn.Parent = frame -- Botón "Cerrar" local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 20, 0, 20) closeBtn.Position = UDim2.new(1, -25, 0, 5) closeBtn.Text = "✕" closeBtn.BackgroundColor3 = Color3.new(1, 0, 0) closeBtn.TextColor3 = Color3.new(1, 1, 1) closeBtn.TextSize = 12 closeBtn.Font = Enum.Font.SourceSansBold closeBtn.Parent = frame closeBtn.MouseButton1Click:Connect(function() gui:Destroy() end) -- ============================================ -- VARIABLES GLOBALES -- ============================================ local effectsEnabled = true local effectsBackup = {} -- Guarda el estado original de los efectos -- ============================================ -- FUNCIONES PARA OBTENER FPS Y RAM -- ============================================ local function getFPS() if getfps then return getfps() -- Función nativa del exploit (si existe) end -- Si no existe, usamos el cálculo manual en RenderStepped return nil end local function getRAM() if getram then return getram() -- en MB (función nativa del exploit) end -- Alternativa con Lua (memoria aproximada del script) return collectgarbage("count") / 1024 -- KB a MB end -- ============================================ -- LOOP PRINCIPAL: TIEMPO REAL (CADA FRAME) -- ============================================ -- NOTA: Si quieres un número más estable (suavizado), descomenta la variable -- 'smoothFPS' y la línea de EMA, y comenta la línea 'fps = 1 / deltaTime'. -- local smoothFPS = 60 RunService.RenderStepped:Connect(function(deltaTime) -- 1. CÁLCULO DE FPS EN TIEMPO REAL (depende 100% del dispositivo) local fps = 1 / deltaTime -- Si quieres suavizado (menos parpadeo), usa esto en vez de la línea de arriba: -- smoothFPS = (smoothFPS * 0.85) + ((1 / deltaTime) * 0.15) -- local fps = smoothFPS -- Mostrar FPS redondeado (sin decimales) fpsLabel.Text = "FPS: " .. math.floor(fps + 0.5) -- 2. RAM EN TIEMPO REAL (se lee cada frame) local ram = getRAM() if ram then ramLabel.Text = "RAM: " .. string.format("%.2f", ram) .. " MB" else ramLabel.Text = "RAM: -- MB" end end) -- ============================================ -- CONTROL DE CALIDAD GRÁFICA -- ============================================ local function setGraphicsLevel(level) level = math.clamp(level, 1, 10) local gameSettings = UserSettings:GetService("UserGameSettings") if gameSettings then gameSettings.GraphicsQualityLevel = level gameSettings.GraphicsMode = Enum.GraphicsMode.Quality end end lowerBtn.MouseButton1Click:Connect(function() local gameSettings = UserSettings:GetService("UserGameSettings") local current = gameSettings.GraphicsQualityLevel or 5 setGraphicsLevel(current - 1) end) raiseBtn.MouseButton1Click:Connect(function() local gameSettings = UserSettings:GetService("UserGameSettings") local current = gameSettings.GraphicsQualityLevel or 5 setGraphicsLevel(current + 1) end) -- ============================================ -- CONTROL DE EFECTOS VISUALES -- ============================================ local function toggleEffects(enable) if enable then for _, data in ipairs(effectsBackup) do if data.obj and data.obj.Parent then data.obj[data.prop] = data.value end end effectsBackup = {} effectsEnabled = true effectsBtn.Text = "🎨 Efectos" effectsBtn.BackgroundColor3 = Color3.new(0.2, 0.6, 0.2) else effectsBackup = {} local props = {"GlobalShadows", "Brightness", "OutdoorAmbient", "Bloom", "Blur", "ColorCorrection"} for _, prop in ipairs(props) do if Lighting[prop] ~= nil then table.insert(effectsBackup, {obj = Lighting, prop = prop, value = Lighting[prop]}) end end Lighting.GlobalShadows = false Lighting.Brightness = 0 Lighting.OutdoorAmbient = Color3.new(0,0,0) if Lighting.Bloom then Lighting.Bloom.Enabled = false end if Lighting.Blur then Lighting.Blur.Enabled = false end if Lighting.ColorCorrection then Lighting.ColorCorrection.Enabled = false end for _, obj in ipairs(game:GetDescendants()) do if obj:IsA("ParticleEmitter") or obj:IsA("Trail") or obj:IsA("Beam") or obj:IsA("Smoke") or obj:IsA("Fire") or obj:IsA("Sparkles") or obj:IsA("PointLight") or obj:IsA("SpotLight") or obj:IsA("SurfaceLight") then table.insert(effectsBackup, {obj = obj, prop = "Enabled", value = obj.Enabled}) obj.Enabled = false end end effectsEnabled = false effectsBtn.Text = "🚫 Efectos OFF" effectsBtn.BackgroundColor3 = Color3.new(0.6, 0.2, 0.2) end end effectsBtn.MouseButton1Click:Connect(function() if effectsEnabled then toggleEffects(false) else toggleEffects(true) end end) restoreBtn.MouseButton1Click:Connect(function() toggleEffects(true) end) -- ============================================ -- INICIO -- ============================================ print("✅ Script FPS/RAM en TIEMPO REAL cargado correctamente.") print("📌 Los FPS se actualizan en cada frame según el rendimiento de tu dispositivo.")