diff --git a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua index 28555a5..9a5b0b8 100644 --- a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua +++ b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua @@ -2,6 +2,11 @@ ENT.Type = "point" function ENT:Initialize() self.SendTo = self.SendTo or -1 + self.DisplayTime = self.DisplayTime or GAMEMODE.NotifyFadeTime + self.Position = self.Position or "center" + self.Red = self.Red or 255 + self.Green = self.Green or 255 + self.Blue = self.Blue or 255 end function ENT:Think() @@ -15,19 +20,33 @@ function ENT:AcceptInput(name, caller, activator, args) args = string.gsub(args, "<.-=.->", "") args = string.gsub(args, "", "") + local TextColor = Color(self.Red, self.Green, self.Blue) + if self.SendTo == 0 then - GAMEMODE:CenterNotifyAll(args) + if self.Position == "top" then + GAMEMODE:TopNotifyAll(TextColor, args, {CustomTime = self.DisplayTime}) + else + GAMEMODE:CenterNotifyAll(TextColor, args, {CustomTime = self.DisplayTime}) + end elseif self.SendTo == -1 then for _, pl in pairs(player.GetAll()) do if pl == activator or pl == caller then - pl:CenterNotify(args) + if self.Position == "top" then + pl:TopNotify(TextColor, args, {CustomTime = self.DisplayTime}) + else + pl:CenterNotify(TextColor, args, {CustomTime = self.DisplayTime}) + end break end end else for _, pl in pairs(player.GetAll()) do if pl:Team() == self.SendTo then - pl:CenterNotify(args) + if self.Position == "top" then + pl:TopNotify(TextColor, args, {CustomTime = self.DisplayTime}) + else + pl:CenterNotify(TextColor, args, {CustomTime = self.DisplayTime}) + end end end end @@ -41,6 +60,10 @@ 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) + elseif name == "settextcolor" or name == "settextcolour" then + self:ApplyColor(args) end end @@ -57,5 +80,18 @@ function ENT:KeyValue(key, value) else self.SendTo = 0 end + elseif key == "displaytime" then + self.DisplayTime = tonumber(value) + elseif key == "position" then + self.Position = string.lower(value) + elseif key == "textcolor" or key == "textcolour" then + self:ApplyColor(value) end end + +function ENT:ApplyColor(colorstring) + local col = string.ToColor(colorstring.." 255") + self.Red = col.r or 255 + self.Green = col.g or 255 + self.Blue = col.b or 255 +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..406f04e 100644 --- a/gamemodes/zombiesurvival/zombiesurvival.fgd +++ b/gamemodes/zombiesurvival/zombiesurvival.fgd @@ -635,6 +635,13 @@ "private" : "Activator Only" "all" : "All" ] + displaytime(integer) : "Display Time" : 8 : "How long the input message displays for, does not have an effect on HUD messages." + position(choices) : "Message Position" : "center" : "Where the message is seen." = + [ + "center" : "Center" + "top" : "Top Right" + ] + textcolor(color255) : "Text Colour" : "255 255 255" : "Sets the color of an input message." // Inputs input message(string) : "What to display. Supports the markup library." @@ -642,6 +649,8 @@ 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." + input settextcolor(string) : "Takes an 'R G B' string to change the color of the next message." ] @PointClass base(Targetname) = logic_pantsmode : "ZS: When activated, this will set the special Pants Mode on."