Ребят, помогите. У меня трабли, добавил менюшку, через 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 лайк
Спасибо, за помощь!