Nicht sehr viel anders aber vielleicht ein bisschen weniger fehler anfällig, da kein ent_remove aus der while() schleife und keine ineinander verschachtelten while() schleifen:
Code:

action punkt
{
my.push = -1;
my.z = player.z;
my.passable = on;

my.skill1 = 1;

while(!player) { wait(1); }
while(my.skill1)
{
if (vec_dist (my.x, player.x) < 10)
{
my.skill1 = 0;
}
wait (1);
}

score += 10;
ent_remove(me);
}