From 758f616b9e5ced292db5c1302530c7d535163e98 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Tue, 29 Jan 2013 09:46:02 +0100 Subject: [PATCH] add a nospectator flag to rank sorting --- qcsrc/server/race.qc | 2 +- qcsrc/server/scores.qc | 8 ++++++-- qcsrc/server/scores.qh | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/qcsrc/server/race.qc b/qcsrc/server/race.qc index f761b18ba..16f6eca72 100644 --- a/qcsrc/server/race.qc +++ b/qcsrc/server/race.qc @@ -1026,7 +1026,7 @@ void race_ReadyRestart() Score_NicePrint(world); race_ClearRecords(); - PlayerScore_Sort(race_place, 0, 1); + PlayerScore_Sort(race_place, 0, 1, 0); entity e; FOR_EACH_CLIENT(e) diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 354f5a784..1adfb0cc5 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -685,7 +685,7 @@ float PlayerTeamScore_Compare(entity p1, entity p2, float teams, float strict) return PlayerScore_Compare(p1.scorekeeper, p2.scorekeeper, strict); } -entity PlayerScore_Sort(.float field, float teams, float strict) +entity PlayerScore_Sort(.float field, float teams, float strict, float nospectators) { entity p, plist, pprev, pbest, pbestprev, pfirst, plast; float i, j; @@ -697,6 +697,10 @@ entity PlayerScore_Sort(.float field, float teams, float strict) FOR_EACH_PLAYER(p) if(p.scorekeeper) { + if(nospectators) + if(p.frags == FRAGS_SPECTATOR) + continue; + p.chain = plist; plist = p; } @@ -871,7 +875,7 @@ void Score_NicePrint(entity to) ++t; w = bound(6, floor(SCORESWIDTH / t - 1), 9); - p = PlayerScore_Sort(score_dummyfield, 1, 1); + p = PlayerScore_Sort(score_dummyfield, 1, 1, 0); t = -1; if(!teamscores_entities_count) diff --git a/qcsrc/server/scores.qh b/qcsrc/server/scores.qh index 423fd303c..60f4d24f6 100644 --- a/qcsrc/server/scores.qh +++ b/qcsrc/server/scores.qh @@ -119,5 +119,6 @@ string GetTeamScoreString(float tm, float shortString); * Returns the beginning of a sorted chain of the non-spectators. * teams: >0: sort by teams first (always strict ordering); <0: sort by teams only (respects strict flag) * strict: return a strict ordering + * nospectators: exclude spectators */ -entity PlayerScore_Sort(.float field, float teams, float strict); +entity PlayerScore_Sort(.float field, float teams, float strict, float nospectators); -- 2.39.2