First thing I noticed was the Z rotation when you move, almost looks like you want it to strafe but it wasnt working right. I ran the code really quick and thats exactly what was going on. I just took out the rotation commands in the movement keys and it seemed to work great.
if ( dbKeyState(17) == 1 )
{
//////dbRotateCamera ( 0 , 0, -fCameraAngleZ );////
dbMoveCamera ( 5 );
/////dbRotateCamera ( 0, 0, fCameraAngleZ );////
}
if ( dbKeyState(31) == 1 )
{
//////dbRotateCamera ( 0, 0, -fCameraAngleZ );////
dbMoveCamera ( 0, -5 );
//////dbRotateCamera ( 0, 0, fCameraAngleZ );/////
}