visual HP universal
Key RequiredUniversal

visual HP universal

Universal ScriptRoblox_exploitingRoblox_exploiting 1.7K views 321 executesUpdated May 15, 2026
Unrated
00
Lua Script•298 lines (8420 chars)
-- =========================================================
-- DEV VIEWER PRO V5.1 - Fixed for mobile
-- I love you
-- =========================================================

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- === CONFIGURACIÓN Y ESTADOS ===
local toggleKey = Enum.KeyCode.X
local enabled = false
local healthLabels = {}

-- Colores disponibles para elegir
local colorPalette = {
	Red = Color3.fromRGB(231, 76, 60),
	Yellow = Color3.fromRGB(241, 196, 15),
	Blue = Color3.fromRGB(52, 152, 219),
	Black = Color3.fromRGB(20, 20, 20),
	White = Color3.fromRGB(240, 240, 240),
	Emerald = Color3.fromRGB(46, 204, 113)
}

-- Ajustes actuales del usuario
local userSettings = {
	[100] = colorPalette.White,
	[50] = colorPalette.Yellow,
	[30] = colorPalette.Red
}

-- === INTERFAZ DE USUARIO (GUI) ===
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DevViewerPro_Mobile"
screenGui.ResetOnSpawn = false

-- FIX INTERFAZ: Evita bloquear los menús nativos del sistema
screenGui.DisplayOrder = -1
screenGui.ScreenInsets = Enum.ScreenInsets.DeviceSafeInsets

screenGui.Parent = playerGui

-- BOTÓN DE ACTIVACIÓN (Compacto)
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "MainToggle"
toggleButton.Size = UDim2.new(0, 45, 0, 45) 
-- FIX POSICIÓN: Desplazado a Y = 175 para quedar exactamente abajo del botón del sol (Y = 120)
toggleButton.Position = UDim2.new(1, -60, 0, 175) 
toggleButton.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
toggleButton.Text = "X"
toggleButton.TextColor3 = Color3.new(1,1,1)
toggleButton.TextSize = 20
toggleButton.Font = Enum.Font.GothamBold
toggleButton.Active = true
toggleButton.Parent = screenGui

local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 10)
btnCorner.Parent = toggleButton

-- PANEL DE COLORES (Reducido)
local menuFrame = Instance.new("Frame")
menuFrame.Size = UDim2.new(0, 270, 0, 310)
menuFrame.Position = UDim2.new(0.5, -135, 0.5, -155)
menuFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
menuFrame.BorderSizePixel = 0
menuFrame.Visible = false
menuFrame.Parent = screenGui

Instance.new("UICorner", menuFrame).CornerRadius = UDim.new(0, 15)

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 45)
title.Text = "choose colors "
title.TextColor3 = Color3.new(1,1,1)
title.TextSize = 16
title.Font = Enum.Font.GothamBold
title.BackgroundTransparency = 1
title.Parent = menuFrame

-- Contenedor de opciones ajustado
local optionsList = Instance.new("Frame")
optionsList.Size = UDim2.new(1, -30, 1, -100)
optionsList.Position = UDim2.new(0, 15, 0, 45)
optionsList.BackgroundTransparency = 1
optionsList.Parent = menuFrame

local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 10)
layout.Parent = optionsList

-- Función para crear filas de colores en miniatura
local function addColorSelection(labelText, threshold)
	local row = Instance.new("Frame")
	row.Size = UDim2.new(1, 0, 0, 55)
	row.BackgroundTransparency = 1
	row.Parent = optionsList
	
	local t = Instance.new("TextLabel")
	t.Size = UDim2.new(1, 0, 0, 15)
	t.Text = labelText
	t.TextColor3 = Color3.fromRGB(140, 140, 140)
	t.Font = Enum.Font.GothamMedium
	t.TextSize = 12
	t.TextXAlignment = Enum.TextXAlignment.Left
	t.BackgroundTransparency = 1
	t.Parent = row
	
	local buttons = Instance.new("Frame")
	buttons.Size = UDim2.new(1, 0, 0, 32)
	buttons.Position = UDim2.new(0, 0, 0, 20)
	buttons.BackgroundTransparency = 1
	buttons.Parent = row
	
	local hLayout = Instance.new("UIListLayout")
	hLayout.FillDirection = Enum.FillDirection.Horizontal
	hLayout.Padding = UDim.new(0, 6)
	hLayout.Parent = buttons
	
	for name, color in pairs(colorPalette) do
		local b = Instance.new("TextButton")
		b.Size = UDim2.new(0, 28, 0, 28)
		b.BackgroundColor3 = color
		b.Text = ""
		b.Parent = buttons
		Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
		
		b.MouseButton1Click:Connect(function()
			userSettings[threshold] = color
			for _, other in pairs(buttons:GetChildren()) do
				if other:IsA("TextButton") then other.BorderSizePixel = 0 end
			end
			b.BorderSizePixel = 2
			b.BorderColor3 = Color3.new(1,1,1)
		end)
	end
end

addColorSelection("100%", 100)
addColorSelection("50%", 50)
addColorSelection("30%", 30)

-- BOTÓN LISTO COMPACTO
local readyBtn = Instance.new("TextButton")
readyBtn.Size = UDim2.new(1, -30, 0, 35)
readyBtn.Position = UDim2.new(0, 15, 1, -50)
readyBtn.BackgroundColor3 = colorPalette.Emerald
readyBtn.Text = "ready"
readyBtn.TextColor3 = Color3.new(1,1,1)
readyBtn.Font = Enum.Font.GothamBold
readyBtn.TextSize = 14
readyBtn.Parent = menuFrame
Instance.new("UICorner", readyBtn).CornerRadius = UDim.new(0, 8)

-- === LÓGICA DE FUNCIONAMIENTO ===

local function getDynamicColor(perc)
	if perc >= 0.85 then return userSettings[100]
	elseif perc >= 0.45 then return userSettings[50]
	else return userSettings[30]
	end
end

local function refreshTags()
	for _, data in pairs(healthLabels) do
		if data.billboard and data.humanoid then
			local perc = data.humanoid.Health / data.humanoid.MaxHealth
			data.label.TextColor3 = getDynamicColor(perc)
			data.billboard.Enabled = enabled
		end
	end
end

local function toggleUI()
	menuFrame.Visible = not menuFrame.Visible
	if not menuFrame.Visible then
		enabled = true
		toggleButton.BackgroundColor3 = colorPalette.Emerald
		refreshTags()
	end
end

readyBtn.MouseButton1Click:Connect(function()
	menuFrame.Visible = false
	enabled = true
	toggleButton.BackgroundColor3 = colorPalette.Emerald
	refreshTags()
end)

toggleButton.MouseButton1Click:Connect(toggleUI)

UserInputService.InputBegan:Connect(function(input, processed)
	if not processed and input.KeyCode == toggleKey then
		toggleUI()
	end
end)

-- === SISTEMA DE TAGS CORREGIDO ===
local function removeLabel(plr)
	if healthLabels[plr] then
		if healthLabels[plr].billboard then healthLabels[plr].billboard:Destroy() end
		healthLabels[plr] = nil
	end
end

local function createTag(plr, character)
	removeLabel(plr)
	
	local char = character or plr.Character
	if not char then return end
	
	local hum = char:WaitForChild("Humanoid", 10)
	local head = char:WaitForChild("Head", 10)
	if not hum or not head then return end
	
	local bb = Instance.new("BillboardGui", char)
	bb.Size = UDim2.new(0, 150, 0, 35)
	bb.StudsOffset = Vector3.new(0, 3.5, 0)
	bb.AlwaysOnTop = true
	bb.Enabled = enabled
	
	local lbl = Instance.new("TextLabel", bb)
	lbl.Size = UDim2.new(1, 0, 1, 0)
	lbl.BackgroundTransparency = 1
	lbl.Font = Enum.Font.GothamMedium
	lbl.TextSize = 13
	lbl.RichText = true
	lbl.TextStrokeTransparency = 0.85
	
	healthLabels[plr] = {billboard = bb, label = lbl, humanoid = hum}
	
	local function update()
		if hum and hum.Parent then
			local p = hum.Health / hum.MaxHealth
			lbl.Text = string.format("%d │ %d  <font color='#AAAAAA'>[%d%%]</font>", math.floor(hum.Health), math.floor(hum.MaxHealth), math.floor(p*100))
			lbl.TextColor3 = getDynamicColor(p)
		end
	end
	
	hum.HealthChanged:Connect(update)
	update()
end

local function setupPlayer(p)
	if p == player then return end
	
	p.CharacterAdded:Connect(function(newChar)
		task.wait(0.3)
		createTag(p, newChar)
	end)
	
	if p.Character then
		createTag(p, p.Character)
	end
end

Players.PlayerAdded:Connect(setupPlayer)
Players.PlayerRemoving:Connect(removeLabel)

for _, p in pairs(Players:GetPlayers()) do
	setupPlayer(p)
end

print("🚀 Dev Viewer Pro V5.1 (Fix Posición Móvil): Listo e integrado con Dev Lighting.")
  -- SOLUCIÓN AL LAG: Espera segura hasta que SetCore ("SendNotification") esté registrado en el juego
local registrado = false
while not registrado do
	local exito = pcall(function()
		StarterGui:SetCore("SendNotification", {
			Title = "charging...";
			Text = "Starting system...";
			Duration = 0.1;
		})
	end)
	
	if exito then
		registrado = true
	else
		task.wait(1) -- Si falló, espera 1 segundo y vuelve a intentar sin trabar el juego
	end
end

-- Una vez que ya cargó de forma segura, empieza tu bucle normal sin tirones de lag
while true do
	
	-- 1. CONFIGURA EL TEXTO AQUÍ:
	StarterGui:SetCore("SendNotification", {
		Title = "hi"; 
		Text = "i love you very much."; -- <--- CAMBIA EL MENSAJE AQUÍ
		Duration = 5; 
	})
	
	-- 2. CONFIGURA EL TIEMPO DE ESPERA AQUÍ:
	task.wait(600) -- <--- CAMBIA EL TIEMPO EN SEGUNDOS AQUÍ
	
end

Features & Information

A script I made with an AI, without telling it it was for a specific executor, is compatible with many executors. This script is a black button with a "X" symbol in the upper right corner of the screen or by pressing X on the keyboard, When it's green, it's activated. If someone's health bar isn't appearing, just toggle the symbol off and on again. It's recommended to run it again in case it's bugged. It's a lightweight script. If you're wondering why the code is long and uses Lua, and some parts are in Spanish, it's because it can be used in Roblox Studio and most executors script, now you can change the color of life (I recommend putting everything in white if the game has a lot of shadows)

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts