Files
bladwin-RP/lua/bladw_cMenu/client/cl_cMenu.lua
T
2026-06-23 11:41:04 +02:00

239 lines
8.1 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 CloseCMenu()
if IsValid(CMenu) then
CMenu:Remove()
CMenu = nil
gui.EnableScreenClicker(false)
end
end
local function GetStats()
local nbplayer = player.GetCount()
local nbpolice = team.NumPlayers(TEAM_POLICE)
local nbpompiers = team.NumPlayers(TEAM_POMPIERS)
return nbplayer, nbpolice, nbpompiers
end
local nbplayer, nbpolice, nbpompiers = GetStats()
function OpenCMenu()
if IsValid(CMenu) then return end
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 = tostring(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
button3pers = vgui.Create("DButton", CMenu)
button3pers:SetSize(RX(400), RY(122))
button3pers:SetPos(RX(0), RY(250))
button3pers:SetText("")
HoveredButton2(button3pers, "3ème personne", "bladw_text")
button3pers.DoClick = function()
ply:ConCommand("bladw_3pers")
end
SoundButton = vgui.Create("DButton", CMenu)
SoundButton:SetSize(RX(400), RY(122))
SoundButton:SetPos(RX(0), RY(325))
SoundButton:SetText("")
HoveredButton2(SoundButton, "Stopsound", "bladw_text")
SoundButton.DoClick = function()
ply:ConCommand("bladw_sound")
end
staffbutton = vgui.Create("DButton", CMenu)
staffbutton:SetSize(RX(400), RY(122))
staffbutton:SetPos(RX(0), RY(400))
staffbutton:SetText("")
HoveredButton2(staffbutton, "Appelez un staff", "bladw_text")
staffbutton.DoClick = function()
ply:ConCommand("bladw_staff")
end
moneybutton = vgui.Create("DButton", CMenu)
moneybutton:SetSize(RX(400), RY(122))
moneybutton:SetPos(RX(0), RY(475))
moneybutton:SetText("")
HoveredButton2(moneybutton, "Jeter de l'argent", "bladw_text")
moneybutton.DoClick = function()
ply:ConCommand("bladw_money")
end
weaponbutton = vgui.Create("DButton", CMenu)
weaponbutton:SetSize(RX(400), RY(122))
weaponbutton:SetPos(RX(0), RY(550))
weaponbutton:SetText("")
HoveredButton2(weaponbutton, "Jeter une arme", "bladw_text")
weaponbutton.DoClick = function()
ply:ConCommand("bladw_weapon")
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
DiscordButton = vgui.Create("DButton", CMenu)
DiscordButton:SetSize(RX(150), RY(51))
DiscordButton:SetPos(RX(50), RY(942))
DiscordButton:SetText("")
HoveredButton(DiscordButton, bladw_materials.discord, "Discord", "bladw_text_Medium")
DiscordButton.DoClick = function()
gui.OpenURL("https://discord.gg/KsE4Xef6vg")
end
SteamButton = vgui.Create("DButton", CMenu)
SteamButton:SetSize(RX(150), RY(51))
SteamButton:SetPos(RX(207), RY(942))
SteamButton:SetText("")
HoveredButton(SteamButton, bladw_materials.steam, "Steam", "bladw_text_Medium")
SteamButton.DoClick = function()
gui.OpenURL("")
end
WebButton = vgui.Create("DButton", CMenu)
WebButton:SetSize(RX(150), RY(51))
WebButton:SetPos(RX(125), RY(1005))
WebButton:SetText("")
HoveredButton(WebButton, bladw_materials.website, "Website", "bladw_text_Medium")
WebButton.DoClick = function()
gui.OpenURL("")
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)
hook.Add("OnContextMenuOpen", "bladw_blockC", function()
return true
end)