
Key Required

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
-- ✅ ITEM LIST
local itemData = {
Briefcase = "Utility",
Adrenaline = "Medical",
Bandage = "Medical",
Medkit = "Medical",
L106 = "Gun",
M4A1 = "Gun",
["As-Val"] = "Gun",
["AK-74M"] = "Gun",
Sledge = "Melee",
Knife = "Melee",
Shield = "Utility",
Barricade = "Utility",
Lock = "Utility",
Vest = "Utility",
Landmine = "Landmine",
Tactical = "Utility",
Katana = "Melee"
}
-- 🎨 COLORS
local colors = {
Gun = Color3.fromRGB(255, 60, 60),
Medical = Color3.fromRGB(60, 255, 100),
Melee = Color3.fromRGB(255, 170, 0),
Utility = Color3.fromRGB(255, 255, 0),
Landmine = Color3.fromRGB(255, 0, 100)
}
local ESP_ENABLED = true
-- 📱 MOBILE UI (NO DRAG / NO REMOVE)
local function createMobileToggle()
if not UserInputService.TouchEnabled then return end
local gui = Instance.new("ScreenGui")
gui.Name = "ESP_Toggle"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 140, 0, 50)
frame.Position = UDim2.new(0, 20, 0.8, 0)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
frame.Parent = gui
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, 0, 1, 0)
button.Text = "ESP: ON!"
button.BackgroundTransparency = 1
button.TextColor3 = Color3.new(1,1,1)
button.Parent = frame
button.MouseButton1Click:Connect(function()
ESP_ENABLED = not ESP_ENABLED
button.Text = ESP_ENABLED and "ESP: ON!" or "ESP: OFF"
end)
end
createMobileToggle()
-- 🖥️ PC NOTIFICATION
if not UserInputService.TouchEnabled then
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "ESP",
Text = "Press [E] to toggle ESP",
Duration = 5
})
end
-- 🖥️ PC TOGGLE
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.E then
ESP_ENABLED = not ESP_ENABLED
end
end)
-- 🔍 Check if inside player
local function isInPlayer(obj)
local model = obj:FindFirstAncestorOfClass("Model")
return model and Players:GetPlayerFromCharacter(model)
end
-- 💣 LANDMINE DETECTOR
local function isLandmine(part)
if not part:IsA("BasePart") then return false end
local minefield = workspace:FindFirstChild("Minefield")
if not minefield or not part:IsDescendantOf(minefield) then return false end
if string.find(string.lower(part.Name), "mine") then
return true
end
if part.Size.Magnitude < 6 and part.Transparency > 0.5 then
return true
end
if part:FindFirstAncestor("LandmineSpawner") then
return true
end
return false
end
-- 💣 LANDMINE ESP
local function createLandmineESP(part)
if part:FindFirstChild("ItemESP") then return end
local billboard = Instance.new("BillboardGui")
billboard.Name = "ItemESP"
billboard.Size = UDim2.new(0, 140, 0, 35)
billboard.AlwaysOnTop = true
billboard.StudsOffset = Vector3.new(0, 1.5, 0)
billboard.Parent = part
local text = Instance.new("TextLabel")
text.Size = UDim2.new(1, 0, 1, 0)
text.BackgroundTransparency = 1
text.TextScaled = true
text.Font = Enum.Font.SourceSansBold
text.TextStrokeTransparency = 0
text.TextColor3 = colors.Landmine
text.Text = "Landmine"
text.Parent = billboard
end
-- 🏷️ NORMAL ESP
local function createESP(part, itemName)
if part:FindFirstChild("ItemESP") then return end
local typeName = itemData[itemName]
if not typeName then return end
local billboard = Instance.new("BillboardGui")
billboard.Name = "ItemESP"
billboard.Size = UDim2.new(0, 160, 0, 40)
billboard.AlwaysOnTop = true
billboard.StudsOffset = Vector3.new(0, 2.5, 0)
billboard.Parent = part
local text = Instance.new("TextLabel")
text.Size = UDim2.new(1, 0, 1, 0)
text.BackgroundTransparency = 1
text.TextScaled = true
text.Font = Enum.Font.SourceSansBold
text.TextStrokeTransparency = 0
text.TextColor3 = colors[typeName]
text.Parent = billboard
end
-- 🔄 MAIN LOOP
RunService.RenderStepped:Connect(function()
local char = player.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local root = char.HumanoidRootPart.Position
-- 💣 LANDMINES
local minefield = workspace:FindFirstChild("Minefield")
if minefield then
for _, obj in pairs(minefield:GetDescendants()) do
if isLandmine(obj) then
createLandmineESP(obj)
local esp = obj:FindFirstChild("ItemESP")
if esp then
esp.Enabled = ESP_ENABLED
local dist = (root - obj.Position).Magnitude
local label = esp:FindFirstChildOfClass("TextLabel")
if label then
label.Text = "Landmine [" .. math.floor(dist) .. "m]"
end
end
end
end
end
-- 📦 ITEMS
for _, obj in pairs(workspace:GetDescendants()) do
local itemType = itemData[obj.Name]
if itemType and not isInPlayer(obj) then
local part
if obj:IsA("Tool") then
part = obj:FindFirstChild("Handle") or obj:FindFirstChildWhichIsA("BasePart", true)
elseif obj:IsA("BasePart") then
part = obj
elseif obj:IsA("Model") then
part = obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart", true)
end
if part then
createESP(part, obj.Name)
local esp = part:FindFirstChild("ItemESP")
if esp then
esp.Enabled = ESP_ENABLED
local dist = (root - part.Position).Magnitude
local label = esp:FindFirstChildOfClass("TextLabel")
if label then
label.Text = obj.Name .. " [" .. math.floor(dist) .. "m]"
end
end
end
end
end
end)
-- 🔁 NEW OBJECTS
workspace.DescendantAdded:Connect(function(obj)
if isLandmine(obj) then
createLandmineESP(obj)
end
if itemData[obj.Name] and not isInPlayer(obj) then
local part
if obj:IsA("Tool") then
part = obj:FindFirstChild("Handle") or obj:FindFirstChildWhichIsA("BasePart", true)
elseif obj:IsA("BasePart") then
part = obj
elseif obj:IsA("Model") then
part = obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart", true)
end
if part then
createESP(part, obj.Name)
end
end
end)



holy ai💥