Sorry that I have no time to check it out...
but this one should be work
Code:
  
var distance_to_target;
var move_position[3]; //move vector
var my_target[3]; //target vertor
var vecTo[3]; var vecFrom[3]; var dest[3];
define _speed, skill1;
define _moving, skill2;

IFNDEF MSG_DEFS;
FONT digit_font,<digfont.pcx>,12,16;
ENDIF;
panel helper
{
digits = 20, 20, 3, digit_font, 1,player._moving;
digits = 20, 40, 3, digit_font, 1,distance_to_target;
flags REFRESH,visible;
}


Function get_target()
{
while(mouse_left == 1)
{
MOUSE_POS.X = POINTER.X; MOUSE_POS.Y = POINTER.Y;
vecFrom.X = MOUSE_POS.X;
vecFrom.Y = MOUSE_POS.Y;
vecFrom.Z = 1;// close point
vec_set(vecTo,vecFrom);
vec_for_screen(vecFrom,CAMERA);
vecTo.Z = 10000;
vec_for_screen(vecTo,CAMERA);// far point
trace(vecFrom,vecTo);// trace a line between the two points
vec_set(my_target,target);
vec_set(move_position,target);
vec_sub(move_position,player.x);
vec_to_angle(player.pan,move_position);
distance_to_target = vec_dist(player.x,my_target.x);//calculate distance
player._moving = 1;//I have to move
player.tilt = 0;
wait(1);
}
}

function player_move()
{
while(1)
{
if(player._moving == 1) //if I have to move...
{
distance_to_target = vec_dist(player.x,my_target.x);
if(distance_to_target > 45)//if target is far away...
{
vec_set(temp,my_target.x);// keep target
vec_sub(temp,player.x); // check my position
vec_to_angle(player.pan,temp);// turn to target
my._speed = 10;
}
if(distance_to_target <= 45)//if target is close
{
player._moving = 0;//I have not to move anymore
my._speed = 0;
}
}
if(player._moving == 0) //if I have not to move...
{
my._speed = 0;
wait(1);// do nothing.
}

my.tilt = 0;//stay straight
vec_set(temp,my.X);
temp.Z -= 1000;
trace_mode=IGNORE_ME+IGNORE_MODELS+ignore_passable + USE_BOX;
result = trace (my.x, temp);
my.z -= result; //keep me on the ground
c_move(me,vector(my._speed *time_step,0,0),nullvector,GLIDE | ACTIVATE_TRIGGER | IGNORE_SPRITES | IGNORE_PASSENTS | use_box);
wait(1);
}
}

action my_player
{
player = me;
MY.FAT = OFF;
MY.NARROW = ON;

mouse_range = 10000;
player_move();
}

On_mouse_left get_target;




Last edited by tompo; 04/16/07 18:03.

Never say never.