local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local function createLine() local line = Drawing.new("Line") line.Thickness = 2 line.Color = Color3.fromRGB(255, 255, 255) line.Transparency = 1 return line end -- Connect body parts local bones = { {"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"}, {"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"}, {"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"}, {"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"}, {"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}, } local skeletons = {} RunService.RenderStepped:Connect(function() for _, v in pairs(skeletons) do for _, l in pairs(v) do l.Visible = false end end for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("Humanoid") and player.Character:FindFirstChild("HumanoidRootPart") then local char = player.Character if not skeletons[player] then skeletons[player] = {} for _, bone in pairs(bones) do local line = createLine() table.insert(skeletons[player], line) end end for i, bone in pairs(bones) do local part1 = char:FindFirstChild(bone[1]) local part2 = char:FindFirstChild(bone[2]) if part1 and part2 then local pos1, onScreen1 = Camera:WorldToViewportPoint(part1.Position) local pos2, onScreen2 = Camera:WorldToViewportPoint(part2.Position) local line = skeletons[player][i] if onScreen1 and onScreen2 then line.From = Vector2.new(pos1.X, pos1.Y) line.To = Vector2.new(pos2.X, pos2.Y) line.Visible = true else line.Visible = false end end end end end end)