local player = game.Players.LocalPlayer local camera = workspace.CurrentCamera local screenGui = Instance.new("ScreenGui") screenGui.Parent = player:WaitForChild("PlayerGui") local radarBg = Instance.new("Frame") radarBg.Size = UDim2.new(0, 180, 0, 180) radarBg.Position = UDim2.new(0, 15, 0, 45) radarBg.BackgroundColor3 = Color3.new(0.08, 0.08, 0.08) radarBg.BackgroundTransparency = 0.35 radarBg.BorderSizePixel = 2 radarBg.BorderColor3 = Color3.new(0, 1, 0) radarBg.ClipsDescendants = true radarBg.Parent = screenGui local radarCircle = Instance.new("ImageLabel") radarCircle.Size = UDim2.new(0.85, 0, 0.85, 0) radarCircle.Position = UDim2.new(0.075, 0, 0.075, 0) radarCircle.BackgroundTransparency = 1 radarCircle.Image = "rbxassetid://334518096" radarCircle.Parent = radarBg local centerDot = Instance.new("Frame") centerDot.Size = UDim2.new(0, 4, 0, 4) centerDot.Position = UDim2.new(0.5, -2, 0.5, -2) centerDot.BackgroundColor3 = Color3.new(1, 0, 0) centerDot.BorderSizePixel = 0 centerDot.Parent = radarCircle local range = 100 local playerDots = {} for _, other in pairs(game.Players:GetPlayers()) do if other ~= player then local dot = Instance.new("Frame") dot.Size = UDim2.new(0, 5, 0, 5) dot.BackgroundColor3 = Color3.new(0, 1, 0) dot.BorderSizePixel = 0 dot.Visible = false dot.Parent = radarCircle playerDots[other] = dot end end game.Players.PlayerAdded:Connect(function(newPlayer) if newPlayer ~= player then local dot = Instance.new("Frame") dot.Size = UDim2.new(0, 5, 0, 5) dot.BackgroundColor3 = Color3.new(0, 1, 0) dot.BorderSizePixel = 0 dot.Visible = false dot.Parent = radarCircle playerDots[newPlayer] = dot end end) game.Players.PlayerRemoving:Connect(function(leavingPlayer) if playerDots[leavingPlayer] then playerDots[leavingPlayer]:Destroy() playerDots[leavingPlayer] = nil end end) local function updateRadar() local myChar = player.Character if not myChar then return end local root = myChar:FindFirstChild("HumanoidRootPart") if not root then return end local myPos = root.Position for _, other in pairs(game.Players:GetPlayers()) do if other ~= player then local otherChar = other.Character if otherChar then local otherRoot = otherChar:FindFirstChild("HumanoidRootPart") if otherRoot then local otherPos = otherRoot.Position local dist = (myPos - otherPos).Magnitude if not playerDots[other] then local dot = Instance.new("Frame") dot.Size = UDim2.new(0, 5, 0, 5) dot.BackgroundColor3 = Color3.new(0, 1, 0) dot.BorderSizePixel = 0 dot.Visible = false dot.Parent = radarCircle playerDots[other] = dot end local relative = otherPos - myPos local angle = math.atan2(relative.Z, relative.X) local normDist = math.min(dist / range, 1) local radarSize = 0.75 local xPos = math.sin(angle) * normDist * radarSize / 2 local zPos = math.cos(angle) * normDist * radarSize / 2 playerDots[other].Position = UDim2.new(0.5 + xPos, -2.5, 0.5 - zPos, -2.5) if dist <= range then playerDots[other].Visible = true else playerDots[other].Visible = false end end else if playerDots[other] then playerDots[other].Visible = false end end end end end while wait(0.1) do pcall(updateRadar) end