I understand what you mean.
Ideally, you want the bullet to spawn at the muzzle (unless something is blocking the muzzle). You don’t want the bullet to start from the centre of the screen do you?
It’s the direction (rotation) of the bullet that you want to change.
There’s many ways around this but one option is to use APawn::GetPawnViewLocation and APawn::GetBaseAimRotation. This should give you the location and rotation of the crosshair. (Only works on server and owning clients - other clients shouldn’t need to know about this info anyways).
Do some vector forward magic and now you have the direction.
You can even compare it to the muzzle direction to decide if it’s ‘close enough’ to use. If it’s too far (let’s say 30 degrees off), then interpolate between the two directions, if completely off, just use muzzle direction. If you decide to do this, you need to make sure the multiplier you used to get the forward vector is the same for both (I.e. 10,000).
If you want even more accurate results (which for an FPS I suggest), then whenever the Client sends the RPC to the sever to fire, also send the current ‘crosshair direction’. This is because the server’s copy will be slightly out of date and inaccurate. To prevent cheating, you can get the server to validate it by checking if it’s close enough to the server copy (if it’s too different, just use server direction).