-- 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")