Files
2026-03-31 10:27:04 +03:00

221 lines
7.5 KiB
Lua

-- Клиентское меню строительства
local PLUGIN = PLUGIN
if CLIENT then
function DrawItems(items, panel, mode, main)
for i=1, #items do
if items[i].cat == mode then
local DButton = panel:Add( "DButton" )
DButton:SetHeight(60)
DButton:SetFont( "Font1" )
DButton:SetText( items[i].name .. " | Запас: " .. items[i].count )
DButton:SetIcon( items[i].icon )
DButton:Dock( TOP )
DButton:DockMargin( 0, 10, 0, 10 )
DButton.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(0, 0, 0, 255))
draw.RoundedBox(5, 2, 2, w-4, h-4, Color(200, 200, 200, 255))
end
DButton.DoClick = function()
if items[i].model != nil then
net.Start("buildtrench")
net.WriteInt(i, 13)
net.SendToServer()
main:Close()
end
if items[i].entity != nil then
net.Start("setentity")
net.WriteInt(i, 13)
net.SendToServer()
main:Close()
end
end
end
end
end
surface.CreateFont("Font3", {
font = "Arial",
extended = true,
weight = 900,
size = 24
})
surface.CreateFont("Font2", {
font = "Arial",
extended = true,
weight = 800,
size = 20
})
surface.CreateFont("Font", {
font = "Arial",
extended = true,
size = 20
})
surface.CreateFont("Font1", {
font = "Arial",
weight = 900,
extended = true,
size = 20
})
local faded_black = Color(100, 100, 100, 0)
net.Receive("openmenu", function(len, ply)
local alpha1 = 255
local alpha2 = 0
local alpha3 = 0
local alpha4 = 0
local catlabel
local DScrollPanel
local items = net.ReadTable()
local mode = 0
local main = vgui.Create("DFrame")
main:SetSize(500, 500)
main:Center()
main:SetTitle(" ")
main:SetDraggable(false)
main:ShowCloseButton(false)
main:MakePopup()
main.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, faded_black)
end
local p = vgui.Create( "DPanel", main )
p:Dock( TOP )
p:DockMargin( 0, 0, 0, 0 )
p:SetHeight(40)
p.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(0, 0, 0, 255))
draw.RoundedBox(5, 2, 2, w-4, h-4, Color(150, 150, 150, 255))
end
local namelabel = vgui.Create( "DLabel", p )
namelabel:Dock( LEFT )
namelabel:DockMargin( 20, 0, 20, 0 )
namelabel:SetSize(200, 20)
namelabel:SetFont( "Font" )
namelabel:SetText( "Инженерный комплект" )
local closebutton = vgui.Create( "DButton", p )
closebutton:Dock( RIGHT )
closebutton:DockMargin( 20, 0, 20, 0 )
closebutton:SetText( " " )
closebutton:SetImage("entities/closebutton.png")
closebutton:SetSize( 40, 40 )
closebutton.Paint = function(self, w, h)
draw.RoundedBox(2, 0, 0, w, h, Color(150, 150, 150, 0))
end
closebutton.DoClick = function()
main:Close()
end
local ppp = vgui.Create( "DPanel", main )
ppp:Dock( TOP )
ppp:DockMargin( 0, 20, 0, 20 )
ppp:SetHeight(60)
ppp.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(0, 0, 0, 255))
draw.RoundedBox(5, 2, 2, w-4, h-4, Color(150, 150, 150, 255))
end
local entity = vgui.Create( "DButton", ppp )
entity:Dock( LEFT )
entity:DockMargin( 70, 10, 0, 10 )
entity:SetText( " " )
entity:SetImage("entities/entity.png")
entity:SetHeight(40)
entity:SetWidth(40)
entity.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(120, 120, 120, alpha1))
end
entity.DoClick = function()
DScrollPanel:GetCanvas():Clear()
DrawItems(items, DScrollPanel, 0, main)
catlabel:SetText( " Объекты" )
alpha1 = 255
alpha2 = 0
alpha3 = 0
alpha4 = 0
end
local tier1 = vgui.Create( "DButton", ppp )
tier1:Dock( LEFT )
tier1:DockMargin( 70, 10, 0, 10 )
tier1:SetText( " " )
tier1:SetImage("entities/tier1.png")
tier1:SetHeight(40)
tier1:SetWidth(40)
tier1.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(120, 120, 120, alpha2))
end
tier1.DoClick = function()
DScrollPanel:GetCanvas():Clear()
DrawItems(items, DScrollPanel, 1, main)
catlabel:SetText( "Легкие укрепления" )
alpha1 = 0
alpha2 = 255
alpha3 = 0
alpha4 = 0
end
local tier2 = vgui.Create( "DButton", ppp )
tier2:Dock( LEFT )
tier2:DockMargin( 70, 10, 0, 10 )
tier2:SetText( " " )
tier2:SetImage("entities/tier2.png")
tier2:SetHeight(40)
tier2:SetWidth(40)
tier2.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(120, 120, 120, alpha3))
end
tier2.DoClick = function()
DScrollPanel:GetCanvas():Clear()
DrawItems(items, DScrollPanel, 2, main)
catlabel:SetText( "Средние укрепления" )
alpha1 = 0
alpha2 = 0
alpha3 = 255
alpha4 = 0
end
local tier3 = vgui.Create( "DButton", ppp )
tier3:Dock( LEFT )
tier3:DockMargin( 70, 10, 0, 10 )
tier3:SetText( " " )
tier3:SetImage("entities/tier3.png")
tier3:SetHeight(40)
tier3:SetWidth(40)
tier3.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(120, 120, 120, alpha4))
end
tier3.DoClick = function()
DScrollPanel:GetCanvas():Clear()
DrawItems(items, DScrollPanel, 3, main)
catlabel:SetText( "Тяжелые укрепления" )
alpha1 = 0
alpha2 = 0
alpha3 = 0
alpha4 = 255
end
local pp = vgui.Create( "DPanel", main )
pp:Dock( TOP )
pp:DockMargin( 0, 0, 0, 20 )
pp:SetHeight(300)
pp.Paint = function(self, w, h)
draw.RoundedBox(5, 0, 0, w, h, Color(0, 0, 0, 255))
draw.RoundedBox(5, 2, 2, w-4, h-4, Color(150, 150, 150, 255))
end
catlabel = vgui.Create( "DLabel", pp )
catlabel:Dock( TOP )
catlabel:DockMargin( 170, 20, 0, 10 )
catlabel:SetSize(350, 20)
catlabel:SetFont( "Font" )
catlabel:SetText( " Объекты" )
DScrollPanel = vgui.Create( "DScrollPanel", pp )
DScrollPanel:Dock( TOP )
DScrollPanel:SetHeight(240)
DScrollPanel:DockMargin( 6, 6, 6, 6 )
DrawItems(items, DScrollPanel, 0, main)
end)
end