]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/playerstats.qc
Merge remote-tracking branch 'origin/terencehill/g_changeteam_banned_fix'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / playerstats.qc
index 43c8d8d8971c6b0ba657e0088f26b6d91674677f..2eeb5682a418b7ea2017326b57fb5e2c18cdb2af 100644 (file)
@@ -169,11 +169,13 @@ void PlayerStats_TeamScore(float t, string event_id, float value) // TODO: doesn
        T: time at which the game ended
        G: game type
        M: map name
+       I: match ID (see "matchid" in g_world.qc
        S: "hostname" of the server
        C: number of "unpure" cvar changes
+       U: UDP port number of the server
        P: player ID of an existing player; this also sets the owner for all following "n", "e" and "t" lines (lower case!)
        n: nickname of the player (optional)
-    t: team ID
+       t: team ID
        e: followed by an event name, a space, and the event count/score
                event names can be:
                        alivetime: total playing time of the player
@@ -212,6 +214,7 @@ void PlayerStats_ready(entity fh, entity pass, float status)
                        url_fputs(fh, sprintf("I %s\n", matchid));
                        url_fputs(fh, sprintf("S %s\n", cvar_string("hostname")));
                        url_fputs(fh, sprintf("C %d\n", cvar_purechanges_count));
+                       url_fputs(fh, sprintf("U %d\n", cvar("port")));
                        for(p = playerstats_last; (pn = db_get(playerstats_db, sprintf("%s:*", p))) != ""; p = pn)
                        {
                                url_fputs(fh, sprintf("P %s\n", p));
@@ -344,11 +347,21 @@ void PlayerStats_AddGlobalInfo(entity p)
 void PlayerStats_EndMatch(float finished)
 {
        entity p, winner;
-    winner = PlayerScore_Sort(score_dummyfield);
-       FOR_EACH_PLAYER(p) // spectators intentionally not included
+       winner = PlayerScore_Sort(score_dummyfield);
+       FOR_EACH_CLIENT(p) // spectators intentionally not included
        {
-               PlayerScore_PlayerStats(p);
                PlayerStats_Accuracy(p);
+               if(g_arena || g_lms || g_ca)
+               {
+                       if(p.alivetime <= 0)
+                               continue;
+               }
+               else
+               {
+                       if(p.classname != "player")
+                               continue;
+               }
+               PlayerScore_PlayerStats(p);
                PlayerStats_Event(p, PLAYERSTATS_SCOREBOARD_VALID, 1);
                if(finished)
                {