From: Jan Behrens Date: Sun, 25 Aug 2013 15:43:58 +0000 (+0200) Subject: Adding g_playerstats_ladder cvar and xonstat event X-Git-Tag: xonotic-v0.8.0~139^2~1^2~107^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=2a172d24a132bbcd7e0dc24c8d492c72442d768a;p=xonotic%2Fxonotic-data.pk3dir.git Adding g_playerstats_ladder cvar and xonstat event --- diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index 4f4a76cd1..e7d268798 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -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); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 711d91436..8338ec5ac 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -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; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index e8b345098..d15d585ab 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -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)