The action you posted contains an obvious bug in this line:
If (Main_Diff==3)&&(My.Flag3==0){ent_Remove(me);}
You have to terminate the action here. You must not use the 'me' or 'my' pointer anymore after removing the entity.
I don't know if that can be the reason of the player pointer problem. If you can't find the reason, I suggest that you strip down the level so that is just shows the problem, and then send it to me - I'll look into it.