My guess is - yes.
However, in poking about the Gmod lua wiki, I can't find the 'aha' function or hook that would do it.
I've never tinkered in GUI in Gmod.
Stickly Man or MrPresident could probably give more direction.
Logic in my mind, if it's possible, would be something like below pseudo-code, using a hook that could be used to over-ride what players saw.
function Check_Wep_access (ply)
weps = { } -- There's likely a gmod table of weapons available to the player domain somewhere . It would be assigned to weps
allowed_weps = { } -- Set up for a table in code further down.
for i, v in pairs( weps ) do -- We're cycling through all weapons, v will be the weapon.
if ply:IsUserGroup("custom_group") then -- Is this player part of an allowed group.
allowed_weps[#allowed_weps+1] = v -- add weapon to the table of allowed
end
end
return allowed_weps -- return allowed to game
end
hook.Add( whatever_hooks_Weapons_spawn_menu, blah, blah)
The above would get a bit more complicated as you'd need to know your list of weapons ahead of time, and compare minimum access to any of them for each one.
The weps table could grow to include something like { [ wep = weapon1, min = "min_group" ], [ wep = weapon2, min = "min_group" ] }. Perhaps any not specified would be allowed by default.