From 65534fbadff0c6e3effb1f7c89dccaa48884d267 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 8 Jan 2015 23:26:19 +0000 Subject: [PATCH] Added "Display Time" functions to ZS notifications Mappers can now specify how long a HUD message lasts on screen in seconds. --- .../entities/point_zsmessage/init.lua | 11 ++++++++--- .../gamemode/vgui/dexnotificationslist.lua | 19 +++++++++++++++---- gamemodes/zombiesurvival/zombiesurvival.fgd | 2 ++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua index 28555a5..f33dced 100644 --- a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua +++ b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua @@ -2,6 +2,7 @@ ENT.Type = "point" function ENT:Initialize() self.SendTo = self.SendTo or -1 + self.DisplayTime = self.DisplayTime or GAMEMODE.NotifyFadeTime end function ENT:Think() @@ -16,18 +17,18 @@ function ENT:AcceptInput(name, caller, activator, args) args = string.gsub(args, "", "") if self.SendTo == 0 then - GAMEMODE:CenterNotifyAll(args) + GAMEMODE:CenterNotifyAll(args,{CustomTime = self.DisplayTime}) elseif self.SendTo == -1 then for _, pl in pairs(player.GetAll()) do if pl == activator or pl == caller then - pl:CenterNotify(args) + pl:CenterNotify(args,{CustomTime = self.DisplayTime}) break end end else for _, pl in pairs(player.GetAll()) do if pl:Team() == self.SendTo then - pl:CenterNotify(args) + pl:CenterNotify(args,{CustomTime = self.DisplayTime}) end end end @@ -41,6 +42,8 @@ function ENT:AcceptInput(name, caller, activator, args) SetGlobalString("hudoverride"..TEAM_UNDEAD, "") elseif name == "clearhumanhudmessage" or name == "clearsurvivorhudmessage" then SetGlobalString("hudoverride"..TEAM_HUMAN, "") + elseif name == "setdisplaytime" then + self.DisplayTime = tonumber(args) end end @@ -57,5 +60,7 @@ function ENT:KeyValue(key, value) else self.SendTo = 0 end + elseif key == "displaytime" then + self.DisplayTime = tonumber(value) end end diff --git a/gamemodes/zombiesurvival/gamemode/vgui/dexnotificationslist.lua b/gamemodes/zombiesurvival/gamemode/vgui/dexnotificationslist.lua index bd8fd11..117f5de 100644 --- a/gamemodes/zombiesurvival/gamemode/vgui/dexnotificationslist.lua +++ b/gamemodes/zombiesurvival/gamemode/vgui/dexnotificationslist.lua @@ -160,12 +160,23 @@ function PANEL:AddNotification(...) notif:Dock(TOP) + local args = {...} + + local FadeTime = GAMEMODE.NotifyFadeTime + + for k, v in pairs(args) do + if type(v) == "table" and v.CustomTime and type(v.CustomTime == "number") then + FadeTime = v.CustomTime + break + end + end + notif:SetAlpha(1) notif:AlphaTo(255, 0.5) - notif:AlphaTo(1, 1, GAMEMODE.NotifyFadeTime - 1) - - notif.DieTime = CurTime() + GAMEMODE.NotifyFadeTime - + notif:AlphaTo(1, 1, FadeTime - 1) + + notif.DieTime = CurTime() + FadeTime + return notif end diff --git a/gamemodes/zombiesurvival/zombiesurvival.fgd b/gamemodes/zombiesurvival/zombiesurvival.fgd index 980e596..baffb7e 100644 --- a/gamemodes/zombiesurvival/zombiesurvival.fgd +++ b/gamemodes/zombiesurvival/zombiesurvival.fgd @@ -635,6 +635,7 @@ "private" : "Activator Only" "all" : "All" ] + displaytime(integer) : "Display Time (centre message only)" : 8 : "How long the input message displays for, does not have an effect on HUD messages." // Inputs input message(string) : "What to display. Supports the markup library." @@ -642,6 +643,7 @@ input setzombiehudmessage(string) : "Set a message to display in the zombie wave hud." input clearhumanhudmessage(void) : "Clear the message to display in the human wave hud." input clearzombiehudmessage(void) : "Clear the message to display in the zombie wave hud." + input setdisplaytime(integer) : "Change how long the input message displays for." ] @PointClass base(Targetname) = logic_pantsmode : "ZS: When activated, this will set the special Pants Mode on."