help me please create a f4menu categories

Hello, I do not understand how to add a category to the list of works, ie works divided into categories.
Look at the code and find function
local function allowedCat(option)

Help me please!
Sorry for my bad english!

https://mega.nz/#!lwkHxIKQ!zYFPBLVO5ljbV7x95h5XjHSKgTzkeln7Q19wi39C6cc


MainMenu = MainMenu or {}

local function fixShit(panel, label)
	label:SetText(DarkRP.textWrap(label:GetText(), "TextFont", 480))
	local x, y = surface.GetTextWidth(label:GetText(), "TextFont")
	panel:SetTall(y + 60)
end

hook.Add("OnPlayerDeath", "MainMenu.OnPlayerDeath", function()
	MainMenu:Remove()
end)

FADE_DELAY = 0.3

CATEOGRY_ACTIVE = -1
SELECTED_OPTION = nil

function MainMenu:CreateBlur()
	self.Blur = vgui.Create("MGradient")
	self.Blur:FadeIn(FADE_DELAY)
	if self.BarPanel && self.BarPanel:IsValid() then
		self.BarPanel:FadeOut(FADE_DELAY)
	end
	gui.EnableScreenClicker(true)
end

function MainMenu:GetBlur()
	return self.Blur && self.Blur:IsValid()
end

function MainMenu:RemoveBlur()
	RemoveLastItem()
	self.Blur:FadeOut(FADE_DELAY, true, function()
		gui.EnableScreenClicker(false)
	end)
	if self.BarPanel && self.BarPanel:IsValid() then
		self.BarPanel:FadeIn(FADE_DELAY)
	end
end
hook.Remove("Think", "MainMenu.Think")

local active = false
local last_pressed = 0
hook.Add("Think", "MainMenu.Think", function()
	if last_pressed > CurTime() then return end
	if !LocalPlayer():Alive() then return end
	if input.IsKeyDown(KEY_TAB) || input.IsKeyDown(KEY_F4) then
		if MainMenu:IsValid() then
			MainMenu:Remove()
		else
			MainMenu:Create()
			last_pressed = CurTime() + 1
		end
	end
end)

MainMenu.NavigationList = {}
function MainMenu:AddNavigation(text, func, onClose, options)
	return table.insert(self.NavigationList, {text = text, func = func, onClose = onClose, options = options})
end

CATEGORY_MAIN = MainMenu:AddNavigation("Главное", function(parent)
	parent:SetDrawBackground(false)

	local panel = vgui.Create("MPanel")
	panel:SetSize(500, ScrH())
	panel:SetDrawBackground(false)
	parent:AddItem(panel)

	local JobInfo = vgui.Create("MLabel", panel)
	JobInfo:SetPos(0, 110)
	JobInfo:SetFont("HeaderFont3")
	JobInfo:SetColor(RPExtraTeams[LocalPlayer():Team()].color)
	JobInfo:SetText(RPExtraTeams[LocalPlayer():Team()].name)

	local WalletInfo = vgui.Create("MLabel", panel)
	WalletInfo:SetFont("TextFont")
	WalletInfo:SetText("Кошелек: "..(LocalPlayer().DarkRPVars.money or 0).." рублей")
	WalletInfo:SetPos(0, 165)
	WalletInfo:FadeIn(FADE_DELAY)

	local actionPanel = vgui.Create("MPanelList", panel)
	actionPanel:SetOffset(0)
	actionPanel:SetDrawBackground(false)
	actionPanel:SetPos(0, 175)

	for k, v in pairs(F1Menu.List) do
		if !v.check || v.check() then
			local button = vgui.Create("MButton")
			button:SetText(v.name)
			button:OnClick(v.func)
			actionPanel:AddItem(button)
		end
	end
end, function(parent)
	parent:SetDrawBackground(true)
end)

CATEGORY_JOBS = MainMenu:AddNavigation("Работы", function(parent)
	local panel = vgui.Create("MPanel")
	panel:SetSize(500, 95)

	local label = vgui.Create("MLabel", panel)
	label:SetPos(10, 2)
	label:SetFont("HeaderFont3")
	label:SetColor(COLOR_HOVER)
	label:SetText("Информация")

	local label = vgui.Create("MLabel", panel)
	label:SetPos(15, 50)
	label:SetFont("TextFont")
	label:SetText([[Вы можете получить работу с NPC. Вам придется разблокировать некоторые из рабочих мест за деньги.]])
	
	fixShit(panel, label)

	parent:AddItem(panel)
	for k, v in pairs(RPExtraTeams) do
		if v.type then continue end
		if v.customCheck and not v.customCheck(LocalPlayer()) then
			continue
		end

		if (type(v.NeedToChangeFrom) == "number" and LocalPlayer():Team() ~= v.NeedToChangeFrom) or (type(v.NeedToChangeFrom) == "table" and not table.HasValue(v.NeedToChangeFrom, LocalPlayer():Team())) then
			continue
		end

		local panel = vgui.Create("MModelPanel")
		if type(v.model) == "table" then
			panel:SetModel(table.Random(v.model))
		else
			panel:SetModel(v.model)
		end
		panel:SetHeaderText(v.name)

		local desc = ""
		if (!v.premium || LocalPlayer():IsPremium()) && (!v.unlockCost || (v.unlockCost && table.HasValue(Job.Unlocks, v.command))) then
			desc = v.description
			if v.vote then
				panel:OnClick(function() LocalPlayer():ConCommand("say /vote"..v.command) end)
			else
				panel:OnClick(function() LocalPlayer():ConCommand("say /"..v.command) end)
			end
		elseif v.premium && !LocalPlayer():IsPremium() then
			desc = v.description.."

Эта работа доступна только премиум пользователей."
		elseif v.requireUnlock && !table.HasValue(Job.Unlocks, RPExtraTeams[v.requireUnlock].command) then
			desc = "Вы должны разблокировать: "..RPExtraTeams[v.requireUnlock].name.."."
			panel:OnClick(function() LocalPlayer():ConCommand("Job.Unlock "..v.command) end)
		else
			desc = "Разблокировать за "..v.unlockCost.." рублей.
"
			panel:OnClick(function()
				local list = vgui.Create("MList")
				list:AddItem("Вы уверены?")
				list:AddItem("Нет.", function() end)
				list:AddItem("Да, я уверен.", function() LocalPlayer():ConCommand("Job.Unlock "..v.command) end)
			end)
		end

		local wep_desc = ""

		for k, v in pairs(v.weapons) do
			local w = weapons.Get(v)
			if w && w.PrintName then
				wep_desc = (wep_desc != "" && wep_desc..", " or "") .. w.PrintName
			end
		end

		if wep_desc != "" then
			wep_desc = "

Вооружение: "..wep_desc
		end

		panel.AdjustSize = true
		panel:SetDescText(desc..wep_desc)
		panel:SetHeaderColor(v.color)
		panel.Model:SetCamPos(Vector( 70, -20, 50 ))
		panel.Model:SetLookAt(Vector( 0, 0, 65 ))
		panel.Model:SetFOV(10)
		panel.Model.Entity:SetSequence(panel.Model.Entity:LookupSequence(table.Random({"idle_all_01", "idle_all_02", "idle_passive"})))
		panel.Model:SetRotation(false)

		parent:AddItem(panel)

	end
end, function() end, {
	{"Разное", function() return allowedCat("Разное") end},
})


