Xizhub Esp Lighweight Universal
Key RequiredUniversal

Xizhub Esp Lighweight Universal

Universal Scriptxizabytexizabyte 541 views 14 executesUpdated Nov 26, 2025
Unrated
00
Lua Script•252 lines (7324 chars)
-- SERVICES
local player = game.Players.LocalPlayer
local runService = game:GetService("RunService")
local userInput = game:GetService("UserInputService")
local tweenService = game:GetService("TweenService")
local players = game.Players

-- CLEANUP OLD GUI
for _, gui in pairs(player.PlayerGui:GetChildren()) do
	if gui.Name == "PvPMenuGui" then
		gui:Destroy()
	end
end

-- TOGGLES
local menuOpen = false
local namesEnabled = false
local espEnabled = false
local healthEnabled = false
local MAX_DISTANCE = 150

-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "PvPMenuGui"
gui.ResetOnSpawn = false
gui.Parent = player.PlayerGui
gui.Enabled = true

local menuFrame = Instance.new("Frame")
menuFrame.Size = UDim2.new(0, 300, 0, 450)
menuFrame.Position = UDim2.new(1, 0, 0, -400)
menuFrame.AnchorPoint = Vector2.new(1, 0)
menuFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
menuFrame.BackgroundTransparency = 0.1
menuFrame.BorderSizePixel = 0
menuFrame.Parent = gui

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = menuFrame

local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -20, 1, -20)
scroll.Position = UDim2.new(0, 10, 0, 10)
scroll.BackgroundTransparency = 1
scroll.BorderSizePixel = 0
scroll.CanvasSize = UDim2.new(0,0,0,0)
scroll.ScrollBarThickness = 6
scroll.Parent = menuFrame

local uiList = Instance.new("UIListLayout")
uiList.SortOrder = Enum.SortOrder.LayoutOrder
uiList.Padding = UDim.new(0,5)
uiList.Parent = scroll

-- TITLE
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1,0,0,40)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "XizHub ESP Universal"
titleLabel.TextScaled = true
titleLabel.TextColor3 = Color3.fromRGB(255,255,255)
titleLabel.Parent = scroll

-- BUTTON HELPER
local function makeButton(text)
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1,0,0,40)
	btn.Text = text
	btn.TextScaled = true
	btn.BackgroundColor3 = Color3.fromRGB(50,50,50)
	btn.TextColor3 = Color3.fromRGB(255,255,255)
	btn.Parent = scroll
	return btn
end

local function updateButtonColor(button, state)
	if state then
		button.BackgroundColor3 = Color3.fromRGB(200,200,200)
	else
		button.BackgroundColor3 = Color3.fromRGB(50,50,50)
	end
end

-- NAMES BUTTON
local namesButton = makeButton("NAMES")
namesButton.MouseButton1Click:Connect(function()
	namesEnabled = not namesEnabled
	updateButtonColor(namesButton, namesEnabled)
end)

-- ESP BUTTON
local espButton = makeButton("ESP")
espButton.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	updateButtonColor(espButton, espEnabled)
end)

-- HEALTH BUTTON
local healthButton = makeButton("HEALTH ESP")
healthButton.MouseButton1Click:Connect(function()
	healthEnabled = not healthEnabled
	updateButtonColor(healthButton, healthEnabled)
end)

-- DISTANCE SLIDER
local distanceLabel = Instance.new("TextLabel")
distanceLabel.Size = UDim2.new(1,0,0,30)
distanceLabel.BackgroundTransparency = 1
distanceLabel.Text = "ESP Distance: "..MAX_DISTANCE
distanceLabel.TextScaled = true
distanceLabel.TextColor3 = Color3.fromRGB(255,255,255)
distanceLabel.Parent = scroll

local distanceSlider = Instance.new("TextBox")
distanceSlider.Size = UDim2.new(1,0,0,30)
distanceSlider.Text = tostring(MAX_DISTANCE)
distanceSlider.TextScaled = true
distanceSlider.ClearTextOnFocus = false
distanceSlider.BackgroundColor3 = Color3.fromRGB(50,50,50)
distanceSlider.TextColor3 = Color3.fromRGB(255,255,255)
distanceSlider.Parent = scroll

