]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/playerstats.qc
Link some positional entities (fixes prediction of jumppads in some odd old maps)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / playerstats.qc
index 2d9398ad7ede56de2b00681aa9fa5fd65c62ad2a..233762202efda470e23ed15819f2fa2fadf34bd5 100644 (file)
@@ -3,7 +3,7 @@
 #elif defined(SVQC)
     #include "constants.qh"
     #include "util.qh"
-    #include "weapons/all.qh"
+    #include <common/weapons/all.qh>
     #include "../server/weapons/accuracy.qh"
     #include "../server/defs.qh"
     #include "playerstats.qh"
@@ -108,13 +108,13 @@ void PlayerStats_GameReport_Accuracy(entity p)
 {
        #define ACCMAC(suffix, field) \
                PS_GR_P_ADDVAL(p, sprintf("acc-%s-%s", it.netname, suffix), p.accuracy.(field[i-1]));
-       FOREACH(Weapons, it != WEP_Null, LAMBDA(
+       FOREACH(Weapons, it != WEP_Null, {
                ACCMAC("hit", accuracy_hit)
                ACCMAC("fired", accuracy_fired)
                ACCMAC("cnt-hit", accuracy_cnt_hit)
                ACCMAC("cnt-fired", accuracy_cnt_fired)
                ACCMAC("frags", accuracy_frags)
-       ));
+       });
        #undef ACCMAC
 }
 
@@ -163,35 +163,33 @@ void PlayerStats_GameReport(float finished)
        PlayerScore_Sort(scoreboard_pos, 1, 1, 1);
        if(teamplay) { PlayerScore_TeamStats(); }
 
-       entity p;
-       FOR_EACH_CLIENT(p)
-       {
+       FOREACH_CLIENT(true, {
                // add personal score rank
-               PS_GR_P_ADDVAL(p, PLAYERSTATS_RANK, p.score_dummyfield);
+               PS_GR_P_ADDVAL(it, PLAYERSTATS_RANK, it.score_dummyfield);
 
                // scoreboard data
-               if(p.scoreboard_pos)
+               if(it.scoreboard_pos)
                {
                        // scoreboard is valid!
-                       PS_GR_P_ADDVAL(p, PLAYERSTATS_SCOREBOARD_VALID, 1);
+                       PS_GR_P_ADDVAL(it, PLAYERSTATS_SCOREBOARD_VALID, 1);
 
                        // add scoreboard position
-                       PS_GR_P_ADDVAL(p, PLAYERSTATS_SCOREBOARD_POS, p.scoreboard_pos);
+                       PS_GR_P_ADDVAL(it, PLAYERSTATS_SCOREBOARD_POS, it.scoreboard_pos);
 
                        // add scoreboard data
-                       PlayerScore_PlayerStats(p);
+                       PlayerScore_PlayerStats(it);
 
                        // if the match ended normally, add winning info
                        if(finished)
                        {
-                               PS_GR_P_ADDVAL(p, PLAYERSTATS_WINS, p.winning);
-                               PS_GR_P_ADDVAL(p, PLAYERSTATS_MATCHES, 1);
+                               PS_GR_P_ADDVAL(it, PLAYERSTATS_WINS, it.winning);
+                               PS_GR_P_ADDVAL(it, PLAYERSTATS_MATCHES, 1);
                        }
                }
 
                // collect final player information
-               PlayerStats_GameReport_FinalizePlayer(p);
-       }
+               PlayerStats_GameReport_FinalizePlayer(it);
+       });
 
        if(autocvar_g_playerstats_gamereport_uri != "")
        {
@@ -233,13 +231,13 @@ void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_RANK);
 
                // accuracy stats
-               FOREACH(Weapons, it != WEP_Null, LAMBDA(
+               FOREACH(Weapons, it != WEP_Null, {
                        PlayerStats_GameReport_AddEvent(strcat("acc-", it.netname, "-hit"));
                        PlayerStats_GameReport_AddEvent(strcat("acc-", it.netname, "-fired"));
                        PlayerStats_GameReport_AddEvent(strcat("acc-", it.netname, "-cnt-hit"));
                        PlayerStats_GameReport_AddEvent(strcat("acc-", it.netname, "-cnt-fired"));
                        PlayerStats_GameReport_AddEvent(strcat("acc-", it.netname, "-frags"));
-               ));
+               });
 
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3);
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5);
@@ -456,12 +454,10 @@ void PlayerStats_PlayerBasic(entity joiningplayer, float newrequest)
                // server has this disabled, kill the DB and set status to idle
                if(PS_B_IN_DB >= 0)
                {
-                       entity player;
-
                        db_close(PS_B_IN_DB);
                        PS_B_IN_DB = -1;
 
-                       FOR_EACH_REALCLIENT(player) { player.playerstats_basicstatus = PS_B_STATUS_IDLE; }
+                       FOREACH_CLIENT(IS_REAL_CLIENT(it), it.playerstats_basicstatus = PS_B_STATUS_IDLE);
                }
        }
 }