I think I understand what you're saying. I'll try at a solution:
When the player's x value goes beyond the x-coordinate of the room's center, have there be a set of code like this:
if (x > room_width/2) {
if (!alarm_set) {
alarm[0] = 30; // or whatever time you want.
alarm_set = true;
}
}
the variable alarm_set should be in the player's create event, set to false at the start.
when the player crosses to the center, the code that sets alarm[0] to 30 is only called once, since suddenly alarm_set is now true, and setting alarm[0] to 30 can ONLY happen when alarm_set is false.
and when you create an event for alarm[0], have the code inside be:
instance_activate_all();
if I understand correctly, you wanted the instances to be activated after a certain amount of time when the player gets past the middle of the stage? I hope this helps