local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local SoundService = game:GetService("SoundService") local Debris = game:GetService("Debris") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") print("⚫ HealthUI + GRAYSCALE + VOLUME + BLINK + SUPPRESSION - LOADED!") -- Remove old GUI local oldGui = playerGui:FindFirstChild("HealthUI") if oldGui then oldGui:Destroy() end -- Screen GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "HealthUI" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.Parent = playerGui -- Health frame local healthFrame = Instance.new("Frame") healthFrame.Name = "HealthFrame" healthFrame.Size = UDim2.new(0, 240, 0, 36) healthFrame.Position = UDim2.new(0, 16, 1, -50) healthFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15) healthFrame.BackgroundTransparency = 0.15 healthFrame.BorderSizePixel = 0 healthFrame.ClipsDescendants = true healthFrame.Parent = screenGui local healthCorner = Instance.new("UICorner") healthCorner.CornerRadius = UDim.new(0, 16) healthCorner.Parent = healthFrame -- Health bar background local healthBarBg = Instance.new("Frame") healthBarBg.Name = "HealthBarBg" healthBarBg.AnchorPoint = Vector2.new(0, 0.5) healthBarBg.Position = UDim2.new(0, 8, 0.5, 0) healthBarBg.Size = UDim2.new(0, 200, 0, 22) healthBarBg.BackgroundColor3 = Color3.fromRGB(40, 0, 0) healthBarBg.BorderSizePixel = 0 healthBarBg.Parent = healthFrame local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(0, 11) bgCorner.Parent = healthBarBg -- Health bar local healthBar = Instance.new("Frame") healthBar.Name = "HealthBar" healthBar.AnchorPoint = Vector2.new(0, 0.5) healthBar.Position = UDim2.new(0, 0, 0.5, 0) healthBar.Size = UDim2.new(1, 0, 1, 0) healthBar.BackgroundColor3 = Color3.fromHSV(1/3, 1, 1) healthBar.BorderSizePixel = 0 healthBar.Parent = healthBarBg local healthBarCorner = Instance.new("UICorner") healthBarCorner.CornerRadius = UDim.new(0, 11) healthBarCorner.Parent = healthBar -- Health text local healthText = Instance.new("TextLabel") healthText.Name = "HealthText" healthText.Size = UDim2.new(0, 110, 1, 0) healthText.Position = UDim2.new(1, -118, 0, 0) healthText.BackgroundTransparency = 1 healthText.Text = "100/100" healthText.TextColor3 = Color3.fromRGB(255, 255, 255) healthText.TextStrokeTransparency = 0 healthText.TextStrokeColor3 = Color3.fromRGB(0,0,0) healthText.Font = Enum.Font.GothamBold healthText.TextScaled = true healthText.TextXAlignment = Enum.TextXAlignment.Right healthText.Parent = healthFrame -- Death screen local deathScreen = Instance.new("Frame") deathScreen.Name = "DeathScreen" deathScreen.Size = UDim2.new(1,0,1,0) deathScreen.BackgroundColor3 = Color3.new(0,0,0) deathScreen.BackgroundTransparency = 1 deathScreen.ZIndex = 100 deathScreen.Parent = screenGui -- ColorCorrection and Blur local cce = Lighting:FindFirstChild("HealthDesat") if cce then cce:Destroy() end cce = Instance.new("ColorCorrectionEffect") cce.Name = "HealthDesat" cce.Saturation = 0 cce.Contrast = 0 cce.Parent = Lighting local blur = Lighting:FindFirstChild("HealthBlur") if blur then blur:Destroy() end blur = Instance.new("BlurEffect") blur.Name = "HealthBlur" blur.Size = 0 blur.Parent = Lighting -- Sound group for dynamic volume local healthSoundGroup = Instance.new("SoundGroup") healthSoundGroup.Name = "HealthVolumeGroup" healthSoundGroup.Volume = 1 healthSoundGroup.Parent = SoundService -- Assign all sounds to group local function assignToGroup(parent) for _, obj in ipairs(parent:GetDescendants()) do if obj:IsA("Sound") and not obj:IsDescendantOf(playerGui) then obj.SoundGroup = healthSoundGroup end end end assignToGroup(workspace) assignToGroup(game.Players) workspace.DescendantAdded:Connect(function(desc) if desc:IsA("Sound") then desc.SoundGroup = healthSoundGroup end end) -- Health & effects update local connections = {} local suppressionAmount = 0 local suppressionDecay = 1.5 local function applySuppression(intensity) suppressionAmount = math.clamp(suppressionAmount + intensity, 0, 1) end local function updateHealth(hp, maxHp) local percent = hp / maxHp local hue = percent / 3 -- Health bar TweenService:Create(healthBar, TweenInfo.new(0.4, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), { Size = UDim2.new(percent,0,1,0), BackgroundColor3 = Color3.fromHSV(hue,1,1) }):Play() healthText.Text = math.floor(hp).."/"..maxHp -- Desaturation local desatAmount = -math.min((1 - percent)*1.2,1) TweenService:Create(cce,TweenInfo.new(0.5, Enum.EasingStyle.Quart),{Saturation=desatAmount}):Play() -- Optional contrast for low health TweenService:Create(cce,TweenInfo.new(0.5),{Contrast=(percent<0.2 and 0.1 or 0)}):Play() -- Blur local blurAmount = math.clamp((0.2 - percent)*50,0,8) TweenService:Create(blur,TweenInfo.new(0.5),{Size=blurAmount}):Play() -- Volume fade local minVol = 0.2 local targetVol = minVol + (1 - minVol)*percent TweenService:Create(healthSoundGroup,TweenInfo.new(0.6,Enum.EasingStyle.Quart),{Volume=targetVol}):Play() end -- Death local function onDied() healthSoundGroup.Volume = 0 TweenService:Create(cce, TweenInfo.new(1), {Saturation=-1}):Play() TweenService:Create(blur, TweenInfo.new(1), {Size=8}):Play() task.delay(1,function() TweenService:Create(deathScreen,TweenInfo.new(0.6),{BackgroundTransparency=0}):Play() end) end -- Setup character local function setupCharacter(char) -- Reset visuals TweenService:Create(deathScreen,TweenInfo.new(0.5),{BackgroundTransparency=1}):Play() blur.Size = 0 cce.Saturation = 0 cce.Contrast = 0 healthSoundGroup.Volume = 1 for _, conn in pairs(connections) do conn:Disconnect() end connections = {} local hum = char:WaitForChild("Humanoid",10) if not hum then return end assignToGroup(char) task.wait(0.5) updateHealth(hum.Health, hum.MaxHealth) local lastHp = hum.Health -- Sprint system (fixed) local baseSpeed = hum.WalkSpeed local sprintBlurCurrent = 0 connections[#connections+1] = RunService.RenderStepped:Connect(function(dt) if not hum or not hum.Parent then return end local speed = hum.WalkSpeed local sprinting = speed > baseSpeed + 1 local target = sprinting and 4 or 0 -- Smooth interpolation sprintBlurCurrent = sprintBlurCurrent + (target - sprintBlurCurrent) * math.clamp(dt * 8, 0, 1) -- Combine with suppression blur local suppressionBlur = math.clamp(8 * suppressionAmount, 0, 8) blur.Size = suppressionBlur + sprintBlurCurrent end) connections[#connections+1] = hum.HealthChanged:Connect(function(hp) updateHealth(hp, hum.MaxHealth) if hp < lastHp then -- Red flash local flash = Instance.new("Frame") flash.Size = UDim2.new(1,0,1,0) flash.BackgroundColor3 = Color3.fromRGB(255,0,0) flash.BackgroundTransparency = 0.7 flash.ZIndex = 200 flash.Parent = screenGui TweenService:Create(flash,TweenInfo.new(0.3),{BackgroundTransparency=1}):Play() Debris:AddItem(flash,0.35) -- Apply suppression on damage applySuppression(0.5) end lastHp = hp end) connections[#connections+1] = hum.Died:Connect(onDied) -- Suppression effect loop RunService.RenderStepped:Connect(function(dt) if suppressionAmount > 0 then local blurAmount = math.clamp(8*suppressionAmount,0,8) local volMul = 1 - 0.3*suppressionAmount blur.Size = blurAmount healthSoundGroup.Volume = volMul suppressionAmount = math.clamp(suppressionAmount - suppressionDecay*dt,0,1) end end) end player.CharacterAdded:Connect(setupCharacter) if player.Character then setupCharacter(player.Character) end -- Blink local blinkTimer = 0 local blinkInterval = 5 + math.random()*5 RunService.RenderStepped:Connect(function(dt) blinkTimer += dt if blinkTimer >= blinkInterval then local blinkOverlay = Instance.new("Frame") blinkOverlay.Size = UDim2.new(1,0,1,0) blinkOverlay.BackgroundColor3 = Color3.new(0,0,0) blinkOverlay.BackgroundTransparency = 1 blinkOverlay.ZIndex = 1000 blinkOverlay.Parent = screenGui local tweenInfo = TweenInfo.new(0.1,Enum.EasingStyle.Quad) TweenService:Create(blinkOverlay,tweenInfo,{BackgroundTransparency=0}):Play() task.delay(0.1,function() TweenService:Create(blinkOverlay,tweenInfo,{BackgroundTransparency=1}):Play() Debris:AddItem(blinkOverlay,0.2) end) blinkTimer = 0 blinkInterval = 5 + math.random()*5 end end) print("✅ Health/grayscale/blur/suppression/volume/blink system ACTIVE!")