this does not get where they are looking and instead puts it 50 studs in the positive direction of the x-axis. Instead you should try something like this: End.Position = plr.Character.Torso.Position + player.Character.Torso.CFrame.LookVector*50
When manipulating CFrames, multiplication will almost always be your dominant operator. Note how instead of applying a transform on the x-axis, I instead put it on the z-axis since it denotes forward and backward placement:
The second option is Vector3 manipulation like you did, except we determine the final offset based on the rotation of the torso (simply put):
Look vectors are generally difficult to understand without prior knowledge in trigonometry, so I won’t dive too deep into it other than the fact that it is essentially rotational data in the form of a Vector3.