This is really prob , i think when we add a force to wall the problem is gone o0

Code:
void playerEvent(){
	if(event_type == EVENT_BLOCK){
		draw_text("AUCH!", 10, 120, COLOR_WHITE);
	}
}

action actHero(){
	set(my, TRANSLUCENT);

	vec_fill(my.scale_x, 1);
	wait(1);
	c_setminmax(my);

	my.emask |= ENABLE_BLOCK;
	my.event = playerEvent;
	var speed_x;
	while(my){
		
		my.skill1 = ((key_w || key_cuu) - (key_s || key_cud));
		my.skill2 = ((key_a || key_cul) - (key_d || key_cur));
		my.skill3 = 0;
		vec_rotate(my.skill1, vector(camera.pan, 0, 0));
		
		accelerate(my.skill4, my.skill1 * 5 * time_step, 0.9);
		accelerate(my.skill5, my.skill2 * 5 * time_step, 0.9);
		my.skill6 = 0;
		
		var result2  = c_trace(my.x,vector(my.x+my.max_x+1,my.y,my.z),IGNORE_ME|IGNORE_SPRITES|IGNORE_CONTENT);
		draw_text("RESULT:", 10, 50, COLOR_WHITE);
		draw_text(str_for_num(NULL, result2), 150, 50, COLOR_RED);
		if(result2 > 0)
		{
			speed_x = 1;
		}
		else
		{
			speed_x = 0;
		}
		
		move_friction = 0.1;
		c_move(my, nullvector, vector(my.skill4+speed_x, my.skill5, 0), GLIDE);
		
		draw_text("Y INPUT:", 10, 150, COLOR_WHITE);
		draw_text(str_for_num(NULL, my.skill1), 150, 150, COLOR_RED);
		draw_text("X INPUT:", 10, 170, COLOR_WHITE);
		draw_text(str_for_num(NULL, my.skill2), 150, 170, COLOR_RED);
		
		my.z = 8;
		
		vec_set(camera.x, vector(my.x, my.y, my.z + 250));
		vec_set(camera.pan, vector(90, -90, 0));
		
		wait(1);
	}
}

// main game function:
void main(){
	warn_level = 6;
	fps_max = 60;
	freeze_mode = 1;
	level_load("map.wmb");
	wait(3);
	freeze_mode = 0;
}