ESP extremely bad
Key Required

ESP extremely bad

PROJECT APEXmultymulty 6K views 265 executesUpdated May 5, 2026
2.0/ 5(5 votes)
2340% Positive
Lua Script•193 lines (4748 chars)
print("[ESP] Script starting")

if getgenv().__APX_ESP_CLEANUP then
	getgenv().__APX_ESP_CLEANUP()
	getgenv().__APX_ESP_CLEANUP = nil
	task.wait()
end

local Workspace = cloneref(workspace)
local Players = cloneref(game:GetService("Players"))
local RunService = cloneref(game:GetService("RunService"))
local UserInputService = cloneref(game:GetService("UserInputService"))

local LocalPlayer = Players.LocalPlayer
local CurrentCamera = Workspace.CurrentCamera

local Instance_new = Instance.new
local UDim2_new = UDim2.new
local Color3_fromRGB = Color3.fromRGB
local mathFloor = math.floor

local CONFIG = {
	MaxDistance = 500,
	TextColor = Color3_fromRGB(255, 255, 255),
	FillColor = Color3_fromRGB(255, 0, 0),
	OutlineColor = Color3_fromRGB(255, 0, 0),
	FillTransparency = 0.2,   -- 0.8 opacity = 0.2 transparency
	OutlineTransparency = 0.5, -- 0.5 opacity = 0.5 transparency
}

local _enabled = true
local _connections = {}
local _guiObjects = {}

local _espGui = gethui():FindFirstChild("APX_ESP_GUI")
if _espGui then _espGui:Destroy() end
_espGui = Instance_new("ScreenGui")
_espGui.Name = "APX_ESP_GUI"
_espGui.ResetOnSpawn = false
_espGui.Parent = gethui()

print("[ESP] GUI created")

local function getAIModels()
	local world = Workspace:FindFirstChild("World")
	local aiFolder = world and world:FindFirstChild("AI")
	if not aiFolder then return {} end
	return aiFolder:GetChildren()
end

local function isAlive(model)
	local hum = model:FindFirstChildOfClass("Humanoid")
	return hum and hum.Health > 0
end

local function createGuiBox(model)
	-- Text label
	local text = Instance_new("TextLabel")
	text.Name = "ESP_Text_" .. model.Name
	text.BackgroundTransparency = 1
	text.TextColor3 = CONFIG.TextColor
	text.TextSize = 12
	text.Font = Enum.Font.GothamBold
	text.TextXAlignment = Enum.TextXAlignment.Center
	text.TextStrokeTransparency = 0.5
	text.TextStrokeColor3 = Color3_fromRGB(0, 0, 0)
	text.Size = UDim2_new(0, 200, 0, 20)
	text.Visible = false
	text.Parent = _espGui

	return { text = text }
end

local function updateESP(model, gui)
	if not model.Parent or not isAlive(model) then
		gui.text.Visible = false
		return
	end

	local root = model:FindFirstChild("HumanoidRootPart")
	if not root then
		gui.text.Visible = false
		return
	end

	local myChar = LocalPlayer.Character
	if not myChar then
		gui.text.Visible = false
		return
	end

	local myRoot = myChar:FindFirstChild("HumanoidRootPart")
	if not myRoot then
		gui.text.Visible = false
		return
	end

	local dist = (root.Position - myRoot.Position).Magnitude
	if dist > CONFIG.MaxDistance then
		gui.text.Visible = false
		return
	end

	local rootScreenPos, onScreen = CurrentCamera:WorldToViewportPoint(root.Position)
	if rootScreenPos.Z <= 0 then
		gui.text.Visible = false
		return
	end

	if not onScreen then
		gui.text.Visible = false
		return
	end

	local vp = CurrentCamera.ViewportSize
	local rootX = mathFloor(rootScreenPos.X)
	local rootY = mathFloor(rootScreenPos.Y)

	local textY = rootY - 40
	local head = model:FindFirstChild("Head")
	if head then
		local headScreenPos = CurrentCamera:WorldToViewportPoint(head.Position)
		if headScreenPos.Z > 0 then
			textY = mathFloor(headScreenPos.Y) - 22
		end
	end

	gui.text.Position = UDim2_new(0, rootX - 100, 0, textY)

	local hum = model:FindFirstChildOfClass("Humanoid")
	local health    = hum and mathFloor(hum.Health)    or 0
	local maxHealth = hum and mathFloor(hum.MaxHealth) or 100

	gui.text.Text = model.Name .. "  " .. health .. "/" .. maxHealth .. "  [" .. mathFloor(dist) .. "m]"
	gui.text.Visible = true
