
Key Required

-- Chams + Barra de Vida Funcional
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- Configuración
local Config = {
Enabled = true,
ToggleKey = Enum.KeyCode.F,
ShooterColor = Color3.fromRGB(255, 0, 0),
NormalColor = Color3.fromRGB(0, 255, 0)
}
-- Lista de armas
local WeaponNames = {
"uzi", "shotgun", "m4", "ak47", "rifle", "sniper", "pistol", "deagle", "mp5",
"smg", "lmg", "assault", "gun", "weapon", "sword", "blade", "dagger"
}
-- Detectar armas
local function HasWeapon(player)
if not player.Character then return false end
for _, item in pairs(player.Character:GetChildren()) do
if item:IsA("Tool") then
local name = string.lower(item.Name)
for _, weapon in pairs(WeaponNames) do
if string.find(name, weapon) then
return true
end
end
end
end
local backpack = player:FindFirstChild("Backpack")
if backpack then
for _, item in pairs(backpack:GetChildren()) do
if item:IsA("Tool") then
local name = string.lower(item.Name)
for _, weapon in pairs(WeaponNames) do
if string.find(name, weapon) then
return true
end
end
end
end
end
return false
end
-- Crear/Actualizar highlight
local function UpdateHighlight(character, color)
local highlight = character:FindFirstChild("WeaponChams")
if not highlight then
highlight = Instance.new("Highlight")
highlight.Name = "WeaponChams"
highlight.Parent = character
highlight.FillTransparency = 1
highlight.OutlineTransparency = 0
end
highlight.OutlineColor = color
highlight.FillColor = Color3.fromRGB(0, 0, 0)
end
-- Crear barra de vida VISIBLE desde lejos
local function CreateHealthBar(character)
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return nil end
-- Eliminar barra existente
local existing = humanoidRootPart:FindFirstChild("HealthBarGUI")
if existing then
existing:Destroy()
end
-- Crear BillboardGui
local billboard = Instance.new("BillboardGui")
billboard.Name = "HealthBarGUI"
billboard.Parent = humanoidRootPart
billboard.Adornee = humanoidRootPart
billboard.Size = UDim2.new(0.4, 0, 4, 0) -- MÁS ANCHA (0.4 studs de ancho, 4 studs de alto)
billboard.StudsOffset = Vector3.new(3.5, 0, 0) -- MÁS ALEJADA (3.5 studs a la derecha)
billboard.AlwaysOnTop = true
billboard.MaxDistance = 500 -- Visible desde más lejos
-- Fondo
local bg = Instance.new("Frame")
bg.Name = "Background"
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
bg.BorderSizePixel = 0
bg.Parent = billboard
local bgCorner = Instance.new("UICorner")
bgCorner.CornerRadius = UDim.new(0.15, 0) -- Menos redondeada para verse más grande
bgCorner.Parent = bg
-- Barra de vida
local hp = Instance.new("Frame")
hp.Name = "HealthBar"
hp.Size = UDim2.new(1, 0, 1, 0)
hp.Position = UDim2.new(0, 0, 1, 0)
hp.AnchorPoint = Vector2.new(0, 1)
hp.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
hp.BorderSizePixel = 0
hp.Parent = bg
local hpCorner = Instance.new("UICorner")
hpCorner.CornerRadius = UDim.new(0.15, 0)
hpCorner.Parent = hp
return billboard
end
-- Actualizar barra de vida
local function UpdateHealthBar(character)
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
local rootPart = character:FindFirstChild("HumanoidRootPart")
if not rootPart then return end
local billboard = rootPart:FindFirstChild("HealthBarGUI")
if not billboard then
billboard = CreateHealthBar(character)
if not billboard then return end
end
local bg = billboard:FindFirstChild("Background")
if not bg then return end
local healthBar = bg:FindFirstChild("HealthBar")
if not healthBar then return end
-- Calcular porcentaje de salud
local healthPercent = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1)
-- Actualizar tamaño
healthBar.Size = UDim2.new(1, 0, healthPercent, 0)
-- Gradiente de color: Verde -> Amarillo -> Rojo
local red, green
if healthPercent >= 0.5 then
-- Verde a amarillo
local t = (healthPercent - 0.5) / 0.5
red = math.floor(255 * (1 - t))
green = 255
else
-- Amarillo a rojo
local t = healthPercent / 0.5
red = 255
green = math.floor(255 * t)
end
healthBar.BackgroundColor3 = Color3.fromRGB(red, green, 0)
end
-- Limpiar jugador
local function CleanupPlayer(player)
if player.Character then
-- Limpiar highlight
local highlight = player.Character:FindFirstChild("WeaponChams")
if highlight then
highlight:Destroy()
end
-- Limpiar barra de vida
local rootPart = player.Character:FindFirstChild("HumanoidRootPart")
if rootPart then
local healthBar = rootPart:FindFirstChild("HealthBarGUI")
if healthBar then
healthBar:Destroy()
end
end
end
end
-- Limpiar todo
local function CleanupAll()
for _, player in pairs(Players:GetPlayers()) do
CleanupPlayer(player)
end
end
-- Toggle
local function Toggle()
Config.Enabled = not Config.Enabled
if Config.Enabled then
print("✅ Chams + Health ON")
else
print("❌ Chams + Health OFF")
CleanupAll()
end
end
-- Loop principal
RunService.Heartbeat:Connect(function()
if not Config.Enabled then return end
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
pcall(function()
-- Actualizar highlight
local hasWeapon = HasWeapon(player)
local color = hasWeapon and Config.ShooterColor or Config.NormalColor
UpdateHighlight(player.Character, color)
-- Actualizar barra de vida
UpdateHealthBar(player.Character)
end)
end
end
end)
-- Controles
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Config.ToggleKey then
Toggle()
end
end)
-- Eventos de limpieza
Players.PlayerRemoving:Connect(CleanupPlayer)
for _, player in pairs(Players:GetPlayers()) do
player.CharacterRemoving:Connect(function()
CleanupPlayer(player)
end)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function()
CleanupPlayer(player)
end)
end)
print("✅ Chams + Health Bar cargado")
print("🎮 F = Toggle")
print("🟢 Verde = Sin armas")
print("🔴 Rojo = Con armas")
print("💚→💛→❤️ Barra = Vida")



BTW, I didn't create it, an AI did, but it's a very good script.