You know that the main function is called exactly once and that is at the program's start? If you want to reexecute it you have to manually call it, right?
Code:
heroEnt = ent_create(ball_string, vector(0,0,100), actBall);
while(!heroEnt){ wait(1); }

You've got dead code there by the way. The while loop will never be executed. You assigned a value other than NULL to it, so hero_ent will always ne non-NULL. in the next line. Until end_create returns NULL, then you have an endless loop.


Always learn from history, to be sure you make the same mistakes again...