end

local _renderConn = RunService.PreRender:Connect(function()
	if not _enabled then
		for _, gui in pairs(_guiObjects) do
			gui.text.Visible = false
		end
		return
	end

	local aiModels = getAIModels()
	local seen = {}

	for _, model in ipairs(aiModels) do
		seen[model] = true
		if not _guiObjects[model] then
			_guiObjects[model] = createGuiBox(model)
		end
		updateESP(model, _guiObjects[model])
	end

	-- Clean up stale entries
	for model, gui in pairs(_guiObjects) do
		if not seen[model] then
			gui.text:Destroy()
			_guiObjects[model] = nil
		end
	end
end)
table.insert(_connections, _renderConn)

local function cleanup()
	_enabled = false
	for _, conn in ipairs(_connections) do
		conn:Disconnect()
	end
	table.clear(_connections)
	for _, gui in pairs(_guiObjects) do
		gui.text:Destroy()
	end
	table.clear(_guiObjects)
	if _espGui and _espGui.Parent then
		_espGui:Destroy()
	end
	print("[ESP] Cleaned up")
end

getgenv().__APX_ESP_CLEANUP = cleanup

local _inputConn = UserInputService.InputBegan:Connect(function(input, gpe)
	if gpe then return end
	if input.KeyCode == Enum.KeyCode.Delete then
		cleanup()
	end
end)
table.insert(_connections, _inputConn)

print("[ESP] Ready")

Features & Information

open source yiepie

Community Comments (14)

multymultyMay 6, 2026

yall cannot like ts bro wtf this is the worst esp ever😭

Replying to @multy
Jonmaster1Jonmaster1Aug 6, 2026

@multy https://www.youtube.com/watch?v=BAScjm9eMG0

Replying to @Jonmaster1
IonationIonationAug 9, 2026

@Jonmaster1 send script fr

*itoulala*itoulalaJun 4, 2026

insta ban on xeno

NeverloseNeverloseJun 6, 2026

Insta ban rn

JustarandommfJustarandommfJul 13, 2026

Btw for anyone who realized there's literally no other scripts for Project Apex since this is all you have, no this script wont insta ban you if your not using *ty executors, I tested it with Pott*ium, and I was not banned.

JustarandommfJustarandommfJul 13, 2026

Got censored, if your not using bad executors*

RiftScriptsRiftScriptsJul 22, 2026

consider not using esp in instance names since devs can use something called filter names and when they detect that a highlight with idk name with esp oder wallhack is then it insta bans you so yeah just saying my opinion to this script

Replying to @RiftScripts
ORION_ZANEORION_ZANEJul 25, 2026

@D3v1lHub What do you mean " in instance names"?

Replying to @ORION_ZANE
RiftScriptsRiftScriptsJul 31, 2026

@ORION_ZANE the name for the menu or anything what you add into the entries in all the models for the esp example highlight name is ESP_Highlight1 or smth then the anti cheat in project apex is gonna ban u away for it same with prints

Jonmaster1Jonmaster1Aug 3, 2026

I'll make something then

Replying to @Jonmaster1
Jonmaster1Jonmaster1Aug 3, 2026

bro its been 5 hours and I already have a good script on it. containing aimbot and more.

Replying to @Jonmaster1
nhukhangpopnhukhangpopAug 6, 2026

@Jonmaster1 give us then

Replying to @nhukhangpop
Jonmaster1Jonmaster1Aug 6, 2026

@nhukhangpop https://www.youtube.com/watch?v=BAScjm9eMG0

More Scripts for PROJECT APEX