Hallo,
ich glaube da fehlt nur ein trace nach unten der dann in der c-move benutzt wird. Probiers mal hiermit(nur als ansatz,
das Springen muß dann sicher korrigiert werden)

action player_move()
{
var reldist[3];
var absdist[3];
my.narrow = on;
var input_vec[3];
var Vz = 0;
var jump_able = 1;
var vFeet[3];

vec_for_min(vFeet,me);

my.invisible = on;

player = me;
camera_move();

while(me)
{
vec_set(reldist.x,nullvector);

input_vec.x = (key_w - key_s) * time * 17;
input_vec.y = (key_d - key_a) * time * -10;


var dist_down;
if(c_trace(my.x,vector(my.x,my.y,my.z-5000),IGNORE_ME | IGNORE_PASSABLE | USE_BOX) > 0)
{
dist_down = my.z + vFeet.z - target.z;
}

my.pan -= 30 * mouse_force.x * time;
camera.pan = my.pan;
camera.tilt = min(max(ang(camera.tilt + 20 * mouse_force.y * time),-60),60);



Vz += (Vz == 0) * 70 * key_space * jump_able;

if(Vz > 0)
{
jump_able = 0;
}
Vz -= (Vz > 0);




c_move(me,input_vec,nullvector,IGNORE_ME | IGNORE_PASSABLE | USE_BOX);
c_move(me,nullvector,vector(0,0,(Vz-dist_down) * time),IGNORE_ME | IGNORE_PASSABLE | USE_BOX);

if(trace_hit)
{
jump_able = 1;
}


wait(1);
}
}