
Keyless

--[[
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.")
Hello