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)