Keep in mind that ent_move moves the my entity.

Maybe this code is the code you posted after its been run through a dual parallel universe filter and merged...or it could just be some gibberish I typed in for kicks.

Code:
string enemydot_mdl = <enemydot.mdl>;
// entity* ent0_;
// define hEnt0, skill22;
action enemydot {

// while(my.hEnt0 == 0) { wait(1); }
// Supposedly you is set to the entity that created this entity and you is local.
// I've seen this work in practice and have viewed posts from others indicating that it works,
// but I'm still not offering a guarantee.
// ent0_ = ptr_for_handle(my.hEnt0);
my.y = your.y;
// my.y = ent0_.y;
my.z = 145;
my.unlit = on;
my.ambient = 100;
my.passable = on;
//my.visible = on;
var move_crosshair[3];
while(you != null) {
move_crosshair.x = your.x - my.x;
move_crosshair.y = your.y - my.y;
move_crosshair.z = 0;
ent_move(move_crosshair, nullvector);
wait(1);
}
/*
while(my.hEnt0 != 0) {
ent0_ = ptr_for_handle(my.hEnt0);
move_crosshair.x = ent0_.x - my.x;
move_crosshair.y = ent0_.y - my.y;
move_crosshair.z = 0;
ent_move(move_crosshair, nullvector);
wait(1);
}
*/
ent_remove(me);
}
function create_enemydot() {
sleep(.5); //ent_create can't happen until .5 secs after level loads
you = ent_create(enemydot_mdl, vector(0, my.y, my.z), enemydot);
// my.hEnt0 = handle(you);
// your.hEnt0 = handle(me);
}

action actor_walk_fight {
//...
create_enemydot(); //calls function create_enemy
//...
// I'm dead
// ent0_ = ptr_for_handle(my.hEnt0);
// ent0_.hEnt0 = 0;
}