Universal WallHacks
Key RequiredUniversal

Universal WallHacks

Universal ScriptPahTeTPahTeT 9.5K views 3.4K executesUpdated Jan 17, 2026
Unrated
00
Lua Script•271 lines (9512 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

--true(On)  false(Off)

getgenv().ESPEnabled = true
getgenv().BoxESP = true
getgenv().TracerESP = true
getgenv().NameESP = true
getgenv().DistanceESP = true
getgenv().HealthESP = true
getgenv().HealthOutlineESP = true
getgenv().WallhackEnabled = true
getgenv().TeamCheck = false
getgenv().RenderDistance = 1000

getgenv().BoxColor = Color3.fromRGB(255,255,255)
getgenv().TracerColor = Color3.fromRGB(255,255,255)
getgenv().NameColor = Color3.fromRGB(255,255,255)
getgenv().DistanceColor = Color3.fromRGB(255,255,255)

local boxes = {}
local tracers = {}
local nameTags = {}
local distanceTags = {}
local healthBars = {}

local function createText(size)
    local text = Drawing.new("Text")
    text.Size = size
    text.Center = true
    text.Outline = false
    text.Visible = false
    return text
end

local function createBarPair()
    local outline = Drawing.new("Square")
    outline.Thickness = 1
    outline.Filled = true
    outline.Visible = false
    outline.Color = Color3.fromRGB(0,0,0)

    local bar = Drawing.new("Square")
    bar.Thickness = 1
    bar.Filled = true
    bar.Visible = false
    bar.Color = Color3.fromRGB(0,255,0)
    return {Outline = outline, Bar = bar}
end

local function isEnemy(player)
    if not getgenv().TeamCheck then return true end
    return player.Team ~= LocalPlayer.Team
end

local function createESP(character, player)
    if not character or boxes[character] then return end
    if player == LocalPlayer then return end
    
    local hrp = character:FindFirstChild("HumanoidRootPart")
    local head = character:FindFirstChild("Head")
    local humanoid = character:FindFirstChild("Humanoid")
    if not hrp or not head then return end
    
    local box = Drawing.new("Square")
    box.Visible = false
    box.Color = getgenv().BoxColor
    box.Filled = false
    box.Transparency = 1
    box.Thickness = 1
    
    local line = Drawing.new("Line")
    line.Visible = false
    line.Color = getgenv().TracerColor
    line.Thickness = 1
    line.Transparency = 1
    
    local nameTag = createText(11)
    local distTag = createText(11)
    
    if not healthBars[player] then
        healthBars[player] = createBarPair()
    end
    
    local connection = RunService.RenderStepped:Connect(function()
        if not getgenv().ESPEnabled or not getgenv().WallhackEnabled then
            box.Visible = false
            line.Visible = false
            nameTag.Visible = false
            distTag.Visible = false
            if healthBars[player] then
                healthBars[player].Outline.Visible = false
                healthBars[player].Bar.Visible = false
            end
            return
        end
        
        if not isEnemy(player) then
            box.Visible = false
            line.Visible = false
            nameTag.Visible = false
            distTag.Visible = false
            if healthBars[player] then
                healthBars[player].Outline.Visible = false
                healthBars[player].Bar.Visible = false
            end
            return
        end
        
        hrp = character:FindFirstChild("HumanoidRootPart")
        head = character:FindFirstChild("Head")
        humanoid = character:FindFirstChild("Humanoid")
        if not hrp or not head or not humanoid then return end
        
        local pos, visible = Camera:WorldToViewportPoint(hrp.Position)
        local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.3, 0))
        local legPos = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 2.5, 0))
        local distance = (Camera.CFrame.Position - hrp.Position).Magnitude
        
        if visible and distance <= getgenv().RenderDistance then
            local scale = 1 / (pos.Z * math.tan(math.rad(Camera.FieldOfView * 0.5)) * 2) * 100
            local width, height = math.floor(40 * scale), math.floor(62 * scale)
            local position = Vector2.new(pos.X - width/2, pos.Y - height/2)
            
            if getgenv().BoxESP then
                box.Size = Vector2.new(width, height)
                box.Position = position
                box.Color = getgenv().BoxColor
                box.Visible = true
            else box.Visible = false end
            
            if getgenv().TracerESP then
                line.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y - 50)
                line.To = Vector2.new(pos.X, pos.Y)
                line.Color = getgenv().TracerColor
                line.Visible = true
            else line.Visible = false end
            
            if getgenv().NameESP then
                nameTag.Position = Vector2.new(headPos.X, headPos.Y - 20)
                nameTag.Text = player.Name
                nameTag.Color = getgenv().NameColor
                nameTag.Visible = true
            else nameTag.Visible = false end
            
            if getgenv().DistanceESP and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                local dist = math.floor((hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude)
                distTag.Position = Vector2.new(legPos.X, legPos.Y + 5)
                distTag.Text = tostring(dist) .. "m"
                distTag.Color = getgenv().DistanceColor
                distTag.Visible = true
            else distTag.Visible = false end
            
            if getgenv().HealthESP then
                local outline = healthBars[player].Outline
                local bar = healthBars[player].Bar
                
                local barHeight = height * 0.95
                local barWidth = 2
                local barXPos = position.X - barWidth - 5
                local barYPos = position.Y + (height - barHeight) / 2
                
                local hpPercent = humanoid.Health / humanoid.MaxHealth
                local filledHeight = barHeight * hpPercent
                
                if getgenv().HealthOutlineESP then
                    outline.Size = Vector2.new(barWidth + 2, barHeight + 2)
                    outline.Position = Vector2.new(barXPos - 1, barYPos - 1)
                    outline.Visible = true
                else outline.Visible = false end
                
                bar.Size = Vector2.new(barWidth, filledHeight)
                bar.Position = Vector2.new(barXPos, barYPos + (barHeight - filledHeight))
                
                if humanoid.Health <= 20 then
                    bar.Color = Color3.fromRGB(255, 0, 0)
                elseif humanoid.Health <= 65 then
                    bar.Color = Color3.fromRGB(255, 255, 0)
                else
                    bar.Color = Color3.fromRGB(0, 255, 0)
                end
                
                bar.Visible = true
            else
                if healthBars[player] then
                    healthBars[player].Outline.Visible = false
                    healthBars[player].Bar.Visible = false
                end
            end
        else
            box.Visible = false
            line.Visible = false
            nameTag.Visible = false
            distTag.Visible = false
            if healthBars[player] then
                healthBars[player].Outline.Visible = false
                healthBars[player].Bar.Visible = false
            end
        end
    end)
    
    boxes[character] = {Box = box, Connection = connection}
    tracers[character] = {Line = line}
    nameTags[player] = nameTag
    distanceTags[player] = distTag
