Code:
// C-Script
/*
	This sample is an attempt at combining the gravity / movement sample found in the manual entry "c_move"
	(attributed to jcl?) and a path movement sample found in this thread.
	It is an example which may be used to help determine what, or what not, to do.
	
*/
define _nodePos, skill20;

function evf_getFloor() {
	var vDown[3]; vec_set(vDown, my.x);
	var evResult; evResult = 0;
	var vFeet[3]; 
	vec_for_min(vFeet, me);
	vDown.z -= (my.max_z - my.min_z) * 3;
	evResult = c_trace(my.x, vDown, IGNORE_ME | IGNORE_PASSABLE | USE_BOX);
	if (trace_hit) {
		evResult = my.z + vFeet.z - target.z;
	} else {
		evResult = 666;
	}
	return(evResult);
}

function boot_player() {
	var nodeResult; nodeResult = 0;
	var node; node = 1; // start at first node
	var angle[3]; vec_set(angle, nullvector);
	var evDistZ; evDistZ = 0;
	var distX; distX = 0;
	var speedZ; speedZ = 0;
	
	my.ambient=100;
	// attach entity to nearest path
	nodeResult = path_scan(me,my.x,my.pan,vector(360,180,1000));
	if (nodeResult == 0) { return; } // no path found
	path_getnode(my,node,my._nodePos,NULL);
	
	while (me != NULL) {
		nodeResult = vec_to_angle(angle, vec_diff(temp, my._nodePos, my.x));
		if (nodeResult < 25) {
			node = path_nextnode(me,node,1);
			if (node == 3) {
				node=1;
				nodeResult = path_scan(me,my.x,my.pan,vector(360,180,1000));
			}
			path_getnode(my,node,my._nodePos,NULL);
		}
		
		// turn to node pos
		my.pan = angle[0];
		//my.z = -180; //<==if i put this it will stuck on the point where the player is gliding.
		
		//c_move(me,vector(3*time_step,0,0),NULL,GLIDE); // walk ahead...
		evDistZ = evf_getFloor();
		if (evDistZ > 0) {
			evDistZ = clamp(evDistZ, 0, accelerate(speedZ, 5, 0.1));
		} else {
			speedZ = 0;
		}
		distX = 3 * time_step;
		distX = sign(distX) * (abs(distX) + 0.5 * evDistZ);
		c_move(my,vector(distX,0,0), vector(0, 0, -evDistZ), IGNORE_YOU | IGNORE_PASSABLE | IGNORE_WORLD | GLIDE ); //moves the player
		// animation
		my.skill42 += 6*time_step;
		if(my.skill42 > 100) {my.skill42 = 0;}
		ent_animate(my,"walk",my.skill42,ANM_CYCLE);
		
		// test camera
		// temp.x = (my.max_x - my.min_x) * -3; temp.y = 0; temp.z = 0;
		// vec_rotate(temp, my.pan);
		// vec_add(temp, my.x);
		// vec_set(camera.x, temp);
		// vec_diff(temp, my.x, camera.x);
		// vec_to_angle(camera.pan, temp);
		wait(1);
	}
}