- b = buf_create();
- i = 0;
-
- db_dump(playerstats_db, "foo.db");
-
- bufstr_set(b, i++, "V 1");
-#ifdef WATERMARK
- bufstr_set(b, i++, sprintf("R %s", WATERMARK()));
-#endif
- bufstr_set(b, i++, sprintf("T %s.%06d", strftime(FALSE, "%s"), floor(random() * 1000000)));
- bufstr_set(b, i++, sprintf("G %s", GetGametype()));
- bufstr_set(b, i++, sprintf("M %s", GetMapname()));
- bufstr_set(b, i++, sprintf("S %s", cvar_string("hostname")));
- bufstr_set(b, i++, sprintf("C %d", cvar_purechanges_count));
- if(teams_matter)
- {
- entity winner;
- winner = PlayerScore_Sort(score_dummyfield);
- bufstr_set(b, i++, sprintf("W %d", winner.team));
- for(t = teamstats_last; (tn = db_get(playerstats_db, sprintf("%s", t))) != ""; t = tn)
- {
- bufstr_set(b, i++, strcat("t ", t));
- for(p = playerstats_last; (pn = db_get(playerstats_db, sprintf("%s:*", p))) != ""; p = pn)
- {
- tt = db_get(playerstats_db, sprintf("%s:_team", p));
- if(t != tt)
- continue;
-
- bufstr_set(b, i++, sprintf("P %s", p));
- nn = db_get(playerstats_db, sprintf("%s:_netname", p));
- if(nn != "")
- bufstr_set(b, i++, sprintf("n %s", nn));
- for(e = events_last; (en = db_get(playerstats_db, sprintf("*:%s", e))) != ""; e = en)
- {
- float v;
- v = stof(db_get(playerstats_db, sprintf("%s:%s", p, e)));
- if(v != 0)
- bufstr_set(b, i++, sprintf("e %s %g", e, v));
- }
- }
- bufstr_set(b, i++, "");
- }
- }
- else {
- for(p = playerstats_last; (pn = db_get(playerstats_db, sprintf("%s:*", p))) != ""; p = pn)
- {
- bufstr_set(b, i++, sprintf("P %s", p));
- nn = db_get(playerstats_db, sprintf("%s:_netname", p));
- if(nn != "")
- bufstr_set(b, i++, sprintf("n %s", nn));
- for(e = events_last; (en = db_get(playerstats_db, sprintf("*:%s", e))) != ""; e = en)
- {
- float v;
- v = stof(db_get(playerstats_db, sprintf("%s:%s", p, e)));
- if(v != 0)
- bufstr_set(b, i++, sprintf("e %s %g", e, v));
- }
- }
- bufstr_set(b, i++, "");
- }
-
- if(autocvar_g_playerstats_debug)
- {
- for(i = 0; i < buf_getsize(b); ++i)
- print(bufstr_get(b, i), "\n");
- }
-
- if(crypto_uri_postbuf(uri, URI_GET_PLAYERSTATS_SENT, "text/plain", "\n", b, 0))
- playerstats_requested = TRUE;
- else
- playerstats_waitforme = TRUE; // if posting fails, we must continue anyway
-
- buf_del(b);