The solution to the original question is extremely simple, provided that you understand this concept:
If you want to play sounds on the client's end that the client might not have (i.e., sounds included with an Add-On), you need datablocks.
Just create datablocks for the few sounds you might want to play and then use the onFire() method to send a play2D() or play3D() to the client whose player is firing the weapon. Obviously you don't want to create a ridiculous amount of datablocks for this purpose, but creating a few is fine.
I can't believe this has gone on for 3 pages.