diff --git a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua index f33dced..9a5b0b8 100644 --- a/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua +++ b/gamemodes/zombiesurvival/entities/entities/point_zsmessage/init.lua @@ -3,6 +3,10 @@ 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() @@ -16,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,{CustomTime = self.DisplayTime}) + 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,{CustomTime = self.DisplayTime}) + 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,{CustomTime = self.DisplayTime}) + if self.Position == "top" then + pl:TopNotify(TextColor, args, {CustomTime = self.DisplayTime}) + else + pl:CenterNotify(TextColor, args, {CustomTime = self.DisplayTime}) + end end end end @@ -44,6 +62,8 @@ function ENT:AcceptInput(name, caller, activator, args) SetGlobalString("hudoverride"..TEAM_HUMAN, "") elseif name == "setdisplaytime" then self.DisplayTime = tonumber(args) + elseif name == "settextcolor" or name == "settextcolour" then + self:ApplyColor(args) end end @@ -62,5 +82,16 @@ function ENT:KeyValue(key, value) 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/zombiesurvival.fgd b/gamemodes/zombiesurvival/zombiesurvival.fgd index baffb7e..406f04e 100644 --- a/gamemodes/zombiesurvival/zombiesurvival.fgd +++ b/gamemodes/zombiesurvival/zombiesurvival.fgd @@ -635,7 +635,13 @@ "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." + 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." @@ -644,6 +650,7 @@ 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."