local function allowedCat(option)
	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && v.seperate && (not v.allowed[1] || table.HasValue(v.allowed, LocalPlayer():Team())) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			return true
		end
	end

	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && not v.noship && table.HasValue(v.allowed, LocalPlayer():Team()) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			return true
		end
	end

	for k, v in pairs(DarkRPEntities) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && (not v.allowed || (v.allowed && table.HasValue(v.allowed, LocalPlayer():Team()))) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			return true
		end
	end

	for k, v in pairs(FoodItems) do
		if (option == "Еда") && table.HasValue(v.team, LocalPlayer():Team()) then
			return true
		end
	end
end

CATEGORY_SHOP = MainMenu:AddNavigation("Магазин", function(parent, option)
	if !LocalPlayer():CanAfford(20000) then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 130)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Информация")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText("Вы можете купить вещи в магазине, играя, как на работу коммерции. Вы не можете купить некоторые детали (Money принтера, Здоровье Диспенсер т.д.) единственный способ получить их через крафта.")
		
		fixShit(panel, label)

		parent:AddItem(panel)
	end

	local found
	
	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && v.seperate && (not v.allowed[1] || table.HasValue(v.allowed, LocalPlayer():Team())) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buy "..v.name) end)
			panel:SetDescText(v.name.."
".."Price: "..v.pricesep.." рублей, "..Inventory.GetPrintWeight(v.weight))
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && not v.noship && table.HasValue(v.allowed, LocalPlayer():Team()) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buyshipment "..v.name) end)
			panel:SetDescText(v.name.."
".."Price: "..v.price.." рублей, Contains: "..v.amount.." шт, "..Inventory.GetPrintWeight(v.weight))
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(DarkRPEntities) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && (not v.allowed || (v.allowed && table.HasValue(v.allowed, LocalPlayer():Team()))) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			if !(v.ent && scripted_ents.Get(v.ent)) then
				print(v.ent)
				if v.ent then
					PrintTable(scripted_ents.Get(v.ent) or {})
				else
					PrintTable(v)
				end
				panel:Remove()
				continue
			end
			panel:SetHeaderText(scripted_ents.Get(v.ent) && scripted_ents.Get(v.ent).PrintName or v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say "..v.cmd) end)
			if !v.premium || LocalPlayer():IsPremium() then
				panel:SetDescText((scripted_ents.Get(v.ent).Instructions or "") .."
".."Цена: "..v.price.." рублей, "..Inventory.GetPrintWeight(v.weight))
			else
				panel:SetDescText("Этот предмет может быть куплен только премиум
пользователям.")
			end
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(FoodItems) do
		if (option == "Еда") && table.HasValue(v.team, LocalPlayer():Team()) then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buyfood "..k) end)
			panel:SetDescText("Сытость: "..v.amount.."
Ценна: "..v.price.." рублей")
			parent:AddItem(panel)

			found = true
		end
	end
end, function() end, {
	{"Пистолеты", function() return allowedCat("Пистолеты") end}, 
	{"Полу-автоматы", function() return allowedCat("Полу-автоматы") end},
	{"Дробовики", function() return allowedCat("Дробовики") end},
	{"Автоматы", function() return allowedCat("Автоматы") end},
	{"Винтовки", function() return allowedCat("Винтовки") end},
	
	{"Патроны", function() return allowedCat("Патроны") end},
	{"Улучшение Оружия", function() return allowedCat("Улучшение Оружия") end},
	{"Улучшения", function() return allowedCat("Улучшения") end},
	{"Еда", function() return allowedCat("Еда") end},


	{"Разное", function() return allowedCat("Разное") end},
})

CATEGORY_VIPSHOP = MainMenu:AddNavigation("VIP Магазин", function(parent, option)
	if !LocalPlayer():CanAfford(20000) then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 130)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Информация")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText("Вы можете купить вещи в магазине, играя, как на работу коммерции. Вы не можете купить некоторые детали (Money принтера, Здоровье Диспенсер т.д.) единственный способ получить их через крафта.")
		
		fixShit(panel, label)

		parent:AddItem(panel)
	end

	local found
	
	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && v.seperate && (not v.allowed[1] || table.HasValue(v.allowed, LocalPlayer():Team())) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buy "..v.name) end)
			panel:SetDescText(v.name.."
".."Price: "..v.pricesep.." рублей, "..Inventory.GetPrintWeight(v.weight))
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(CustomShipments) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && not v.noship && table.HasValue(v.allowed, LocalPlayer():Team()) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buyshipment "..v.name) end)
			panel:SetDescText(v.name.."
".."Price: "..v.price.." рублей, Contains: "..v.amount.." шт, "..Inventory.GetPrintWeight(v.weight))
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(DarkRPEntities) do
		if (option == v.cat || !v.cat && option == "Разное" || option == "Всё") && (not v.allowed || (v.allowed && table.HasValue(v.allowed, LocalPlayer():Team()))) && (!v.customCheck or (v.customCheck and v.customCheck(LocalPlayer())))  then
			local panel = vgui.Create("MModelPanel")
			if !(v.ent && scripted_ents.Get(v.ent)) then
				print(v.ent)
				if v.ent then
					PrintTable(scripted_ents.Get(v.ent) or {})
				else
					PrintTable(v)
				end
				panel:Remove()
				continue
			end
			panel:SetHeaderText(scripted_ents.Get(v.ent) && scripted_ents.Get(v.ent).PrintName or v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say "..v.cmd) end)
			if !v.premium || LocalPlayer():IsPremium() then
				panel:SetDescText((scripted_ents.Get(v.ent).Instructions or "") .."
".."Цена: "..v.price.." рублей, "..Inventory.GetPrintWeight(v.weight))
			else
				panel:SetDescText("Этот предмет может быть куплен только премиум
пользователям.")
			end
			parent:AddItem(panel)

			found = true
		end
	end

	for k, v in pairs(FoodItems) do
		if (option == "Еда") && table.HasValue(v.team, LocalPlayer():Team()) then
			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(v.name)
			panel:SetModel(v.model)
			panel:OnClick(function() LocalPlayer():ConCommand("say /buyfood "..k) end)
			panel:SetDescText("Сытость: "..v.amount.."
Ценна: "..v.price.." рублей")
			parent:AddItem(panel)

			found = true
		end
	end
end, function() end, {
	{"Пистолеты", function() return allowedCat("Пистолеты") end}, 
	{"Полу-автоматы", function() return allowedCat("Полу-автоматы") end},
	{"Дробовики", function() return allowedCat("Дробовики") end},
	{"Автоматы", function() return allowedCat("Автоматы") end},
	{"Винтовки", function() return allowedCat("Винтовки") end},
	
	{"VIP Патроны", function() return allowedCat("VIP Патроны") end},
	{"Улучшение Оружия", function() return allowedCat("Улучшение Оружия") end},
	{"Улучшения", function() return allowedCat("Улучшения") end},
	{"Еда", function() return allowedCat("Еда") end},


	{"Разное", function() return allowedCat("Разное") end},
})

local function sortBySindacteRang(a, b)
	if !a:IsInSyndicate() then return false
	elseif a == LocalPlayer() then return true
	elseif !b:IsInSyndicate() then return false
	else return a:HasHigherSyndicateRang(b:GetSyndicateRang()) end
end

local allowedString = "qwertyuiopasdfghjklzxcvbnmйцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"
CATEGORY_SYNDICATE = MainMenu:AddNavigation("Синдикат", function(parent, option)
	if !LocalPlayer():IsInSyndicate() then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 117)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Информация")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText("Синдикат это самый простой способ управлять вашей организации.
Это позволит значительно помочь вам контролировать свой банду
и позволяет установить лидеров/ranks.")
		
		parent:AddItem(panel)

		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 117)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Создать")

		local cost = vgui.Create("MLabel", panel)
		cost:SetPos(15, 50)
		cost:SetFont("TextFont")
		cost:SetText("Стоимость создания - "..Syndicate.CreateCost.." рублей.")

		local textEntry = vgui.Create("DTextEntry", panel)
		textEntry:SetText("Введите свое имя синдиката и нажмите ENTER")
		textEntry:SetPos(14, 74)
		textEntry:SetAllowNonAsciiCharacters(true)
		textEntry:SetSize(467, 30)

		textEntry.OnEnter = function(self)
			LocalPlayer():ConCommand("Syndicate.Create \""..self:GetValue().."\"")
		end

		parent:AddItem(panel)
	else
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 80)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText(LocalPlayer():GetSyndicate())

		local buttonList = vgui.Create("MPanelList", panel)
		buttonList:SetHorizontal(true)
		buttonList:SetDrawBackground(false)
		buttonList:SetAutoHeight(true)
		buttonList:SetPos(10, 51)
		buttonList:SetOffset(0)
		buttonList:SetSpacing(7)

		local button = vgui.Create("MButton")
		button:SetFont("TextFont")
		if LocalPlayer():GetSyndicateRang() == SYNDICATE_RANG_MASTER_OWNER then
			button:SetText("Распустить синдикат")
		else
			button:SetText("Покинуть синдикат")
		end
		button:OnClick(function()
			local list = vgui.Create("MList")
			list:AddItem("Вы уверены?")
			list:AddItem("Нет", function() end)
			list:AddItem("Да, я уверен", function() LocalPlayer():ConCommand("Syndicate.Leave") end)
		end)
		buttonList:AddItem(button)

		if LocalPlayer():HasHigherSyndicateRang(SYNDICATE_RANG_MEMBER) then
			local button = vgui.Create("MButton")
			button:SetFont("TextFont")
			button:SetText("Пригласить")
			button:OnClick(function()
				local list = vgui.Create("MList")
				local found = false
				for _, ply in pairs(player.GetAll()) do
					if !ply:IsInSyndicate() then
						found = true
						list:AddItem(ply:Nick(), function() RunConsoleCommand("Syndicate.Invite", ply:UserID()) end)
					end
				end
				if !found then list:AddItem("Не кого нету") end
			end)
			buttonList:AddItem(button)
		end

		local button = vgui.Create("MButton")
		button:SetFont("TextFont")
		if SYNDICATE_INFO then
			button:SetText("Кошелек синдиката: "..(SYNDICATE_INFO.wallet or 0).." рублей")
		else
			button:SetText("Счет")
		end
		button:OnClick(function()
			local list = vgui.Create("MList")
			list:AddItem("Перевести деньги", function()
				local textEntry = vgui.Create("MTextEntry")
				textEntry:SetValue("Введите сумму")
				textEntry.Entry:SetNumeric(true)
				textEntry.OnEnter = function(self, value)
					LocalPlayer():ConCommand("Syndicate.GiveMoney "..value)
				end
			end)
			if LocalPlayer():GetSyndicateRang() == SYNDICATE_RANG_MASTER_OWNER then
				list:AddItem("Вывести деньги", function()
					local textEntry = vgui.Create("MTextEntry")
					textEntry:SetValue("Введите сумму")
					textEntry.Entry:SetNumeric(true)
					textEntry.OnEnter = function(self, value)
						LocalPlayer():ConCommand("Syndicate.TakeMoney "..value)
					end
				end)
			end
		end)
		buttonList:AddItem(button)

		if SYNDICATE_INFO && SYNDICATE_INFO.property then
			local button = vgui.Create("MButton")
			button:SetText(Syndicate.Property[SYNDICATE_INFO.property.name].printName)
			button:SetFont("TextFont")
			button:OnClick(function()
				local list = vgui.Create("MList")	list:AddItem("Рента: "..Syndicate.Property[SYNDICATE_INFO.property.name].rent.." рублей ("..math.floor(SYNDICATE_INFO.wallet/Syndicate.Property[SYNDICATE_INFO.property.name].rent).." часов аренды)")
				if SYNDICATE_INFO.property.warnings > 0 then
					list:AddItem("Предупреждений: "..SYNDICATE_INFO.property.warnings.."шт", function()
						local list = vgui.Create("MList")
						list:AddItem("Сбросить за "..SYNDICATE_INFO.property.warnings*2*Syndicate.Property[SYNDICATE_INFO.property.name].rent .." рублей?")
						list:AddItem("Да, сбросить", function() net.SendSingleMessage("Syndicate.ResetWarnings") end)
						list:AddItem("Нет, я передумал", function() end)
					end)
				else
					list:AddItem("Предупреждений: "..SYNDICATE_INFO.property.warnings.."шт")
				end
				if LocalPlayer():GetSyndicateRang() == SYNDICATE_RANG_MASTER_OWNER then
					list:AddItem("Остановить аренду", function()
						local list = vgui.Create("MList")
						list:AddItem("Вы уверены?")
						list:AddItem("Нет, я передумал", function() end)
						list:AddItem("Да, уверен", function()
							net.SendSingleMessage("Syndicate.CancleRent")
						end)
					end)
				end
			end)
			buttonList:AddItem(button)
		end

		parent:AddItem(panel)

		if option == nil || option == "Members" then
			for k, v in pairs(Syndicate.GetMembers(LocalPlayer():GetSyndicate())) do
				local panel = vgui.Create("MModelPanel")
				panel:SetHeaderText(v:Nick())
				panel:SetModel(v:GetModel())
				panel.Model:SetCamPos( Vector( 70, -20, 50 ) )
				panel.Model:SetLookAt( Vector( 0, 0, 65 ) )
				panel.Model:SetFOV(10)
				panel.Model.Entity:SetSequence(panel.Model.Entity:LookupSequence(table.Random({"idle_all_01", "idle_all_02", "idle_passive"})))
				panel.Model:SetRotation(false)
				panel:SetDescText(v.syndicate.status or "Член Синдиката")
				panel:OnClick(function()
					if LocalPlayer():HasHigherSyndicateRang(SYNDICATE_RANG_MEMBER) && (LocalPlayer():HasHigherSyndicateRang(v:GetSyndicateRang()) || LocalPlayer() == v) then
						local list = vgui.Create("MList")
						list:SetParent(panel)
						if LocalPlayer() != v then
							if v:HasHigherSyndicateRang(SYNDICATE_RANG_MEMBER) then
								list:AddItem("Снять с поста лидера", function()
									LocalPlayer():ConCommand("Syndicate.Coowner "..v:UserID())
								end)
							else
								list:AddItem("Назначен на пост лидера", function()
									LocalPlayer():ConCommand("Syndicate.Coowner "..v:UserID())
								end)
							end
						end
						list:AddItem("Изменение ранга", function()
							local textEntry = vgui.Create("MTextEntry")
							textEntry:SetValue("Ввести звание")
							textEntry.Entry:SetAllowNonAsciiCharacters(true)
							textEntry.OnEnter = function(self, value)
								LocalPlayer():ConCommand("Syndicate.SetStatus \""..v:UserID().."\" \""..value.."\"")
							end
						end)
						if v != LocalPlayer() then
							list:AddItem("Кик", function()
								LocalPlayer():ConCommand("Syndicate.Kick "..v:UserID())
							end)
						end
					end
				end)
				parent:AddItem(panel)
			end
		elseif option == "Улучшения" then
			for name, upgrade in pairs(Syndicate.Upgrade) do
				if !upgrade.require || (SYNDICATE_INFO.upgrades && table.HasValue(SYNDICATE_INFO.upgrades, name)) then
					local panel = vgui.Create("MPanel")
					panel:SetSize(500, 85)

					local label = vgui.Create("MLabel", panel)
					label:SetPos(10, 2)
					label:SetFont("HeaderFont")
					label:SetColor(COLOR_HOVER)
					label:SetText(upgrade.printName)

					local label = vgui.Create("MLabel", panel)
					label:SetPos(15, 39)
					label:SetFont("TextFont")

					if SYNDICATE_INFO.upgrades && table.HasValue(SYNDICATE_INFO.upgrades, name) then
						if !upgrade.requireProperty || SYNDICATE_INFO.property then
							label:SetText(upgrade.desc)
						else
							label:SetText(upgrade.desc.."
Улучшение отклонено ввиду отсутствия имущества в аренде!")
						end
					elseif upgrade.requireProperty && !SYNDICATE_INFO.property then
						label:SetText(upgrade.desc.."
Необходимо иметь имущество в аренде!")
					elseif !upgrade.requireProperty || SYNDICATE_INFO.property then
						local func = function()
							net.Start("Syndicate.BuyUpgrade")
								net.WriteString(name)
							net.SendToServer()
						end
						label:SetText(upgrade.desc.."
".."Стоимость: "..upgrade.price.." рублей.")

						panel:SetCursor("hand")
						panel:OnClick(func)
					end
					
					parent:AddItem(panel)
				end
			end
		end
	end
end)//, nil, {
	//{"Члены", function() return LocalPlayer():IsInSyndicate() end}, 
	//{"Улучшения", function() return LocalPlayer():IsInSyndicate() end}
//})

CATEGORY_INVENTORY = MainMenu:AddNavigation("Инвентарь", function(parent)
	if !LocalPlayer():CanAfford(20000) then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 130)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Информация")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText("Чтобы поднять предмет, нажмите ALT + E, глядя на него.
Каждый предмет в вашем инвентаре будут сохранены.
Чтобы удалить предмет, нажмите левую кнопку мыши.
Чтобы использовать предмет, нажмите правую кнопку мыши.")

		fixShit(panel, label)

		parent:AddItem(panel)

		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 95)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Сумки")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText("Вы можете увеличить доступное пространство, используя сумки (Подробнее в обработке).
Имейте в виду, что две подобных сумки не складывается.")

		fixShit(panel, label)

		parent:AddItem(panel)
	end
	local panel = vgui.Create("MProgressBar")
	panel:SetMax(LocalPlayer():GetDefaultSpace(LocalPlayer()))
	panel:SetValue(LocalPlayer():GetSpace())
	parent:AddItem(panel)
	for k, v in pairs(LocalPlayer().inv) do
		for item, count in pairs(v) do
			local itemTable = Inventory.GetItem(k, item)

			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(itemTable.name)
			panel:SetModel(itemTable.model)

			if k == INV_WEAPON then
				panel:OnClick(function()
					local list = vgui.Create("MList")
					list:AddItem("Выкинуть", function() LocalPlayer():ConCommand("Inventory.Drop "..k.." "..item) end)
					list:AddItem("Орудовать", function() LocalPlayer():ConCommand("Inventory.Use "..k.." "..item) end)
				end)
			elseif k == INV_FOOD then
				panel:OnClick(function()
					local list = vgui.Create("MList")
					list:AddItem("Дроп", function() LocalPlayer():ConCommand("Inventory.Drop "..k.." "..item) end)
					if LocalPlayer():GetEnergy() < 100 then
						list:AddItem("Кушать", function() LocalPlayer():ConCommand("Inventory.Use "..k.." "..item) end)
					end
				end)
			elseif k == INV_ENTITY then
				local ent = scripted_ents.Get(item)
				if ent.Usable then
					panel:OnClick(function()
						local list = vgui.Create("MList")
						list:AddItem("Выкинуть", function() LocalPlayer():ConCommand("Inventory.Drop "..k.." "..item) end)
						if (!ent.InventoryCheck || ent.InventoryCheck(ent, LocalPlayer(), item)) then
							list:AddItem(ent.Action or "Использовать", function() LocalPlayer():ConCommand("Inventory.Use "..k.." "..item) end)
						end
					end)
				else
					panel:OnClick(function() LocalPlayer():ConCommand("Inventory.Drop "..k.." "..item) end)
				end
			else
				panel:OnClick(function() LocalPlayer():ConCommand("Inventory.Drop "..k.." "..item) end)
			end

			if Inventory.GetPrintWeight(itemTable.weight) != "" then
				panel:SetDescText(itemTable.desc.."
".."Количество: "..count.." шт, "..Inventory.GetPrintWeight(itemTable.weight))
			else
				panel:SetDescText(itemTable.desc.."
".."Количество: "..count.." шт.")
			end
			parent:AddItem(panel)
		end
	end
end)

CATEGORY_CRAFTING = MainMenu:AddNavigation("Крафтинг", function(parent, option)
	if option == "Информация" then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 115)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Информация")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText([[Ингриденты для крафтинга можно найти в мусорнвых баках,
расставленных по городу. Если он пуст, нужно немного подождать.
Созданные вами предметы появляются в инвентаре.]])

		fixShit(panel, label)

		parent:AddItem(panel)

		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 105)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Выгода")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetFont("TextFont")
		label:SetText([[Вторая сто.]])

		fixShit(panel, label)

		parent:AddItem(panel)

	else
		for k, v in ipairs(Crafting.Recipes) do
			if v.category && v.category != option then continue end
			local itemTable = Inventory.GetItem(v.type, v.name)

			local panel = vgui.Create("MModelPanel")
			panel:SetHeaderText(itemTable.name)
			panel:SetModel(itemTable.model)

			local desc
			for type, ingredients in pairs(v.ingredients) do
				for _, ingredient in pairs(ingredients) do
					local have = LocalPlayer().inv[type][ingredient[1]] && LocalPlayer().inv[type][ingredient[1]] > (ingredient[2] or 0)

					local itemDesc = Inventory.GetItem(type, ingredient[1]).name
					if ingredient[2] then
						itemDesc = itemDesc .. " " .. (LocalPlayer().inv[type][ingredient[1]] or "0").. "/"..(ingredient[2] or "1")..""
					end

					if !have then
						panel:SetHeaderColor(Color(241,44,44,255))
					end

					if desc then
						desc = desc .. ", " .. itemDesc
					else
						desc = itemDesc
					end
				end
			end

			desc = desc .. ".
"

			local tools
			for _, tool in pairs(v.tools) do
				local toolDesc = Inventory.GetItem(INV_INGREDIENT, tool).name
				if !LocalPlayer().inv[INV_INGREDIENT][tool] then
					panel:SetHeaderColor(Color(241,44,44,255))
					toolDesc = toolDesc.." "..(LocalPlayer().inv[INV_INGREDIENT][tool] or 0).."/1"
				end
				
				if tools then
					tools = tools .. ", " .. toolDesc
				else
					tools = "Инструменты: " .. toolDesc
				end
			end
			if tools then
				desc = desc .. tools .. "."
			end

			panel:SetDescText(desc)
			panel:OnClick(function() LocalPlayer():ConCommand("Crafting.Craft "..k) end)

			parent:AddItem(panel)
		end
	end
end, function() end, {"Информация", "Предметы", "Оружие", "Разное", "Восстановление оружия"})

local function sortByTeam(a ,b)
	return IsValid(a) && IsValid(b) && (a == LocalPlayer() || a:Team() > b:Team())
end

CATEGORY_PLAYERS = MainMenu:AddNavigation("Игроки", function(parent)
	for k, v in pairs(player.GetAll()) do
		local panel = vgui.Create("MModelPanel")
		panel:SetHeaderText(v:Nick())
		panel:SetModel(v:GetModel())
		panel.Model:SetCamPos( Vector( 70, -20, 50 ) )
		panel.Model:SetLookAt( Vector( 0, 0, 65 ) )
		panel.Model:SetFOV(10)
		panel.Model.Entity:SetSequence(panel.Model.Entity:LookupSequence(table.Random({"idle_all_01", "idle_all_02", "idle_passive"})))
		panel.Model:SetRotation(false)
		panel:SetDescText(RPExtraTeams[v:Team() or 1].name.."
"..(v:GetSyndicate() or ""))
		panel:OnClick(function()
			local list = vgui.Create("MList")
			list:SetParent(panel)
			list:AddItem("Скопировать SteamID", function() SetClipboardText(v:SteamID()) end)

			if v == LocalPlayer() then return end

			if LocalPlayer():Team() == TEAM_MAYOR && GAMEMODE.CivilProtection[v:Team()] then
				list:AddItem("Уволить", function()
					net.Start("Police.Demote")
						net.WriteEntity(v)
					net.SendToServer()
				end)
			else
				list:AddItem("Начать голосования за его/ее понижение", function() 
					local textEntry = vgui.Create("MTextEntry")
					textEntry:SetValue("Введите причину")
					textEntry.Entry:SetAllowNonAsciiCharacters(true)
					textEntry.OnEnter = function(self, value)
						LocalPlayer():ConCommand("say /demote "..v:UserID().." "..value)
					end
				end)
			end
			
			if LocalPlayer():IsCP() then
				if !v.DarkRPVars.wanted then
					list:AddItem("Обьявить в розыск", function()
						local textEntry = vgui.Create("MTextEntry")
						textEntry:SetValue("Введите причину")
						textEntry.Entry:SetAllowNonAsciiCharacters(true)
						textEntry.OnEnter = function(self, value)
							LocalPlayer():ConCommand("say /wanted "..v:UserID().." "..value)
						end
					end)
				else
					list:AddItem("Убрать из розыска", function() 
						LocalPlayer():ConCommand("say /unwanted "..v:UserID())
					end)
				end

				list:AddItem("Запросить ордер на обыск", function()
					local textEntry = vgui.Create("MTextEntry")
					textEntry:SetValue("Введите причину")
					textEntry.Entry:SetAllowNonAsciiCharacters(true)
					textEntry.OnEnter = function(self, value)
						LocalPlayer():ConCommand("say /warrant "..v:UserID().." "..value)
					end
				end)
			end

			if LocalPlayer():IsAdmins() then
				list:AddItem("Кик", function()
					local textEntry = vgui.Create("MTextEntry")
					textEntry:SetValue("Введите причину")
					textEntry.OnEnter = function(self, value)
						LocalPlayer():ConCommand("CAdmin.Kick "..v:UserID().." "..value)
					end
				end)
				list:AddItem("Бан", function()
					local textEntry = vgui.Create("MTextEntry")
					textEntry:SetValue("Введите время")
					textEntry.OnEnter = function(self, time)
						timer.Simple(0.3, function()
							local textEntry = vgui.Create("MTextEntry")
							textEntry:SetValue("Введите причину")
							textEntry.OnEnter = function(self, reason)
								LocalPlayer():ConCommand("CAdmin.Ban "..v:UserID().." "..time.." "..reason)
							end
						end)
					end
				end)
				list:AddItem("Телепортироватся", function()
					RunConsoleCommand("ulx","goto", v:Nick())
				end)
				list:AddItem("Перевести к игроку", function()
					LocalPlayer():ConCommand("CAdmin.Bring "..v:UserID())
				end)
				list:AddItem("Забанить професия", function()
					LocalPlayer():ConCommand("CAdmin.BanFromJob "..v:UserID())
				end)
				list:AddItem("Застваить сменить имя", function()
					LocalPlayer():ConCommand("CAdmin.ForceChangeNick "..v:UserID())
				end)
			end

			if LocalPlayer():IsInSyndicate() && LocalPlayer():HasHigherSyndicateRang(SYNDICATE_RANG_MEMBER) && !v:IsInSyndicate() then
				list:AddItem("Пригласить в синдикат", function()
					LocalPlayer():ConCommand("Syndicate.Invite "..v:UserID())
				end)
			end
		end)

		parent:AddItem(panel)
	end
end)

function GetPriceInfo(parent, info)
	local panel = vgui.Create("MPanel")
	panel:SetSize(500, 80)

	local label = vgui.Create("MLabel", panel)
	label:SetPos(10, 2)
	label:SetFont("HeaderFont3")
	label:SetColor(COLOR_HOVER)
	label:SetText("Оплата")

	local label = vgui.Create("MLabel", panel)
	label:SetPos(15, 50)
	label:SetFont("TextFont")
	label:SetUppercase(false)
	label:SetText(info)

	parent:AddItem(panel)
end

function GetDonateInfo(parent)
	local panel = vgui.Create("MPanel")
	panel:SetSize(500, 110)

	local label = vgui.Create("MLabel", panel)
	label:SetPos(10, 2)
	label:SetFont("HeaderFont3")
	label:SetColor(COLOR_HOVER)
	label:SetText("Оплата")

	local label = vgui.Create("MLabel", panel)
	label:SetPos(15, 50)
	label:SetUppercase(false)
	label:SetFont("TextFont")
		
	label:SetText([[Чтобы приобрести по адресу:]])

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 66)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("VK: ")
	button:OnClick(function()
		local list = vgui.Create("MList")
		list:AddItem("Скопировать URL", function() SetClipboardText("") end)
	end)

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 82)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("Skype: ...")
	button:OnClick(function()
		local list = vgui.Create("MList")
		list:AddItem("Скопировать skype", function() SetClipboardText("...") end)
	end)

	parent:AddItem(panel)
end

function AddPackageInfo(parent, name, info)
	local panel = vgui.Create("MPanel")

	local label = vgui.Create("MLabel", panel)
	label:SetPos(10, 2)
	label:SetFont("HeaderFont3")
	label:SetColor(COLOR_HOVER)
	label:SetText(name)

	local label = vgui.Create("MLabel", panel)
	label:SetPos(15, 50)
	label:SetUppercase(false)
	label:SetFont("TextFont")
	label:SetText(info)

	local w, h = surface.GetTextWidth(info, "TextFont")

	panel:SetSize(500, 50 + h + 10)
	parent:AddItem(panel)
end

/*CATEGORY_DONAT = MainMenu:AddNavigation("DONATE", function(parent, option)
	if option == "Premium" then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 265)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("Особенности")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetUppercase(false)
		label:SetFont("TextFont")
		label:SetText([[1. Открывает вакансии:
- S.W.A.T и Начальника полиции
- Тяжелый торговец оружием
- Проститутка
2. В два раза медленнее:
- Голод
- Тюремный срок
2. В два раза быстрее:
- Поиск и арест
- Карманник, дверь отпирает, ограбление
3. Лишние 5 кг в инвентаре.
4. Возможность изменить Ваш автомобиль, используя toolgun.
]])

		parent:AddItem(panel)

		GetPriceInfo(parent, "Стоимсоть премиума-150")
	elseif option == "Money" then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 75)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("КУРС")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetUppercase(false)
		label:SetFont("TextFont")
		label:SetText([[$1 = 100 000$. Минимальный заказ - 100 000$.]])

		parent:AddItem(panel)

	elseif option == "Админка" then
		local panel = vgui.Create("MPanel")
		panel:SetSize(500, 205)

		local label = vgui.Create("MLabel", panel)
		label:SetPos(10, 2)
		label:SetFont("HeaderFont3")
		label:SetColor(COLOR_HOVER)
		label:SetText("ВОЗМОЖНОСТИ")

		local label = vgui.Create("MLabel", panel)
		label:SetPos(15, 50)
		label:SetUppercase(false)
		label:SetFont("TextFont")
		label:SetText([[1. Доступ к noclip'у.
2. Возможность банить и кикать.
3. Возможность телепортировать и телепортироваться.
4. Возможность поднимать игроков и их пропы физганом.
5. Возможность использовать тулган на пропах других игроков.
6. Возможность банить у игрока профессию.
7. Доступ к логированию.
8. Доступ к админ панели.
]])

		parent:AddItem(panel)

		GetPriceInfo(parent, "Админка стоит 400р в месяц.")
	elseif option == "Специальные предложения" then

		AddPackageInfo(parent, [[КОМБО 'МУЖИК']], [[Включает:
1. Премиум на месяц.
2. 300.000$.
3. 5 кг.

Стоимость: 500р.]])

		AddPackageInfo(parent, [[КОМБО 'БЛАТНОЙ']], [[Включает:
1. Премиум на месяц.
2. 400.000$.
3. 10 кг.

Стоимость: 800р.]])

		AddPackageInfo(parent, [[КОМБО 'АВТОРИТЕТ']], [[Включает:
1. Премиум на месяц.
2. 900.000$.
3. Админка на месяц.

Стоимость: 1000р.]])

		AddPackageInfo(parent, [[КОМБО 'ПАХАН']], [[Включает:
1. Премиум на 3 месяца.
2. 1.600.000$.
3. Админка на 3 месяца.

Стоимость: 2000р.]])

	elseif option == "Расширить инвентарь" then
		AddPackageInfo(parent, [[ИНВЕТАРЬ]], [[Покупка позволит вам получить дополнительные килограммы в 
вашем инвентаре.
1кг = 50р. Минимальный заказ - 1кг, максимальный - 20кг.]])
		AddPackageInfo(parent, [[ХРАНИЛИЩЕ]], [[Покупка позволит вам получить дополнительные килограммы в 
вашем хранилище.
1кг = 25р. Минимальный заказ - 2кг, максимальный - 20кг.]])
	end

	GetDonateInfo(parent)
end, function() end, {"Админка", "Премиум", "Деньги", "Расширить инвентарь", "Специальные предложения"})
*/
/*
local lastPlayers = nil
net.Receive("CAdmin.SendLastPlayers", function()
	lastPlayers = net.ReadTable()
end)
CATEGORY_ADMIN = MainMenu:AddNavigation("Админ понель", function(parent)
	local panel = vgui.Create("MPanel")
	panel:SetSize(500, 130)

	local label = vgui.Create("MLabel", panel)
	label:SetPos(10, 2)
	label:SetFont("HeaderFont3")
	label:SetColor(COLOR_HOVER)
	label:SetText("Действия")

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 55)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("Забанить игрока по SteamID")
	button:OnClick(function()
		local textEntry = vgui.Create("MTextEntry")
		textEntry:SetValue("Ввести SteamID")
		textEntry.OnEnter = function(self, steamid)
			timer.Simple(0.3, function()
				local textEntry = vgui.Create("MTextEntry")
				textEntry:SetValue("Введите время в минутах")
				textEntry.OnEnter = function(self, time)
					timer.Simple(0.3, function()
						local textEntry = vgui.Create("MTextEntry")
						textEntry:SetValue("Введите причину")
						textEntry.OnEnter = function(self, reason)
							LocalPlayer():ConCommand("CAdmin.BanSteamID \""..steamid.."\" "..time.." "..reason)
						end
					end)
				end
			end)
		end
	end)

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 71)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("Получить список 10 игроков, которые вышли")
	local func
	func = function()
		button:SetText("Загрузка списка...")
		button:OnClick(function() end)

		timer.Remove("GetLastPlayers")

		net.Start("CAdmin.SendLastPlayers")
		net.SendToServer()

		timer.Create("GetLastPlayers", 0.2, 0, function()
			if lastPlayers then
				button:SetText("Get last 10 players who exited")
				button:OnClick(func)
				
				local list = vgui.Create("MList")

				timer.Remove("GetLastPlayers")

				if !table.IsEmpty(lastPlayers) then
					for k, v in pairs(lastPlayers) do
						list:AddItem(v.nick, function()
							local list = vgui.Create("MList")
							list:AddItem("Скопируйте SteamID", function() SetClipboardText(v.steamid) end)
							list:AddItem("Бан", function()
								local textEntry = vgui.Create("MTextEntry")
								textEntry:SetValue("Введите время")
								textEntry.OnEnter = function(self, time)
									timer.Simple(0.3, function()
										local textEntry = vgui.Create("MTextEntry")
										textEntry:SetValue("Введите причину")
										textEntry.OnEnter = function(self, reason)
											LocalPlayer():ConCommand("CAdmin.BanSteamID \""..v.steamid.."\" "..time.." "..reason)
										end
									end)
								end
							end)
						end)
					end
				else
					list:AddItem("Nobody found")
				end
				lastPlayers = nil
			end
		end)
	end
	button:OnClick(func)

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 87)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("Очитсть")
	button:OnClick(function()
		local list = vgui.Create("MList")
		list:AddItem("Еды", function() LocalPlayer():ConCommand("CAdmin.CleanFood") end)
		list:AddItem("Ингредиентов", function() LocalPlayer():ConCommand("CAdmin.CleanIngredients") end)
		list:AddItem("Другие", function() LocalPlayer():ConCommand("CAdmin.CleanMiscs") end)
	end)

	local button = vgui.Create("MButton", panel)
	button:SetPos(15, 103)
	button:SetFont("TextFont")
	button:SetColor(COLOR_WHITE)
	button:SetUppercase(false)
	button:SetText("Создать Голосование")
	button:OnClick(function()
		local textEntry = vgui.Create("MTextEntry")
		textEntry:SetValue("Введите вопрос")
		textEntry.OnEnter = function(self, question)
		LocalPlayer():ConCommand("CAdmin.CreateVote \""..question.."\"")
		button:Remove()
		textEntry:Remove()
		end
	end)

	parent:AddItem(panel)
end, function() timer.Remove("GetLastPlayers") end)
*/
function MainMenu:Rebuild(category, option)
	if self.MainMenu && self.MainMenu:IsValid() then
		CATEOGRY_ACTIVE = category
		SELECTED_OPTION = option
		local scroll = self.MainMenu.ScrollOffset
		self.MainMenu:Clear()
		self.MainMenu.ScrollOffset = scroll
		self.NavigationList[category].func(self.MainMenu, option)
	end
end

function MainMenu:Update(category, option)
	if CATEOGRY_ACTIVE == category && (!SELECTED_OPTION || SELECTED_OPTION == option) then return end

	local lastActive = CATEOGRY_ACTIVE
	CATEOGRY_ACTIVE = category
	SELECTED_OPTION = option
	local func = self.NavigationList[category].func
	if self.MainMenu && self.MainMenu:IsValid() then
		self.MainMenu:FadeOut(FADE_DELAY, false, function(self)
			self:Clear()
			if lastActive >= 0 && MainMenu.NavigationList[lastActive] && MainMenu.NavigationList[lastActive].onClose then
				MainMenu.NavigationList[lastActive].onClose(self)
			end
			func(self, option)
			self:FadeIn(FADE_DELAY*1.5)
		end)
	else
		self.MainMenu = vgui.Create("MPanelList")
		self.MainMenu:SetPos(530, 0)
		func(self.MainMenu, option)
		self.MainMenu:FadeIn(FADE_DELAY*1.5)
		self.MainMenu:MakePopup()
	end
end

function MainMenu:Create()
	if self:GetBlur() then return end
	self:CreateBlur()

	self.Navigation = vgui.Create("MPanelList")
	self.Navigation:SetPos(170, 120)
	self.Navigation:SetOffset(0)
	self.Navigation:SetSpacing(7)
	self.Navigation:SetDrawBackground(false)

	self:Update(CATEGORY_MAIN)

	for k, v in ipairs(self.NavigationList) do
		if (v.check && v.check()) then continue end
		local button = vgui.Create("MButton")
		button:SetText(v.text) 
		self.Navigation:AddItem(button)
		button:OnClick(function() 
			if self.LastPressed or 0 < CurTime() then
				self.LastPressed = (self.LastPressed or 0) + 0.5
				local found = false
				if v.options then
					local list = vgui.Create("MList")
					for _, option in pairs(v.options) do
						if type(option) == "table" then
							if option[2]() then
								found = true
								list:AddItem(option[1], function() self:Update(k, option[1]) end)
							end
						else
							found = true
							list:AddItem(option, function() self:Update(k, option) end)
						end
					end
					if !found then
						list:Remove()
					end
				end
				if !found then
					self:Update(k)
				end
			end
		end)
	end

	self.Navigation:FadeIn(FADE_DELAY)
end

function MainMenu:IsValid()
	return self.Navigation && self.Navigation:IsValid()
end

function MainMenu:Remove()
	if self:IsValid() then
		self:RemoveBlur()
		self.Navigation:FadeOut(FADE_DELAY, true)

		if self.MainMenu && self.MainMenu:IsValid() then
			CATEOGRY_ACTIVE = -1
			self.MainMenu:FadeOut(FADE_DELAY, true)
		end
	end
end



  1. Nobody wants to download your shitty script.
  2. Just copy and paste your shitty script in [noparse]



[/noparse] tags or at least use something like pastebin.

ok

This kid was threatening me with ddos. Fukken lold.

next time remove link to your VK page from your code, Daniel :3

He says about adding a new category in jobs menu?
I haven’t see in your code a way to do this. You must rebuild jobs panel to add categories.

I am even ready to pay to have helped me.

If you’re willing to pay, why not use ScriptFodder?

There I also wrote. No one really did not answer.