Tarkov Realism V2 Experimental
Key RequiredUniversal

Tarkov Realism V2 Experimental

Universal ScriptRSCRIPTS_FALSEBAN_MERSCRIPTS_FALSEBAN_ME 921 views 348 executesUpdated Mar 20, 2026
Unrated
00
Lua Script•278 lines (9162 chars)
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!")

Features & Information

Just a more realistic way of fighting to immerse yourself Current Features Bottom left health bar Desaturation (grayscale) and blur effects scaling with health Dynamic volume for all sounds in the world Red flash overlay on damage Death screen fades to black Random blink every 5–10 seconds New features Suppression System Suppression-Based Blur Pulse Suppression Audio Muffling Suppression Decay Layered Damage Feedback Sprint Blur (A bit obvious) Changes Effect Layering System

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts