This probably isn't what you want and it might not be true, but here goes.
:beat:
From what I can tell, the way the M21 works is that its config file specifies that it's scope view can be zoomed from around 8x to 25x. The config also suggests that it can be "zeroed" beween 80m and 400m. As you zoom the scope in the weapon's true aim point goes up from 80m to 400m, so that when you are fully zoomed the weapon is zeroed at 400m.
Now here is where the game forces you to play realistically ! If you make your sniper the leader of a two man team then all you have to do is select your offsider in the usual way. Once you do this you can determine the range to the target using the litle icon that appears in place of your cursor.
Find the zoom stops (in and out), work out the appropriate zoom, deselect your man and fire. You should be zeroed in on your target and hit dead centre, so long as he is between 80m and 400m. Your offsider is effectively helping you call in the shots !
Now I could be wrong here but I am currently dissecting the config files and the master config for the game and the only entries that are different between the Dragunov and the M21 are these zoom values. Apparently, you can give a weapon a variable opticsZoom but keep the distanceZoom fixed (ie Dragunov) or you can have them both variable (ie M21).
Thinking about this some more - I suppose that this means you could give a weapon a fixed opticsZoom and a variable distanceZoom - the scope view will be fixed but the zero point cold be variable between any points that you want.
The only problem is that you have no clue what level of distanceZoom you're at - you can get 100% accurate distance info from your spotter but you'll still have to estimate the appropriate distance zoom yourself.
Maybe this is what they intended ?
Hope that this helps !
Roni