From 1da888bb58a2222dce42a3a0703b13e04f087e6c Mon Sep 17 00:00:00 2001 From: z411 Date: Fri, 19 May 2023 14:04:52 +0000 Subject: [PATCH] Make best pings green, good pings yellow, medium pings orange and worst pings red in scoreboard --- _hud_common.cfg | 8 ++++++++ qcsrc/client/hud/panel/scoreboard.qc | 28 ++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/_hud_common.cfg b/_hud_common.cfg index da4be22b3..76d4480e5 100644 --- a/_hud_common.cfg +++ b/_hud_common.cfg @@ -143,6 +143,14 @@ seta hud_panel_scoreboard_spectators_aligned 0 "align spectators in columns" seta hud_panel_scoreboard_spectators_position 1 "spectator list position (0 = before accuracy and itemstats, 1 = before rankings, 2 = after rankings, 3 = after map stats)" seta hud_panel_scoreboard_minwidth 0.6 "minimum width of the scoreboard" seta hud_panel_scoreboard_team_size_position 0 "where to show the team size (0 = do not show, 1 = left of scoreboard, 2 = right of scoreboard), will move team scores to the other side if necessary" +seta hud_panel_scoreboard_ping_best_milliseconds 0 "the value for the best ping value" +seta hud_panel_scoreboard_ping_medium_milliseconds_milliseconds 70 "the value for medium ping value" +seta hud_panel_scoreboard_ping_high_milliseconds 100 "the value for high ping value" +seta hud_panel_scoreboard_ping_worst_milliseconds 150 "the value for worst ping value" +seta hud_panel_scoreboard_ping_best_color "0 1 0" "the color for best possible ping values" +seta hud_panel_scoreboard_ping_med_color "1 1 0" "the color for medium ping values" +seta hud_panel_scoreboard_ping_high_color "1 0.5 0" "the color for high ping values" +seta hud_panel_scoreboard_ping_worst_color "1 0 0" "the color for worst ping values" seta hud_panel_scoreboard_playerid 0 "show player id (server entity number) next to player's name" seta hud_panel_scoreboard_playerid_prefix "#" "player id prefix" seta hud_panel_scoreboard_playerid_suffix " " "player id suffix" diff --git a/qcsrc/client/hud/panel/scoreboard.qc b/qcsrc/client/hud/panel/scoreboard.qc index 566f5a695..6b5795c3a 100644 --- a/qcsrc/client/hud/panel/scoreboard.qc +++ b/qcsrc/client/hud/panel/scoreboard.qc @@ -982,6 +982,22 @@ string Scoreboard_GetName(entity pl) return entcs_GetName(pl.sv_entnum); } +int autocvar_hud_panel_scoreboard_ping_best_milliseconds = 0; +int autocvar_hud_panel_scoreboard_ping_medium_milliseconds = 70; +int autocvar_hud_panel_scoreboard_ping_high_milliseconds = 100; +int autocvar_hud_panel_scoreboard_ping_worst_milliseconds = 150; +vector autocvar_hud_panel_scoreboard_ping_best_color = '0 1 0'; +vector autocvar_hud_panel_scoreboard_ping_medium_color = '1 1 0'; +vector autocvar_hud_panel_scoreboard_ping_high_color = '1 0.5 0'; +vector autocvar_hud_panel_scoreboard_ping_worst_color = '1 0 0'; +#define PING_BEST autocvar_hud_panel_scoreboard_ping_best_milliseconds +#define PING_MED autocvar_hud_panel_scoreboard_ping_medium_milliseconds +#define PING_HIGH autocvar_hud_panel_scoreboard_ping_high_milliseconds +#define PING_WORST autocvar_hud_panel_scoreboard_ping_worst_milliseconds +#define COLOR_BEST autocvar_hud_panel_scoreboard_ping_best_color +#define COLOR_MED autocvar_hud_panel_scoreboard_ping_medium_color +#define COLOR_HIGH autocvar_hud_panel_scoreboard_ping_high_color +#define COLOR_WORST autocvar_hud_panel_scoreboard_ping_worst_color string Scoreboard_GetField(entity pl, PlayerScoreField field, bool per_round) { float tmp, num, denom; @@ -1006,8 +1022,16 @@ string Scoreboard_GetField(entity pl, PlayerScoreField field, bool per_round) f = pl.ping; if(f == 0) return _("N/A"); - tmp = max(0, min(220, f-80)) / 220; - sbt_field_rgb = '1 1 1' - '0 1 1' * tmp; + if(f < PING_BEST) + sbt_field_rgb = COLOR_BEST; + else if(f < PING_MED) + sbt_field_rgb = COLOR_BEST + (COLOR_MED - COLOR_BEST) * ((f - PING_BEST) / (PING_MED - PING_BEST)); + else if(f < PING_HIGH) + sbt_field_rgb = COLOR_MED + (COLOR_HIGH - COLOR_MED) * ((f - PING_MED) / (PING_HIGH - PING_MED)); + else if(f < PING_WORST) + sbt_field_rgb = COLOR_HIGH + (COLOR_WORST - COLOR_HIGH) * ((f - PING_HIGH) / (PING_WORST - PING_HIGH)); + else + sbt_field_rgb = COLOR_WORST; return ftos(f); case SP_PL: -- 2.39.2