35 HUD_Write_Cvar(
"hud_panel_scoreboard_table_highlight_alpha_eliminated");
112 cvar_set(
"hud_panel_scoreboard_scores_per_round",
"0");
122#define SCO_LABEL(strlabel, label, padding, help) \
125 return CTX(strlabel); \
126 LOG_HELP("^3", label, padding, "^7", help);
130 SCO_LABEL(_(
"SCO^bckills"),
"bckills",
" ", _(
"Number of ball carrier kills"));
131 SCO_LABEL(_(
"SCO^bctime"),
"bctime",
" ", _(
"Total amount of time holding the ball in Keepaway"));
132 SCO_LABEL(_(
"SCO^caps"),
"caps",
" ", _(
"How often a flag (CTF) or a key (Key Hunt) was captured"));
133 SCO_LABEL(_(
"SCO^captime"),
"captime",
" ", _(
"Time of fastest capture (CTF)"));
134 SCO_LABEL(_(
"SCO^deaths"),
"deaths",
" ", _(
"Number of deaths"));
135 SCO_LABEL(_(
"SCO^destructions"),
"destructions",
" ", _(
"Number of keys destroyed by pushing them into void"));
136 SCO_LABEL(_(
"SCO^damage dealt"),
"dmg",
" ", _(
"The total damage dealt"));
137 SCO_LABEL(_(
"SCO^damage taken"),
"dmgtaken",
" ", _(
"The total damage taken"));
138 SCO_LABEL(_(
"SCO^drops"),
"drops",
" ", _(
"Number of flag drops"));
139 SCO_LABEL(_(
"SCO^fastest"),
"fastest",
" ", _(
"Time of fastest lap (Race/CTS)"));
140 SCO_LABEL(_(
"SCO^faults"),
"faults",
" ", _(
"Number of faults committed"));
141 SCO_LABEL(_(
"SCO^fckills"),
"fckills",
" ", _(
"Number of flag carrier kills"));
142 SCO_LABEL(_(
"SCO^fps"),
"fps",
" ", _(
"FPS"));
143 SCO_LABEL(_(
"SCO^frags"),
"frags",
" ", _(
"Number of kills minus suicides"));
144 SCO_LABEL(_(
"SCO^generators"),
"generators",
" ", _(
"Number of generators destroyed"));
145 SCO_LABEL(_(
"SCO^goals"),
"goals",
" ", _(
"Number of goals scored"));
146 SCO_LABEL(_(
"SCO^hunts"),
"hunts",
" ", _(
"Number of hunts (Survival)"));
147 SCO_LABEL(_(
"SCO^kckills"),
"kckills",
" ", _(
"Number of key carrier kills"));
148 SCO_LABEL(_(
"SCO^k/d"),
"kd",
" ", _(
"The kill-death ratio"));
149 SCO_LABEL(_(
"SCO^kdr"),
"kdr",
" ", _(
"The kill-death ratio"));
150 SCO_LABEL(_(
"SCO^kdratio"),
"kdratio",
" ", _(
"The kill-death ratio"));
151 SCO_LABEL(_(
"SCO^kills"),
"kills",
" ", _(
"Number of kills"));
152 SCO_LABEL(_(
"SCO^laps"),
"laps",
" ", _(
"Number of laps finished (Race/CTS)"));
153 SCO_LABEL(_(
"SCO^lives"),
"lives",
" ", _(
"Number of lives (LMS)"));
154 SCO_LABEL(_(
"SCO^losses"),
"losses",
" ", _(
"Number of times a key was lost"));
155 SCO_LABEL(_(
"SCO^name"),
"name",
" ", _(
"Player name"));
156 SCO_LABEL(_(
"SCO^nick"),
"nick",
" ", _(
"Player name"));
157 SCO_LABEL(_(
"SCO^objectives"),
"objectives",
" ", _(
"Number of objectives destroyed"));
158 SCO_LABEL(_(
"SCO^pickups"),
"pickups",
" ", _(
"How often a flag (CTF), a key (Key Hunt), or a ball (Keepaway) was picked up"));
159 SCO_LABEL(_(
"SCO^ping"),
"ping",
" ", _(
"Ping time"));
160 SCO_LABEL(_(
"SCO^pl"),
"pl",
" ", _(
"Packet loss"));
161 SCO_LABEL(_(
"SCO^pushes"),
"pushes",
" ", _(
"Number of players pushed into void"));
162 SCO_LABEL(_(
"SCO^rank"),
"rank",
" ", _(
"Player rank"));
163 SCO_LABEL(_(
"SCO^returns"),
"returns",
" ", _(
"Number of flag returns"));
164 SCO_LABEL(_(
"SCO^revivals"),
"revivals",
" ", _(
"Number of revivals"));
165 SCO_LABEL(_(
"SCO^rounds won"),
"rounds",
" ", _(
"Number of rounds won"));
166 SCO_LABEL(_(
"SCO^rounds played"),
"rounds_pl",
" ", _(
"Number of rounds played"));
167 SCO_LABEL(_(
"SCO^score"),
"score",
" ", _(
"Total score"));
168 SCO_LABEL(_(
"SCO^skill"),
"skill",
" ", _(
"Player skill"));
169 SCO_LABEL(_(
"SCO^suicides"),
"suicides",
" ", _(
"Number of suicides"));
170 SCO_LABEL(_(
"SCO^sum"),
"sum",
" ", _(
"Number of kills minus deaths"));
171 SCO_LABEL(_(
"SCO^survivals"),
"survivals",
" ", _(
"Number of survivals"));
172 SCO_LABEL(_(
"SCO^takes"),
"takes",
" ", _(
"Number of domination points taken (Domination)"));
173 SCO_LABEL(_(
"SCO^teamkills"),
"teamkills",
" ", _(
"Number of teamkills"));
174 SCO_LABEL(_(
"SCO^ticks"),
"ticks",
" ", _(
"Number of ticks (Domination)"));
175 SCO_LABEL(_(
"SCO^time"),
"time",
" ", _(
"Total time raced (Race/CTS)"));
247 bool key_pressed = bInputType == 0;
266 string con_keys = findkeysforcommand(
"toggleconsole", 0);
269 bool hit_con_bind =
false;
270 for (
int i = 0; i < keys; ++i)
289 if (nPrimary ==
K_TAB)
298 goto downarrow_action;
324 LABEL(downarrow_action);
332 for (
entity tm =
teams.sort_next; tm; tm = tm.sort_next)
337 if (scoreboard_selected_team_found)
340 scoreboard_selected_team_found =
true;
352 for (
entity pl, tm =
teams.sort_next; tm; tm = tm.sort_next)
354 for (pl =
players.sort_next; pl; pl = pl.sort_next)
356 if (pl.team != tm.team)
359 if (scoreboard_selected_player_found)
362 scoreboard_selected_player_found =
true;
375 LABEL(uparrow_action);
381 for (
entity tm =
teams.sort_next; tm; tm = tm.sort_next)
395 for (
entity pl, tm =
teams.sort_next; tm; tm = tm.sort_next)
397 for (pl =
players.sort_next; pl; pl = pl.sort_next)
399 if (pl.team != tm.team)
437 localcmd(sprintf(
"cmd selectteam %s; cmd join\n", team_name));
455 localcmd(sprintf(
"scoreboard_columns_set\n"));
461 localcmd(sprintf(
"scoreboard_columns_set default\n"));
465 localcmd(sprintf(
"scoreboard_columns_set all\n"));
476 localcmd(
"toggle hud_panel_scoreboard_scores_per_round\n");
499 else if (hit_con_bind || nPrimary ==
K_PAUSE)
548 static float update_time;
549 if (
time <= update_time)
555 for (
entity tmp, pl =
players.sort_next; pl; pl = pl.sort_next)
583 for (
entity tm =
teams.sort_next; tm; tm = tm.sort_next)
588 if (
ts_min > tm.team_size)
590 if (
ts_max < tm.team_size)
598 TC(
int, vl);
TC(
int, vr);
TC(
int, f);
601 if (vl == 0 && vr != 0)
603 if (vl != 0 && vr == 0)
627 if (!left.gotscores && right.gotscores)
650 if (left.sv_entnum < right.sv_entnum)
696 if (left.team < right.team)
713 LOG_HELP(_(
"You can modify the scoreboard using the ^2scoreboard_columns_set command."));
715 LOG_HELP(
"^2scoreboard_columns_set ^3default");
716 LOG_HELP(_(
"^2scoreboard_columns_set ^3field1 field2 ..."));
717 LOG_HELP(_(
"^2scoreboard_columns_set ^7without arguments reads the arguments from the cvar scoreboard_columns"));
718 LOG_HELP(_(
" ^5Note: ^7scoreboard_columns_set without arguments is executed on every map start"));
719 LOG_HELP(_(
"^2scoreboard_columns_set ^3expand_default ^7loads default layout and expands it into the cvar scoreboard_columns so you can edit it"));
720 LOG_HELP(_(
"You can use a ^3|^7 to start the right-aligned fields."));
721 LOG_HELP(_(
"The following field names are recognized (case insensitive):"));
727 LOG_HELP(_(
"Before a field you can put a + or - sign, then a comma separated list\n"
728 "of gametypes, then a slash, to make the field show up only in these\n"
729 "or in all but these gametypes. You can also specify 'all' as a\n"
730 "field to show all fields available for the current gametype."));
733 LOG_HELP(_(
"The special gametype names 'teams' and 'noteams' can be used to\n"
734 "include/exclude ALL teams/noteams gametypes."));
737 LOG_HELP(_(
"Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4"));
738 LOG_HELP(_(
"will display name, ping and pl aligned to the left, and the fields\n"
739 "right of the vertical bar aligned to the right."));
740 LOG_HELP(_(
"'field3' will only be shown in CTF, and 'field4' will be shown in all\n"
741 "other gametypes except DM."));
748#define SCOREBOARD_DEFAULT_COLUMNS \
749"ping pl fps skill name |" \
750" -teams,rc,cts,surv,inv,lms/kills +ft,tdm,tmayhem/kills ?+rc,inv/kills" \
751" -teams,surv,lms/deaths +ft,tdm,tmayhem/deaths" \
753" -teams,lms,rc,cts,surv,inv,ka/suicides +ft,tdm,tmayhem/suicides ?+rc,inv/suicides" \
754" -cts,dm,tdm,surv,ka,ft,mayhem,tmayhem/frags" \
755" +tdm,ft,dom,ons,as,tmayhem/teamkills"\
756" -rc,cts,surv,nb/dmg -rc,cts,surv,nb/dmgtaken" \
757" +surv/survivals +surv/hunts" \
758" +ctf/pickups +ctf/fckills +ctf/returns +ctf/caps +ons/takes +ons/caps" \
759" +lms/lives +lms/rank" \
760" +kh/kckills +kh/losses +kh/caps" \
761" ?+rc/laps ?+rc/time +rc,cts/fastest" \
762" +as/objectives +nb/faults +nb/goals" \
763" +ka,tka/pickups +ka,tka/bckills +ka,tka/bctime +ft/revivals" \
764" +dom/ticks +dom/takes" \
765" -lms,rc,cts,inv,nb/score"
774 bool have_name =
false, have_primary =
false, have_secondary =
false, have_separator =
false;
790 if (
argv(2) ==
"default" ||
argv(2) ==
"expand_default")
792 if (
argv(2) ==
"expand_default")
796 else if (
argv(2) ==
"all" ||
argv(2) ==
"ALL")
798 string s =
"ping pl name |";
799 if (
argv(2) ==
"ALL")
802 s =
strcat(s,
" ",
"sum");
803 s =
strcat(s,
" ",
"kdratio");
804 s =
strcat(s,
" ",
"frags");
826 for (i = 1; i < argc - 1; ++i)
870 if (str ==
"damagetaken")
880 if (!nocomplain && str !=
"fps" && str !=
"skill")
881 LOG_INFOF(
"^1Error:^7 Unknown score field: '%s'", str);
891 have_secondary =
true;
903 have_secondary =
true;
905 have_secondary =
true;
906 int missing = (!have_primary) + (!have_secondary) + (!have_separator) + (!have_name);
921 LOG_INFO(
"fixed missing field 'name'");
934 LOG_INFO(
"fixed missing field '|'");
937 else if (!have_separator)
942 LOG_INFO(
"fixed missing field '|'");
986 int f = (
playerslots[pl.sv_entnum].colormap >= 1024)
1004 if (handicap_lvl != 0)
1023#define PING_LOW autocvar_hud_panel_scoreboard_ping_low
1024#define PING_MED autocvar_hud_panel_scoreboard_ping_medium
1025#define PING_HIGH autocvar_hud_panel_scoreboard_ping_high
1026#define COLOR_LOW autocvar_hud_panel_scoreboard_ping_low_color
1027#define COLOR_MED autocvar_hud_panel_scoreboard_ping_medium_color
1028#define COLOR_HIGH autocvar_hud_panel_scoreboard_ping_high_color
1031 float tmp, num, denom;
1054 return "\xE2\x96\xB6\xE2\x96\xB6\xE2\x96\xB6";
1073 f = pl.ping_packetloss;
1074 tmp = pl.ping_movementloss;
1075 if (f == 0 && tmp == 0)
1080 tmp =
bound(0, f / 0.2 + tmp / 0.04, 1);
1091 f = pl.(scores(SP_KILLS)) - pl.(scores(SP_SUICIDES));
1097 num = pl.(scores(SP_KILLS));
1098 denom = pl.(scores(SP_DEATHS));
1106 str = sprintf(
"%d", num);
1114 str = sprintf(
"%.1f", num / denom);
1121 str = sprintf(
"%.1f", num / denom);
1126 f = pl.(scores(SP_KILLS)) - pl.(scores(SP_DEATHS));
1139 tmp = pl.(scores(SP_SKILL));
1142 case -1:
return "...";
1143 case -2:
return _(
"N/A");
1144 default:
return ftos(tmp);
1148 tmp = pl.(scores(SP_FPS));
1152 return ((pl.ping == 0) ? _(
"N/A") :
"...");
1163 return ftos(pl.(scores(field)));
1165 case SP_DMG:
case SP_DMGTAKEN:
1167 return sprintf(
"%.2f k", pl.(scores(field)) / (1000 *
rounds_played));
1168 return sprintf(
"%.1f k", pl.(scores(field)) / 1000);
1170 default:
case SP_SCORE:
1171 tmp = pl.(scores(field));
1200 for (j = 0; j < 3; ++j)
1222 for (j = 0; j < 2; ++j)
1240 float used_space = 0;
1242 if (j != i &&
sbt_field[i] != SP_SEPARATOR)
1343 pos.x += column_dim.x;
1349 vector prev_drawfontscale;
1390 TC(
bool, is_self);
TC(
int, pl_number);
1423 if (field == SP_SEPARATOR)
1426 if (is_spec && field != SP_NAME && field != SP_PING)
1436 if (field == SP_NAME)
1462 for (j = 0; j < 3; ++j)
1480 if (field == SP_SEPARATOR)
1483 if (is_spec && field != SP_NAME && field != SP_PING)
1492 if (field == SP_NAME)
1505 for (j = 0; j < 3; ++j)
1542 static float max_name_width = 0;
1544 float fieldsize = 0;
1545 float min_fieldsize = 0;
1554 for (i = 0; pl; pl = pl.sort_next)
1556 if (pl.team != this_team)
1558 if (pl == excluded_pl)
1582 if (column_width > max_name_width)
1583 max_name_width = column_width;
1584 column_width = max_name_width;
1589 column_width +=
hud_fontsize.x * 0.25 +
max(fieldsize, min_fieldsize) + 2 * fieldpadding;
1592 if (pos.x + column_width > width_limit)
1619 name_pos.x +=
max(fieldsize, min_fieldsize) + 2 * fieldpadding +
hud_fontsize.x * 0.25;
1623 name_pos.x += ignored_size;
1629 name_pos.x += queued_size;
1635 h_size.x =
max(fieldsize, min_fieldsize) + 2 * fieldpadding;
1639 field_pos.x += column_width - h_size.x;
1642 field_pos.x += fieldpadding + (
max(fieldsize, min_fieldsize) - fieldsize) * 0.5;
1651 pos.x += column_width;
1659 int max_players = 999;
1672 if (max_players <= 1)
1674 if (max_players == tm.team_size)
1682 vector scoreboard_selected_hl_pos = pos;
1683 vector scoreboard_selected_hl_size =
'0 0 0';
1685 scoreboard_selected_hl_size.y =
panel_size.y;
1690 if (
panel.current_panel_bg !=
"0")
1718 bool is_self =
false;
1719 bool self_shown =
false;
1724 if (pl.team != tm.team)
1726 if (i == max_players - 2 && pl != me)
1728 if (!self_shown && me.team == tm.team)
1736 if (i >= max_players - 1)
1811 int disownedcnt = 0;
1817 WepSet set = it.m_wepset;
1823 if (weapon_stats < 0 && !((weapons_stat & set) || (weapons_inmap & set)))
1833 if (weapon_cnt <= 0)
1839 int columns =
ceil(weapon_cnt / rows);
1847 if (
panel.current_panel_bg !=
"0")
1860 if (
panel.current_panel_bg !=
"0")
1872 float weapon_width = tmp.x / columns / rows;
1880 for (
int i = 0; i < columns; ++i)
1885 for (
int i = 0; i < rows; ++i)
1890 int weapons_with_stats = 0;
1892 pos.x += weapon_width / 2;
1899 float oldposx = pos.x;
1907 WepSet set = it.m_wepset;
1908 if (weapon_stats < 0 && !((weapons_stat & set) || (weapons_inmap & set)))
1914 if (weapon_stats >= 0)
1922 if (weapon_stats >= 0)
1924 ++weapons_with_stats;
1935 tmpos.x += weapon_width * rows;
1936 pos.x += weapon_width * rows;
1937 if (rows == 2 && column == columns - 1)
1946 if (weapons_with_stats)
1961 if (it.instanceOfArmor || it.instanceOfHealth)
1963 switch (
floor(mask) % 10)
1965 default:
return false;
1966 case 4:
if (it == ITEM_HealthMega || it == ITEM_ArmorMega)
return true;
1967 case 3:
if (it == ITEM_HealthBig || it == ITEM_ArmorBig)
return true;
1968 case 2:
if (it == ITEM_HealthMedium || it == ITEM_ArmorMedium)
return true;
1969 case 1:
if (it == ITEM_HealthSmall || it == ITEM_ArmorSmall)
return true;
1972 if (it.instanceOfAmmo)
1973 return (
floor(mask / 10) % 10) == 1;
1982 int disowned_cnt = 0;
1983 int uninteresting_cnt = 0;
1989 ++uninteresting_cnt;
1994 int n = items_cnt - disowned_cnt;
1999 int columns =
max(6,
ceil(n / rows));
2006 if (
panel.current_panel_bg !=
"0")
2019 if (
panel.current_panel_bg !=
"0")
2031 float item_width = tmp.x / columns / rows;
2039 for (
int i = 0; i < columns; ++i)
2044 for (
int i = 0; i < rows; ++i)
2049 pos.x += item_width * 0.5;
2051 float oldposx = pos.x;
2065 tmpos.x += item_width * rows;
2066 pos.x += item_width * rows;
2067 if (rows == 2 && column == columns - 1)
2096 float stat_secrets_found, stat_secrets_total;
2097 float stat_monsters_killed, stat_monsters_total;
2102 stat_monsters_killed =
STAT(MONSTERS_KILLED);
2103 stat_monsters_total =
STAT(MONSTERS_TOTAL);
2106 stat_secrets_found =
STAT(SECRETS_FOUND);
2107 stat_secrets_total =
STAT(SECRETS_TOTAL);
2110 if (stat_secrets_total)
2112 if (stat_monsters_total)
2122 if (
panel.current_panel_bg !=
"0")
2131 if (
panel.current_panel_bg !=
"0")
2147 if (stat_monsters_total)
2149 val = sprintf(
"%d/%d", stat_monsters_killed, stat_monsters_total);
2154 if (stat_secrets_total)
2156 val = sprintf(
"%d/%d", stat_secrets_found, stat_secrets_total);
2175 vector hl_rgb = rgb +
'0.5 0.5 0.5';
2177 vector scoreboard_selected_hl_pos = pos;
2181 if (
panel.current_panel_bg !=
"0")
2184 vector scoreboard_selected_hl_size =
'0 0 0';
2186 scoreboard_selected_hl_size.y = pos.y - scoreboard_selected_hl_pos.y;
2219 namesize += available_space;
2220 columnsize.x += available_space;
2224 scoreboard_selected_hl_size.y +=
panel_size.y;
2229 if (
panel.current_panel_bg !=
"0")
2245 int column = 0, j = 0;
2248 for (i = start_item; i < start_item +
rankings_cnt; ++i)
2263 case 0: rank_color =
'0.933 0.733 0.200';
break;
2264 case 1: rank_color =
'0.667 0.667 0.667';
break;
2265 case 2: rank_color =
'0.800 0.467 0.267';
break;
2266 default: rank_color =
'1 1 1';
2317 if (weapon_stats >= 0)
2368 for (
entity tm, pl =
players.sort_next; pl; pl = pl.sort_next)
2371 for (tm =
teams.sort_next; tm; tm = tm.sort_next)
2374 str = sprintf(
"%s (%d)", _(
"Spectators"), tm.team_size);
2396 return sprintf((is_leadlimit ? _(
"^2+%s %s") : _(
"^5%s %s")),
ScoreString(s_flags, limit, 0),
2397 (s_label ==
"score") ?
CTX(_(
"SCO^points")) :
2416 if (scoreboard_fadeinspeed &&
frametime)
2421 static string hud_fontsize_str;
2429 static float scoreboard_table_fieldtitle_maxwidth_prev;
2441 if (scoreboard_fadeoutspeed &&
frametime)
2502 vector sb_gameinfo_type_fontsize, sb_gameinfo_detail_fontsize;
2519 str = _(
"Team Selection");
2528 pos.y += sb_gameinfo_type_fontsize.y;
2533 str = sprintf(_(
"^7Press ^3%s^7 to join the selected team"),
translate_key(
"SPACE"));
2535 str = sprintf(_(
"^7Press ^3%s^7 to auto-select a team and join"),
translate_key(
"SPACE"));
2538 pos.y += sb_gameinfo_detail_fontsize.y +
hud_fontsize.y * 0.3;
2539 str = sprintf(_(
"^7Press ^3%s ^7to select a specific team"),
translate_key(
"TAB"));
2544 float tl =
STAT(TIMELIMIT);
2545 float fl =
STAT(FRAGLIMIT);
2546 float ll =
STAT(LEADLIMIT);
2547 float ll_and_fl =
STAT(LEADLIMIT_AND_FRAGLIMIT);
2556 str =
strcat(str,
"^7 / ");
2559 if (ll > 0 && (ll < fl || fl <= 0))
2561 if (tl > 0 || fl > 0)
2564 if (ll_and_fl && fl > 0)
2565 str =
strcat(str,
"^7 & ");
2567 str =
strcat(str,
"^7 / ");
2583 pos.y += sb_gameinfo_detail_fontsize.y +
hud_fontsize.y * 0.3;
2584 if (
panel.current_panel_bg !=
"0")
2591 vector bg_size = draw_getimagesize(
"gfx/scoreboard/scoreboard_bg") *
scale;
2597 vector team_score_baseoffset;
2598 vector team_size_baseoffset;
2604 if (
panel.current_panel_bg !=
"0")
2615 if (
panel.current_panel_bg !=
"0")
2622 int team_size_total = 0;
2626 for (tm =
teams.sort_next; tm; tm = tm.sort_next)
2628 team_size_total += tm.team_size;
2632 for (tm =
teams.sort_next; tm; tm = tm.sort_next)
2658 str = sprintf(
"%d/%d", tm.team_size, team_size_total);
2666 str = sprintf(
"%d", tm.team_size);
2669 str = sprintf(
"/%d", team_size_total);
2700 for (tm =
teams.sort_next; tm; tm = tm.sort_next)
2728 string ranktitle =
M_ARGV(0,
string);
2739 str = sprintf(_(
"Speed award: %d%s ^7(%s^7)"),
race_speedaward * conversion_factor, unit,
name);
2740 str =
strcat(str,
" / ");
2775 str = sprintf(_(
"^1Respawning in ^3%s^1..."),
2784 str = sprintf(_(
"You are dead, wait ^3%s^7 before respawning"),
2792 str = sprintf(_(
"You are dead, press ^2%s^7 to respawn"),
getcommandkey(_(
"jump"),
"+jump"));
#define MUTATOR_CALLHOOK(id,...)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
bool HUD_MinigameMenu_IsOpened()
void drawpic_tiled(vector pos, string pic, vector sz, vector area, vector color, float theAlpha, float drawflag)
#define drawcolorcodedstring(position, text, scale, alpha, flag)
#define drawstring(position, text, scale, rgb, alpha, flag)
#define drawpic_aspect_skin(pos, pic, sz, color, theAlpha, drawflag)
#define drawpic(position, pic, size, rgb, alpha, flag)
#define draw_beginBoldFont()
#define drawfill(position, size, rgb, alpha, flag)
#define draw_endBoldFont()
float autocvar_con_notifysize
float autocvar_con_notify
string GetSpeedUnit(int speed_unit)
void Release_Common_Keys()
bool SetTeam(entity o, int Team)
float GetSpeedUnitFactor(int speed_unit)
float grecordtime[RANKINGS_CNT]
float RANKINGS_RECEIVED_CNT
string gametype_custom_name
#define getcommandkey(cmd_name, command)
int spectatee_status
the -1 disables HUD panels before CSQC receives necessary data
string grecordholder[RANKINGS_CNT]
#define colormapPaletteColor(c, isPants)
#define scores_label(this)
#define teamscores_flags(i)
#define teamscores_label(i)
#define scores_flags(this)
const int SFL_ALLOW_HIDE
Allow a column to be hidden (do not automatically add it even if it is a sorting key)
const int SFL_NOT_SORTABLE
const int SFL_SORT_PRIO_MASK
const int SFL_SORT_PRIO_SECONDARY
Scoring priority (NOTE: PRIMARY is used for fraglimit) NOTE: SFL_SORT_PRIO_SECONDARY value must be lo...
#define SFL_ZERO_IS_WORST
const int SFL_SORT_PRIO_PRIMARY
float isGametypeInFilter(Gametype gt, float tp, float ts, string pattern)
string textShortenToWidth(string theText, float maxWidth, vector theFontSize, textLengthUpToWidth_widthFunction_t tw)
string ScoreString(int pFlags, float pValue, int rounds_played)
string translate_key(string key)
string strtolower(string s)
#define TIME_ENCODED_TOSTRING(n, compact)
ERASEABLE string count_ordinal(int interval)
#define count_seconds_decs(time, decs)
#define count_seconds(time)
#define count_minutes(time)
const float DRAWFLAG_NORMAL
#define tokenizebyseparator
int entcs_GetHandicapLevel(int i)
string entcs_GetName(int i)
const int ENTCS_SPEC_PURE
int entcs_GetScoreTeam(int i)
Same as entcs_GetTeam, but returns -1 for no team in teamplay.
entity CSQCModel_server2csqc(int i)
int entcs_GetWantsJoin(int i)
int entcs_GetClientColors(int i)
int entcs_GetSpecState(int i)
void HUD_Panel_LoadCvars()
vector HUD_GetFontsize(string cvarname)
float autocvar__menu_alpha
float panel_bg_color_team
bool QuickMenu_IsOpened()
int weapon_accuracy[REGISTRY_MAX(Weapons)]
int autocvar_hud_speed_unit
#define HUD_Panel_DrawBg()
PlayerScoreField ps_secondary
PlayerScoreField ps_primary
bool HUD_Radar_Clickable()
#define HUD_Write_Cvar(cvar)
bool autocvar__hud_configure
float hud_configure_menu_open
ERASEABLE string CTX(string s)
#define IL_EACH(this, cond, body)
IntrusiveList default_order_items
#define FOREACH(list, cond, body)
noref float vid_conheight
string MapInfo_Type_ToText(Gametype t)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
float race_speedaward_alltimebest
string race_speedaward_holder
string race_speedaward_alltimebest_holder
bool scoreboard_showscores_force
#define REGISTRY_COUNT(id)
int autocvar_hud_panel_scoreboard_ping_high
float sbt_fixcolumnwidth_iconlen_playercolor
vector Scoreboard_DrawHeader(vector pos, vector rgb, bool other_players)
float autocvar_hud_panel_scoreboard_table_fg_alpha
bool autocvar_hud_panel_scoreboard_itemstats
float sbt_field_size[MAX_SBT_FIELDS+1]
float autocvar_hud_panel_scoreboard_table_fieldtitle_maxwidth
bool scoreboard_ui_disabling
bool Scoreboard_WouldDraw()
void Cmd_Scoreboard_Help()
float autocvar_hud_panel_scoreboard_bg_teams_color_team
string Scoreboard_FixColumnWidth(int i, string str, bool init)
float sbt_highlight_alpha_self
float sbt_fixcolumnwidth_iconlen_extra[2]
float sbt_fixcolumnwidth_marginlen
bool autocvar_hud_panel_scoreboard_playerid
int autocvar_hud_panel_scoreboard_itemstats_filter_mask
string TranslateScoresLabel(string label)
float autocvar_hud_panel_scoreboard_team_size_position
float sbt_highlight_alpha_eliminated
void Scoreboard_initFieldSizes(bool compress_more)
bool autocvar_hud_panel_scoreboard_dynamichud
string Scoreboard_AddPlayerId(string pl_name, entity pl)
void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, int pl_number)
bool autocvar_hud_panel_scoreboard_spectators_showping
string autocvar_hud_fontsize
bool autocvar_hud_panel_scoreboard_accuracy_nocolors
bool autocvar_hud_panel_scoreboard_others_showscore
float autocvar_hud_panel_scoreboard_minwidth
vector autocvar_hud_panel_scoreboard_ping_low_color
PlayerScoreField sbt_field[MAX_SBT_FIELDS+1]
bool autocvar_hud_panel_scoreboard_scores_per_round
int Scoreboard_CompareScore(int vl, int vr, int f)
int rankings_start_column
void Scoreboard_UpdatePlayerPos(entity player)
void Scoreboard_InitScores()
float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSecondary)
float autocvar_hud_panel_scoreboard_spectators_position
bool autocvar_hud_panel_scoreboard_table_highlight
float autocvar_hud_panel_scoreboard_itemstats_showdelay_minpos
bool autocvar_hud_panel_scoreboard_spectators_aligned
float autocvar_hud_panel_scoreboard_table_bg_alpha
void Scoreboard_UI_Enable(int mode)
string autocvar_hud_panel_scoreboard_playerid_prefix
const int SBT_FIELD_ICON_EXTRA_COUNT
void Cmd_Scoreboard_SetFields(int argc)
float Scoreboard_ComparePlayerScores(entity left, entity right)
float autocvar_hud_panel_scoreboard_table_highlight_alpha
float sbt_field_title_maxwidth_factor
void Scoreboard_UpdatePlayerTeams()
int autocvar_hud_panel_scoreboard_ping_low
vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
string sbt_field_icon_extra[SBT_FIELD_ICON_EXTRA_COUNT]
#define SCOREBOARD_DEFAULT_COLUMNS
float autocvar_hud_panel_scoreboard_respawntime_decimals
vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size)
int autocvar_hud_panel_scoreboard_itemstats_filter
vector sbt_field_icon_playercolor_rgb[3]
float autocvar_hud_panel_scoreboard_table_bg_scale
vector MapStats_DrawKeyValue(vector pos, string key, string value)
float Scoreboard_CompareTeamScores(entity left, entity right)
float sbt_highlight_alpha
bool autocvar_hud_panel_scoreboard_itemstats_doublerows
vector sbt_field_icon_extra_rgb[SBT_FIELD_ICON_EXTRA_COUNT]
float autocvar_hud_panel_scoreboard_fadeoutspeed
bool Scoreboard_ItemStats_WouldDraw(float ypos)
float sbt_field_title_condense_factor[MAX_SBT_FIELDS+1]
vector Scoreboard_Spectators_Draw(vector pos)
vector autocvar_hud_panel_scoreboard_ping_medium_color
void HUD_Scoreboard_UI_Disable()
float sbt_fixcolumnwidth_len
float autocvar_hud_panel_scoreboard_table_highlight_alpha_self
vector autocvar_hud_panel_scoreboard_ping_high_color
void Scoreboard_Draw_Export(int fh)
bool is_item_filtered(entity it)
vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
void HUD_Scoreboard_UI_Disable_Instantly()
float autocvar_hud_panel_scoreboard_fadeinspeed
float autocvar_hud_panel_scoreboard_table_fg_alpha_self
bool autocvar_hud_panel_scoreboard_accuracy
float autocvar_hud_panel_scoreboard_accuracy_showdelay_minpos
void Scoreboard_UpdateTeamPos(entity Team)
string Scoreboard_Fraglimit_Draw(float limit, bool is_leadlimit)
bool autocvar_hud_panel_scoreboard_accuracy_doublerows
#define SCO_LABEL(strlabel, label, padding, help)
float sbt_field_title_maxwidth
float autocvar_hud_panel_scoreboard_maxheight
string autocvar_hud_panel_scoreboard_playerid_suffix
string Label_getInfo(string label, int mode)
vector Scoreboard_ItemStats_Draw(vector pos, vector rgb, vector bg_size)
int autocvar_hud_panel_scoreboard_ping_medium
float autocvar_hud_panel_scoreboard_table_highlight_alpha_eliminated
float sbt_field_title_width[MAX_SBT_FIELDS+1]
bool Scoreboard_AccuracyStats_WouldDraw(float ypos)
string Scoreboard_GetField(entity pl, PlayerScoreField field, bool per_round)
string Scoreboard_GetName(entity pl)
string sbt_field_title[MAX_SBT_FIELDS+1]
float autocvar_hud_panel_scoreboard_accuracy_showdelay
vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity excluded_pl, entity pl, int pl_number)
vector Scoreboard_Rankings_Draw(vector pos, string ranktitle, entity pl, vector rgb, vector bg_size)
string sbt_field_icon_playercolor[3]
float autocvar_hud_panel_scoreboard_itemstats_showdelay
int scoreboard_selected_panel
entity scoreboard_selected_player
float scoreboard_acc_fade_alpha
string autocvar_scoreboard_columns
bool autocvar_cl_deathscoreboard
int scoreboard_selected_columns_layout
int scoreboard_ui_enabled
entity scoreboard_selected_team
float scoreboard_fade_alpha
float autocvar_hud_panel_scoreboard_namesize
float scoreboard_selected_panel_time
float scoreboard_itemstats_fade_alpha
float autocvar_cl_deathscoreboard_delay
#define SORT_SWAP(a, b)
Swap two neighbours in a sortlist.
#define SHUTDOWN(func)
before shutdown
ERASEABLE string ColorTranslateRGB(string s)
ERASEABLE string ftos_decimals_percentage(float number, int decimals)
converts a percentage to a string with the indicated number of decimals
float stringwidth_colors(string s, vector theSize)
string Static_Team_ColorName(int teamid)
vector Team_ColorRGB(int teamid)
int Team_IndexToTeam(int index)
Converts team index into team value.
WepSet WepSet_GetFromStat_InMap()
WepSet WepSet_GetFromStat()
const int WEP_FLAG_MUTATORBLOCKED
const int WEP_FLAG_HIDDEN
vector Accuracy_GetColor(float accuracy)
void Accuracy_LoadColors()
float autocvar_hud_panel_weapons_aspect