Как ограничить доступ q menu

Помогите как сделать q menu разрешения по фкладкам, есть lua по этому доступу вот lua
sh_spawnprops.lua (26.5 КБ)
Там есть в конце код кому фулл q menu а кому только разрешённые пропы.
Не моглиб бы помочь там сделал так дабы у
superadmin",“root”,“sudo-root было фулл q menu а мне надо убрать у
superadmin”,"root Вкладки (Постобработка, Дубликаты, Сохранение) А как не знаю
А у sudo-root убрать (Постобработка, Дубликаты, Сохранение, Транспорт, Энтити)

  local BULLSHIT = {
      ['root'] = {
          [language.GetPhrase("spawnmenu.category.postprocess")] = true, 
        [language.GetPhrase("spawnmenu.category.dupes")] = true, 
        [language.GetPhrase("spawnmenu.category.saves")] = true,
    },
    ['sudo-root'] = {
        [language.GetPhrase("spawnmenu.category.entities")] = true, 
        [language.GetPhrase("spawnmenu.category.vehicles")] = true, 
        [language.GetPhrase("spawnmenu.category.postprocess")] = true, 
        [language.GetPhrase("spawnmenu.category.dupes")] = true, 
        [language.GetPhrase("spawnmenu.category.saves")] = true,
    },
  }

  local tabstoremove = {
      [language.GetPhrase("spawnmenu.content_tab")] = true, 
      [language.GetPhrase("spawnmenu.category.npcs")] = true, 
      [language.GetPhrase("spawnmenu.category.entities")] = true, 
      [language.GetPhrase("spawnmenu.category.weapons")] = true, 
      [language.GetPhrase("spawnmenu.category.vehicles")] = true, 
      [language.GetPhrase("spawnmenu.category.postprocess")] = true, 
      [language.GetPhrase("spawnmenu.category.dupes")] = true, 
      [language.GetPhrase("spawnmenu.category.saves")] = true,
  }

  local function RemoveSandboxTabs()
      for k, v in pairs(g_SpawnMenu.CreateMenu.Items) do
          local group = BULLSHIT[LocalPlayer():GetUserGroup()]
          if (tabstoremove[v.Tab:GetText()] and not group) or (group and group[v.Tab:GetText()]) then
              g_SpawnMenu.CreateMenu:CloseTab(v.Tab, true)
          end
      end
  end

hook.Add("SpawnMenuOpen", "blockmenutabs", RemoveSandboxTabs)

Это туда же ?

if CLIENT then
local CfgVars = {}
local WEBSITE = {}
CfgVars[“EquipmentDecayTimer”] = 3
CfgVars[“WeaponDecayTimer”] = 3
CfgVars[“DrugDecayTimer”] = 3
local buytable = {}
buytable[“1) Строительство:”] = {}
buytable[“1) Строительство:”].Model = Props_1
buytable[“1) Строительство:”].Data = Props_1
buytable[“2) Основное:”] = {}
buytable[“2) Основное:”].Model = Props_3
buytable[“2) Основное:”].Data = Props_3
buytable[“3) Строительство2:”] = {}
buytable[“3) Строительство2:”].Model = Props_4
buytable[“3) Строительство2:”].Data = Props_4
local PANEL = {}

function PANEL:Init()
    self.PanelList = vgui.Create("DPanelList", self)
    self.PanelList:SetPadding(4)
    self.PanelList:SetSpacing(2)
    self.PanelList:EnableVerticalScrollbar(true)
    self:BuildList()
end

local function AddComma(n)
    local sn = tostring(n)
    sn = string.ToTable(sn)
    local tab = {}

    for i = 0, #sn - 1 do
        if i % 3 == #sn % 3 and not (i == 0) then
            table.insert(tab, ",")
        end

        table.insert(tab, sn[i + 1])
    end

    return string.Implode("", tab)
end

