206 lines
6.7 KiB
Lua
206 lines
6.7 KiB
Lua
|
||
-- Fonts for pause menu
|
||
surface.CreateFont("PauseMenuTitle", {
|
||
font = "Exo 2",
|
||
size = 73,
|
||
weight = 700,
|
||
extended = true
|
||
})
|
||
|
||
surface.CreateFont("PauseMenuButton", {
|
||
font = "Exo 2",
|
||
size = 35,
|
||
weight = 600,
|
||
extended = true
|
||
})
|
||
|
||
-- Materials
|
||
local bgMaterial = Material("materials/ft_ui/military/vnu/charcreate/bg.png", "smooth")
|
||
local logoMaterial = Material("materials/ft_ui/military/vnu/charcreate/logo.png", "smooth")
|
||
|
||
-- Main pause menu frame
|
||
local pauseMenu = nil
|
||
|
||
-- Create button function
|
||
local function CreateMenuButton(parent, text, x, y)
|
||
local btn = vgui.Create("DButton", parent)
|
||
btn:SetPos(x, y)
|
||
btn:SetSize(350, 66)
|
||
btn:SetText("")
|
||
|
||
btn.Paint = function(self, w, h)
|
||
-- Background with border
|
||
surface.SetDrawColor(13, 13, 13, 217) -- #0D0D0D with 85% opacity
|
||
draw.RoundedBox(10, 0, 0, w, h, Color(13, 13, 13, 217))
|
||
|
||
-- Border
|
||
surface.SetDrawColor(1, 67, 29, 255) -- #01431D
|
||
surface.DrawOutlinedRect(0, 0, w, h, 2)
|
||
|
||
-- Text centered
|
||
draw.SimpleText(text, "PauseMenuButton", w / 2, h / 2, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||
|
||
-- Hover effect
|
||
if self:IsHovered() then
|
||
surface.SetDrawColor(1, 104, 44, 30) -- #01682C with low opacity
|
||
draw.RoundedBox(10, 0, 0, w, h, Color(1, 104, 44, 30))
|
||
end
|
||
end
|
||
|
||
return btn
|
||
end
|
||
|
||
-- Create pause menu
|
||
local function CreatePauseMenu()
|
||
if IsValid(pauseMenu) then
|
||
pauseMenu:Remove()
|
||
return
|
||
end
|
||
|
||
pauseMenu = vgui.Create("DFrame")
|
||
pauseMenu:SetSize(ScrW(), ScrH())
|
||
pauseMenu:SetPos(0, 0)
|
||
pauseMenu:SetTitle("")
|
||
pauseMenu:SetDraggable(false)
|
||
pauseMenu:ShowCloseButton(false)
|
||
pauseMenu:MakePopup()
|
||
|
||
-- Закрытие меню по Esc
|
||
pauseMenu.OnKeyCodePressed = function(self, key)
|
||
if key == KEY_ESCAPE then
|
||
self:Close()
|
||
gui.HideGameUI()
|
||
return true
|
||
end
|
||
end
|
||
|
||
pauseMenu.Paint = function(self, w, h)
|
||
-- Background image
|
||
surface.SetDrawColor(255, 255, 255, 255)
|
||
surface.SetMaterial(bgMaterial)
|
||
surface.DrawTexturedRect(0, 0, w, h)
|
||
|
||
-- Dark overlay
|
||
surface.SetDrawColor(10, 10, 10, 140) -- rgba(10, 10, 10, 0.55)
|
||
surface.DrawRect(0, 0, w, h)
|
||
|
||
-- Top bar
|
||
surface.SetDrawColor(13, 13, 13, 255) -- #0D0D0D
|
||
surface.DrawRect(0, 0, w, 100)
|
||
|
||
-- Logo (centered at 885, 23 for 1920x1080)
|
||
local logoX = (w / 2) - 75 -- Center logo (150px width / 2)
|
||
local logoY = 23
|
||
surface.SetDrawColor(255, 255, 255, 255)
|
||
surface.SetMaterial(logoMaterial)
|
||
surface.DrawTexturedRect(logoX, logoY, 150, 53)
|
||
|
||
-- Title "Front Team" (767, 284)
|
||
local titleX = (w / 2) - 192 -- Approximate center for "Front Team"
|
||
local titleY = 284
|
||
--draw.SimpleText("Front Team", "PauseMenuTitle", titleX, titleY, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
|
||
end
|
||
|
||
-- Calculate center X position for buttons (785px for 1920px screen)
|
||
local centerX = (ScrW() / 2) - 175 -- 350px button width / 2
|
||
|
||
-- Button 1: Вернуться в игру (380px from top)
|
||
local btnReturn = CreateMenuButton(pauseMenu, "Вернуться в игру", centerX, 380)
|
||
btnReturn.DoClick = function()
|
||
pauseMenu:Close()
|
||
gui.HideGameUI()
|
||
end
|
||
|
||
-- Button 2: Правила (450px from top)
|
||
local btnRules = CreateMenuButton(pauseMenu, "Правила", centerX, 450)
|
||
btnRules.DoClick = function()
|
||
-- Open rules URL or show rules frame
|
||
gui.OpenURL("https://sites.google.com/view/frontteamsite/правила") -- Replace with actual URL
|
||
end
|
||
|
||
-- Button 3: Discord (520px from top)
|
||
local btnDiscord = CreateMenuButton(pauseMenu, "Discord", centerX, 520)
|
||
btnDiscord.DoClick = function()
|
||
-- Open Discord invite link
|
||
gui.OpenURL("https://discord.gg/paQdrP7aD7") -- Replace with actual Discord link
|
||
end
|
||
|
||
-- Button 4: Настройки (590px from top)
|
||
local btnSettings = CreateMenuButton(pauseMenu, "Настройки", centerX, 590)
|
||
btnSettings.DoClick = function()
|
||
if IsValid(pauseMenu) then
|
||
pauseMenu:Close()
|
||
end
|
||
|
||
gui.ActivateGameUI()
|
||
|
||
timer.Simple(0.1, function()
|
||
RunConsoleCommand("gamemenucommand", "openoptionsdialog")
|
||
end)
|
||
end
|
||
|
||
|
||
-- Button 6: Выйти с сервера (730px from top)
|
||
local btnDisconnect = CreateMenuButton(pauseMenu, "Выйти с сервера", centerX, 730)
|
||
btnDisconnect.DoClick = function()
|
||
RunConsoleCommand("disconnect")
|
||
end
|
||
|
||
-- Button 7: Config (800px from top) - только для superadmin
|
||
if LocalPlayer():IsSuperAdmin() then
|
||
local btnConfig = CreateMenuButton(pauseMenu, "Config", centerX, 800)
|
||
btnConfig.DoClick = function()
|
||
-- Создаем DFrame с конфигом Helix
|
||
local configFrame = vgui.Create("DFrame")
|
||
configFrame:SetSize(ScrW() * 0.8, ScrH() * 0.8)
|
||
configFrame:Center()
|
||
configFrame:SetTitle("Helix Config")
|
||
configFrame:MakePopup()
|
||
|
||
-- Создаем tabs панель
|
||
local tabs = configFrame:Add("DPropertySheet")
|
||
tabs:Dock(FILL)
|
||
|
||
-- Вкладка Config
|
||
local configPanel = vgui.Create("DPanel")
|
||
configPanel:Dock(FILL)
|
||
|
||
local configManager = configPanel:Add("ixConfigManager")
|
||
|
||
tabs:AddSheet("Config", configPanel, "icon16/cog.png")
|
||
|
||
-- Вкладка Plugins
|
||
local pluginsPanel = vgui.Create("DPanel")
|
||
pluginsPanel:Dock(FILL)
|
||
|
||
local pluginManager = pluginsPanel:Add("ixPluginManager")
|
||
ix.gui.pluginManager = pluginManager
|
||
|
||
tabs:AddSheet("Plugins", pluginsPanel, "icon16/plugin.png")
|
||
|
||
-- При закрытии фрейма убираем ссылку на pluginManager
|
||
configFrame.OnClose = function()
|
||
ix.gui.pluginManager = nil
|
||
end
|
||
end
|
||
end
|
||
|
||
return pauseMenu
|
||
end
|
||
|
||
-- Hook to show custom pause menu
|
||
hook.Add("OnPauseMenuShow", "ixShowCustomPauseMenu", function()
|
||
if IsValid(ix.plugin.list["f4menu"].f4Menu) then
|
||
ix.plugin.list["f4menu"].f4Menu:Remove()
|
||
return false
|
||
end
|
||
|
||
CreatePauseMenu()
|
||
return false -- Prevent default pause menu
|
||
end)
|
||
|
||
-- Console command to open pause menu (for testing)
|
||
concommand.Add("ix_pausemenu", function()
|
||
CreatePauseMenu()
|
||
end)
|