Why not use _p:SelectWeapon to change via class name?
This is what I did to be able to use the function clientside:
function META_PLAYER:SelectWeapon( _w, _class )
hook.Call( "PlayerSwitchWeapon", GAMEMODE, self, self:GetActiveWeapon( ), _w );
networking:SendToServer( "SelectWeapon", _class );
networking system will be released soon; but it simply sends a message to the server and the server does the same call to switch weapon.
networking:AddReceiver( "SelectWeapon", function( _p, _class )
_p:SelectWeapon( _class );
By using : http://wiki.garrysmod.com/page/GM/PlayerSwitchWeapon on the client, it aides with prediction.