i should have posted this before, but i suppose this can help you:
Code:
FUNCTION rotate_entity_(rotate_angle,rotate_speed)
{
	IF (my.pan == rotate_angle) { return; }
	result = ang(rotate_angle - my.pan);
	IF (result > 0) { my.pan += rotate_speed * time_step; }
	IF (result < 0) { my.pan -= rotate_speed * time_step; }
	IF (ang(rotate_angle - my.pan) < 0 && result > 0) { my.pan = rotate_angle; }
	IF (ang(rotate_angle - my.pan) > 0 && result < 0) { my.pan = rotate_angle; }
}

this is how you would use it:
Code:
vec_set (temp, you.x);
vec_sub (temp, my.x);
vec_to_angle (temp_pan, temp);
rotate_entity_(temp_pan,turn_speed_);
///if you want to keep tilt at 0, just add "my.tilt = 0;" right here


if you'd prefer to use c_rotate, then use this one:

Code:
FUNCTION rotate_entity_(rotate_angle,rotate_speed)
{
	var r;
	IF (my.pan == rotate_angle) { return; }
	r = ang(rotate_angle - my.pan);
	IF (r > 0) { c_rotate(me, vector(rotate_speed*time_step,0,0), ignore_passable); }
	IF (r < 0) { c_rotate(me, vector(-rotate_speed*time_step,0,0), ignore_passable); }
	IF (ang(rotate_angle - my.pan) < 0 && r > 0) { my.pan = rotate_angle; }
	IF (ang(rotate_angle - my.pan) > 0 && r < 0) { my.pan = rotate_angle; }
}



- aka Manslayer101