As a general principle, what you are doing should work. However, I would recommend a slightly different approach. Instead of adding to a variable, use four seperate variables. Apart from anything else, when it comes to debugging it makes it easier to see what's going on. For example, if one of the choppers is causing a problem it's easier to see which one.
so instead of heloloaded = heloloaded +1 you would have
helo1 = true
and so on. The choppers should have a load waypoint synchroed with the getin waypoints. In the condition field of this waypoint you would have
helo1 and helo2 and helo3 and helo4
Remember that if the game meets an undefined variable it treats the whole expression as false. (To define a variable you could put var1=true or var1=0 in your init.sqs.)
That may not work, the combination of the variables and the synching may create a circular argument... can't remember.
If it doesn't work tell us more about what's going wrong. "It doesn't work" doesn't give us much to go on.