X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fplayerstats.qc;h=511ac46e66eedc7a8b35ce447b328b56f1a89ff7;hb=19c09c8cfc6a4cb71c07e63bf739b7720ec6b0a0;hp=0fcd70dfc08fd8e7afd9bdc2cd2b31c063331c79;hpb=7ff985ed6aa644a01d2520ec06603f32f9dd4074;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index 0fcd70dfc..511ac46e6 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -55,7 +55,7 @@ void PlayerStats_GameReport_AddPlayer(entity e) } } -void PlayerStats_GameReport_AddTeam(float t) +void PlayerStats_GameReport_AddTeam(int t) { if(PS_GR_OUT_DB < 0) { return; } @@ -152,13 +152,14 @@ void PlayerStats_GameReport_FinalizePlayer(entity p) if(latency) PlayerStats_GameReport_Event_Player(p, PLAYERSTATS_AVGLATENCY, latency); } + + db_put(PS_GR_OUT_DB, sprintf("%s:_ranked", p.playerstats_id), ftos(CS(p).cvar_cl_allow_uidranking)); } - strunzone(p.playerstats_id); - p.playerstats_id = string_null; + strfree(p.playerstats_id); } -void PlayerStats_GameReport(float finished) +void PlayerStats_GameReport(bool finished) { if(PS_GR_OUT_DB < 0) { return; } @@ -259,6 +260,7 @@ void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that } // this... is a hack, a temporary one until we get a proper duel gametype +// TODO: remove duel hack after servers have migrated to the proper duel gametype! string PlayerStats_GetGametype() { if(IS_GAMETYPE(DEATHMATCH) && autocvar_g_maxplayers == 2) @@ -376,6 +378,10 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status) url_fputs(fh, sprintf("t %s\n", tt)); } + // elo ranking enabled + nn = db_get(PS_GR_OUT_DB, sprintf("%s:_ranked", p)); + if(nn != "") { url_fputs(fh, sprintf("r %s\n", nn)); } + // output player events for(e = PS_GR_OUT_EVL; (en = db_get(PS_GR_OUT_DB, sprintf("*:%s", e))) != ""; e = en) { @@ -484,6 +490,21 @@ void PlayerStats_PlayerBasic(entity joiningplayer, float newrequest) } } +SHUTDOWN(PlayerStats_PlayerBasic_Shutdown) +{ + if(PS_B_IN_DB >= 0) + { + db_close(PS_B_IN_DB); + PS_B_IN_DB = -1; + } + + if(PS_GR_OUT_DB >= 0) + { + db_close(PS_GR_OUT_DB); + PS_GR_OUT_DB = -1; + } +} + void PlayerStats_PlayerBasic_CheckUpdate(entity joiningplayer) { // determine whether we should retrieve playerbasic information again