Have you actually made any progress.
This isn't a question because I know you haven't.
There's basically only one feasible way of doing this.
"scopes, barrels, stocks and silencers"
Imagine you have 3 of these, available in any combination.
3x3x3x3 is 81 combinations.
81*4 (roughly) datablocks per combination is 324.
So you will have to create 81 models and script around 324 datablocks if you want to pull this off. Have fun.