X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fscoreboard.qc;h=339c8b29bc62fdf7dcb9bb4087c35ccee6a07cfc;hb=915eaae02a08ea935c9c4b3ba7e5596fa1fbe9da;hp=2ec7db0623025d7bc813afae95a299956a0fd63c;hpb=d0db4b5db11800d291fbdba93a67e8487fa033e2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 2ec7db062..339c8b29b 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -9,7 +9,7 @@ float scoreboard_alpha_name_self; void drawstringright(vector, string, vector, vector, float, float); void drawstringcenter(vector, string, vector, vector, float, float); -float SCOREBOARD_OFFSET = 50; +const float SCOREBOARD_OFFSET = 50; // wrapper to put all possible scores titles through gettext string TranslateScoresLabel(string l) @@ -36,6 +36,7 @@ string TranslateScoresLabel(string l) case "lives": return CTX(_("SCO^lives")); case "losses": return CTX(_("SCO^losses")); case "name": return CTX(_("SCO^name")); + case "sum": return CTX(_("SCO^sum")); case "nick": return CTX(_("SCO^nick")); case "objectives": return CTX(_("SCO^objectives")); case "pickups": return CTX(_("SCO^pickups")); @@ -263,6 +264,7 @@ void Cmd_HUD_Help() print(_("^3suicides^7 Number of suicides\n")); print(_("^3frags^7 kills - suicides\n")); print(_("^3kd^7 The kill-death ratio\n")); + print(_("^3sum^7 frags - deaths\n")); print(_("^3caps^7 How often a flag (CTF) or a key (KeyHunt) was captured\n")); print(_("^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up\n")); print(_("^3captime^7 Time of fastest cap (CTF)\n")); @@ -304,6 +306,7 @@ string HUD_DefaultColumnLayout() return strcat( // fteqcc sucks "ping pl name | ", "-teams,race,lms/kills +freezetag/kills -teams,lms/deaths +freezetag/deaths -teams,lms,race,ka/suicides +freezetag/suicides -race,dm,tdm,ka,freezetag/frags ", // tdm already has this in "score" + "+tdm/kills +tdm/deaths +tdm/suicides ", "+ctf/caps +ctf/pickups +ctf/fckills +ctf/returns ", "+lms/lives +lms/rank ", "+kh/caps +kh/pushes +kh/destroyed ", @@ -387,6 +390,8 @@ void Cmd_HUD_SetFields(float argc) hud_field[hud_num_fields] = SP_PL; } else if(str == "kd" || str == "kdr" || str == "kdratio" || str == "k/d") { hud_field[hud_num_fields] = SP_KDRATIO; + } else if(str == "sum" || str == "diff" || str == "f-d") { + hud_field[hud_num_fields] = SP_SUM; } else if(str == "name" || str == "nick") { hud_field[hud_num_fields] = SP_NAME; have_name = 1; @@ -442,7 +447,7 @@ void Cmd_HUD_SetFields(float argc) hud_title[0] = strzone(TranslateScoresLabel("name")); hud_field[0] = SP_NAME; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "name")); + print("fixed missing field 'name'\n"); if(!have_separator) { @@ -457,7 +462,7 @@ void Cmd_HUD_SetFields(float argc) hud_field[1] = SP_SEPARATOR; hud_size[1] = stringwidth("|", FALSE, hud_fontsize); ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "|")); + print("fixed missing field '|'\n"); } } else if(!have_separator) @@ -467,7 +472,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth("|", FALSE, hud_fontsize); hud_field[hud_num_fields] = SP_SEPARATOR; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "|")); + print("fixed missing field '|'\n"); } if(!have_secondary) { @@ -476,7 +481,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_secondary; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_secondary])); + print(sprintf("fixed missing field '%s'\n", scores_label[ps_secondary])); } if(!have_primary) { @@ -485,7 +490,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_primary; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_primary])); + print(sprintf("fixed missing field '%s'\n", scores_label[ps_primary])); } } @@ -581,6 +586,19 @@ string HUD_GetField(entity pl, float field) } else str = sprintf("%.1f", num/denom); return str; + + case SP_SUM: + f = pl.(scores[SP_KILLS]); + f -= pl.(scores[SP_DEATHS]); + + if(f > 0) { + hud_field_rgb = '0 1 0'; + } else if(f == 0) { + hud_field_rgb = '1 1 1'; + } else { + hud_field_rgb = '1 0 0'; + } + return ftos(f); default: tmp = pl.(scores[field]); @@ -947,7 +965,6 @@ float HUD_WouldDrawScoreboard() { return 0; } -float g_minstagib; float average_accuracy; vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) { @@ -962,6 +979,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) float fontsize = height * 1/3; float weapon_height = height * 2/3; float weapon_width = sbwidth / weapon_cnt; + float g_minstagib = 0; drawstring(pos, sprintf(_("Accuracy stats (average %d%%)"), average_accuracy), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y + autocvar_scoreboard_border_thickness;