]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Adding g_playerstats_ladder cvar and xonstat event
authorJan Behrens <zykure@web.de>
Sun, 25 Aug 2013 15:43:58 +0000 (17:43 +0200)
committerJan Behrens <zykure@web.de>
Sun, 25 Aug 2013 15:43:58 +0000 (17:43 +0200)
qcsrc/common/playerstats.qc
qcsrc/server/autocvars.qh
qcsrc/server/g_world.qc

index 4f4a76cd1995f16f1454b91b71a08183b9772f54..e7d268798ae0c27691b07ec5dfe6ebe4b1c0873c 100644 (file)
@@ -194,6 +194,7 @@ float PlayerStats_TeamScore(float t, string event_id, float value)
        C: number of "unpure" cvar changes
        U: UDP port number of the server
        D: duration of the match
+        L: "ladder" in which the server is participating in
        P: player ID of an existing player; this also sets the owner for all following "n", "e" and "t" lines (lower case!)
        Q: team number of an existing team (format: team#NN); this also sets the owner for all following "e" lines (lower case!)
        n: nickname of the player (optional)
@@ -232,7 +233,7 @@ void PlayerStats_ready(entity fh, entity pass, float status)
        switch(status)
        {
                case URL_READY_CANWRITE:
-                       url_fputs(fh, "V 8\n");
+                       url_fputs(fh, "V 9\n");
 #ifdef WATERMARK
                        url_fputs(fh, sprintf("R %s\n", WATERMARK));
 #endif
@@ -244,20 +245,19 @@ void PlayerStats_ready(entity fh, entity pass, float status)
                        url_fputs(fh, sprintf("C %d\n", cvar_purechanges_count));
                        url_fputs(fh, sprintf("U %d\n", cvar("port")));
                        url_fputs(fh, sprintf("D %f\n", max(0, time - game_starttime)));
+                        url_fputs(fh, sprintf("L %s\n", autocvar_g_playerstats_ladder));
                        if(teamplay)
-                       {
-                               for(t = teamstats_last; (tn = db_get(playerstats_db, sprintf("%d", stof(t)))) != ""; t = tn)
-                               {
-                                       url_fputs(fh, sprintf("Q team#%s\n", t));
-                                       for(e = events_last; (en = db_get(playerstats_db, sprintf("*:%s", e))) != ""; e = en)
-                                       {
-                                               float v;
-                                               v = stof(db_get(playerstats_db, sprintf("team#%d:%s", stof(t), e)));
-                                               if(v != 0)
-                                                       url_fputs(fh, sprintf("e %s %g\n", e, v));
-                                       }
-                               }
-                       }
+                        for(t = teamstats_last; (tn = db_get(playerstats_db, sprintf("%d", stof(t)))) != ""; t = tn)
+                        {
+                                url_fputs(fh, sprintf("Q team#%s\n", t));
+                                for(e = events_last; (en = db_get(playerstats_db, sprintf("*:%s", e))) != ""; e = en)
+                                {
+                                        float v;
+                                        v = stof(db_get(playerstats_db, sprintf("team#%d:%s", stof(t), e)));
+                                        if(v != 0)
+                                                url_fputs(fh, sprintf("e %s %g\n", e, v));
+                                }
+                        }
                        for(p = playerstats_last; (pn = db_get(playerstats_db, sprintf("%s:*", p))) != ""; p = pn)
                        {
                                url_fputs(fh, sprintf("P %s\n", p));
@@ -519,7 +519,7 @@ void PlayerInfo_ready(entity fh, entity p, float status)
        float n;
        string s;
 
-       PlayerInfo_AddPlayer(p);
+        PlayerInfo_AddPlayer(p);
 
        switch(status)
        {
@@ -546,7 +546,7 @@ void PlayerInfo_ready(entity fh, entity p, float status)
                        {
                                print("  ", s, "\n");
 
-                               string key = string_null, value = string_null, data = string_null;
+                               string key = "", value = "", data = "";
 
                                n = tokenizebyseparator(s, " "); // key (value) data
                                if (n == 1)
@@ -556,47 +556,31 @@ void PlayerInfo_ready(entity fh, entity p, float status)
                                        key = argv(0);
                                        data = argv(1);
                                }
-                               else if (n == 3)
+                               else if (n >= 3)
                                {
                                         key = argv(0);
                                         value = argv(1);
                                         data = argv(2);
                                }
-                               else if (n == 4)
-                               {
-                                       key = argv(0);
-                                       value = argv(1);
-                                       data = argv(2);
-                               }
-                               else
-                                       continue;
 
                                if (data == "")
                                        continue;
 
                                if (key == "#")
-                                       // comment
                                        continue;
                                else if (key == "V")
-                                       // version
                                        PlayerInfo_AddItem(p, "_version", data);
                                else if (key == "R")
-                                       // watermark
                                        PlayerInfo_AddItem(p, "_release", data);
                                else if (key == "T")
-                                       // timestamp
                                        PlayerInfo_AddItem(p, "_time", data);
                                else if (key == "S")
-                                       // stats page URL
                                        PlayerInfo_AddItem(p, "_statsurl", data);
                                else if (key == "P")
-                                       // player hashkey
                                        PlayerInfo_AddItem(p, "_hashkey", data);
                                else if (key == "n")
-                                       // player nick
                                        PlayerInfo_AddItem(p, "_playernick", data);
                                else if (key == "i")
-                                       // xonstats id
                                        PlayerInfo_AddItem(p, "_playerid", data);
                                else if (key == "G")
                                        gametype = data;
@@ -661,7 +645,8 @@ void PlayerInfo_Details()
         uri = playerinfo_uri; // FIXME
        if(uri != "" && crypto_getmyidstatus(0) > 0)
        {
-               uri = strcat(uri, "/player/", uri_escape(crypto_getmyidfp(0)));
+               //uri = strcat(uri, "/player/", uri_escape(crypto_getmyidfp(0)));
+                uri = strcat(uri, "/player/me");
                print("Retrieving playerstats from URL: ", uri, "\n");
                url_single_fopen(uri, FILE_APPEND, PlayerInfo_ready, world);
        }
@@ -682,8 +667,6 @@ void PlayerInfo_Details()
         uri = playerinfo_uri; // FIXME
        if(uri != "" && crypto_getmyidstatus(0) > 0)
        {
-                entity p = spawn();
-                p.playerid = 0; // TODO: okay to use -1 for local player? or does local player already has an entity in MENUQC?
                uri = strcat(uri, "/player/", uri_escape(crypto_getmyidfp(0)));
                print("Retrieving playerstats from URL: ", uri, "\n");
                url_single_fopen(uri, FILE_READ, PlayerInfo_ready, p);
index 711d9143600eff8956d57084845fc784bd61b6a0..8338ec5ac583fb15a6a6f8b0d3bcd0b08f8e5f54 100644 (file)
@@ -1255,3 +1255,4 @@ float autocvar_g_campcheck_damage;
 float autocvar_g_campcheck_distance;
 float autocvar_g_campcheck_interval;
 float autocvar_g_jump_grunt;
+string autocvar_g_playerstats_ladder;
index e8b34509838cb2e56d05b685165ddb792cade3b9..d15d585abe47f0174519aa22f261fe26e2146c5b 100644 (file)
@@ -237,6 +237,7 @@ void cvar_changes_init()
                BADPREFIX("g_playerstats_");
                BADPREFIX("g_respawn_ghosts");
                BADPREFIX("g_voice_flood_");
+                BADCVAR("g_playerstats_ladder");
                BADPREFIX("rcon_");
                BADPREFIX("sv_allowdownloads");
                BADPREFIX("sv_autodemo");
@@ -430,7 +431,7 @@ void cvar_changes_init()
                BADCVAR("g_nix");
                BADCVAR("g_grappling_hook");
                BADCVAR("g_jetpack");
-               
+
 #undef BADPREFIX
 #undef BADCVAR
 
@@ -1566,7 +1567,7 @@ void NextLevel()
                PlayerStats_AddGlobalInfo(e);
        PlayerStats_Shutdown();
        WeaponStats_Shutdown();
-       
+
        Kill_Notification(NOTIF_ALL, world, MSG_CENTER, 0); // kill all centerprints now
 
        if(autocvar_sv_eventlog)