207 lines
7.2 KiB
Lua
207 lines
7.2 KiB
Lua
local function RX(x) return x * (ScrW() / 1920) end
|
|
local function RY(y) return y * (ScrH() / 1080) end
|
|
|
|
local bladw_materials = {
|
|
background = Material("xyoss/cMenu/background.png"),
|
|
backgroundButton = Material("xyoss/cMenu/backgroundButton.png"),
|
|
backgroundButtonHover = Material("xyoss/cMenu/backgroundButtonHover.png"),
|
|
backpoliciers = Material("xyoss/cMenu/backpoliciers.png"),
|
|
backpompiers = Material("xyoss/cMenu/backpompiers.png"),
|
|
discord = Material("xyoss/cMenu/discordbutton.png"),
|
|
steam = Material("xyoss/cMenu/steambutton.png"),
|
|
website = Material("xyoss/cMenu/webButton.png"),
|
|
}
|
|
|
|
local CMenu
|
|
|
|
local function HoveredButton(button, mat, label, font)
|
|
|
|
if type(mat) == "string" then
|
|
mat = Material(mat, "noclamp smooth")
|
|
end
|
|
|
|
|
|
button.Paint = function(self, w, h)
|
|
local bgcolor = Color(0, 0, 0, 215)
|
|
local textcolor = Color(255, 255, 255, 255)
|
|
|
|
if self:IsHovered() then
|
|
bgcolor = Color(255, 255, 255, 111)
|
|
textcolor = Color(0, 0, 0)
|
|
end
|
|
|
|
draw.RoundedBox(12, 0, 0, w, h, bgcolor)
|
|
surface.SetDrawColor(255, 255, 255)
|
|
surface.SetMaterial(mat)
|
|
surface.DrawTexturedRect(15, 12.5, w / 4 , h / 2)
|
|
draw.SimpleText(label, font, w / 1.55, h / 2.1, textcolor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
|
end
|
|
end
|
|
|
|
local function HoveredButton2(button, label, font)
|
|
|
|
button.Paint = function(self, w, h)
|
|
local bgmat = bladw_materials.backgroundButton
|
|
|
|
if self:IsHovered() then
|
|
bgmat = bladw_materials.backgroundButtonHover
|
|
end
|
|
|
|
surface.SetDrawColor(255, 255, 255)
|
|
surface.SetMaterial(bgmat)
|
|
surface.DrawTexturedRect(0, 0, w, h)
|
|
draw.SimpleText(label, font, w / 1.9, h / 2.1, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
|
end
|
|
end
|
|
|
|
local function CreateMenuButton(parent, y, label, command)
|
|
local btn = vgui.Create("DButton", parent)
|
|
btn:SetSize(RX(400), RY(122))
|
|
btn:SetPos(RX(0), RY(y))
|
|
btn:SetText("")
|
|
HoveredButton2(btn, label, "bladw_text")
|
|
btn.DoClick = function()
|
|
ply:ConCommand(command)
|
|
end
|
|
return btn
|
|
end
|
|
|
|
local function CreateLinkButton(parent, x, y, icon, label, url)
|
|
local btn = vgui.Create("DButton", parent)
|
|
btn:SetSize(RX(150), RY(51))
|
|
btn:SetPos(RX(x), RY(y))
|
|
btn:SetText("")
|
|
HoveredButton(btn, icon, label, "bladw_text_Medium")
|
|
btn.DoClick = function()
|
|
gui.OpenURL(url)
|
|
end
|
|
return btn
|
|
end
|
|
|
|
local function CloseCMenu()
|
|
if IsValid(CMenu) then
|
|
CMenu:Remove()
|
|
CMenu = nil
|
|
gui.EnableScreenClicker(false)
|
|
end
|
|
end
|
|
|
|
local cMenuButtons = {
|
|
{ y = 250, label = "3ème personne", command = "bladw_3pers" },
|
|
{ y = 325, label = "Stopsound", command = "bladw_sound" },
|
|
{ y = 400, label = "Appelez un staff", command = "bladw_staff" },
|
|
{ y = 475, label = "Jeter de l'argent",command = "bladw_money" },
|
|
{ y = 550, label = "Jeter une arme", command = "bladw_weapon" },
|
|
}
|
|
|
|
local linkButtons = {
|
|
{ x = 50, y = 942, icon = bladw_materials.discord, label = "Discord", url = "https://discord.gg/KsE4Xef6vg" },
|
|
{ x = 207, y = 942, icon = bladw_materials.steam, label = "Steam", url = "" },
|
|
{ x = 125, y = 1005, icon = bladw_materials.website, label = "Website", url = "" },
|
|
}
|
|
|
|
local function GetStats()
|
|
local nbplayer = player.GetCount()
|
|
local nbpolice = team.NumPlayers(TEAM_POLICE)
|
|
local nbpompiers = team.NumPlayers(TEAM_POMPIERS)
|
|
|
|
return nbplayer, nbpolice, nbpompiers
|
|
end
|
|
|
|
function OpenCMenu()
|
|
if IsValid(CMenu) then return end
|
|
local nbplayer, nbpolice, nbpompiers = GetStats()
|
|
|
|
local ply = LocalPlayer()
|
|
|
|
CMenu = vgui.Create("DFrame")
|
|
CMenu:SetSize(RX(400), ScrH())
|
|
CMenu:SetTitle("")
|
|
CMenu:SetPos(ScrW() - RX(400), 0)
|
|
CMenu:SetDraggable(false)
|
|
CMenu:ShowCloseButton(false)
|
|
CMenu:SetCursor("arrow")
|
|
CMenu:SetAlpha(0)
|
|
CMenu:AlphaTo(255, 0.4, 0)
|
|
CMenu.Paint = function(self, w, h)
|
|
surface.SetDrawColor(255, 255, 255)
|
|
surface.SetMaterial(bladw_materials.background)
|
|
surface.DrawTexturedRect(0, 0, w, h)
|
|
|
|
surface.SetFont("bladw_text")
|
|
local before = "Il y a "
|
|
local count = nbplayer
|
|
local after = " joueurs sur le serveur"
|
|
|
|
local beforeW, _ = surface.GetTextSize(before)
|
|
local countW, _ = surface.GetTextSize(count)
|
|
local totalW, _ = surface.GetTextSize(before .. count .. after)
|
|
local startX = w / 2 - totalW / 2
|
|
|
|
draw.SimpleText(before, "bladw_text", startX, RY(900), Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
draw.SimpleText(count, "bladw_text", startX + beforeW, RY(900), Color(255, 165, 0), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
draw.SimpleText(after, "bladw_text", startX + beforeW + countW, RY(900), Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
end
|
|
|
|
for _, btnData in ipairs(cMenuButtons) do
|
|
CreateMenuButton(CMenu, btnData.y, btnData.label, btnData.command)
|
|
end
|
|
|
|
PoliceButton = vgui.Create("DPanel", CMenu)
|
|
PoliceButton:SetSize(RX(260), RY(51))
|
|
PoliceButton:SetPos(RX(75), RY(732))
|
|
PoliceButton.Paint = function(self, w, h)
|
|
surface.SetDrawColor(255, 255, 255)
|
|
surface.SetMaterial(bladw_materials.backpoliciers)
|
|
surface.DrawTexturedRect(0, 0, w, h)
|
|
|
|
surface.SetFont("bladw_text")
|
|
local count = nbpolice
|
|
local after = " Gendarmes en service"
|
|
|
|
local countW, _ = surface.GetTextSize(count)
|
|
local totalW, _ = surface.GetTextSize(count .. after)
|
|
local startX = w - totalW / 1.2
|
|
|
|
draw.SimpleText(count, "bladw_text_Medium", startX, h / 2, Color(100, 180, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
draw.SimpleText(after, "bladw_text_Medium", startX + countW, h / 2, Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
end
|
|
|
|
PompiersButton = vgui.Create("DPanel", CMenu)
|
|
PompiersButton:SetSize(RX(260), RY(51))
|
|
PompiersButton:SetPos(RX(75), RY(790))
|
|
PompiersButton.Paint = function(self, w, h)
|
|
surface.SetDrawColor(255, 255, 255)
|
|
surface.SetMaterial(bladw_materials.backpompiers)
|
|
surface.DrawTexturedRect(0, 0, w, h)
|
|
|
|
surface.SetFont("bladw_text")
|
|
local count = nbpompiers
|
|
local after = " Pompiers en service"
|
|
|
|
local countW, _ = surface.GetTextSize(count)
|
|
local totalW, _ = surface.GetTextSize(count .. after)
|
|
local startX = w - totalW / 1.11
|
|
|
|
draw.SimpleText(count, "bladw_text_Medium", startX, h / 2, Color(255, 100, 50), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
draw.SimpleText(after, "bladw_text_Medium", startX + countW, h / 2, Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
|
|
end
|
|
|
|
for _, btnData in ipairs(linkButtons) do
|
|
CreateLinkButton(CMenu, btnData.x, btnData.y, btnData.icon, btnData.label, btnData.url)
|
|
end
|
|
end
|
|
|
|
|
|
hook.Add("PlayerButtonDown", "bladw_CMenu_open", function(ply, key)
|
|
if key == KEY_C then
|
|
OpenCMenu()
|
|
gui.EnableScreenClicker(true)
|
|
end
|
|
end)
|
|
|
|
hook.Add("PlayerButtonUp", "bladw_CMenu_close", function(ply, key)
|
|
if key == KEY_C then
|
|
CloseCMenu()
|
|
end
|
|
end) |