The title is pretty much self-explanatory.
One more thing I’d like to add, though, is that I’m using the FastCast module for them.
Just one server script, and for each weapon you could make a function inside the script.
The most performance effecient way would be to have one script. The reason for this is - I assume that all or most of your weapons go through the same code - So instead of having replicated code in each weapon, you would instead want to have a WeaponHandler script, that handles the weapons as a whole.
I do use this for most of the other weapons (swords), however, my guns would use part cache in combination with fast cast. How would I make the bullet template different, or even have a different cast behavior? (different weapon types = different bullets/different behaviors)
If you want different settings for each weapon, you just place those settings somewhere. You can for example have all the settings in a modulescript, and then use the weapon name as reference to which settings to use.