34 HUD_Write_Cvar(
"hud_panel_scoreboard_table_highlight_alpha_eliminated");
120 case "bckills":
if (!mode)
return CTX(_(
"SCO^bckills"));
else LOG_HELP(
strcat(
"^3",
"bckills",
" ^7", _(
"Number of ball carrier kills")));
121 case "bctime":
if (!mode)
return CTX(_(
"SCO^bctime"));
else LOG_HELP(
strcat(
"^3",
"bctime",
" ^7", _(
"Total amount of time holding the ball in Keepaway")));
122 case "caps":
if (!mode)
return CTX(_(
"SCO^caps"));
else LOG_HELP(
strcat(
"^3",
"caps",
" ^7", _(
"How often a flag (CTF) or a key (KeyHunt) was captured")));
123 case "captime":
if (!mode)
return CTX(_(
"SCO^captime"));
else LOG_HELP(
strcat(
"^3",
"captime",
" ^7", _(
"Time of fastest capture (CTF)")));
124 case "deaths":
if (!mode)
return CTX(_(
"SCO^deaths"));
else LOG_HELP(
strcat(
"^3",
"deaths",
" ^7", _(
"Number of deaths")));
125 case "destroyed":
if (!mode)
return CTX(_(
"SCO^destroyed"));
else LOG_HELP(
strcat(
"^3",
"destroyed",
" ^7", _(
"Number of keys destroyed by pushing them into void")));
126 case "dmg":
if (!mode)
return CTX(_(
"SCO^damage"));
else LOG_HELP(
strcat(
"^3",
"dmg",
" ^7", _(
"The total damage done")));
127 case "dmgtaken":
if (!mode)
return CTX(_(
"SCO^dmgtaken"));
else LOG_HELP(
strcat(
"^3",
"dmgtaken",
" ^7", _(
"The total damage taken")));
128 case "drops":
if (!mode)
return CTX(_(
"SCO^drops"));
else LOG_HELP(
strcat(
"^3",
"drops",
" ^7", _(
"Number of flag drops")));
129 case "elo":
if (!mode)
return CTX(_(
"SCO^elo"));
else LOG_HELP(
strcat(
"^3",
"elo",
" ^7", _(
"Player ELO")));
130 case "fastest":
if (!mode)
return CTX(_(
"SCO^fastest"));
else LOG_HELP(
strcat(
"^3",
"fastest",
" ^7", _(
"Time of fastest lap (Race/CTS)")));
131 case "faults":
if (!mode)
return CTX(_(
"SCO^faults"));
else LOG_HELP(
strcat(
"^3",
"faults",
" ^7", _(
"Number of faults committed")));
132 case "fckills":
if (!mode)
return CTX(_(
"SCO^fckills"));
else LOG_HELP(
strcat(
"^3",
"fckills",
" ^7", _(
"Number of flag carrier kills")));
133 case "fps":
if (!mode)
return CTX(_(
"SCO^fps"));
else LOG_HELP(
strcat(
"^3",
"fps",
" ^7", _(
"FPS")));
134 case "frags":
if (!mode)
return CTX(_(
"SCO^frags"));
else LOG_HELP(
strcat(
"^3",
"frags",
" ^7", _(
"Number of kills minus suicides")));
135 case "goals":
if (!mode)
return CTX(_(
"SCO^goals"));
else LOG_HELP(
strcat(
"^3",
"goals",
" ^7", _(
"Number of goals scored")));
136 case "kckills":
if (!mode)
return CTX(_(
"SCO^kckills"));
else LOG_HELP(
strcat(
"^3",
"kckills",
" ^7", _(
"Number of keys carrier kills")));
137 case "kd":
if (!mode)
return CTX(_(
"SCO^k/d"));
else LOG_HELP(
strcat(
"^3",
"kd",
" ^7", _(
"The kill-death ratio")));
138 case "kdr":
if (!mode)
return CTX(_(
"SCO^kdr"));
else LOG_HELP(
strcat(
"^3",
"kdr",
" ^7", _(
"The kill-death ratio")));
139 case "kdratio":
if (!mode)
return CTX(_(
"SCO^kdratio"));
else LOG_HELP(
strcat(
"^3",
"kdratio",
" ^7", _(
"The kill-death ratio")));
140 case "kills":
if (!mode)
return CTX(_(
"SCO^kills"));
else LOG_HELP(
strcat(
"^3",
"kills",
" ^7", _(
"Number of kills")));
141 case "laps":
if (!mode)
return CTX(_(
"SCO^laps"));
else LOG_HELP(
strcat(
"^3",
"laps",
" ^7", _(
"Number of laps finished (Race/CTS)")));
142 case "lives":
if (!mode)
return CTX(_(
"SCO^lives"));
else LOG_HELP(
strcat(
"^3",
"lives",
" ^7", _(
"Number of lives (LMS)")));
143 case "losses":
if (!mode)
return CTX(_(
"SCO^losses"));
else LOG_HELP(
strcat(
"^3",
"losses",
" ^7", _(
"Number of times a key was lost")));
144 case "name":
if (!mode)
return CTX(_(
"SCO^name"));
else LOG_HELP(
strcat(
"^3",
"name",
" ^7", _(
"Player name")));
145 case "nick":
if (!mode)
return CTX(_(
"SCO^nick"));
else LOG_HELP(
strcat(
"^3",
"nick",
" ^7", _(
"Player name")));
146 case "objectives":
if (!mode)
return CTX(_(
"SCO^objectives"));
else LOG_HELP(
strcat(
"^3",
"objectives",
" ^7", _(
"Number of objectives destroyed")));
147 case "pickups":
if (!mode)
return CTX(_(
"SCO^pickups"));
else LOG_HELP(
strcat(
"^3",
"pickups",
" ^7", _(
"How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up")));
148 case "ping":
if (!mode)
return CTX(_(
"SCO^ping"));
else LOG_HELP(
strcat(
"^3",
"ping",
" ^7", _(
"Ping time")));
149 case "pl":
if (!mode)
return CTX(_(
"SCO^pl"));
else LOG_HELP(
strcat(
"^3",
"pl",
" ^7", _(
"Packet loss")));
150 case "pushes":
if (!mode)
return CTX(_(
"SCO^pushes"));
else LOG_HELP(
strcat(
"^3",
"pushes",
" ^7", _(
"Number of players pushed into void")));
151 case "rank":
if (!mode)
return CTX(_(
"SCO^rank"));
else LOG_HELP(
strcat(
"^3",
"rank",
" ^7", _(
"Player rank")));
152 case "returns":
if (!mode)
return CTX(_(
"SCO^returns"));
else LOG_HELP(
strcat(
"^3",
"returns",
" ^7", _(
"Number of flag returns")));
153 case "revivals":
if (!mode)
return CTX(_(
"SCO^revivals"));
else LOG_HELP(
strcat(
"^3",
"revivals",
" ^7", _(
"Number of revivals")));
154 case "rounds":
if (!mode)
return CTX(_(
"SCO^rounds won"));
else LOG_HELP(
strcat(
"^3",
"rounds",
" ^7", _(
"Number of rounds won")));
155 case "score":
if (!mode)
return CTX(_(
"SCO^score"));
else LOG_HELP(
strcat(
"^3",
"score",
" ^7", _(
"Total score")));
156 case "suicides":
if (!mode)
return CTX(_(
"SCO^suicides"));
else LOG_HELP(
strcat(
"^3",
"suicides",
" ^7", _(
"Number of suicides")));
157 case "sum":
if (!mode)
return CTX(_(
"SCO^sum"));
else LOG_HELP(
strcat(
"^3",
"sum",
" ^7", _(
"Number of kills minus deaths")));
158 case "takes":
if (!mode)
return CTX(_(
"SCO^takes"));
else LOG_HELP(
strcat(
"^3",
"takes",
" ^7", _(
"Number of domination points taken (Domination)")));
159 case "teamkills":
if (!mode)
return CTX(_(
"SCO^teamkills"));
else LOG_HELP(
strcat(
"^3",
"teamkills",
" ^7", _(
"Number of teamkills")));
160 case "ticks":
if (!mode)
return CTX(_(
"SCO^ticks"));
else LOG_HELP(
strcat(
"^3",
"ticks",
" ^7", _(
"Number of ticks (Domination)")));
161 case "time":
if (!mode)
return CTX(_(
"SCO^time"));
else LOG_HELP(
strcat(
"^3",
"time",
" ^7", _(
"Total time raced (Race/CTS)")));
162 default:
return label;
170 #define SB_EXTRA_SORTING_FIELDS 5 214 for(pl =
players.sort_next; pl; pl = pl.sort_next)
217 int Team = entcs_GetScoreTeam(pl.sv_entnum);
237 TC(
int, vl);
TC(
int, vr);
TC(
int, f);
240 if(vl == 0 && vr != 0)
242 if(vl != 0 && vr == 0)
254 int vl = (left.gotscores) ? entcs_GetTeam(left.sv_entnum) :
NUM_SPECTATOR;
255 int vr = (right.gotscores) ? entcs_GetTeam(right.sv_entnum) :
NUM_SPECTATOR;
266 if(!left.gotscores && right.gotscores)
289 if (r >= 0)
return r;
292 if (left.sv_entnum < right.sv_entnum)
335 if (r >= 0)
return r;
338 if (left.team < right.team)
359 LOG_HELP(_(
"You can modify the scoreboard using the ^2scoreboard_columns_set command."));
361 LOG_HELP(
"^2scoreboard_columns_set ^3default");
362 LOG_HELP(_(
"^2scoreboard_columns_set ^3field1 field2 ..."));
363 LOG_HELP(_(
"^2scoreboard_columns_set ^7without arguments reads the arguments from the cvar scoreboard_columns"));
364 LOG_HELP(_(
" ^5Note: ^7scoreboard_columns_set without arguments is executed on every map start"));
365 LOG_HELP(_(
"^2scoreboard_columns_set ^3expand_default ^7loads default layout and expands it into the cvar scoreboard_columns so you can edit it"));
366 LOG_HELP(_(
"You can use a ^3|^7 to start the right-aligned fields."));
367 LOG_HELP(_(
"The following field names are recognized (case insensitive):"));
373 LOG_HELP(_(
"Before a field you can put a + or - sign, then a comma separated list\n" 374 "of game types, then a slash, to make the field show up only in these\n" 375 "or in all but these game types. You can also specify 'all' as a\n" 376 "field to show all fields available for the current game mode."));
379 LOG_HELP(_(
"The special game type names 'teams' and 'noteams' can be used to\n" 380 "include/exclude ALL teams/noteams game modes."));
383 LOG_HELP(_(
"Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4"));
384 LOG_HELP(_(
"will display name, ping and pl aligned to the left, and the fields\n" 385 "right of the vertical bar aligned to the right."));
386 LOG_HELP(_(
"'field3' will only be shown in CTF, and 'field4' will be shown in all\n" 387 "other gamemodes except DM."));
394 #define SCOREBOARD_DEFAULT_COLUMNS \ 395 "ping pl fps name |" \ 396 " -teams,rc,cts,inv,lms/kills +ft,tdm/kills ?+rc,inv/kills" \ 397 " -teams,lms/deaths +ft,tdm/deaths" \ 399 " -teams,lms,rc,cts,inv,ka/suicides +ft,tdm/suicides ?+rc,inv/suicides" \ 400 " -cts,dm,tdm,ka,ft/frags" \ 401 " +tdm,ft,dom,ons,as/teamkills"\ 402 " -rc,cts,nb/dmg -rc,cts,nb/dmgtaken" \ 403 " +ctf/pickups +ctf/fckills +ctf/returns +ctf/caps +ons/takes +ons/caps" \ 404 " +lms/lives +lms/rank" \ 405 " +kh/kckills +kh/losses +kh/caps" \ 406 " ?+rc/laps ?+rc/time +rc,cts/fastest" \ 407 " +as/objectives +nb/faults +nb/goals" \ 408 " +ka/pickups +ka/bckills +ka/bctime +ft/revivals" \ 409 " +dom/ticks +dom/takes" \ 410 " -lms,rc,cts,inv,nb/score" 417 bool have_name =
false, have_primary =
false, have_secondary =
false, have_separator =
false;
437 if(
argv(2) ==
"default" ||
argv(2) ==
"expand_default")
439 if(
argv(2) ==
"expand_default")
443 else if(
argv(2) ==
"all" ||
argv(2) ==
"ALL")
445 string s =
"ping pl name |";
449 s =
strcat(s,
" ",
"sum");
450 s =
strcat(s,
" ",
"kdratio");
451 s =
strcat(s,
" ",
"frags");
471 for(i = 1; i < argc - 1; ++i)
474 bool nocomplain =
false;
491 str = strtolower(str);
509 if (str ==
"damage") str =
"dmg";
510 if (str ==
"damagetaken") str =
"dmgtaken";
520 if(!nocomplain && str !=
"fps")
521 LOG_INFOF(
"^1Error:^7 Unknown score field: '%s'", str);
532 have_secondary =
true;
537 if(sbt_num_fields >= MAX_SBT_FIELDS)
544 have_secondary =
true;
546 have_secondary =
true;
547 missing = (!have_primary) + (!have_secondary) + (!have_separator) + (!have_name);
554 for(i = sbt_num_fields; i > 0; --i)
563 LOG_INFO(
"fixed missing field 'name'");
568 for(i = sbt_num_fields; i > 1; --i)
578 LOG_INFO(
"fixed missing field '|'");
581 else if(!have_separator)
587 LOG_INFO(
"fixed missing field '|'");
614 return strcat(pref,
itos(pl.sv_entnum + 1), suf, pl_name);
633 int f = entcs_GetClientColors(pl.sv_entnum);
642 return entcs_GetName(pl.sv_entnum);
647 float tmp, num, denom;
661 return "\xE2\x96\xB6\xE2\x96\xB6\xE2\x96\xB6";
666 tmp =
max(0,
min(220, f-80)) / 220;
673 f = pl.ping_packetloss;
674 tmp = pl.ping_movementloss;
675 if(f == 0 && tmp == 0)
680 tmp =
bound(0, f / 0.2 + tmp / 0.04, 1);
691 f = pl.(scores(SP_KILLS));
692 f -= pl.(scores(SP_SUICIDES));
696 num = pl.(scores(SP_KILLS));
697 denom = pl.(scores(SP_DEATHS));
701 str = sprintf(
"%d", num);
702 }
else if(num <= 0) {
704 str = sprintf(
"%.1f", num/denom);
706 str = sprintf(
"%.1f", num/denom);
710 f = pl.(scores(SP_KILLS));
711 f -= pl.(scores(SP_DEATHS));
724 float elo = pl.(scores(SP_ELO));
726 case -1:
return "...";
727 case -2:
return _(
"N/A");
728 default:
return ftos(elo);
734 float fps = pl.(scores(SP_FPS));
738 return ((pl.ping == 0) ? _(
"N/A") :
"...");
745 case SP_DMG:
case SP_DMGTAKEN:
746 return sprintf(
"%.1f k", pl.(scores(field)) / 1000);
748 default:
case SP_SCORE:
749 tmp = pl.(scores(field));
757 return ScoreString(f, tmp);
809 float remaining_space = 0;
818 float namesize =
panel_size.x - remaining_space;
860 pos.x += column_dim.x;
892 TC(
bool, is_self);
TC(
int, pl_number);
894 bool is_spec = (entcs_GetSpecState(pl.sv_entnum) == ENTCS_SPEC_PURE);
919 if(field == SP_SEPARATOR)
922 if(is_spec && field != SP_NAME && field != SP_PING) {
931 if(field == SP_NAME) {
954 if(field == SP_SEPARATOR)
957 if(is_spec && field != SP_NAME && field != SP_PING) {
965 if(field == SP_NAME) {
1008 static float max_name_width = 0;
1010 float fieldsize = 0;
1011 float min_fieldsize = 0;
1020 for(i = 0; pl; pl = pl.sort_next)
1022 if(pl.team != this_team)
1024 if(pl == ignored_pl)
1036 string str = entcs_GetName(pl.sv_entnum);
1043 if(column_width > max_name_width)
1044 max_name_width = column_width;
1045 column_width = max_name_width;
1050 column_width +=
hud_fontsize.x * 0.25 +
max(fieldsize, min_fieldsize) + 2 * fieldpadding;
1053 if(pos.x + column_width > width_limit)
1070 name_pos.x +=
max(fieldsize, min_fieldsize) + 2 * fieldpadding +
hud_fontsize.x * 0.25;
1074 h_size.x =
max(fieldsize, min_fieldsize) + 2 * fieldpadding;
1078 field_pos.x += column_width - h_size.x;
1081 field_pos.x += fieldpadding + (
max(fieldsize, min_fieldsize) - fieldsize) * 0.5;
1090 pos.x += column_width;
1098 int max_players = 999;
1111 if(max_players <= 1)
1113 if(max_players == tm.team_size)
1125 if(
panel.current_panel_bg !=
"0")
1153 bool is_self =
false;
1154 bool self_shown =
false;
1156 for(pl =
players.sort_next; pl; pl = pl.sort_next)
1158 if(pl.team != tm.team)
1160 if(i == max_players - 2 && pl != me)
1162 if(!self_shown && me.team == tm.team)
1170 if(i >= max_players - 1)
1216 WepSet weapons_stat = WepSet_GetFromStat();
1217 WepSet weapons_inmap = WepSet_GetFromStat_InMap();
1218 int disownedcnt = 0;
1220 FOREACH(Weapons, it != WEP_Null, {
1223 WepSet set = it.m_wepset;
1229 if (weapon_stats < 0 && !((weapons_stat &
set) || (weapons_inmap &
set)))
1238 int weapon_cnt = (
REGISTRY_COUNT(Weapons) - 1) - disownedcnt - nHidden;
1239 if (weapon_cnt <= 0)
return pos;
1244 int columns =
ceil(weapon_cnt / rows);
1252 if(
panel.current_panel_bg !=
"0")
1265 if(
panel.current_panel_bg !=
"0")
1268 if(panel_bg_padding)
1277 float weapon_width = tmp.x / columns / rows;
1285 for (
int i = 0; i < columns; ++i)
1290 for (
int i = 0; i < rows; ++i)
1295 int weapons_with_stats = 0;
1297 pos.x += weapon_width / 2;
1304 float oldposx = pos.x;
1308 FOREACH(Weapons, it != WEP_Null, {
1311 WepSet set = it.m_wepset;
1312 if (weapon_stats < 0 && !((weapons_stat &
set) || (weapons_inmap &
set)))
1318 if (weapon_stats >= 0)
1326 if (weapon_stats >= 0) {
1327 weapons_with_stats += 1;
1330 string s = sprintf(
"%d%%", weapon_stats * 100);
1338 tmpos.x += weapon_width * rows;
1339 pos.x += weapon_width * rows;
1340 if (rows == 2 && column == columns - 1) {
1348 if (weapons_with_stats)
1363 if (it.instanceOfArmor || it.instanceOfHealth)
1365 int ha_mask =
floor(mask) % 10;
1368 default:
return false;
1369 case 4:
if (it == ITEM_HealthMega || it == ITEM_ArmorMega)
return true;
1370 case 3:
if (it == ITEM_HealthBig || it == ITEM_ArmorBig)
return true;
1371 case 2:
if (it == ITEM_HealthMedium || it == ITEM_ArmorMedium)
return true;
1372 case 1:
if (it == ITEM_HealthSmall || it == ITEM_ArmorSmall)
return true;
1375 if (it.instanceOfAmmo)
1377 int ammo_mask =
floor(mask / 10) % 10;
1378 return (ammo_mask == 1);
1387 int disowned_cnt = 0;
1388 int uninteresting_cnt = 0;
1389 IL_EACH(default_order_items,
true, {
1390 int q = g_inventory.inv_items[it.m_id];
1393 ++uninteresting_cnt;
1398 int n = items_cnt - disowned_cnt;
1399 if (n <= 0)
return pos;
1402 int columns =
max(6,
ceil(n / rows));
1409 if(
panel.current_panel_bg !=
"0")
1422 if(
panel.current_panel_bg !=
"0")
1425 if(panel_bg_padding)
1434 float item_width = tmp.x / columns / rows;
1442 for (
int i = 0; i < columns; ++i)
1447 for (
int i = 0; i < rows; ++i)
1452 pos.x += item_width / 2;
1454 float oldposx = pos.x;
1459 int n = g_inventory.inv_items[it.m_id];
1461 if (n <= 0)
continue;
1466 tmpos.x += item_width * rows;
1467 pos.x += item_width * rows;
1468 if (rows == 2 && column == columns - 1) {
1494 float stat_secrets_found, stat_secrets_total;
1495 float stat_monsters_killed, stat_monsters_total;
1500 stat_monsters_killed = STAT(MONSTERS_KILLED);
1501 stat_monsters_total = STAT(MONSTERS_TOTAL);
1504 stat_secrets_found = STAT(SECRETS_FOUND);
1505 stat_secrets_total = STAT(SECRETS_TOTAL);
1508 if(stat_secrets_total)
1510 if(stat_monsters_total)
1520 if(
panel.current_panel_bg !=
"0")
1529 if(
panel.current_panel_bg !=
"0")
1532 if(panel_bg_padding)
1545 if(stat_monsters_total)
1547 val = sprintf(
"%d/%d", stat_monsters_killed, stat_monsters_total);
1552 if(stat_secrets_total)
1554 val = sprintf(
"%d/%d", stat_secrets_found, stat_secrets_total);
1569 for (i=RANKINGS_CNT-1; i>=0; --i)
1576 vector hl_rgb = rgb +
'0.5 0.5 0.5';
1580 if(
panel.current_panel_bg !=
"0")
1612 namesize += available_space;
1613 columnsize.x += available_space;
1621 if(
panel.current_panel_bg !=
"0")
1624 if(panel_bg_padding)
1637 int column = 0, j = 0;
1693 FOREACH(Weapons, it != WEP_Null, {
1695 if (weapon_stats >= 0)
1725 IL_EACH(default_order_items,
true, {
1728 int q = g_inventory.inv_items[it.m_id];
1749 for(pl =
players.sort_next; pl; pl = pl.sort_next)
1753 for(tm =
teams.sort_next; tm; tm = tm.sort_next)
1756 str = sprintf(
"%s (%d)", _(
"Spectators"), tm.team_size);
1787 if (scoreboard_fadeinspeed &&
frametime)
1800 if (scoreboard_fadeoutspeed &&
frametime)
1853 vector sb_gameinfo_type_fontsize, sb_gameinfo_detail_fontsize;
1866 float tl = STAT(TIMELIMIT);
1867 float fl = STAT(FRAGLIMIT);
1868 float ll = STAT(LEADLIMIT);
1869 float ll_and_fl = STAT(LEADLIMIT_AND_FRAGLIMIT);
1872 str =
strcat(str, sprintf(_(
"^3%1.0f minutes"), tl));
1878 str =
strcat(str,
"^7 / ");
1896 if(tl > 0 || fl > 0)
1899 if (ll_and_fl && fl > 0)
1900 str =
strcat(str,
"^7 & ");
1902 str =
strcat(str,
"^7 / ");
1922 pos.y += sb_gameinfo_type_fontsize.y;
1929 pos.y += sb_gameinfo_detail_fontsize.y +
hud_fontsize.y * 0.3;
1930 if(
panel.current_panel_bg !=
"0")
1937 vector bg_size = draw_getimagesize(
"gfx/scoreboard/scoreboard_bg") *
scale;
1942 vector team_score_baseoffset;
1943 vector team_size_baseoffset;
1949 if(
panel.current_panel_bg !=
"0")
1960 if(
panel.current_panel_bg !=
"0")
1967 int team_size_total = 0;
1971 for(tm =
teams.sort_next; tm; tm = tm.sort_next)
1973 team_size_total += tm.team_size;
1976 for(tm =
teams.sort_next; tm; tm = tm.sort_next)
2002 str = sprintf(
"%d/%d", tm.team_size, team_size_total);
2013 str = sprintf(
"%d", tm.team_size);
2016 str = sprintf(
"/%d", team_size_total);
2051 for(tm =
teams.sort_next; tm; tm = tm.sort_next)
2076 string ranktitle =
M_ARGV(0,
string);
2111 if(respawn_time < 0)
2116 if(respawn_time <
time)
2119 str = sprintf(_(
"^1Respawning in ^3%s^1..."),
2127 else if(
time < respawn_time)
2129 str = sprintf(_(
"You are dead, wait ^3%s^7 before respawning"),
2137 else if(
time >= respawn_time)
2138 str = sprintf(_(
"You are dead, press ^2%s^7 to respawn"),
getcommandkey(
"jump",
"+jump"));
float autocvar_hud_panel_scoreboard_accuracy_showdelay_minpos
void Scoreboard_InitScores()
float autocvar_hud_panel_scoreboard_spectators_position
noref string autocvar_hud_panel_scoreboard_bg_color_team
#define IL_EACH(this, cond, body)
#define draw_endBoldFont()
vector sbt_field_icon0_rgb
float autocvar_hud_panel_scoreboard_table_bg_scale
float panel_bg_color_team
float autocvar_hud_panel_scoreboard_itemstats_showdelay_minpos
vector Scoreboard_Spectators_Draw(vector pos)
vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
PlayerScoreField sbt_field[MAX_SBT_FIELDS+1]
float autocvar_hud_panel_weapons_aspect
vector MapStats_DrawKeyValue(vector pos, string key, string value)
bool autocvar_hud_panel_scoreboard_spectators_aligned
const int SFL_SORT_PRIO_MASK
bool HUD_MinigameMenu_IsOpened()
bool autocvar__hud_configure
vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size)
bool Scoreboard_ItemStats_WouldDraw(float ypos)
vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
vector Scoreboard_Rankings_Draw(vector pos, string ranktitle, entity pl, vector rgb, vector bg_size)
#define draw_beginBoldFont()
vector Team_ColorRGB(int teamid)
float autocvar_hud_panel_scoreboard_table_fg_alpha
float sbt_highlight_alpha_self
float autocvar_hud_panel_scoreboard_fadeinspeed
bool autocvar_hud_panel_scoreboard_accuracy
string TranslateScoresLabel(string label)
const int SFL_SORT_PRIO_SECONDARY
Scoring priority (NOTE: PRIMARY is used for fraglimit)
bool autocvar_hud_panel_scoreboard_spectators_showping
bool autocvar_hud_panel_scoreboard_itemstats
bool scoreboard_showscores
string Scoreboard_GetField(entity pl, PlayerScoreField field)
#define getcommandkey(cmd_name, command)
float sbt_fixcolumnwidth_iconlen
vector sbt_field_icon1_rgb
float autocvar_hud_panel_scoreboard_table_bg_alpha
string MapInfo_Type_ToText(Gametype t)
const int SFL_SORT_PRIO_PRIMARY
bool autocvar_hud_panel_scoreboard_accuracy_doublerows
string autocvar_hud_panel_scoreboard_playerid_prefix
noref string autocvar_hud_panel_scoreboard_pos
noref string autocvar_hud_panel_scoreboard_bg_color
string textShortenToWidth(string theText, float maxWidth, vector theFontSize, textLengthUpToWidth_widthFunction_t tw)
float autocvar_hud_panel_scoreboard_namesize
void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, int pl_number)
float autocvar_con_notify
float Scoreboard_CompareTeamScores(entity left, entity right)
bool autocvar_hud_panel_scoreboard_dynamichud
#define SFL_ZERO_IS_WORST
const int WEP_FLAG_HIDDEN
bool autocvar_cl_deathscoreboard
float autocvar_hud_panel_scoreboard_table_highlight_alpha_self
float sbt_highlight_alpha
string Label_getInfo(string label, int mode)
#define TIME_ENCODED_TOSTRING(n)
float scoreboard_showscores_force
string sbt_field_title[MAX_SBT_FIELDS+1]
float autocvar_hud_panel_scoreboard_respawntime_decimals
int Scoreboard_CompareScore(int vl, int vr, int f)
string autocvar_hud_panel_scoreboard_playerid_suffix
int autocvar_hud_panel_scoreboard_itemstats_filter_mask
bool Scoreboard_AccuracyStats_WouldDraw(float ypos)
float grecordtime[RANKINGS_CNT]
#define SB_EXTRA_SORTING_FIELDS
#define REGISTRY_COUNT(id)
#define teamscores_label(i)
ERASEABLE string count_ordinal(int interval)
bool HUD_Radar_Clickable()
#define SCOREBOARD_DEFAULT_COLUMNS
vector Scoreboard_ItemStats_Draw(vector pos, vector rgb, vector bg_size)
#define HUD_Panel_DrawBg()
string race_speedaward_alltimebest_holder
string grecordholder[RANKINGS_CNT]
float autocvar_hud_panel_scoreboard_table_highlight_alpha
void Scoreboard_Draw_Export(int fh)
string Scoreboard_FixColumnWidth(int i, string str)
string autocvar_hud_fontsize
float autocvar_hud_panel_scoreboard_bg_teams_color_team
#define drawpic_aspect_skin(pos, pic, sz, color, theAlpha, drawflag)
noref string autocvar_hud_panel_scoreboard_bg_alpha
PlayerScoreField sb_extra_sorting_field[SB_EXTRA_SORTING_FIELDS]
float RANKINGS_RECEIVED_CNT
int autocvar_hud_panel_scoreboard_itemstats_filter
vector sbt_field_icon2_rgb
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
vector HUD_GetFontsize(string cvarname)
float Scoreboard_ComparePlayerScores(entity left, entity right)
noref string autocvar_hud_panel_scoreboard_bg
ERASEABLE string ColorTranslateRGB(string s)
PlayerScoreField ps_secondary
float autocvar_hud_panel_scoreboard_table_highlight_alpha_eliminated
float sbt_fixcolumnwidth_marginlen
#define SORT_SWAP(a, b)
Swap two neighbours in a sortlist.
float isGametypeInFilter(Gametype gt, float tp, float ts, string pattern)
const float DRAWFLAG_NORMAL
string Scoreboard_AddPlayerId(string pl_name, entity pl)
noref string autocvar_hud_panel_scoreboard_size
float autocvar_hud_panel_scoreboard_minwidth
noref string autocvar_hud_panel_scoreboard_bg_padding
void Scoreboard_UpdatePlayerPos(entity player)
float sbt_highlight_alpha_eliminated
int autocvar_hud_panel_physics_speed_unit
float autocvar_hud_panel_scoreboard_team_size_position
bool Scoreboard_WouldDraw()
#define count_seconds_decs(time, decs)
bool autocvar_hud_panel_scoreboard_accuracy_nocolors
#define scores_flags(this)
vector Scoreboard_DrawHeader(vector pos, vector rgb, bool other_players)
float sbt_field_size[MAX_SBT_FIELDS+1]
float sbt_fixcolumnwidth_len
void Cmd_Scoreboard_Help()
vector(float skel, float bonenum) _skel_get_boneabs_hidden
string Scoreboard_GetName(entity pl)
bool autocvar_hud_panel_scoreboard_itemstats_doublerows
#define count_seconds(time)
vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity ignored_pl, entity pl, int pl_number)
bool QuickMenu_IsOpened()
bool autocvar_hud_panel_scoreboard_others_showscore
const int WEP_FLAG_SPECIALATTACK
#define scores_label(this)
bool SetTeam(entity o, int Team)
float autocvar_hud_panel_scoreboard_table_fg_alpha_self
noref string autocvar_hud_panel_scoreboard_bg_border
void Scoreboard_initFieldSizes()
float scoreboard_itemstats_fade_alpha
string GetSpeedUnit(int speed_unit)
float scoreboard_acc_fade_alpha
#define tokenizebyseparator
#define MUTATOR_CALLHOOK(id,...)
PlayerScoreField ps_primary
float autocvar_hud_panel_scoreboard_itemstats_showdelay
float hud_configure_menu_open
void Scoreboard_UpdatePlayerTeams()
ERASEABLE string CTX(string s)
float autocvar_hud_panel_scoreboard_maxheight
const int WEP_FLAG_MUTATORBLOCKED
float autocvar_con_notifysize
#define teamscores_flags(i)
bool autocvar_hud_panel_scoreboard_playerid
float autocvar_hud_panel_scoreboard_fadeoutspeed
void Accuracy_LoadColors()
bool autocvar_hud_panel_scoreboard_table_highlight
void Scoreboard_UpdateTeamPos(entity Team)
#define HUD_Write_Cvar(cvar)
vector Accuracy_GetColor(float accuracy)
string autocvar_scoreboard_columns
void drawpic_tiled(vector pos, string pic, vector sz, vector area, vector color, float theAlpha, float drawflag)
#define FOREACH(list, cond, body)
int weapon_accuracy[REGISTRY_MAX(Weapons)]
const int SFL_ALLOW_HIDE
Allow a column to be hidden (do not automatically add it even if it is a sorting key) ...
#define colormapPaletteColor(c, isPants)
float scoreboard_fade_alpha
float race_speedaward_alltimebest
void HUD_Panel_LoadCvars()
bool is_item_filtered(entity it)
float autocvar_hud_panel_scoreboard_accuracy_showdelay
string race_speedaward_holder
void Cmd_Scoreboard_SetFields(int argc)