local Players = game:GetService("Players") Players.PlayerAdded:Connect(function(player) local original = workspace.Ball local copy = original:Clone() local character = player.Character or player.CharacterAdded:wait() local CF = character:WaitForChild("HumanoidRootPart").Position copy.Parent = original.Parent copy.CFrame = CFrame.new(CF) end)
you got the position of the humanoid root part cframes use cframes not positions you would have to do copy.Position = CF but heres the fixed script
math.randomseed(tick()) -- can remove but added just incase local Players = game:GetService("Players") Players.PlayerAdded:Connect(function(player) local original = workspace.Ball local copy = original:Clone() local character = player.Character or player.CharacterAdded:Wait() local CF = character:WaitForChild("HumanoidRootPart").Position copy.Parent = original.Parent copy.Position = CF -- (or Vector3.new(CF)) end)