
Key Required VerifiedUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local CONFIG = {
ESP_ENABLED = true,
BEHIND_DETECTION_ENABLED = true,
DETECTION_DISTANCE = 35,
DETECTION_SENSITIVITY = 0.6,
COOLDOWN_TIME = 3,
OBSCURRED_COLOR = Color3.fromRGB(0, 100, 255),
VISIBLE_COLOR = Color3.fromRGB(255, 40, 40),
WHITELIST_COLOR = Color3.fromRGB(0, 255, 0),
TEXT_COLOR = Color3.fromRGB(255, 255, 255)
}
local localPlayer = Players.LocalPlayer
local camera = Workspace.CurrentCamera
local mouse = localPlayer:GetMouse()
local whitelistedPlayers = {}
local SAVE_FILE = "TacticalScript_HideMenu.txt"
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DetectionAlerts"
screenGui.Parent = CoreGui
local alertLabel = Instance.new("TextLabel")
alertLabel.Size = UDim2.new(0, 800, 0, 100)
alertLabel.Position = UDim2.new(0.5, -400, 0.05, 0)
alertLabel.BackgroundTransparency = 1
alertLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
alertLabel.TextStrokeTransparency = 0
alertLabel.Font = Enum.Font.GothamBold
alertLabel.TextSize = 22
alertLabel.TextWrapped = true
alertLabel.Text = ""
alertLabel.Parent = screenGui
local function shouldShowMenu()
if isfile and isfile(SAVE_FILE) then return false end
return true
end
local function createMenu()
if not shouldShowMenu() then return end
local menuGui = Instance.new("ScreenGui")
menuGui.Name = "TacticalInstructions"
menuGui.Parent = CoreGui
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 400, 0, 240)
frame.Position = UDim2.new(0.5, -200, 0.5, -120)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.Active = true
frame.Draggable = true
frame.Parent = menuGui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = frame
local text = Instance.new("TextLabel")
text.Size = UDim2.new(1, -30, 1, -70)
text.Position = UDim2.new(0, 15, 0, 15)
text.BackgroundTransparency = 1
text.TextColor3 = Color3.fromRGB(230, 230, 230)
text.TextSize = 16
text.Font = Enum.Font.Gotham
text.TextXAlignment = Enum.TextXAlignment.Left
text.TextWrapped = true
text.Text = "1. Press F on player to Whitelist.\n2. CTRL + Y to toggle Detection.\n3. CTRL + G to toggle ESP."
text.Parent = frame
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 120, 0, 40)
btn.Position = UDim2.new(0.5, -60, 1, -55)
btn.Text = "OK"
btn.Parent = frame
btn.MouseButton1Click:Connect(function()
if writefile then writefile(SAVE_FILE, "true") end
menuGui:Destroy()
end)
end
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
local ctrl = UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) or UserInputService:IsKeyDown(Enum.KeyCode.RightControl)
if input.KeyCode == Enum.KeyCode.F then
local target = mouse.Target
if target then
local char = target:FindFirstAncestorOfClass("Model")
local player = Players:GetPlayerFromCharacter(char)
if player and player ~= localPlayer then
if whitelistedPlayers[player.UserId] then
whitelistedPlayers[player.UserId] = nil
StarterGui:SetCore("SendNotification", {Title = "System", Text = "Removed " .. player.DisplayName, Duration = 2})
else
whitelistedPlayers[player.UserId] = true
StarterGui:SetCore("SendNotification", {Title = "System", Text = "Whitelisted " .. player.DisplayName, Duration = 2})
end
end
end
end
if ctrl and input.KeyCode == Enum.KeyCode.G then
CONFIG.ESP_ENABLED = not CONFIG.ESP_ENABLED
StarterGui:SetCore("SendNotification", {Title = "ESP Toggle", Text = "ESP is now " .. (CONFIG.ESP_ENABLED and "ON" or "OFF"), Duration = 2})
end
if ctrl and input.KeyCode == Enum.KeyCode.Y then
CONFIG.BEHIND_DETECTION_ENABLED = not CONFIG.BEHIND_DETECTION_ENABLED
StarterGui:SetCore("SendNotification", {Title = "Detection Toggle", Text = "Detection is now " .. (CONFIG.BEHIND_DETECTION_ENABLED and "ON" or "OFF"), Duration = 2})
end
end)
local function setupESP(character, player)
local highlight = character:FindFirstChild("TacticalHighlight")
if not highlight then
highlight = Instance.new("Highlight")
highlight.Name = "TacticalHighlight"
highlight.FillTransparency = 1
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = character
end
local head = character:FindFirstChild("Head")
local espGui = character:FindFirstChild("TacticalInfo")
if head and not espGui then
espGui = Instance.new("BillboardGui")
espGui.Name = "TacticalInfo"
espGui.Size = UDim2.new(0, 200, 0, 50)
espGui.StudsOffset = Vector3.new(0, 3.5, 0)
espGui.AlwaysOnTop = true
espGui.Adornee = head
espGui.Parent = character
local nL = Instance.new("TextLabel", espGui)
nL.BackgroundTransparency = 1
nL.Size = UDim2.new(1, 0, 1, 0)
nL.TextColor3 = CONFIG.TEXT_COLOR
nL.Font = Enum.Font.GothamBold
nL.TextSize = 14
nL.Text = player.DisplayName
end
return highlight, espGui
end
local function checkLineOfSight(targetCharacter)
if not localPlayer.Character then return false end
local head = targetCharacter:FindFirstChild("Head")
if not head then return false end
local params = RaycastParams.new()
params.FilterDescendantsInstances = {localPlayer.Character, targetCharacter}
params.FilterType = Enum.RaycastFilterType.Exclude
local result = Workspace:Raycast(camera.CFrame.Position, head.Position - camera.CFrame.Position, params)
return result == nil
end
RunService.RenderStepped:Connect(function()
local myRoot = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart")
local behindAbove = 0
local behindBelow = 0
local behindLevel = 0
for _, player in ipairs(Players:GetPlayers()) do
if player ~= localPlayer and player.Character then
local char = player.Character
local root = char:FindFirstChild("HumanoidRootPart")
local highlight, espGui = setupESP(char, player)
local isWhitelisted = whitelistedPlayers[player.UserId]
if highlight then highlight.Enabled = CONFIG.ESP_ENABLED end
if espGui then espGui.Enabled = CONFIG.ESP_ENABLED end
if CONFIG.ESP_ENABLED and highlight then
if isWhitelisted then
highlight.OutlineColor = CONFIG.WHITELIST_COLOR
else
highlight.OutlineColor = checkLineOfSight(char) and CONFIG.VISIBLE_COLOR or CONFIG.OBSCURRED_COLOR
end
end
if CONFIG.BEHIND_DETECTION_ENABLED and not isWhitelisted and myRoot and root then
local dist = (myRoot.Position - root.Position).Magnitude
local rel = myRoot.CFrame:PointToObjectSpace(root.Position)
if dist <= CONFIG.DETECTION_DISTANCE and rel.Z > 0 and rel.Z > math.abs(rel.X) * CONFIG.DETECTION_SENSITIVITY then
if rel.Y > 6 then
behindAbove = behindAbove + 1
elseif rel.Y < -6 then
behindBelow = behindBelow + 1
else
behindLevel = behindLevel + 1
end
end
end
end
end
local messages = {}
if behindAbove > 0 then
table.insert(messages, string.format("[%d] BEHIND ABOVE", behindAbove))
end
if behindLevel > 0 then
table.insert(messages, string.format("[%d] BEHIND YOU", behindLevel))
end
if behindBelow > 0 then
table.insert(messages, string.format("[%d] BEHIND BELOW", behindBelow))
end
if #messages > 0 then
alertLabel.Text = "⚠️ " .. table.concat(messages, " | ")
else
alertLabel.Text = ""
end
end)
createMenu()



chatgpt