distanceSlider.FocusLost:Connect(function()
	local val = tonumber(distanceSlider.Text)
	if val then
		MAX_DISTANCE = val
		distanceLabel.Text = "ESP Distance: "..MAX_DISTANCE
	end
end)

uiList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
	scroll.CanvasSize = UDim2.new(0,0,0,uiList.AbsoluteContentSize.Y)
end)

-- DISPLAY NAMES
local displayLabels = {}
runService.RenderStepped:Connect(function()
	for _, plr in pairs(players:GetPlayers()) do
		if plr ~= player then
			local c = plr.Character
			if c and namesEnabled then
				local rootPart = c:FindFirstChild("HumanoidRootPart")
				if rootPart then
					local playerRoot = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
					local dist = playerRoot and (rootPart.Position - playerRoot.Position).Magnitude or 0
					if dist <= MAX_DISTANCE then
						if not displayLabels[plr] then
							local label = Instance.new("BillboardGui")
							label.Adornee = rootPart
							label.Size = UDim2.new(0,100,0,30)
							label.StudsOffset = Vector3.new(0,3,0)
							label.AlwaysOnTop = true
							label.Parent = player.PlayerGui

							local txt = Instance.new("TextLabel")
							txt.Size = UDim2.new(1,0,1,0)
							txt.BackgroundTransparency = 1
							txt.Text = plr.DisplayName
							txt.TextScaled = true
							txt.TextColor3 = Color3.fromRGB(255,255,255)
							txt.Parent = label

							displayLabels[plr] = label
						end
					else
						if displayLabels[plr] then
							displayLabels[plr]:Destroy()
							displayLabels[plr] = nil
						end
					end
				end
			elseif displayLabels[plr] then
				displayLabels[plr]:Destroy()
				displayLabels[plr] = nil
			end
		end
	end
end)

-- ESP + HEALTH ESP
local highlights = {}
runService.Heartbeat:Connect(function()
	for _, plr in pairs(players:GetPlayers()) do
		if plr ~= player then
			local c = plr.Character
			if c then
				local rootPart = c:FindFirstChild("HumanoidRootPart")
				local playerRoot = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
				if rootPart and playerRoot then
					local dist = (rootPart.Position - playerRoot.Position).Magnitude

					local highlight = highlights[plr]
					if not highlight and espEnabled then
						highlight = Instance.new("Highlight")
						highlight.FillTransparency = 1
						highlight.OutlineColor = Color3.fromRGB(255,255,255)
						highlight.Parent = c
						highlights[plr] = highlight
					end

					if highlight then
						highlight.Enabled = espEnabled and dist <= MAX_DISTANCE

						if healthEnabled and highlight.Enabled then
							local hum = c:FindFirstChildWhichIsA("Humanoid")
							if hum then
								local hp = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
								if hp > 0.8 then
									highlight.OutlineColor = Color3.fromRGB(0,255,0)
								elseif hp > 0.5 then
									highlight.OutlineColor = Color3.fromRGB(255,255,0)
								else
									highlight.OutlineColor = Color3.fromRGB(255,0,0)
								end
							end
						elseif highlight.Enabled then
							highlight.OutlineColor = Color3.fromRGB(255,255,255)
						end
					end
				end
			end
		end
	end
end)

-- TOGGLE MENU
userInput.InputBegan:Connect(function(input, gpe)
	if gpe then return end
	if input.KeyCode == Enum.KeyCode.RightShift then
		menuOpen = not menuOpen
		local targetPos
		if menuOpen then
			targetPos = UDim2.new(1, -10, 0, 50)
		else
			targetPos = UDim2.new(1, 0, 0, -400)
		end
		tweenService:Create(menuFrame, TweenInfo.new(0.5, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {Position = targetPos}):Play()
	end
end)

-- CLEANUP ON PLAYER LEAVE
players.PlayerRemoving:Connect(function(plr)
	if displayLabels[plr] then
		displayLabels[plr]:Destroy()
		displayLabels[plr] = nil
	end
	if highlights[plr] then
		highlights[plr]:Destroy()
		highlights[plr] = nil
	end
end)

Features & Information

- NAMES - ESP - HEALTH ESP - ESP DISTANCE
#criminality#universal#esp

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts