X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fscores.qc;h=0dc2b2f00b4f2b79586950f95a2e7fc868140615;hp=e8d5590238b877b79fdb53a74d1dc44f2f1c03a0;hb=61ff03e493f0cdae7d4a7b4332481f1a3971c3c7;hpb=9267080769d5642f19ce38a68f297a231a29750b diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index e8d5590238..0dc2b2f00b 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -14,7 +14,7 @@ vector ScoreField_Compare(entity t1, entity t2, .float field, float fieldflags, { if(!strict && !(fieldflags & SFL_SORT_PRIO_MASK)) // column does not sort return previous; - if(fieldflags & SFL_SORT_PRIO_MASK < previous_y) + if((fieldflags & SFL_SORT_PRIO_MASK) < previous_y) return previous; if(t1.field == t2.field) return previous; @@ -150,7 +150,7 @@ void ScoreInfo_SetLabel_PlayerScore(float i, string label, float scoreflags) { scores_label[i] = label; scores_flags[i] = scoreflags; - if(scoreflags & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((scoreflags & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) { scores_primary = scores[i]; scores_flags_primary = scoreflags; @@ -166,11 +166,16 @@ void ScoreInfo_SetLabel_TeamScore(float i, string label, float scoreflags) { teamscores_label[i] = label; teamscores_flags[i] = scoreflags; - if(scoreflags & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((scoreflags & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) { teamscores_primary = teamscores[i]; teamscores_flags_primary = scoreflags; } + if(label != "") + { + PlayerStats_AddEvent(strcat(PLAYERSTATS_TOTAL, label)); + PlayerStats_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label)); + } } float ScoreInfo_SendEntity(entity to, float sf) @@ -256,8 +261,8 @@ float PlayerScore_Clear(entity player) if(teamscores_entities_count) return 0; - if(g_lms) return 0; - if(g_arena || g_ca) return 0; + if(MUTATOR_CALLHOOK(ForbidPlayerScore_Clear)) return 0; + if(g_cts) return 0; // in CTS, you don't lose score by observing if(g_race && g_race_qualifying) return 0; // in qualifying, you don't lose score by observing @@ -329,7 +334,7 @@ float PlayerScore_Add(entity player, float scorefield, float score) entity s; if(gameover) - if not(g_lms && scorefield == SP_LMS_RANK) // allow writing to this field in intermission as it is needed for newly joining players + if(!(g_lms && scorefield == SP_LMS_RANK)) // allow writing to this field in intermission as it is needed for newly joining players score = 0; if(!scores_initialized) return 0; // FIXME remove this when everything uses this system @@ -344,7 +349,7 @@ float PlayerScore_Add(entity player, float scorefield, float score) if(score) if(scores_label[scorefield] != "") s.SendFlags |= pow(2, scorefield); - if(!inWarmupStage) + if(!warmup_stage) PlayerStats_Event(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label[scorefield]), score); return (s.(scores[scorefield]) += score); } @@ -523,16 +528,16 @@ void WinningConditionHelper() if(fullstatus) { s = GetPlayerScoreString(p, 1); - if(clienttype(p) == CLIENTTYPE_REAL) + if(IS_REAL_CLIENT(p)) s = strcat(s, ":human"); else s = strcat(s, ":bot"); - if(p.classname != "player" && !g_arena && !g_ca && !g_lms) + if(!IS_PLAYER(p) && !g_arena && p.caplayer != 1 && !g_lms) s = strcat(s, ":spectator"); } else { - if(p.classname == "player" || g_arena || g_ca || g_lms) + if(IS_PLAYER(p) || g_arena || p.caplayer == 1 || g_lms) s = GetPlayerScoreString(p, 2); else s = "-666"; @@ -548,9 +553,9 @@ string GetScoreLogLabel(string label, float fl) { if(fl & SFL_LOWER_IS_BETTER) label = strcat(label, "<"); - if(fl & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((fl & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) label = strcat(label, "!!"); - else if(fl & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY) + else if((fl & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_SECONDARY) label = strcat(label, "!"); return label; } @@ -567,7 +572,7 @@ string GetPlayerScoreString(entity pl, float shortString) { // label for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) { f = scores_flags[i]; l = scores_label[i]; @@ -575,7 +580,7 @@ string GetPlayerScoreString(entity pl, float shortString) } if(shortString < 2) for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_SECONDARY) { f = scores_flags[i]; l = scores_label[i]; @@ -583,8 +588,8 @@ string GetPlayerScoreString(entity pl, float shortString) } if(shortString < 1) for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY) - if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_PRIMARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_SECONDARY) { f = scores_flags[i]; l = scores_label[i]; @@ -595,16 +600,16 @@ string GetPlayerScoreString(entity pl, float shortString) else if((sk = pl.scorekeeper)) { for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) out = strcat(out, ftos(sk.(scores[i])), ","); if(shortString < 2) for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_SECONDARY) out = strcat(out, ftos(sk.(scores[i])), ","); if(shortString < 1) for(i = 0; i < MAX_SCORE; ++i) - if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY) - if(scores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_PRIMARY) + if((scores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_SECONDARY) out = strcat(out, ftos(sk.(scores[i])), ","); out = substring(out, 0, strlen(out) - 1); } @@ -623,7 +628,7 @@ string GetTeamScoreString(float tm, float shortString) { // label for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) { f = teamscores_flags[i]; l = teamscores_label[i]; @@ -631,7 +636,7 @@ string GetTeamScoreString(float tm, float shortString) } if(shortString < 2) for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_SECONDARY) { f = teamscores_flags[i]; l = teamscores_label[i]; @@ -639,8 +644,8 @@ string GetTeamScoreString(float tm, float shortString) } if(shortString < 1) for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_PRIMARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_SECONDARY) { f = teamscores_flags[i]; l = teamscores_label[i]; @@ -651,16 +656,16 @@ string GetTeamScoreString(float tm, float shortString) else if((sk = teamscorekeepers[tm - 1])) { for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_PRIMARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_PRIMARY) out = strcat(out, ftos(sk.(teamscores[i])), ","); if(shortString < 2) for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK == SFL_SORT_PRIO_SECONDARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) == SFL_SORT_PRIO_SECONDARY) out = strcat(out, ftos(sk.(teamscores[i])), ","); if(shortString < 1) for(i = 0; i < MAX_TEAMSCORE; ++i) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_PRIMARY) - if(teamscores_flags[i] & SFL_SORT_PRIO_MASK != SFL_SORT_PRIO_SECONDARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_PRIMARY) + if((teamscores_flags[i] & SFL_SORT_PRIO_MASK) != SFL_SORT_PRIO_SECONDARY) out = strcat(out, ftos(sk.(teamscores[i])), ","); out = substring(out, 0, strlen(out) - 1); } @@ -737,7 +742,7 @@ entity PlayerScore_Sort(.float field, float teams, float strict, float nospectat pbest.field = j; - if not(pfirst) + if (!pfirst) pfirst = pbest; if(plast) plast.chain = pbest; @@ -760,7 +765,7 @@ float TeamScore_GetCompareValue(float t) } sk = teamscorekeepers[t - 1]; - if not(sk) + if (!sk) return -999999999; s = sk.teamscores_primary; if(teamscores_flags_primary & SFL_ZERO_IS_WORST) @@ -894,9 +899,9 @@ void Score_NicePrint(entity to) t = 0; FOR_EACH_CLIENT(p) - if(p.classname != "player") + if (!IS_PLAYER(p)) { - if not(t) + if (!t) Score_NicePrint_Spectators(to); Score_NicePrint_Spectator(to, p); t = 1; @@ -927,6 +932,7 @@ void PlayerScore_TeamStats(void) for(i = 0; i < MAX_TEAMSCORE; ++i) if(sk.(teamscores[i]) != 0) if(teamscores_label[i] != "") - PlayerStats_TeamScore(t, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i])); + // the +1 is important here! + PlayerStats_TeamScore(t+1, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i])); } }