Code:
action follow_path_smooth() {
	my.skill1 = 1; //start with first node
	path_getnode(my,my.skill1,my.skill2,NULL);
	wait(1);
	c_setminmax(my);
	vec_scale(my.min_x,0.8);
	vec_scale(my.max_x,0.8);
	while(1) {
		
		// close to node => get position of next node
		my.skill4 = my.z;
		if(vec_dist(my.skill2,my.x) < 16) {
			my.skill1 = path_nextnode(my, my.skill1, 1);
			path_getnode(my,my.skill1,my.skill2,NULL);
		}
		
		// turn to next node
		vec_diff(my.skill5,my.skill2,my.x);
		vec_to_angle(my.skill8,my.skill5);
		
		my.pan += clamp(ang(my.skill8-my.pan)*0.25,-5,5)*time_step;
		
		c_trace(my.x,vector(my.x,my.y,my.z-500),IGNORE_ME | USE_BOX);
		my.z += (target.z+??-my.min_z*1.25-my.z)*0.25*time_step;
				
		c_move(me,vector(2*time_step,0,0),nullvector,GLIDE | IGNORE_PASSABLE);
		
		ent_animate(me, "walk", my.skill11, ANM_CYCLE);
		my.skill11 += 4 * time_step;
		my.skill11 %= 100;
		wait(1);
	}
}



Should work. Remove the "+??". If the NPC is floating in the air or if his feet are stuck in the ground, add "+??" again and replace the ?? with some values (trial and error... positive values to lift him).


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends