
Key Required

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local espEnabled = {
Zombie = false, Heals = false, Food = false,
Gas = false, Armor = false, Weapon = false, Scrap = false,
}
local espDistance = 150
local ESP_COLORS = {
Zombie = Color3.fromRGB(255, 60, 60),
Heals = Color3.fromRGB( 80, 255, 160),
Food = Color3.fromRGB( 80, 255, 80),
Gas = Color3.fromRGB(220, 100, 255),
Armor = Color3.fromRGB( 80, 150, 255),
Weapon = Color3.fromRGB(255, 140, 0),
Scrap = Color3.fromRGB(200, 160, 70),
}
local TAG_MAP = {
Zombie = {"zombie","undead","infected","walker","crawler","ghoul","zomb"},
Heals = {
"medkit", "med kit", "firstaid", "first aid", "medbox", "health kit",
"bandage", "gauze", "wrap",
},
Food = {
"food","cola","soda","water bottle","can of","canned","snack","bloxy",
"chips","candy","juice","coffee","energy drink","apple","banana","pizza",
"burger","soup","meal","ration","hearts","heart","bread","beef",
},
Gas = {"gas can","gascan","gas_can","jerry can","jerrycan","fuel can","fuelcan","canister","fuel jug","fuel"},
Armor = {
"light armor","lightarmor","light_armor","medium armor","mediumarmor","medium_armor",
"heavy armor","heavyarmor","heavy_armor","power arm","powerarm","power_arm",
"power core","powercore","power_core","vest","helmet","plate carrier","body armor","armor","armour",
},
Weapon = {
"heavy sniper","heavysniper","uzi","pistol","revolver","rifle","shotgun","smg","sniper",
"carbine","assault","lmg","dmr","ak","m4","m16","m1911","mp5","mp40","ump",
"deagle","glock","beretta","colt","awp","awm","kar98","mosin","barrett",
"remington","winchester","spas","aa12","rpg","crossbow","flamethrower",
"crowbar","hammer","wrench","bat","knife","machete","hatchet","axe","sword","katana","gun","weapon","firearm",
"pistol ammo","medium ammo","long ammo","shotgun ammo","sniper ammo",
"rifle ammo","shells","shell","ammo","rounds","bullets","magazine","mag",
},
Scrap = {"scrap","scraps","metal scrap","junk","salvage","batteries","battery"},
}
local function matchItem(name)
local low = name:lower()
for item, kws in pairs(TAG_MAP) do
for _, kw in ipairs(kws) do
if low:find(kw, 1, true) then return item end
end
end
end
local cachedObjects = {}
for item in pairs(TAG_MAP) do cachedObjects[item] = {} end
local function alreadyCached(obj, item)
for _, v in ipairs(cachedObjects[item]) do if v == obj then return true end end
end
local function tryRegister(obj)
local parent = obj.Parent
if not parent then return end
if parent.Name == "DroppedItems" or (parent.Parent and parent.Parent.Name == "DroppedItems") then
local item = matchItem(obj.Name)
if item and not alreadyCached(obj, item) then
table.insert(cachedObjects[item], obj)
end
elseif parent.Name == "Characters" then
local isPlayer = false
for _, p in ipairs(Players:GetPlayers()) do
if p.Character == obj then isPlayer = true; break end
end
if not isPlayer and not alreadyCached(obj, "Zombie") then
table.insert(cachedObjects["Zombie"], obj)
end
end
end
local function unregister(obj)
for _, list in pairs(cachedObjects) do
for i = #list, 1, -1 do
if list[i] == obj then table.remove(list, i) end
end
end
end
local function scanFolder(name)
local folder = workspace:FindFirstChild(name)
if not folder then return end
for _, obj in ipairs(folder:GetChildren()) do
tryRegister(obj)
for _, child in ipairs(obj:GetChildren()) do
tryRegister(child)
end
end
folder.ChildAdded:Connect(tryRegister)
folder.ChildRemoved:Connect(unregister)
end
scanFolder("DroppedItems")
scanFolder("Characters")
task.delay(3, function() scanFolder("DroppedItems"); scanFolder("Characters") end)
local CAR_EXACT = {
["Crashed Car 1"] = true,
["Crashed Car 2"] = true,
}
local CAR_CONTAINS = {"vehicle","truck","van","sedan","suv"}
local function isCarName(name)
if CAR_EXACT[name] then return true end
local low = name:lower()
for _, kw in ipairs(CAR_CONTAINS) do
if low:find(kw, 1, true) then return true end
end
return false
end
local function tryRegisterCar(obj)
if not (obj:IsA("Model") or obj:IsA("BasePart")) then return end
if isCarName(obj.Name) and not alreadyCached(obj, "Scrap") then
table.insert(cachedObjects["Scrap"], obj)
end
end
local function scanCars()
for _, obj in ipairs(workspace:GetDescendants()) do
tryRegisterCar(obj)
end
end
scanCars()
task.delay(3, scanCars)
workspace.DescendantAdded:Connect(tryRegisterCar)
workspace.DescendantRemoving:Connect(unregister)
local activeESP = {}
local function getBasePart(obj)
if obj:IsA("BasePart") then return obj end
if obj:IsA("Model") and obj.PrimaryPart then return obj.PrimaryPart end
return obj:FindFirstChildWhichIsA("BasePart", true)
end
local function getPosition(obj)
local bp = getBasePart(obj)
return bp and bp.Position
end
local function showESP(obj, item, dist)
local color = ESP_COLORS[item]
local data = activeESP[obj]
if not data then
local h = Instance.new("Highlight")
h.FillColor = color
h.OutlineColor = color
h.FillTransparency = 0.45
h.OutlineTransparency = 0
h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
h.Adornee = obj
h.Parent = obj
local adornee = getBasePart(obj)
local bb
if adornee then
bb = Instance.new("BillboardGui")
bb.Size = UDim2.new(0, 140, 0, 40)
bb.StudsOffset = Vector3.new(0, 4.5, 0)
bb.AlwaysOnTop = true
bb.LightInfluence = 0
bb.Adornee = adornee
bb.Parent = obj
local nameLbl = Instance.new("TextLabel", bb)
nameLbl.Size = UDim2.new(1, 0, 0.55, 0)
nameLbl.BackgroundTransparency = 1
nameLbl.Text = obj.Name
nameLbl.TextColor3 = color
nameLbl.Font = Enum.Font.GothamBold
nameLbl.TextSize = 13
nameLbl.TextXAlignment = Enum.TextXAlignment.Center
nameLbl.TextStrokeTransparency = 0.3
nameLbl.TextStrokeColor3 = Color3.new(0, 0, 0)
local distLbl = Instance.new("TextLabel", bb)
distLbl.Name = "DistLabel"
distLbl.Size = UDim2.new(1, 0, 0.45, 0)
distLbl.Position = UDim2.new(0, 0, 0.55, 0)
distLbl.BackgroundTransparency = 1
distLbl.Text = math.floor(dist) .. " m"
distLbl.TextColor3 = Color3.fromRGB(220, 220, 220)
distLbl.Font = Enum.Font.Gotham
distLbl.TextSize = 11
distLbl.TextXAlignment = Enum.TextXAlignment.Center
distLbl.TextStrokeTransparency = 0.3
distLbl.TextStrokeColor3 = Color3.new(0, 0, 0)
end
activeESP[obj] = { highlight = h, billboard = bb }
else
if data.billboard then
local distLbl = data.billboard:FindFirstChild("DistLabel")
if distLbl then distLbl.Text = math.floor(dist) .. " m" end
end
end
end
local function hideESP(obj)
local data = activeESP[obj]
if not data then return end
if data.highlight and data.highlight.Parent then data.highlight:Destroy() end
if data.billboard and data.billboard.Parent then data.billboard:Destroy() end
activeESP[obj] = nil
end
local TICK_RATE = 0.1
local ticker = 0
RunService.Heartbeat:Connect(function(dt)
ticker = ticker + dt
if ticker < TICK_RATE then return end
ticker = 0
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local origin = root and root.Position
local shouldShow = {}
if origin then
for item, enabled in pairs(espEnabled) do
if enabled then
for _, obj in ipairs(cachedObjects[item]) do
if obj and obj.Parent then
local pos = getPosition(obj)
if pos then
local d = (pos - origin).Magnitude
if d <= espDistance then
shouldShow[obj] = {item = item, dist = d}
end
end
end
end
end
end
end
for obj, info in pairs(shouldShow) do showESP(obj, info.item, info.dist) end
for obj in pairs(activeESP) do
if not shouldShow[obj] then hideESP(obj) end
end
end)
_G.SurviveESP_Debug = function()
print("=== Survive ESP Cache ===")
for item, list in pairs(cachedObjects) do
print(item .. ": " .. #list)
for _, obj in ipairs(list) do print(" " .. obj.Name) end
end
local di = workspace:FindFirstChild("DroppedItems")
if di then
print("--- DroppedItems ---")
for _, c in ipairs(di:GetChildren()) do print(" " .. c.Name) end
end
print("=========================")
end
local BLACK = Color3.fromRGB(0, 0, 0)
local ORANGE = Color3.fromRGB(255, 140, 0)
local DARK_GREY = Color3.fromRGB(18, 18, 18)
local MID_GREY = Color3.fromRGB(45, 45, 45)
local WHITE = Color3.fromRGB(255, 255, 255)
local gui = Instance.new("ScreenGui")
gui.Name = "SurviveESP_GUI"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = (gethui and gethui()) or game:GetService("CoreGui")
local outerFrame = Instance.new("Frame")
outerFrame.Name = "OuterBorder"
outerFrame.Size = UDim2.new(0, 220, 0, 100)
outerFrame.Position = UDim2.new(0, 40, 0, 80)
outerFrame.BackgroundColor3 = ORANGE
outerFrame.BorderSizePixel = 0
outerFrame.Active = true
outerFrame.Draggable = true
outerFrame.Parent = gui
Instance.new("UICorner", outerFrame).CornerRadius = UDim.new(0, 6)
local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.new(1, -4, 1, -4)
main.Position = UDim2.new(0, 2, 0, 2)
main.BackgroundColor3 = BLACK
main.BorderSizePixel = 0
main.Parent = outerFrame
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 5)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -50, 0, 32)
title.Position = UDim2.new(0, 0, 0, 6)
title.BackgroundTransparency = 1
title.Text = "Survive The Apocalypse"
title.TextColor3 = ORANGE
title.Font = Enum.Font.GothamBold
title.TextSize = 14
title.Parent = main
local toggleHint = Instance.new("TextLabel")
toggleHint.Size = UDim2.new(0, 44, 0, 32)
toggleHint.Position = UDim2.new(1, -46, 0, 6)
toggleHint.BackgroundTransparency = 1
toggleHint.Text = "[P]"
toggleHint.TextColor3 = Color3.fromRGB(100, 100, 100)
toggleHint.Font = Enum.Font.Gotham
toggleHint.TextSize = 10
toggleHint.TextXAlignment = Enum.TextXAlignment.Right
toggleHint.TextYAlignment = Enum.TextYAlignment.Top
toggleHint.Parent = main
local function makeDivider(y)
local d = Instance.new("Frame")
d.Size = UDim2.new(1, -16, 0, 1)
d.Position = UDim2.new(0, 8, 0, y)
d.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
d.BorderSizePixel = 0
d.Parent = main
end
makeDivider(40)
local distLabel = Instance.new("TextLabel")
distLabel.Size = UDim2.new(1, -16, 0, 16)
distLabel.Position = UDim2.new(0, 8, 0, 48)
distLabel.BackgroundTransparency = 1
distLabel.Text = "ESP Distance: 150 m"
distLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
distLabel.Font = Enum.Font.Gotham
distLabel.TextSize = 11
distLabel.TextXAlignment = Enum.TextXAlignment.Left
distLabel.Parent = main
local sliderTrack = Instance.new("Frame")
sliderTrack.Size = UDim2.new(1, -16, 0, 4)
sliderTrack.Position = UDim2.new(0, 8, 0, 68)
sliderTrack.BackgroundColor3 = MID_GREY
sliderTrack.BorderSizePixel = 0
sliderTrack.Parent = main
Instance.new("UICorner", sliderTrack).CornerRadius = UDim.new(1, 0)
local sliderFill = Instance.new("Frame")
sliderFill.Size = UDim2.new((espDistance - 10) / 490, 0, 1, 0)
sliderFill.BackgroundColor3 = ORANGE
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderTrack
Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(1, 0)
local sliderHandle = Instance.new("TextButton")
sliderHandle.Size = UDim2.new(0, 12, 0, 12)
sliderHandle.Position = UDim2.new((espDistance - 10) / 490, -6, 0.5, -6)
sliderHandle.BackgroundColor3 = WHITE
sliderHandle.BorderSizePixel = 0
sliderHandle.Text = ""
sliderHandle.Parent = sliderTrack
Instance.new("UICorner", sliderHandle).CornerRadius = UDim.new(1, 0)
local dragging = false
sliderHandle.MouseButton1Down:Connect(function() dragging = true end)
UserInputService.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UserInputService.InputChanged:Connect(function(i)
if not dragging or i.UserInputType ~= Enum.UserInputType.MouseMovement then return end
local ratio = math.clamp((i.Position.X - sliderTrack.AbsolutePosition.X) / sliderTrack.AbsoluteSize.X, 0, 1)
espDistance = math.floor(10 + ratio * 490)
distLabel.Text = "ESP Distance: " .. espDistance .. " m"
sliderFill.Size = UDim2.new(ratio, 0, 1, 0)
sliderHandle.Position = UDim2.new(ratio, -6, 0.5, -6)
end)
makeDivider(80)
local espHeader = Instance.new("TextLabel")
espHeader.Size = UDim2.new(1, -16, 0, 16)
espHeader.Position = UDim2.new(0, 8, 0, 86)
espHeader.BackgroundTransparency = 1
espHeader.Text = "ESP"
espHeader.TextColor3 = ORANGE
espHeader.Font = Enum.Font.GothamBold
espHeader.TextSize = 11
espHeader.TextXAlignment = Enum.TextXAlignment.Left
espHeader.Parent = main
local ITEMS = {"Zombie","Heals","Food","Gas","Armor","Weapon","Scrap"}
local BASE_Y = 106
local ROW_H = 26
local toggleBtns = {}
local dots = {}
local function rebuildLayout()
local y = BASE_Y
for _, item in ipairs(ITEMS) do
toggleBtns[item].Position = UDim2.new(0, 8, 0, y)
dots[item].Position = UDim2.new(1, -22, 0, y + 7)
y = y + ROW_H
end
local totalH = y + 10
main.Size = UDim2.new(1, -4, 0, totalH)
outerFrame.Size = UDim2.new(0, 220, 0, totalH + 4)
end
for _, item in ipairs(ITEMS) do
local col = ESP_COLORS[item]
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -16, 0, 22)
btn.BackgroundColor3 = DARK_GREY
btn.BorderSizePixel = 0
btn.Text = item
btn.TextColor3 = Color3.fromRGB(210, 210, 210)
btn.Font = Enum.Font.Gotham
btn.TextSize = 12
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.AutoButtonColor = false
btn.Parent = main
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
local pad = Instance.new("UIPadding", btn)
pad.PaddingLeft = UDim.new(0, 10)
toggleBtns[item] = btn
local accent = Instance.new("Frame")
accent.Name = "Accent"
accent.Size = UDim2.new(0, 3, 1, -6)
accent.Position = UDim2.new(0, 0, 0, 3)
accent.BackgroundColor3 = col
accent.BorderSizePixel = 0
accent.Visible = false
accent.Parent = btn
Instance.new("UICorner", accent).CornerRadius = UDim.new(1, 0)
local dot = Instance.new("Frame")
dot.Size = UDim2.new(0, 8, 0, 8)
dot.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
dot.BorderSizePixel = 0
dot.Parent = main
Instance.new("UICorner", dot).CornerRadius = UDim.new(1, 0)
dots[item] = dot
btn.MouseButton1Click:Connect(function()
espEnabled[item] = not espEnabled[item]
local on = espEnabled[item]
dot.BackgroundColor3 = on and col or Color3.fromRGB(55, 55, 55)
accent.Visible = on
btn.TextColor3 = on and col or Color3.fromRGB(210, 210, 210)
if not on then
for _, obj in ipairs(cachedObjects[item]) do hideESP(obj) end
end
rebuildLayout()
end)
btn.MouseEnter:Connect(function() btn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) end)
btn.MouseLeave:Connect(function() btn.BackgroundColor3 = DARK_GREY end)
end
rebuildLayout()
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.P then
outerFrame.Visible = not outerFrame.Visible
end
end)No comments yet for this script.



