You could try using World.GetGroundHeight(Vector2/Vector3) to find the Z coordinate
I'm not sure how exact that value is.
Maybe it has some constant offset by which you have to decrease the Z value.
Vector3 spawnLoc = player.Position + (player.ForwardVector *5);
spawnLoc.Z = World.GetGroundHeight(spawnLoc);
World.CreateProp("prop_beach_fire", spawnLoc, false, true);
Also as a hint: When you use "using" at the beginning of your code you can save some time writing.
Start the first lines of your projects with "using GTA;" and "using GTA.Math;" so you can just call Vector3 instead of GTA.Math.Vector3