+void Scoreboard_initFieldSizes()
+{
+ for(int i = 0; i < sbt_num_fields; ++i)
+ sbt_field_size[i] = stringwidth(sbt_field_title[i], false, hud_fontsize);
+}
+
+vector Scoreboard_DrawHeader(vector pos, vector rgb)
+{
+ int i;
+ vector column_dim = eY * panel_size.y;
+ vector text_offset = eY * (1.25 - 1) / 2 * hud_fontsize.y;
+ pos.x += hud_fontsize.x * 0.5;
+ for(i = 0; i < sbt_num_fields; ++i)
+ {
+ if(sbt_field[i] == SP_SEPARATOR)
+ break;
+ column_dim.x = sbt_field_size[i] + hud_fontsize.x;
+ if (sbt_highlight)
+ if (i % 2)
+ drawfill(pos - eX * hud_fontsize.x * 0.5, column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+ drawstring(pos + text_offset, sbt_field_title[i], hud_fontsize, rgb * 1.5, sbt_fg_alpha, DRAWFLAG_NORMAL);
+ pos.x += column_dim.x;
+ }
+ if(sbt_field[i] == SP_SEPARATOR)
+ {
+ pos.x = panel_pos.x + panel_size.x - hud_fontsize.x * 0.5;
+ for(i = sbt_num_fields - 1; i > 0; --i)
+ {
+ if(sbt_field[i] == SP_SEPARATOR)
+ break;
+
+ pos.x -= sbt_field_size[i];
+
+ if (sbt_highlight)
+ if (!(i % 2))
+ {
+ column_dim.x = sbt_field_size[i] + hud_fontsize.x;
+ drawfill(pos - eX * hud_fontsize.x * 0.5, column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+ }
+
+ text_offset.x = sbt_field_size[i] - stringwidth(sbt_field_title[i], false, hud_fontsize);
+ drawstring(pos + text_offset, sbt_field_title[i], hud_fontsize, rgb * 1.5, sbt_fg_alpha, DRAWFLAG_NORMAL);
+ pos.x -= hud_fontsize.x;
+ }
+ }
+
+ pos.x = panel_pos.x;
+ pos.y += 1.25 * hud_fontsize.y;
+ return pos;
+}
+
+void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, int pl_number)