You don’t have to use SetPrimaryPartCFrame, you can just clone the character and put it into workspace, if you’d like to move the character you can use :MoveTo.
Like This:
game.Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function(Chr)
local newPlayer = Chr:Clone()
newPlayer.Archivable= true -- Make sure archivable is true
newPlayer.Parent = workspace
end)
end)
Since the player’s character itself need to have archivable to true before cloning it, also, that wait is required so the script has time to load the character propperly.