From: Samual Lenks Date: Mon, 17 Feb 2014 02:38:47 +0000 (-0500) Subject: Updates to playerbasic, including status tracking and proper database init X-Git-Tag: xonotic-v0.8.0~139^2~1^2~6 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=891ba8443c36c032374f0ba0464d663371edac4c;p=xonotic%2Fxonotic-data.pk3dir.git Updates to playerbasic, including status tracking and proper database init --- diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index cb6e530c6..fb28fd556 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -419,33 +419,61 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status) void PlayerStats_PlayerBasic() { - entity player; - //PS_D_IN_DB = -1; - //PS_D_IN_DB = db_create(); + if(autocvar_g_playerstats_playerbasic_uri != "") + { + entity player; + + // 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(); + } - //if(PS_D_IN_DB < 0) { return; } + FOR_EACH_REALCLIENT(player) + { + string uri = autocvar_g_playerstats_playerbasic_uri; + if((uri != "") && (player.crypto_idfp != "")) + { + uri = strcat(uri, "/player/", uri_escape(uri_escape(player.crypto_idfp)), "/elo.txt"); + print("Retrieving playerstats from URL: ", uri, "\n"); + url_single_fopen( + uri, + FILE_APPEND, + PlayerStats_PlayerBasic_Handler, + player + ); + } + + /*p.crypto_idfp != "") + { + uri = strcat(uri, "/elo/", uri_escape(p.crypto_idfp)); + print("Retrieving playerstats from URL: ", uri, "\n"); + url_single_fopen(uri, FILE_READ, PlayerInfo_ready, p); + }*/ + } - FOR_EACH_REALCLIENT(player) + if(PlayerStats_PlayerBasic_Status == PS_B_STATUS_RECEIVED) + { + // database still contains useful information, so don't clear it of a useful status + PlayerStats_PlayerBasic_Status = PS_B_STATUS_UPDATING; + } + else + { + // database was previously empty or never hit received status for some reason + PlayerStats_PlayerBasic_Status = PS_B_STATUS_WAITING; + } + } + else { - string uri = autocvar_g_playerstats_playerbasic_uri; - if((uri != "") && (player.crypto_idfp != "")) + // player has this disabled, kill the DB and set status to idle + if(PS_B_IN_DB >= 0) { - uri = strcat(uri, "/player/", uri_escape(uri_escape(player.crypto_idfp)), "/elo.txt"); - print("Retrieving playerstats from URL: ", uri, "\n"); - url_single_fopen( - uri, - FILE_APPEND, - PlayerStats_PlayerBasic_Handler, - player - ); + db_close(PS_B_IN_DB); + PS_B_IN_DB = -1; } - /*p.crypto_idfp != "") - { - uri = strcat(uri, "/elo/", uri_escape(p.crypto_idfp)); - print("Retrieving playerstats from URL: ", uri, "\n"); - url_single_fopen(uri, FILE_READ, PlayerInfo_ready, p); - }*/ + PlayerStats_PlayerBasic_Status = PS_B_STATUS_IDLE; } } diff --git a/qcsrc/common/playerstats.qh b/qcsrc/common/playerstats.qh index 71c0029db..3e794c102 100644 --- a/qcsrc/common/playerstats.qh +++ b/qcsrc/common/playerstats.qh @@ -2,7 +2,7 @@ //float PS_PM_IN_DB; // playerstats_prematch_in_db // db for info COLLECTED at the beginning of a match float PS_GR_OUT_DB; // playerstats_gamereport_out_db // db of info SENT at the end of a match //float PS_GR_IN_DB; // playerstats_gamereport_in_db // db for info COLLECTED at the end of a match -//float PS_B_IN_DB; // playerstats_playerbasic_in_db // db for info COLLECTED for basic player info (ELO) +float PS_B_IN_DB; // playerstats_playerbasic_in_db // db for info COLLECTED for basic player info (ELO) // http://stats.xonotic.org/player/GgXRw6piDtFIbMArMuiAi8JG4tiin8VLjZgsKB60Uds=/elo.txt -- this works, // http://stats.xonotic.org/player/ENkUjf83vKMVZcNm%2F6Ao1EmXEj1apQ6XvdQTxwELvmA%3D/elo.txt -- but this doesn't?!? // ENkUjf83vKMVZcNm/6Ao1EmXEj1apQ6XvdQTxwELvmA= @@ -90,6 +90,13 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status); string autocvar_g_playerstats_gamereport_ladder; var string autocvar_g_playerstats_gamereport_uri = "http://stats.xonotic.org/stats/submit"; + +#define PS_B_STATUS_ERROR -2 +#define PS_B_STATUS_IDLE -1 +#define PS_B_STATUS_WAITING 0 +#define PS_B_STATUS_RECEIVED 1 +#define PS_B_STATUS_UPDATING 2 +var float PlayerStats_PlayerBasic_Status = PS_B_STATUS_IDLE; var string autocvar_g_playerstats_playerbasic_uri = "http://stats.xonotic.org"; void PlayerStats_PlayerBasic();