Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
LocalPlayer = Players.LocalPlayer
FOV_ANGLE =
MAX_VISION_DISTANCE =
SCAN_INTERVAL =
VISUALIZE =
FOV_RADIANS = .(FOV_ANGLE)
playersWhoSeeYou = {}
()
screenGui = .()
screenGui.Name =
screenGui.ResetOnSpawn =
screenGui.Parent = LocalPlayer:()
frame = .()
frame.Size = .(, , , )
frame.Position = .(, -, , )
frame.BackgroundColor3 = .(, , )
frame.BackgroundTransparency =
frame.BorderSizePixel =
frame.Parent = screenGui
corner = .()
corner.CornerRadius = .(, )
corner.Parent = frame
title = .()
title.Size = .(, -, , )
title.Position = .(, , , )
title.BackgroundTransparency =
title.Text =
title.TextColor3 = .(, , )
title.TextSize =
title.Font = .Font.GothamBold
title.TextXAlignment = .TextXAlignment.Left
title.Parent = frame
listFrame = .()
listFrame.Size = .(, -, , -)
listFrame.Position = .(, , , )
listFrame.BackgroundTransparency =
listFrame.BorderSizePixel =
listFrame.ScrollBarThickness =
listFrame.Parent = frame
listLayout = .()
listLayout.SortOrder = .SortOrder.Name
listLayout.Padding = .(, )
listLayout.Parent = listFrame
listFrame
listFrame = ()
()
_, child (listFrame:())
child:()
child:()
playerName, data (playersWhoSeeYou)
label = .()
label.Size = .(, , , )
label.BackgroundColor3 = .(, , )
label.BackgroundTransparency =
label.Text = playerName .. .. .(data.distance) ..
label.TextColor3 = .(, , )
label.TextSize =
label.Font = .Font.Gotham
label.Parent = listFrame
corner = .()
corner.CornerRadius = .(, )
corner.Parent = label
(observerPos, observerLookVector, targetPos, fovRadians, maxDistance)
toTarget = targetPos - observerPos
distance = toTarget.Magnitude
distance > maxDistance
, distance
directionToTarget = toTarget.Unit
dotProduct = observerLookVector:(directionToTarget)
angleRadians = .(.(dotProduct, -, ))
angleRadians <= fovRadians, distance
(fromPos, toPos, ignoreList)
direction = toPos - fromPos
distance = direction.Magnitude
raycastParams = RaycastParams.()
raycastParams.FilterDescendantsInstances = ignoreList
raycastParams.FilterType = .RaycastFilterType.Exclude
raycastParams.IgnoreWater =
result = :(fromPos, direction, raycastParams)
result
hitDistance = (result.Position - fromPos).Magnitude
hitDistance >= distance -
visualParts = {}
(character, canSeeLocalPlayer)
VISUALIZE
charName = character.Name
visualParts[charName]
_, part (visualParts[charName])
part:()
visualParts[charName] = {}
head = character:()
head
cone = .()
cone.Shape = .PartType.Block
cone.Size = .(, , MAX_VISION_DISTANCE / )
cone.CFrame = head.CFrame * .(, , -MAX_VISION_DISTANCE / )
cone.Color = canSeeLocalPlayer .(, , ) .(, , )
cone.Transparency =
cone.CanCollide =
cone.Anchored =
cone.Material = .Material.Neon
cone.Parent =
.(visualParts[charName], cone)
.(SCAN_INTERVAL + , ()
cone cone.Parent
cone:()
)
()
localChar = LocalPlayer.Character
localChar
localRoot = localChar:()
localHead = localChar:()
localRoot localHead
localPos = localHead.Position
playersWhoSeeYou = {}
_, player (Players:())
player ~= LocalPlayer
char = player.Character
char
humanoid = char:()
head = char:()
root = char:()
humanoid humanoid.Health > head root
lookVector = root.CFrame.LookVector
observerPos = head.Position
inCone, distance = (observerPos, lookVector, localPos, FOV_RADIANS, MAX_VISION_DISTANCE)
inCone
ignoreList = {localChar, char}
hasLOS = (observerPos, localPos, ignoreList)
hasLOS
playersWhoSeeYou[player.Name] = {
distance = distance,
player = player
}
(char, )
(char, )
(char, )
()
lastScan =
RunService.Heartbeat:(()
now = ()
now - lastScan >= SCAN_INTERVAL
lastScan = now
()
)
Players.PlayerRemoving:((player)
visualParts[player.Name]
_, part (visualParts[player.Name])
part:()
visualParts[player.Name] =
)
()
()
()This is just a simple script I made to check if anybody is looking at you

Universal