
Key RequiredUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hrp = char:WaitForChild("HumanoidRootPart")
local radius = 5
local minRadius, maxRadius = 1, 30
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ReachGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0,220,0,110)
frame.Position = UDim2.new(0,20,0,20)
frame.BackgroundTransparency = 0.25
frame.BackgroundColor3 = Color3.fromRGB(20,20,20)
frame.BorderSizePixel = 0
frame.Parent = screenGui
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -10, 0, 24)
title.Position = UDim2.new(0,5,0,5)
title.BackgroundTransparency = 1
title.Text = "Reach Visualizer (TEST)"
title.TextColor3 = Color3.new(1,1,1)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 18
title.Parent = frame
local valueLabel = Instance.new("TextLabel")
valueLabel.Size = UDim2.new(1, -10, 0, 24)
valueLabel.Position = UDim2.new(0,5,0,34)
valueLabel.BackgroundTransparency = 1
valueLabel.Text = "Raio: "..tostring(radius).." studs"
valueLabel.TextColor3 = Color3.new(1,1,1)
valueLabel.Font = Enum.Font.SourceSans
valueLabel.TextSize = 16
valueLabel.Parent = frame
local minusBtn = Instance.new("TextButton")
minusBtn.Size = UDim2.new(0,40,0,30)
minusBtn.Position = UDim2.new(0,5,0,64)
minusBtn.Text = "-"
minusBtn.Font = Enum.Font.SourceSansBold
minusBtn.TextSize = 22
minusBtn.Parent = frame
local plusBtn = Instance.new("TextButton")
plusBtn.Size = UDim2.new(0,40,0,30)
plusBtn.Position = UDim2.new(0,55,0,64)
plusBtn.Text = "+"
plusBtn.Font = Enum.Font.SourceSansBold
plusBtn.TextSize = 22
plusBtn.Parent = frame
local resetBtn = Instance.new("TextButton")
resetBtn.Size = UDim2.new(0,80,0,30)
resetBtn.Position = UDim2.new(0,120,0,64)
resetBtn.Text = "Reset"
resetBtn.Font = Enum.Font.SourceSans
resetBtn.TextSize = 16
resetBtn.Parent = frame
local spherePart = Instance.new("Part")
spherePart.Name = "ReachVisualizerPart"
spherePart.Shape = Enum.PartType.Ball
spherePart.Size = Vector3.new(radius*2, radius*2, radius*2)
spherePart.Transparency = 0.6
spherePart.Anchored = true
spherePart.CanCollide = false
spherePart.CastShadow = false
spherePart.Material = Enum.Material.Neon
spherePart.Color = Color3.fromRGB(0, 255, 255)
spherePart.Parent = workspace
local function updateRadius(newRadius)
radius = math.clamp(newRadius, minRadius, maxRadius)
spherePart.Size = Vector3.new(radius*2, radius*2, radius*2)
spherePart.CFrame = hrp.CFrame
valueLabel.Text = "Raio: "..string.format("%.1f", radius).." studs"
end
plusBtn.MouseButton1Click:Connect(function()
updateRadius(radius + 1)
end)
minusBtn.MouseButton1Click:Connect(function()
updateRadius(radius - 1)
end)
resetBtn.MouseButton1Click:Connect(function()
updateRadius(5)
end)
local function scanNearby()
local found = {}
local myPos = hrp.Position
for _, obj in pairs(workspace:GetChildren()) do
if obj:IsA("BasePart") and obj.Name == "Ball" then
local dist = (obj.Position - myPos).Magnitude
if dist <= radius then
table.insert(found, obj)
end
elseif obj:IsA("Model") and obj:FindFirstChild("HumanoidRootPart") and obj ~= char then
local otherHRP = obj:FindFirstChild("HumanoidRootPart")
local dist = (otherHRP.Position - myPos).Magnitude
if dist <= radius then
table.insert(found, obj)
end
end
end
return found
end
local lastCount = 0
RunService.RenderStepped:Connect(function()
if not hrp or not hrp.Parent then return end
spherePart.CFrame = hrp.CFrame
local found = scanNearby()
if #found ~= lastCount then
lastCount = #found
if lastCount > 0 then
print("Objetos dentro do reach:", lastCount)
end
end
end)
player.CharacterRemoving:Connect(function()
if spherePart then
spherePart:Destroy()
end
end)
player.CharacterAdded:Connect(function(newChar)
char = newChar
hrp = char:WaitForChild("HumanoidRootPart")
end)



How do I run the script?