]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/playerstats.qc
Merge branch 'master' into Mario/qc_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / playerstats.qc
index 813f966be05a568155fe40e9af9ff1373089dcf3..5890fb89e17085271e6061684e3792a6bcc0a735 100644 (file)
@@ -1,3 +1,18 @@
+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+       #include "../dpdefs/progsdefs.qh"
+    #include "../dpdefs/dpextensions.qh"
+    #include "constants.qh"
+    #include "util.qh"
+    #include "urllib.qh"
+    #include "weapons/weapons.qh"
+    #include "../server/weapons/accuracy.qh"
+    #include "../server/defs.qh"
+    #include "playerstats.qh"
+    #include "../server/scores.qh"
+#endif
+
 #ifdef SVQC
 void PlayerStats_Prematch(void)
 {
@@ -15,7 +30,7 @@ void PlayerStats_GameReport_AddPlayer(entity e)
                { s = e.crypto_idfp; }
        else if(IS_BOT_CLIENT(e))
                { s = sprintf("bot#%g#%s", skill, e.cleanname); }
-               
+
        if((s == "") || find(world, playerstats_id, s)) // already have one of the ID - next one can't be tracked then!
        {
                if(IS_BOT_CLIENT(e))
@@ -23,13 +38,13 @@ void PlayerStats_GameReport_AddPlayer(entity e)
                else
                        { s = sprintf("player#%d", e.playerid); }
        }
-       
+
        e.playerstats_id = strzone(s);
 
        // now add the player to the database
        string key = sprintf("%s:*", e.playerstats_id);
        string p = db_get(PS_GR_OUT_DB, key);
-       
+
        if(p == "")
        {
                if(PS_GR_OUT_PL)
@@ -48,7 +63,7 @@ void PlayerStats_GameReport_AddTeam(float t)
 
        string key = sprintf("%d", t);
        string p = db_get(PS_GR_OUT_DB, key);
-       
+
        if(p == "")
        {
                if(PS_GR_OUT_TL)
@@ -67,7 +82,7 @@ void PlayerStats_GameReport_AddEvent(string event_id)
 
        string key = sprintf("*:%s", event_id);
        string p = db_get(PS_GR_OUT_DB, key);
-       
+
        if(p == "")
        {
                if(PS_GR_OUT_EVL)
@@ -94,12 +109,11 @@ float PlayerStats_GameReport_Event(string prefix, string event_id, float value)
 
 void PlayerStats_GameReport_Accuracy(entity p)
 {
-       entity w;
-       float i;
+       int i;
 
        for(i = WEP_FIRST; i <= WEP_LAST; ++i)
        {
-               w = get_weaponinfo(i);
+               entity w = get_weaponinfo(i);
 
                #define ACCMAC(suffix,field) \
                        PS_GR_P_ADDVAL(p, sprintf("acc-%s-%s", w.netname, suffix), p.accuracy.(field[i-1]));
@@ -154,7 +168,7 @@ void PlayerStats_GameReport_FinalizePlayer(entity p)
 void PlayerStats_GameReport(float finished)
 {
        if(PS_GR_OUT_DB < 0) { return; }
-       
+
        PlayerScore_Sort(score_dummyfield, 0, 0, 0);
        PlayerScore_Sort(scoreboard_pos, 1, 1, 1);
        if(teamplay) { PlayerScore_TeamStats(); }
@@ -191,7 +205,7 @@ void PlayerStats_GameReport(float finished)
 
        if(autocvar_g_playerstats_gamereport_uri != "")
        {
-               PlayerStats_GameReport_DelayMapVote = TRUE;
+               PlayerStats_GameReport_DelayMapVote = true;
                url_multi_fopen(
                        autocvar_g_playerstats_gamereport_uri,
                        FILE_APPEND,
@@ -201,7 +215,7 @@ void PlayerStats_GameReport(float finished)
        }
        else
        {
-               PlayerStats_GameReport_DelayMapVote = FALSE;
+               PlayerStats_GameReport_DelayMapVote = false;
                db_close(PS_GR_OUT_DB);
                PS_GR_OUT_DB = -1;
        }
@@ -211,12 +225,11 @@ void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that
 {
        if(autocvar_g_playerstats_gamereport_uri == "") { return; }
 
-       PS_GR_OUT_DB = -1;
        PS_GR_OUT_DB = db_create();
 
        if(PS_GR_OUT_DB >= 0)
        {
-               PlayerStats_GameReport_DelayMapVote = TRUE;
+               PlayerStats_GameReport_DelayMapVote = true;
 
                serverflags |= SERVERFLAG_PLAYERSTATS;
 
@@ -253,7 +266,7 @@ void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD);
                PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM);
        }
-       else { PlayerStats_GameReport_DelayMapVote = FALSE; }
+       else { PlayerStats_GameReport_DelayMapVote = false; }
 }
 
 void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
@@ -349,7 +362,7 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
                                nn = db_get(PS_GR_OUT_DB, sprintf("%s:_playerid", p));
                                if(nn != "") { url_fputs(fh, sprintf("i %s\n", nn)); }
 
-                               // player name 
+                               // player name
                                nn = db_get(PS_GR_OUT_DB, sprintf("%s:_netname", p));
                                if(nn != "") { url_fputs(fh, sprintf("n %s\n", nn)); }
 
@@ -388,12 +401,12 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
                        url_fclose(fh);
                        break;
                }
-               
+
                case URL_READY_CLOSED:
                {
                        // url_fclose has finished
                        dprint("Player stats written\n");
-                       PlayerStats_GameReport_DelayMapVote = FALSE;
+                       PlayerStats_GameReport_DelayMapVote = false;
                        if(PS_GR_OUT_DB >= 0)
                        {
                                db_close(PS_GR_OUT_DB);
@@ -401,12 +414,12 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
                        }
                        break;
                }
-               
+
                case URL_READY_ERROR:
                default:
                {
                        print("Player stats writing failed: ", ftos(status), "\n");
-                       PlayerStats_GameReport_DelayMapVote = FALSE;
+                       PlayerStats_GameReport_DelayMapVote = false;
                        if(PS_GR_OUT_DB >= 0)
                        {
                                db_close(PS_GR_OUT_DB);
@@ -427,10 +440,7 @@ void PlayerStats_PlayerBasic(entity joiningplayer, float newrequest)
                {
                        // create the database if it doesn't already exist
                        if(PS_B_IN_DB < 0)
-                       {
-                               PS_B_IN_DB = -1;
                                PS_B_IN_DB = db_create();
-                       }
 
                        // now request the information
                        uri = strcat(uri, "/player/", uri_escape(uri_escape(joiningplayer.crypto_idfp)), "/elo.txt");
@@ -506,14 +516,14 @@ void PlayerStats_PlayerBasic_Handler(entity fh, entity p, float status)
                        #endif
                        url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
                        url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
-                       url_fputs(fh, sprintf("g %s\n", cvar_string("_menu_prvm_gender"))); // gender
+                       url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
                        url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
                        url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
                        */url_fputs(fh, "\n");
                        url_fclose(fh);
                        break;
                }
-               
+
                case URL_READY_CANREAD:
                {
                        string s = "";
@@ -582,7 +592,7 @@ void PlayerStats_PlayerBasic_Handler(entity fh, entity p, float status)
                        print("Player stats synchronized with server\n");
                        break;
                }
-               
+
                case URL_READY_ERROR:
                default:
                {
@@ -619,7 +629,7 @@ void PlayerStats_PlayerDetail_AddItem(string event, string data)
                        db_put(PS_D_IN_DB, marker, PS_D_IN_EVL);
                        strunzone(PS_D_IN_EVL);
                }
-               else { db_put(PS_D_IN_DB, marker, "#"); } 
+               else { db_put(PS_D_IN_DB, marker, "#"); }
                PS_D_IN_EVL = strzone(marker);
        }
 
@@ -635,10 +645,7 @@ void PlayerStats_PlayerDetail(void)
        {
                // create the database if it doesn't already exist
                if(PS_D_IN_DB < 0)
-               {
-                       PS_D_IN_DB = -1;
                        PS_D_IN_DB = db_create();
-               }
 
                //uri = strcat(uri, "/player/", uri_escape(crypto_getmyidfp(0)));
                dprint("Retrieving playerstats from URL: ", autocvar_g_playerstats_playerdetail_uri, "\n");
@@ -710,7 +717,7 @@ void PlayerStats_PlayerDetail_Handler(entity fh, entity unused, float status)
                        url_fclose(fh);
                        break;
                }
-               
+
                case URL_READY_CANREAD:
                {
                        //print("PlayerStats_PlayerDetail_Handler(): Got response from player stats server:\n");
@@ -722,7 +729,7 @@ void PlayerStats_PlayerDetail_Handler(entity fh, entity unused, float status)
                                string key = "", event = "", data = "";
 
                                if(argv(0) == "#") { continue; }
-                               
+
                                if(count == 2)
                                {
                                        key = argv(0);
@@ -766,7 +773,7 @@ void PlayerStats_PlayerDetail_Handler(entity fh, entity unused, float status)
                                                }
                                                break;
                                        }
-                                       
+
                                        default:
                                        {
                                                printf(
@@ -909,7 +916,7 @@ void PlayerInfo_ready(entity fh, entity p, float status)
 #ifdef MENUQC
                         url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
                         url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
-                        url_fputs(fh, sprintf("g %s\n", cvar_string("_menu_prvm_gender"))); // gender
+                        url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
                         url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
                         url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
 #endif
@@ -987,7 +994,6 @@ void PlayerInfo_ready(entity fh, entity p, float status)
 
 void PlayerInfo_Init()
 {
-       playerinfo_db = -1;
        playerinfo_db = db_create();
 }
 
@@ -1032,7 +1038,7 @@ void PlayerInfo_Details()
 
 #ifdef CSQC
 /*
- * FIXME - crypto_* builtin functions missing in CSQC (csprogsdefs.qc:885)
+ * FIXME - crypto_* builtin functions missing in CSQC (csprogsdefs.qh:885)
 void PlayerInfo_Details()
 {
         print("-- Getting detailed PlayerInfo for local player (CSQC)\n");