Net. через con.command

Ребят, помогите. У меня трабли, добавил менюшку, через net.Receive, далее хотел добавить, открывание через net.start(menu), net.send(ply), но почему-то на клиенте оно не принимает. Какие есть аналоги, или что делать?

Дай свой код, а то не понятно что ты сделал, а что нет

net.Receive("JobMenu", function()
	local ent = net.ReadEntity()
	local whitelist = net.ReadTable()

	base_menu = vgui.Create("DFrame")
	base_menu:SetSize(800, 625)
	base_menu:Center()
	base_menu:MakePopup()
	base_menu:SetTitle("")
	base_menu:ShowCloseButton(false)
	base_menu.Paint = function(slf, w, h)
		IsBlurEnabled(slf)
		draw.RoundedBox(0, 0, 0, w, h, ENPC.Colors.bg)
		draw.RoundedBox(0, 0, 0, w, 60, ENPC.Colors.s_bg)
		draw.RoundedBox(0, 0, 0, 200, 60, ENPC.Colors.header)
		draw.SimpleText(ent:GetNWString("CustomName"), "JobsHeaderFont", 100, 30, color_white, 1, 1)
	end

	base_menu["ExitBtn"] = vgui.Create("DButton", base_menu)
	base_menu["ExitBtn"]:SetPos(base_menu:GetWide() - 20 - 15, 30-10)
	base_menu["ExitBtn"]:SetSize(20, 20)
	base_menu["ExitBtn"]:SetText("")
	base_menu["ExitBtn"].DoClick = function()
		if base_menu then base_menu:Remove() end
	end
	base_menu["ExitBtn"].Paint = function(slf, w, h)
		if slf:IsHovered() then
			draw_mat(close_mat, 0, 0, true, {255, 255, 255, 255})
		else
			draw_mat(close_mat, 0, 0)
		end
	end

	base_menu["ScrollPanel"] = vgui.Create("DScrollPanel", base_menu)
	base_menu["ScrollPanel"]:SetSize(200, base_menu:GetTall()-60)
	base_menu["ScrollPanel"]:SetPos(0, 60)
	base_menu["ScrollPanel"].Paint = function(slf, w, h)
		draw.RoundedBox(0, 0, 0, 200, h, ENPC.Colors.s_bg)
	end

	base_menu["JobList"] = vgui.Create("DIconLayout", base_menu["ScrollPanel"])
	base_menu["JobList"]:SetSize( base_menu["ScrollPanel"]:GetWide(), base_menu["ScrollPanel"]:GetTall())
	base_menu["JobList"]:SetPos( 0, 0 )
	base_menu["JobList"]:SetSpaceY( 5 )
	base_menu["JobList"]:SetSpaceX( 5 )

	local job_list = {}
	for k,v in pairs(RPExtraTeams) do
		if whitelist[v.name] then
			table.insert(job_list, v)
		end
	end

	for k,v in pairs(job_list) do
		base_menu["ColorJob"..k] = Color(97,97,97)
		base_menu["JobPanel"..k] = base_menu["JobList"]:Add("DPanel")
		base_menu["JobPanel"..k]:SetSize(base_menu["JobList"]:GetWide(), 40)
		base_menu["JobPanel"..k].Paint = function(slf, w, h)
			local iconsTbl = GetIconsTable(v)
			if slf.Selected then
				draw.RoundedBox(0, 0, 0, 5, h, IsDark(v.color))
				if #iconsTbl > 0 then
					draw.SimpleText(v.name, "JobsListFont", 15, h/2-10, ENPC.Colors.f_list, 0, 1)
				else
					draw.SimpleText(v.name, "JobsListFont", 15, h/2-2, ENPC.Colors.f_list, 0, 1)
				end
				local can, message = IsAvailable(v)
				if not can then
					draw.SimpleText(message, "JobsListSmallFont", 16, 21, ENPC.Colors.f_list, 0, 0)
				else
					local available, time, level = IsBlockedBy(v)
					local bought, msg = IsBoughtJob(v)
					local required_, msg1 = IsJobNotRequired(v)

					if available then
						draw.SimpleText(available, "JobsListSmallFont", 16, 21, ENPC.Colors.f_list, 0, 0)
					elseif v.requiredjob and not required_ then
						draw.SimpleText( msg1, "JobsListSmallFont", 16, 21, ENPC.Colors.f_list, 0, 0 )
					elseif v.jobcost and not bought then
						draw.SimpleText(msg..": "..DarkRP.formatMoney(v.jobcost), "JobsListSmallFont", 16, 21, ENPC.Colors.f_list, 0, 0)
					end 
				end
			else
				if #iconsTbl > 0 then
					draw.SimpleText(v.name, "JobsListFont", 10, h/2-10, ENPC.Colors.f_list, 0, 1)
				else
					draw.SimpleText(v.name, "JobsListFont", 10, h/2-2, ENPC.Colors.f_list, 0, 1)
				end
			end
			surface.SetDrawColor(Color(0,0,0,75))
			surface.DrawLine(8, h-1, w-16, h-1)
		end

		base_menu["IconLayot"] = vgui.Create("DIconLayout", base_menu["JobPanel"..k])
		base_menu["IconLayot"]:SetSize( base_menu["JobPanel"..k]:GetWide()-20, base_menu["JobPanel"..k]:GetTall()-20)
		base_menu["IconLayot"]:SetPos( 10, 20 )
		base_menu["IconLayot"]:SetSpaceY( 0 )
		base_menu["IconLayot"]:SetSpaceX( 5 )

		for _,z in pairs(GetIconsTable(v)) do
			base_menu["Icon"] = base_menu["IconLayot"]:Add("DPanel")
			base_menu["Icon"]:SetSize(15, 15)
			base_menu["Icon"].Paint = function(slf, w, h)
				if not base_menu["JobPanel"..k].Selected then
					draw_mat(z, 0, 0, true)
				end
			end
		end

		base_menu["JobBtn"..k] = vgui.Create("DButton", base_menu["JobPanel"..k])
		base_menu["JobBtn"..k]:SetPos(0, 0)
		base_menu["JobBtn"..k]:SetSize(base_menu["JobPanel"..k]:GetWide(), base_menu["JobPanel"..k]:GetTall())
		base_menu["JobBtn"..k]:SetText("")
		base_menu["JobBtn"..k].Paint = function(slf, w, h)
		end
		base_menu["JobBtn"..k].DoClick = function(slf)
			for _,but in pairs( base_menu["JobList"]:GetChildren() ) do
				but.Selected = false
			end
			base_menu["JobPanel"..k].Selected = true
			OpenJobPanel(v)
		end
	end

	if base_menu["JobBtn1"] then base_menu["JobBtn1"].DoClick() end
end)
local ply = LocalPlayer()
concommand.Add("jobr", function()
	net.Start("JobMenu")
	net.Send(ply)
end)

Это должно вызываться на серверной части. Так же нужно добавить util.AddNetworkString("JobMenu")

Но смотри, мне нужно открывать меню через команду.

За место net, дай функции название,или создай функцию в самой команде.

‘’’
local function OpenMenu(pl,cmd,arg,str)

end

Concommand.add(‘openmenuiiii’,OpenMenu)
‘’’
Если данные с сервера то и команда должна создаваться на сервере.

1 лайк

Спасибо, за помощь!