+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #include "../dpdefs/progsdefs.qh"
+ #include "../dpdefs/dpextensions.qh"
+ #include "constants.qh"
+ #include "util.qh"
+ #include "urllib.qh"
+ #include "weapons/weapons.qh"
+ #include "../server/weapons/accuracy.qh"
+ #include "../server/defs.qh"
+ #include "playerstats.qh"
+ #include "../server/scores.qh"
+#endif
+
#ifdef SVQC
void PlayerStats_Prematch(void)
{
{ s = e.crypto_idfp; }
else if(IS_BOT_CLIENT(e))
{ s = sprintf("bot#%g#%s", skill, e.cleanname); }
-
+
if((s == "") || find(world, playerstats_id, s)) // already have one of the ID - next one can't be tracked then!
{
if(IS_BOT_CLIENT(e))
else
{ s = sprintf("player#%d", e.playerid); }
}
-
+
e.playerstats_id = strzone(s);
// now add the player to the database
string key = sprintf("%s:*", e.playerstats_id);
string p = db_get(PS_GR_OUT_DB, key);
-
+
if(p == "")
{
if(PS_GR_OUT_PL)
string key = sprintf("%d", t);
string p = db_get(PS_GR_OUT_DB, key);
-
+
if(p == "")
{
if(PS_GR_OUT_TL)
string key = sprintf("*:%s", event_id);
string p = db_get(PS_GR_OUT_DB, key);
-
+
if(p == "")
{
if(PS_GR_OUT_EVL)
void PlayerStats_GameReport_Accuracy(entity p)
{
- entity w;
- float i;
+ int i;
for(i = WEP_FIRST; i <= WEP_LAST; ++i)
{
- w = get_weaponinfo(i);
+ entity w = get_weaponinfo(i);
#define ACCMAC(suffix,field) \
PS_GR_P_ADDVAL(p, sprintf("acc-%s-%s", w.netname, suffix), p.accuracy.(field[i-1]));
void PlayerStats_GameReport(float finished)
{
if(PS_GR_OUT_DB < 0) { return; }
-
+
PlayerScore_Sort(score_dummyfield, 0, 0, 0);
PlayerScore_Sort(scoreboard_pos, 1, 1, 1);
if(teamplay) { PlayerScore_TeamStats(); }
if(autocvar_g_playerstats_gamereport_uri != "")
{
- PlayerStats_GameReport_DelayMapVote = TRUE;
+ PlayerStats_GameReport_DelayMapVote = true;
url_multi_fopen(
autocvar_g_playerstats_gamereport_uri,
FILE_APPEND,
}
else
{
- PlayerStats_GameReport_DelayMapVote = FALSE;
+ PlayerStats_GameReport_DelayMapVote = false;
db_close(PS_GR_OUT_DB);
PS_GR_OUT_DB = -1;
}
{
if(autocvar_g_playerstats_gamereport_uri == "") { return; }
- PS_GR_OUT_DB = -1;
PS_GR_OUT_DB = db_create();
if(PS_GR_OUT_DB >= 0)
{
- PlayerStats_GameReport_DelayMapVote = TRUE;
+ PlayerStats_GameReport_DelayMapVote = true;
serverflags |= SERVERFLAG_PLAYERSTATS;
PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD);
PlayerStats_GameReport_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM);
}
- else { PlayerStats_GameReport_DelayMapVote = FALSE; }
+ else { PlayerStats_GameReport_DelayMapVote = false; }
}
void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
nn = db_get(PS_GR_OUT_DB, sprintf("%s:_playerid", p));
if(nn != "") { url_fputs(fh, sprintf("i %s\n", nn)); }
- // player name
+ // player name
nn = db_get(PS_GR_OUT_DB, sprintf("%s:_netname", p));
if(nn != "") { url_fputs(fh, sprintf("n %s\n", nn)); }
{
// url_fclose is processing, we got a response for writing the data
// this must come from HTTP
- print("Got response from player stats server:\n");
- while((s = url_fgets(fh))) { print(" ", s, "\n"); }
- print("End of response.\n");
+ dprint("Got response from player stats server:\n");
+ while((s = url_fgets(fh))) { dprint(" ", s, "\n"); }
+ dprint("End of response.\n");
url_fclose(fh);
break;
}
-
+
case URL_READY_CLOSED:
{
// url_fclose has finished
- print("Player stats written\n");
- PlayerStats_GameReport_DelayMapVote = FALSE;
+ dprint("Player stats written\n");
+ PlayerStats_GameReport_DelayMapVote = false;
if(PS_GR_OUT_DB >= 0)
{
db_close(PS_GR_OUT_DB);
}
break;
}
-
+
case URL_READY_ERROR:
default:
{
print("Player stats writing failed: ", ftos(status), "\n");
- PlayerStats_GameReport_DelayMapVote = FALSE;
+ PlayerStats_GameReport_DelayMapVote = false;
if(PS_GR_OUT_DB >= 0)
{
db_close(PS_GR_OUT_DB);
{
// 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();
- }
// now request the information
uri = strcat(uri, "/player/", uri_escape(uri_escape(joiningplayer.crypto_idfp)), "/elo.txt");
- print("Retrieving playerstats from URL: ", uri, "\n");
+ dprint("Retrieving playerstats from URL: ", uri, "\n");
url_single_fopen(
uri,
FILE_APPEND,
{
case URL_READY_CANWRITE:
{
- print("-- Sending data to player stats server\n");
+ dprint("-- Sending data to player stats server\n");
/*url_fputs(fh, "V 1\n");
#ifdef WATERMARK
url_fputs(fh, sprintf("R %s\n", WATERMARK));
#endif
url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
- url_fputs(fh, sprintf("g %s\n", cvar_string("_menu_prvm_gender"))); // gender
+ url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
*/url_fputs(fh, "\n");
url_fclose(fh);
break;
}
-
+
case URL_READY_CANREAD:
{
string s = "";
- print("-- Got response from player stats server:\n");
+ dprint("-- Got response from player stats server:\n");
//string gametype = string_null;
while((s = url_fgets(fh)))
{
- print(" ", s, "\n");
+ dprint(" ", s, "\n");
/*
string key = "", value = "", data = "";
continue;
*/
}
- print("-- End of response.\n");
+ dprint("-- End of response.\n");
url_fclose(fh);
break;
}
print("Player stats synchronized with server\n");
break;
}
-
+
case URL_READY_ERROR:
default:
{
db_put(PS_D_IN_DB, marker, PS_D_IN_EVL);
strunzone(PS_D_IN_EVL);
}
- else { db_put(PS_D_IN_DB, marker, "#"); }
+ else { db_put(PS_D_IN_DB, marker, "#"); }
PS_D_IN_EVL = strzone(marker);
}
{
// create the database if it doesn't already exist
if(PS_D_IN_DB < 0)
- {
- PS_D_IN_DB = -1;
PS_D_IN_DB = db_create();
- }
//uri = strcat(uri, "/player/", uri_escape(crypto_getmyidfp(0)));
dprint("Retrieving playerstats from URL: ", autocvar_g_playerstats_playerdetail_uri, "\n");
url_fclose(fh);
break;
}
-
+
case URL_READY_CANREAD:
{
//print("PlayerStats_PlayerDetail_Handler(): Got response from player stats server:\n");
string key = "", event = "", data = "";
if(argv(0) == "#") { continue; }
-
+
if(count == 2)
{
key = argv(0);
}
break;
}
-
+
default:
{
printf(
#ifdef MENUQC
url_fputs(fh, sprintf("l %s\n", cvar_string("_menu_prvm_language"))); // language
url_fputs(fh, sprintf("c %s\n", cvar_string("_menu_prvm_country"))); // country
- url_fputs(fh, sprintf("g %s\n", cvar_string("_menu_prvm_gender"))); // gender
+ url_fputs(fh, sprintf("g %s\n", cvar_string("_cl_gender"))); // gender
url_fputs(fh, sprintf("n %s\n", cvar_string("_cl_name"))); // name
url_fputs(fh, sprintf("m %s %s\n", cvar_string("_cl_playermodel"), cvar_string("_cl_playerskin"))); // model/skin
#endif
void PlayerInfo_Init()
{
- playerinfo_db = -1;
playerinfo_db = db_create();
}
#ifdef CSQC
/*
- * FIXME - crypto_* builtin functions missing in CSQC (csprogsdefs.qc:885)
+ * FIXME - crypto_* builtin functions missing in CSQC (csprogsdefs.qh:885)
void PlayerInfo_Details()
{
print("-- Getting detailed PlayerInfo for local player (CSQC)\n");