X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fcommon%2Fplayerstats.qc;h=129c42d47384b6e0fe424ccb64d3118ab3a73791;hb=258867c634125e1d048869b4a5d8ef279e8b8228;hp=0fcd70dfc08fd8e7afd9bdc2cd2b31c063331c79;hpb=d5176859998b4f2a20b13a629fd7b5e5df5eb58b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index 0fcd70dfc..129c42d47 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -5,9 +5,11 @@ #include "constants.qh" #include "util.qh" #include + #include #include "../server/anticheat.qh" #include "../server/defs.qh" #include "../server/scores.qh" + #include #include "../server/weapons/accuracy.qh" #endif @@ -55,7 +57,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 +154,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 +262,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 +380,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 +492,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