]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/playerstats.qc
Merge branch 'master' into martin-t/damagetext
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / playerstats.qc
index ad58221269f0466b1733733a2b925982f10a5504..7f31e20d311746958f80082fababa2a9e01ab253 100644 (file)
@@ -1,13 +1,14 @@
+#include "playerstats.qh"
 #if defined(CSQC)
 #elif defined(MENUQC)
 #elif defined(SVQC)
     #include "constants.qh"
     #include "util.qh"
-    #include <common/weapons/all.qh>
-    #include "../server/weapons/accuracy.qh"
+    #include <common/weapons/_all.qh>
+    #include "../server/anticheat.qh"
     #include "../server/defs.qh"
-    #include "playerstats.qh"
     #include "../server/scores.qh"
+    #include "../server/weapons/accuracy.qh"
 #endif
 
 #ifdef SVQC
@@ -21,7 +22,7 @@ void PlayerStats_GameReport_AddPlayer(entity e)
        if((PS_GR_OUT_DB < 0) || (e.playerstats_id)) { return; }
 
        // set up player identification
-       string s = string_null;
+       string s = "";
 
        if((e.crypto_idfp != "") && (e.cvar_cl_allow_uidtracking == 1))
                { s = e.crypto_idfp; }
@@ -132,7 +133,7 @@ void PlayerStats_GameReport_FinalizePlayer(entity p)
        db_put(PS_GR_OUT_DB, sprintf("%s:_playerid", p.playerstats_id), ftos(p.playerid));
 
        if(p.cvar_cl_allow_uid2name == 1 || IS_BOT_CLIENT(p))
-               db_put(PS_GR_OUT_DB, sprintf("%s:_netname", p.playerstats_id), p.netname);
+               db_put(PS_GR_OUT_DB, sprintf("%s:_netname", p.playerstats_id), playername(p, false));
 
        if(teamplay)
                db_put(PS_GR_OUT_DB, sprintf("%s:_team", p.playerstats_id), ftos(p.team));
@@ -141,6 +142,7 @@ void PlayerStats_GameReport_FinalizePlayer(entity p)
                PS_GR_P_ADDVAL(p, PLAYERSTATS_JOINS, 1);
 
        PlayerStats_GameReport_Accuracy(p);
+       anticheat_report_to_playerstats(p);
 
        if(IS_REAL_CLIENT(p))
        {
@@ -249,10 +251,18 @@ void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_BOTLIKE);
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD);
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM);
+
+               anticheat_register_to_playerstats();
        }
        else { PlayerStats_GameReport_DelayMapVote = false; }
 }
 
+// this... is a hack, a temporary one until we get a proper duel gametype
+string PlayerStats_GetGametype()
+{
+       return ((IS_GAMETYPE(DEATHMATCH) && autocvar_g_maxplayers == 2) ? "duel" : GetGametype());
+}
+
 void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
 {
        string t, tn;
@@ -309,7 +319,7 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
                        #ifdef WATERMARK
                        url_fputs(fh, sprintf("R %s\n", WATERMARK));
                        #endif
-                       url_fputs(fh, sprintf("G %s\n", GetGametype()));
+                       url_fputs(fh, sprintf("G %s\n", PlayerStats_GetGametype()));
                        url_fputs(fh, sprintf("O %s\n", modname));
                        url_fputs(fh, sprintf("M %s\n", GetMapname()));
                        url_fputs(fh, sprintf("I %s\n", matchid));
@@ -552,7 +562,7 @@ void PlayerStats_PlayerBasic_Handler(entity fh, entity p, float status)
                     case "e":
                         LOG_TRACE("G: ", gt);
                         LOG_TRACE("e: ", data);
-                        if (gt == GetGametype()) {
+                        if (gt == PlayerStats_GetGametype()) {
                             handled = true;
                             float e = stof(data);
                             PlayerScore_Add(p, SP_ELO, +1 + e);