Try this one robertbruce:
Code:

//skill1: TurnSpeed 10
//skill2: MoveSpeed 10
//skill3: JumpHeight 10
//skill4: JumpNode1 1
//skill5: JumpNode2 2
//skill6: JumpNode3 3
//skill7: JumpNode4 4
//skill8: JumpNode5 5
//skill9: JumpNode6 6
//skill10: JumpNode7 7
//skill11: JumpNode8 8
//skill12: JumpNode9 9
//skill13: JumpNode10 10
//flag1: JumpEveryNode
action patrol_path()
{
// attach entity to nearest path
result = path_scan(me,my.x,my.pan,vector(360,180,1000);
if (result == 0) { return; } // no path found

var NodePos[3];

// find first waypoint
var node = 1; // start at first node
path_getnode(my,node,NodePos,NULL);

var angle[3];

var Gravity;

while (1)
{
// find direction
result = vec_to_angle(angle,vec_diff(temp,NodePos,my.x));

// near target? Find next waypoint of the path
if (result < 25)
{
if(my.JumpEveryNode == on || node == my.JumpNode1 || node == my.JumpNode2
|| node == my.JumpNode3 || node == my.JumpNode4 || node == my.JumpNode5
|| node == my.JumpNode6 || node == my.JumpNode7 || node == my.JumpNode8
|| node == my.JumpNode9 || node == my.JumpNode10)
{
Gravity = my.JumpHeight;
}

node = path_nextnode(my,node,1);
path_getnode(my,node,NodePos,NULL);
}

my.skill21 = c_trace(my.x,vector(0,0,-10000),use_box|ignore_me|ignore_passents|ignore_passable);
if(my.skill21 > 5)
{
Gravity -= time_step;
}else
{
if(my.skill21 < 0)
{
Gravity += time_step;
}else
{
Gravity = 0;
}
}

// turn and walk towards target
my.pan += ((angle.pan > my.pan)-(angle.pan < my.pan))*time_step*my.TurnSpeed;
c_move(me,vector(my.MoveSpeed*time_step,0,Gravity),nullvector,glide|ignore_passents|ignore_passable);

wait(1);
}
}



But this is more the answer to your thread...