Prevent weapon firing

The amount of times I’ve been trying to tackle this problem, but still not find a good solution for it.
I want to prevent the player from firing the weapon, but still be able to move around.
One way that works is by stripping weapons then giving them back, but that removes all variables off them (unless I save them) and it also brings up on the HUD that you’ve been given fucktons of weapons.

Is there any other way?

Are you using sweps or do you wish to prevent all weapons from firing ?

All, kinda like preventing mouseclicks or preventing +attack from working.

yourWeapon:SetNextPrimaryFire(CurTime() + 9999);
yourWeapon:SetNextSecondaryFire(CurTime() + 9999);

Uh, that works I guess, Thanks!