local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local plr = Players.LocalPlayer local camera = Workspace.CurrentCamera local boxes = {} local function createBox(player) local box = Drawing.new("Square") box.Visible = false box.Thickness = 2 box.Color = Color3.new(1, 1, 1) box.Filled = false boxes[player] = box end local function removeBox(player) if boxes[player] then boxes[player]:Remove() boxes[player] = nil end end local function updateBoxes() for _, player in ipairs(Players:GetPlayers()) do if player == plr then continue end if not boxes[player] then createBox(player) end local box = boxes[player] local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart local _, onScreen = camera:WorldToViewportPoint(hrp.Position) if onScreen then local tl = camera:WorldToViewportPoint((hrp.CFrame * CFrame.new(-2, 3, 0)).Position) local br = camera:WorldToViewportPoint((hrp.CFrame * CFrame.new(2, -3, 0)).Position) box.Position = Vector2.new(tl.X, tl.Y) box.Size = Vector2.new(br.X - tl.X, br.Y - tl.Y) box.Visible = true else box.Visible = false end else box.Visible = false end end end Players.PlayerAdded:Connect(createBox) Players.PlayerRemoving:Connect(removeBox) RunService.RenderStepped:Connect(updateBoxes)