thats what proc_local() does. use proc_local once in the main player function that runs on the server.

proc_local starts a function for the entity it is called for on ALL clients. In that function, every client creates it own instance of the weapon. they (hopefully) all look and behave the same, and the player won't notice they are not synchronized over the network.

have you done and understood the multiplayer workshop (25) ?