mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
140
gamemodes/terrortown/gamemode/cl_popups.lua
Normal file
140
gamemodes/terrortown/gamemode/cl_popups.lua
Normal file
@@ -0,0 +1,140 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
-- Some popup window stuff
|
||||
|
||||
local GetTranslation = LANG.GetTranslation
|
||||
local GetPTranslation = LANG.GetParamTranslation
|
||||
|
||||
---- Round start
|
||||
|
||||
local function GetTextForRole(role)
|
||||
local menukey = Key("+menu_context", "C")
|
||||
|
||||
if role == ROLE_INNOCENT then
|
||||
return GetTranslation("info_popup_innocent")
|
||||
|
||||
elseif role == ROLE_DETECTIVE then
|
||||
return GetPTranslation("info_popup_detective", {menukey = Key("+menu_context", "C")})
|
||||
|
||||
else
|
||||
local traitors = {}
|
||||
for _, ply in player.Iterator() do
|
||||
if ply:IsTraitor() then
|
||||
table.insert(traitors, ply)
|
||||
end
|
||||
end
|
||||
|
||||
local text
|
||||
if #traitors > 1 then
|
||||
local traitorlist = ""
|
||||
|
||||
for k, ply in ipairs(traitors) do
|
||||
if ply != LocalPlayer() then
|
||||
traitorlist = traitorlist .. string.rep(" ", 42) .. ply:Nick() .. "\n"
|
||||
end
|
||||
end
|
||||
|
||||
text = GetPTranslation("info_popup_traitor",
|
||||
{menukey = menukey, traitorlist = traitorlist})
|
||||
else
|
||||
text = GetPTranslation("info_popup_traitor_alone", {menukey = menukey})
|
||||
end
|
||||
|
||||
return text
|
||||
end
|
||||
end
|
||||
|
||||
local startshowtime = CreateConVar("ttt_startpopup_duration", "17", FCVAR_ARCHIVE)
|
||||
-- shows info about goal and fellow traitors (if any)
|
||||
local function RoundStartPopup()
|
||||
-- based on Derma_Message
|
||||
|
||||
if startshowtime:GetInt() <= 0 then return end
|
||||
|
||||
if not LocalPlayer() then return end
|
||||
|
||||
local dframe = vgui.Create( "Panel" )
|
||||
dframe:SetDrawOnTop( true )
|
||||
dframe:SetMouseInputEnabled(false)
|
||||
dframe:SetKeyboardInputEnabled(false)
|
||||
|
||||
local color = Color(0,0,0, 200)
|
||||
dframe.Paint = function(s)
|
||||
draw.RoundedBox(8, 0, 0, s:GetWide(), s:GetTall(), color)
|
||||
end
|
||||
|
||||
|
||||
local text = GetTextForRole(LocalPlayer():GetRole())
|
||||
|
||||
local dtext = vgui.Create( "DLabel", dframe )
|
||||
dtext:SetFont("TabLarge")
|
||||
dtext:SetText(text)
|
||||
dtext:SizeToContents()
|
||||
dtext:SetContentAlignment( 5 )
|
||||
dtext:SetTextColor( color_white )
|
||||
|
||||
local w, h = dtext:GetSize()
|
||||
local m = 10
|
||||
|
||||
dtext:SetPos(m,m)
|
||||
|
||||
dframe:SetSize( w + m*2, h + m*2 )
|
||||
dframe:Center()
|
||||
|
||||
dframe:AlignBottom( 10 )
|
||||
|
||||
timer.Simple(startshowtime:GetInt(), function() dframe:Remove() end)
|
||||
end
|
||||
concommand.Add("ttt_cl_startpopup", RoundStartPopup)
|
||||
|
||||
--- Idle message
|
||||
|
||||
local function IdlePopup()
|
||||
local w, h = 300, 180
|
||||
|
||||
local dframe = vgui.Create("DFrame")
|
||||
dframe:SetSize(w, h)
|
||||
dframe:Center()
|
||||
dframe:SetTitle(GetTranslation("idle_popup_title"))
|
||||
dframe:SetVisible(true)
|
||||
dframe:SetMouseInputEnabled(true)
|
||||
|
||||
local inner = vgui.Create("DPanel", dframe)
|
||||
inner:StretchToParent(5, 25, 5, 45)
|
||||
|
||||
local idle_limit = GetGlobalInt("ttt_idle_limit", 300) or 300
|
||||
|
||||
local text = vgui.Create("DLabel", inner)
|
||||
text:SetWrap(true)
|
||||
text:SetText(GetPTranslation("idle_popup", {num = idle_limit, helpkey = Key("gm_showhelp", "F1")}))
|
||||
text:SetDark(true)
|
||||
text:StretchToParent(10,5,10,5)
|
||||
|
||||
local bw, bh = 75, 25
|
||||
local cancel = vgui.Create("DButton", dframe)
|
||||
cancel:SetPos(10, h - 40)
|
||||
cancel:SetSize(bw, bh)
|
||||
cancel:SetText(GetTranslation("idle_popup_close"))
|
||||
cancel.DoClick = function() dframe:Close() end
|
||||
|
||||
local disable = vgui.Create("DButton", dframe)
|
||||
disable:SetPos(w - 185, h - 40)
|
||||
disable:SetSize(175, bh)
|
||||
disable:SetText(GetTranslation("idle_popup_off"))
|
||||
disable.DoClick = function()
|
||||
RunConsoleCommand("ttt_spectator_mode", "0")
|
||||
dframe:Close()
|
||||
end
|
||||
|
||||
dframe:MakePopup()
|
||||
|
||||
end
|
||||
concommand.Add("ttt_cl_idlepopup", IdlePopup)
|
||||
Reference in New Issue
Block a user