@Rackscha: Yap, this is what I have tried at first. But the offset works not correctly. If I rotate the player, the camera will move around in a kind of ellipse.

Code:
//////////////////////////////////////////////////////////////////////////////////////////////
void CAMERA_calculate()
{
	VECTOR vecOffset;
	while(1)
	{
		vecOffset.x = 0;
  		vecOffset.y = 50;
  		vecOffset.z = 0;
  		vec_rotate(vecOffset,cameraContainer.eulerPan);
  		cameraContainer.currentDistance = (cos(cameraContainer.eulerTilt) * cameraContainer.totalDistance);
		camera.x = (cameraContainer.pivotX + vecOffset.x - cos(cameraContainer.eulerPan) * cameraContainer.currentDistance);
		camera.y = (cameraContainer.pivotY + vecOffset.y - sin(cameraContainer.eulerPan) * cameraContainer.currentDistance);
		camera.z = (cameraContainer.pivotZ + vecOffset.z + sin(cameraContainer.eulerTilt) * cameraContainer.totalDistance);

		// also this
		camera.x = (cameraContainer.pivotX + vecOffset.x + fcos(cameraContainer.eulerPan) * cameraContainer.currentDistance);
		camera.y = (cameraContainer.pivotY + vecOffset.y + fsin(cameraContainer.eulerPan) * cameraContainer.currentDistance);
		camera.z = (cameraContainer.pivotZ + vecOffset.z + fsin(cameraContainer.eulerTilt) * cameraContainer.totalDistance);


		camera.pan = cameraContainer.eulerPan;
		camera.tilt = -(cameraContainer.eulerTilt);
		camera.roll = 0;
		wait(1);
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////



maybe wrong place?!