end

local function removeESP(character, player)
    if boxes[character] then
        if boxes[character].Connection then boxes[character].Connection:Disconnect() end
        if boxes[character].Box then boxes[character].Box:Remove() end
        boxes[character] = nil
    end
    
    if tracers[character] then
        if tracers[character].Line then tracers[character].Line:Remove() end
        tracers[character] = nil
    end
    
    if nameTags[player] then
        nameTags[player]:Remove()
        nameTags[player] = nil
    end
    
    if distanceTags[player] then
        distanceTags[player]:Remove()
        distanceTags[player] = nil
    end
    
    if healthBars[player] then
        if healthBars[player].Outline then healthBars[player].Outline:Remove() end
        if healthBars[player].Bar then healthBars[player].Bar:Remove() end
        healthBars[player] = nil
    end
end

local function setupPlayer(player)
    if player == LocalPlayer then return end
    
    player.CharacterAdded:Connect(function(char)
        removeESP(char, player)
        task.wait(0.1)
        char:WaitForChild("HumanoidRootPart", 5)
        char:WaitForChild("Head", 5)
        char:WaitForChild("Humanoid", 5)
        createESP(char, player)
    end)
    
    player.CharacterRemoving:Connect(function(char)
        removeESP(char, player)
    end)
    
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player.Character:FindFirstChild("Head") and player.Character:FindFirstChild("Humanoid") then
        createESP(player.Character, player)
    end
end

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

Players.PlayerAdded:Connect(setupPlayer)

Players.PlayerRemoving:Connect(function(player)
    if player.Character then
        removeESP(player.Character, player)
    end
end)

Features & Information

-OpenSourse , Box WH , Trasers , HealtBar , Name & Distance
#WH#WallHack#Esp#OpenSource

Community Comments (2)

PahTeTPahTeTFeb 5, 2026

It's really cool, there's no lag, respect to whoever made it.

maksim231015qmaksim231015qJul 19, 2026

Ряльно круто

More Scripts for Universal Scripts