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;
}
}
//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=
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();