if pause
alarm[0] += 1;
As for the image_alpha, don't even worry about stopping it from going past 1. An opacity of 1 and an opacity of 999 are the same.
The easiest way is to just increase the image_alpha and forget about it.
Step Event:
image_alpha += 1/40;
Replace the 40 with how many steps it will take until the bullet will be opaque.
If you want it to be more step-like, then you can use the code Mazey posted, or you can use a little math.
Method 1 - Set an alarm until full opacity
Create Event:
alarm[0] = 40; //again, change the 40 as needed
Alarm[0] event:
image_alpha = 1;
Step Event:
if !(alarm[0] & 7)
image_alpha += 0.2;
In the sample code, it would be at full opacity in 40 steps and every 8 steps it would increment by 0.2 (that's what the & 7 is for). If your room speed is 60, that should be fast enough. You can adjust the speed in various ways. If you want to double the time between steps, change the 7 to 15. If you want to half the time between steps, change the 7 to 3. If you want any duration in between, change "& 7" to "mod n" where n is the number of steps in between increments. Using mod slower than the method I posted here, but it is much more flexible. After you've figured out how many steps it would take between increments, multiply that value by 5 and set your alarm to that (0.2 * 5 = 1).
Method 2 - Increase opacity over distance
The method depends on the direction of fire. All code here goes in the Step Event.
Horizontal shooter:
if !( (x - xstart) & 7 )
image_alpha += 0.2;
Vertical Shooter:
if !( (y - ystart) & 7)
image_alpha += 0.2;
Free-range Shooter:
if !(point_distance(x,y,xstart,ystart) & 7)
image_alpha += 0.2;
The rules for changing the delay between increments are the same as in Method 1.