it could be that the level_load is executed a frame after it is called.
the engine runs the loop again, and level_load is called 2 times.

you could try this:

Code:
action goal()
{
	var range=10;
	while(1)
	{
		if (playerCar.x>my.x-range && playerCar.x<my.x+range)
		{
			break;
		}
		wait(1);
	}
	level_load("leve2.wmb");
}




Check out the throwing game here: The throwing game