239 lines
8.1 KiB
Lua
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) |