Hi
As simple overview. Keep you data close to the BP.
You could run everything in one BP, but OMG, save is horrible, I made a game from 1 BP, every save takes 5-10 seconds.
You could have all gun data in one BP, would cut back on casting.
Casting could also be your downfall, if you can, reducing casting if possible.
So guns in one BP, Player Data in another, inventory in another, etc.
This does a few simple things, allows debugging easier, neaten your work up.
Do not discount functions to get a lot of stuff done.
I know it is not the perfect answer, but will give you a basic guide.