As for the first person, it works fine for the main client, but not when you have multiple clients as the third person mesh does not show up and it only shows the floating first person mesh.
And I tried adding the lighting to the SimulateFire function but if the fire button is not released, then the muzzle lighting does not turn off.