function PANEL:BuildList()
    self.PanelList:Clear()
    local Categorised = {}

    for k, v in pairs(buytable) do
        v.Category = k
        Categorised[v.Category] = Categorised[v.Category] or {}
        table.insert(Categorised[v.Category], v)
    end

    for CategoryName, v in SortedPairs(Categorised) do
        local Category = vgui.Create("DCollapsibleCategory", self)
        self.PanelList:AddItem(Category)
        Category:SetExpanded(false)
        Category:SetLabel(CategoryName)
        Category:SetCookieName("EntitySpawn." .. CategoryName)
        local Content = vgui.Create("DPanelList")
        Category:SetContents(Content)
        Content:EnableHorizontal(true)
        Content:SetDrawBackground(false)
        Content:SetSpacing(2)
        Content:SetPadding(2)
        Content:SetAutoSize(true)
        number = 1

        for k, v in pairs(buytable[CategoryName].Model) do
          
            local Icon = vgui.Create("SpawnIcon", self)
            local Model = buytable[CategoryName].Model[number]

            if (buytable[CategoryName].Model[number] ~= nil) then
                Icon:SetModel(buytable[CategoryName].Model[number])
            else
                Icon:SetModel("models/error.mdl")
            end

            Icon.DoClick = function()
                RunConsoleCommand("gm_spawn", Model)
            end

            local lable = vgui.Create("DLabel", Icon)
            lable:SetFont("DebugFixedSmall")
            lable:SetTextColor(color_black)
            lable:SetText(Model)
            lable:SetContentAlignment(5)
            lable:SetWide(self:GetWide())
            lable:AlignBottom(-42)
            Content:AddItem(Icon)
            number = number + 1
        end
    end

    self.PanelList:InvalidateLayout()
end

function PANEL:PerformLayout()
    self.PanelList:StretchToParent(0, 0, 0, 0)
end

local CreationSheet = vgui.RegisterTable(PANEL, "Panel")

local function CreateContentPanel()
    local ctrl = vgui.CreateFromTable(CreationSheet)

    return ctrl
end

local function RemoveSandboxTabs()
	local AccsesGroup = {"superadmin"}
    
    local BULLSHIT = {
        ['root'] = {
            [language.GetPhrase("spawnmenu.category.postprocess")] = true, 
          [language.GetPhrase("spawnmenu.category.dupes")] = true, 
          [language.GetPhrase("spawnmenu.category.saves")] = true,
      },
      ['sudo-root'] = {
          [language.GetPhrase("spawnmenu.category.entities")] = true, 
          [language.GetPhrase("spawnmenu.category.vehicles")] = true, 
          [language.GetPhrase("spawnmenu.category.postprocess")] = true, 
          [language.GetPhrase("spawnmenu.category.dupes")] = true, 
          [language.GetPhrase("spawnmenu.category.saves")] = true,
      },
    }
    local tabstoremove = {
        	language.GetPhrase("spawnmenu.content_tab"), 
	        language.GetPhrase("spawnmenu.category.npcs"), 
	        language.GetPhrase("spawnmenu.category.entities"), 
	        language.GetPhrase("spawnmenu.category.weapons"), 
	        language.GetPhrase("spawnmenu.category.vehicles"), 
	        language.GetPhrase("spawnmenu.category.postprocess"), 
	        language.GetPhrase("spawnmenu.category.dupes"), 
	        language.GetPhrase("spawnmenu.category.saves")
	}
	
    local function RemoveSandboxTabs()
        for k, v in pairs(g_SpawnMenu.CreateMenu.Items) do
            local group = BULLSHIT[LocalPlayer():GetUserGroup()]
            if (tabstoremove[v.Tab:GetText()] and not group) or (group and group[v.Tab:GetText()]) then
                g_SpawnMenu.CreateMenu:CloseTab(v.Tab, true)
            end
        end
    end

	if !table.HasValue(AccsesGroup, LocalPlayer():GetUserGroup()) then 
    	for k, v in pairs(g_SpawnMenu.CreateMenu.Items) do
            if table.HasValue(tabstoremove, v.Tab:GetText()) then
                g_SpawnMenu.CreateMenu:CloseTab(v.Tab, true)
                RemoveSandboxTabs()
            end
        end
    end
end

hook.Add("SpawnMenuOpen", "blockmenutabs", RemoveSandboxTabs)

local function BunkMenu()
    return
end

spawnmenu.AddCreationTab("Разрешенные пропы", CreateContentPanel, "icon16/application_view_tile.png", 4)

end

sh_spawnprops.lua (27.1 КБ)

Спасибо