В этом гайде я покажу свой код, в котором все подписано, делаю ибо заебался заходить в клиентские части серверов и видеть там немного говнокода
Само меню не смогу показать, ибо сейчас нет рядом компа
Само меню не смогу показать, ибо сейчас нет рядом компа
Код меню:
local cols = {Color(0,0,0,150), Color(255,255,255)} -- кеширование цветов, ниже второй вариант, использовать cols[1] cols[2] .....
local col = { -- 1-й вариант использовать лучше, но пока забьм хуй на оптимизацию, использовать col.crasniy
crasniy = Color(255,0,0),
blackcol = Color(0,0,0)
}
-- сука, не делайте пожалуйста for i = 1, 128 do surface.CreateFont, нагрузка пиздец
surface.CreateFont('btnfont', {
font = 'Roboto', -- ваш шрифт
size = 20, -- размер,
weight = 500, -- толщина
extended = true -- поддержка киррилицы :okay?:
})
local function tmenu() -- локальные функции работают чуть быстрее
local fr = vgui.Create('EditablePanel')
fr:SetSize(ScrW() * .5, ScrH() * .5)
fr:Center()
fr:MakePopup()
-- В EditablePanel нету методов: setdraggable, showclosebutton, settitle, проще говоря - чистый dframe
fr.Paint = function(s,w,h) -- self, wight, height
draw.RoundedBox(5,0,0,w,h,cols[1]) -- закругленный бокс
end
local btn = vgui.Create('DButton', fr)
btn:Dock(BOTTOM) -- кнопка будет внизу, значения: Top, Bottom, Right, Left
btn:SetTall(35) -- сетаем высоту, setsize не будет работать с dock'ом
btn:SetText('Первая кнопка')
btn:SetColor(cols[2])
btn:SetFont('btnfont')
btn.DoClick = function() -- действие при нажатии на кнопку
chat.AddText(Color(175,0,0), 'ты нажал на кнопку!')
end
btn.Paint = function(s,w,h)
draw.RoundedBox(5,0,0,w,h,cols[1]) -- закругленный бокс
end
local cls = vgui.Create('DButton', fr)
cls:SetSize(32,32) -- значение должно быть одинаковое т.е если тут 48, 48, то в сет сайз тоже должно быть 48
cls:SetPos(fr:GetWide() - 32,0) -- получаем ширину от нашего фрейма
cls:SetText('X')
cls:SetColor(cols[2])
cls:SetFont('btnfont')
cls.DoClick = function() -- действие при нажатии на кнопку
fr:SetVisible(false) -- закрываем наш фрейм
end
cls.Paint = function(s,w,h)
draw.RoundedBox(5,0,0,w,h,cols[1]) -- закругленный бокс
end
end
--Осталась хуйня, кон комманд
concommand.Add('openmymenu', tmenu) -- вызываем наше меню