Files

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)