var video_mode = 8;
var video_depth = 32;
var video_screen = 1;
var fps_max = 100;

var camera_distance = 200;
var camera_pan;
var camera_tilt;
var camera_move_to[3];


var jump = 0;
var jump_height = 8;
var checkuptemp[3];

var dist_down;


define jump = skill21;


entity* player;

function main()
{
level_load("level.wmb");
enable_polycollision = 2;
}

function cam()
{
camera_pan -= mouse_force.x * 10 * time;
camera_tilt += mouse_force.y * 6 * time;
camera_tilt = clamp(camera_tilt,-45,20);
my.pan = camera_pan;
camera.pan = camera_pan;
temp = fcos(camera_tilt,-camera_distance);
vec_set(camera_move_to.x,vector(my.x + fcos(camera.pan,temp),my.y + fsin(camera.pan,temp),my.z + 20 + fsin(camera_tilt,-camera_distance)));
temp = min(1,0.5 * time);
camera.x += temp*(camera_move_to.x - camera.x);
camera.y += temp*(camera_move_to.y - camera.y);
camera.z += temp*(camera_move_to.z - camera.z);
vec_diff(temp.x,camera.x,my.x);
vec_normalize(temp.x,16);
vec_add(temp.x,camera.x);

trace_mode = ignore_me + ignore_passable + glide;
IF (trace(my.x,temp.x) > 0)
{
vec_diff(temp.x,my.x,target.x);
vec_normalize(temp.x,16);
vec_set(camera.x,target.x);
vec_add(camera.x,temp.x);
}

vec_diff(temp.x,my.x,camera.x);
vec_to_angle(camera.pan,temp.x);


}

function gravity()
{
vec_set(temp, my.x);
temp.z = -5000;
trace_mode = ignore_me + use_box + ignore_sprites + glide;
-trace(my.x, temp);

if(result > 25){my.skill3 -= 2 * time;}
else
{
my.skill3 = -trace(my.x, temp)* 0.5;
}
}

action ent_player()
{
player = my;
wait(1);
//c_setminmax(my);
my.narrow = on;
while(1)
{
wait(1);
cam();
gravity();
ent_cycle("stand", my.skill4);
my.skill4 += 5 * time; my.skill4 %= 100;

if(key_w)
{
ent_cycle("run", my.skill4);
my.skill4 += my.skill1 * time;
my.skill1 += 0.5;
}
else
{
my.skill1 = 0;
}

my.skill1 = clamp(my.skill1,-4,4);
c_move(me,my.skill1,nullvector,IGNORE_ME|USE_BOX|GLIDE);

vec_set(temp, my.x);
temp.z = -5000;
c_trace (my.x,temp, USE_BOX|IGNORE_ME|IGNORE_PASSABLE|GLIDE);
if(key_space && my.jump==0&&result<5)
{
my.skill3 += jump_height;
my.jump = 1;
while(my.jump == 1)
{
wait(1);
Cam();
ent_cycle("jump", my.skill7);
if(my.skill7 < 100)
{
my.skill7 += 20;
}
else
{
gravity();
}

vec_set(temp, my.x);
temp.z = -5000;
c_trace (my.x,temp, USE_BOX|IGNORE_ME|IGNORE_MODELS|IGNORE_PASSABLE|GLIDE);
if((my.skill7 >= 90) && (result < 7))
{
my.jump=0;
}
c_move(me,my.skill1,nullvector,USE_BOX|IGNORE_ME|IGNORE_PASSABLE|IGNORE_SPRITES|GLIDE);
vec_set(checkuptemp,vector(0,0,35));
vec_rotate(checkuptemp,my.pan);
vec_add(checkuptemp,my.x);
result = trace(my.x,checkuptemp);
IF (result != 0)
{
gravity();my.skill3 = -2;
}
}
my.skill7 = 0;
}
}
}

action Models_Poly()
{
my.POLYGON = on;
}

Ok here's the whole code. I change to C_trace what i could/managed. But i got worst, changed some values in IGNORE_ME|IGNORE_MODELS and it got worst.
If anyone can please fix this problem... I spent the day repeating the same thing and found no way to solve the problem of the entity interacting with models. All my guesses are that it really has to do with c_trace and c_move and apply the Ignore_me|glide, etc...
Thanks for all the help until now.