M
Description
pc only, click e to toggle it on or off, has a wallcheck feature, and cahngeable fov. (MADE BY CHAT GPT) (but is lowk op)
GAMERIVALS [❄️FREEZE RAY❄️]
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
--==================================================
-- SETTINGS
--==================================================
local aimEnabled = true
local aiming = false
local minFov = 300
local maxFov = 1000
local fovSize = maxFov
--==================================================
-- UI
--==================================================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AimLockUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
--==================================================
-- AIM BUTTON
--==================================================
local button = Instance.new("TextButton")
button.Size = UDim2.new(0, 150, 0, 45)
button.Position = UDim2.new(0, 20, 0.5, -22)
button.BackgroundColor3 = Color3.fromRGB(40, 170, 70)
button.TextColor3 = Color3.fromRGB(255, 255, 255)
button.TextSize = 18
button.Font = Enum.Font.GothamBold
button.Text = "AIM: ON"
button.AutoButtonColor = false
button.Parent = screenGui
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 8)
buttonCorner.Parent = button
--==================================================
-- FOV CIRCLE
--==================================================
local fovCircle = Instance.new("Frame")
fovCircle.Name = "FOVCircle"
fovCircle.AnchorPoint = Vector2.new(0.5, 0.5)
fovCircle.Position = UDim2.fromScale(0.5, 0.5)
fovCircle.Size = UDim2.fromOffset(fovSize, fovSize)
fovCircle.BackgroundTransparency = 1
fovCircle.Visible = true
fovCircle.Parent = screenGui
local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1, 0)
circleCorner.Parent = fovCircle
local circleStroke = Instance.new("UIStroke")
circleStroke.Thickness = 2
circleStroke.Parent = fovCircle
--==================================================
-- FOV SIZE LABEL
--==================================================
local sizeLabel = Instance.new("TextLabel")
sizeLabel.Size = UDim2.new(0, 150, 0, 30)
sizeLabel.Position = UDim2.new(0, 20, 0.5, 35)
sizeLabel.BackgroundTransparency = 1
sizeLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
sizeLabel.TextSize = 16
sizeLabel.Font = Enum.Font.GothamBold
sizeLabel.Text = "FOV: " .. fovSize
sizeLabel.Visible = true
sizeLabel.Parent = screenGui
--==================================================
-- FOV SLIDER
--==================================================
local slider = Instance.new("TextButton")
slider.Size = UDim2.new(0, 150, 0, 12)
slider.Position = UDim2.new(0, 20, 0.5, 70)
slider.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
slider.Text = ""
slider.AutoButtonColor = false
slider.Visible = true
slider.Parent = screenGui
local sliderCorner = Instance.new("UICorner")
sliderCorner.CornerRadius = UDim.new(1, 0)
sliderCorner.Parent = slider
local sliderFill = Instance.new("Frame")
sliderFill.Size = UDim2.new(1, 0, 1, 0)
sliderFill.BackgroundColor3 = Color3.fromRGB(70, 150, 255)
sliderFill.BorderSizePixel = 0
sliderFill.Parent = slider
local fillCorner = Instance.new("UICorner")
fillCorner.CornerRadius = UDim.new(1, 0)
fillCorner.Parent = sliderFill
--==================================================
-- UPDATE FOV
--==================================================
local function updateFOV(value)
fovSize = math.clamp(
value,
minFov,
maxFov
)
fovCircle.Size = UDim2.fromOffset(
fovSize,
fovSize
)
sizeLabel.Text = "FOV: " .. math.floor(fovSize)
local percentage =
(fovSize - minFov) /
(maxFov - minFov)
sliderFill.Size = UDim2.new(
percentage,
0,
1,
0
)
end
--==================================================
-- SLIDER DRAGGING
--==================================================
local sliderDragging = false
local function setSliderFromMouse(mouseX)
local sliderStart =
slider.AbsolutePosition.X
local sliderWidth =
slider.AbsoluteSize.X
local percentage =
math.clamp(
(mouseX - sliderStart) / sliderWidth,
0,
1
)
local value =
minFov +
percentage *
(maxFov - minFov)
updateFOV(value)
end
slider.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
sliderDragging = true
setSliderFromMouse(
input.Position.X
)
end
end)
UserInputService.InputChanged:Connect(function(input)
if not sliderDragging then
return
end
if input.UserInputType ==
Enum.UserInputType.MouseMovement
or input.UserInputType ==
Enum.UserInputType.Touch then
setSliderFromMouse(
input.Position.X
)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
sliderDragging = false
end
end)
--==================================================
-- DRAG AIM BUTTON
--==================================================
local dragging = false
local dragStart
local startPosition
button.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPosition = button.Position
input.Changed:Connect(function()
if input.UserInputState ==
Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if not dragging then
return
end
if input.UserInputType ==
Enum.UserInputType.MouseMovement
or input.UserInputType ==
Enum.UserInputType.Touch then
local delta =
input.Position - dragStart
button.Position = UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
end
end)
--==================================================
-- TOGGLE AIM
--==================================================
local function updateButton()
if aimEnabled then
button.Text = "AIM: ON"
button.BackgroundColor3 =
Color3.fromRGB(40, 170, 70)
fovCircle.Visible = true
sizeLabel.Visible = true
slider.Visible = true
else
button.Text = "AIM: OFF"
button.BackgroundColor3 =
Color3.fromRGB(170, 50, 50)
fovCircle.Visible = false
sizeLabel.Visible = false
slider.Visible = false
aiming = false
end
end
button.MouseButton1Click:Connect(function()
aimEnabled = not aimEnabled
updateButton()
end)
--==================================================
-- E KEY TOGGLE
--==================================================
UserInputService.InputBegan:Connect(function(
input,
gameProcessed
)
if gameProcessed then
return
end
if input.KeyCode == Enum.KeyCode.E then
aimEnabled = not aimEnabled
updateButton()
end
end)
--==================================================
-- WALL / LINE-OF-SIGHT CHECK
--==================================================
local function canSeeHead(head)
local character = player.Character
if not character then
return false
end
local root =
character:FindFirstChild("HumanoidRootPart")
if not root then
return false
end
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = {
character
}
raycastParams.IgnoreWater = true
local direction =
head.Position - root.Position
local result =
workspace:Raycast(
root.Position,
direction,
raycastParams
)
-- Nothing blocked the ray
if not result then
return true
end
-- The first thing hit was the target's character
if result.Instance:IsDescendantOf(
head.Parent
) then
return true
end
return false
end
--==================================================
-- FIND NEAREST HEAD
--==================================================
local function getNearestHead()
local character = player.Character
if not character then
return nil
end
local myRoot =
character:FindFirstChild("HumanoidRootPart")
if not myRoot then
return nil
end
local nearestHead = nil
local nearestDistance = math.huge
local screenCenter = Vector2.new(
camera.ViewportSize.X / 2,
camera.ViewportSize.Y / 2
)
for _, otherPlayer in
Players:GetPlayers() do
if otherPlayer ~= player
and otherPlayer.Character then
local head =
otherPlayer.Character:FindFirstChild("Head")
local humanoid =
otherPlayer.Character:FindFirstChildOfClass(
"Humanoid"
)
if head
and humanoid
and humanoid.Health > 0 then
local screenPosition,
onScreen =
camera:WorldToViewportPoint(
head.Position
)
if onScreen
and screenPosition.Z > 0 then
local headPosition =
Vector2.new(
screenPosition.X,
screenPosition.Y
)
local distanceFromCenter =
(
headPosition -
screenCenter
).Magnitude
-- Must be inside FOV
if distanceFromCenter <=
fovSize / 2 then
-- Must have clear line of sight
if canSeeHead(head) then
local worldDistance =
(
head.Position -
myRoot.Position
).Magnitude
if worldDistance <
nearestDistance then
nearestDistance =
worldDistance
nearestHead = head
end
end
end
end
end
end
end
return nearestHead
end
--==================================================
-- RIGHT CLICK AIM
--==================================================
UserInputService.InputBegan:Connect(function(
input,
gameProcessed
)
if gameProcessed then
return
end
if input.UserInputType ==
Enum.UserInputType.MouseButton2 then
if aimEnabled then
aiming = true
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton2 then
aiming = false
end
end)
--==================================================
-- CAMERA AIM
--==================================================
RunService.RenderStepped:Connect(function()
if aiming and aimEnabled then
local head =
getNearestHead()
if head then
camera.CFrame =
CFrame.lookAt(
camera.CFrame.Position,
head.Position
)
end
end
end)
--==================================================
-- INITIALIZE
--==================================================
updateFOV(maxFov)
updateButton()Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place