#define speed_z skill50
var key_space_off = 0;
VECTOR temp;
...
vec_set(temp,vector(my.x,my.y,my.z-500));
c_trace(my.x,temp,IGNORE_ME | IGNORE_PASSABLE);
if(!trace_hit) vec_set(target,temp);
if(my.z+my.min_z+5 > target.z || my.speed_z > 0)
{
my.speed_z = maxv(my.speed_z-10*time_step,-80);
c_move(me,nullvector,vector(0,0,my.speed_z*time_step),IGNORE_PASSABLE | GLIDE);
}
else
{
my.speed_z = 0;
my.z += (target.z-my.min_z+3-my.z)*time_step; //or set the position directly... (3 and 5 act as a simple buffer)
if(key_space)
{
if(key_space_off)
{
my.speed_z = 50;
key_space_off = 0;
}
}
else key_space_off = 1;
}