]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
player stats: also send team scoreboard
authorRudolf Polzer <divVerent@xonotic.org>
Mon, 31 Jan 2011 15:02:34 +0000 (16:02 +0100)
committerRudolf Polzer <divVerent@xonotic.org>
Mon, 31 Jan 2011 15:02:34 +0000 (16:02 +0100)
qcsrc/server/playerstats.qc
qcsrc/server/playerstats.qh
qcsrc/server/scores.qc

index 6b04eea9d6a06e648420feb83de200e4316fd529..4382fb5bf61a3d11753097739fdf2f2d06840f4c 100644 (file)
@@ -65,6 +65,29 @@ void PlayerStats_AddPlayer(entity e)
        }
 }
 
+void PlayerStats_AddTeam(float t)
+{
+       if(playerstats_db < 0)
+               return;
+
+       string key;
+       key = sprintf("team#%d:*", t);
+       
+       string p;
+       p = db_get(playerstats_db, key);
+       if(p == "")
+       {
+               if(playerstats_last)
+               {
+                       db_put(playerstats_db, key, playerstats_last);
+                       strunzone(playerstats_last);
+               }
+               else
+                       db_put(playerstats_db, key, "#");
+               playerstats_last = strzone(sprintf("team%d", t));
+       }
+}
+
 void PlayerStats_AddEvent(string event_id)
 {
        if(playerstats_db < 0)
@@ -101,6 +124,16 @@ void PlayerStats_Event(entity e, string event_id, float value)
        db_put(playerstats_db, key, ftos(val));
 }
 
+void PlayerStats_TeamScore(float t, string event_id, float value)
+{
+       string key;
+       float val;
+       key = sprintf("team#%d:%s", t, event_id);
+       val = stof(db_get(playerstats_db, key));
+       val += value;
+       db_put(playerstats_db, key, ftos(val));
+}
+
 void PlayerStats_Sent_URI_Get_Callback(float id, float status, string data)
 {
        if(playerstats_requested)
index 2d004c1207b4580929de5325c5543341d42741b1..baaddcbb661ba9d6826a469cb4fd659d71a9d407 100644 (file)
@@ -28,12 +28,18 @@ void PlayerStats_Init();
 // add a new player
 void PlayerStats_AddPlayer(entity e);
 
+// add a new team
+void PlayerStats_AddTeam(float t);
+
 // add a new event
 void PlayerStats_AddEvent(string event_id);
 
 // call on each event to track, or at player disconnect OR match end for "global stuff"
 void PlayerStats_Event(entity e, string event_id, float value);
 
+// add a team score
+void PlayerStats_TeamScore(float t, string event_id, float value);
+
 // call at game over
 void PlayerStats_Shutdown(); // send stats to the server
 
index b2b0a138f1d964782c45731c157e7bda15e9a695..6c7a7dbc3350208546216979e4df167e2a1bf004 100644 (file)
@@ -88,6 +88,7 @@ void TeamScore_Spawn(float t, string name)
        Net_LinkEntity(ts, FALSE, 0, TeamScore_SendEntity);
        teamscorekeepers[t - 1] = ts;
        ++teamscores_entities_count;
+       PlayerStats_AddTeam(t);
 }
 
 float TeamScore_AddToTeam(float t, float scorefield, float score)
@@ -891,3 +892,19 @@ void PlayerScore_PlayerStats(entity p)
                        if(scores_label[i] != "")
                                PlayerStats_Event(s.owner, strcat(PLAYERSTATS_SCOREBOARD, scores_label[i]), s.(scores[i]));
 }
+
+void PlayerScore_TeamStats(void)
+{
+       entity sk;
+       float t, i;
+       for(t = 0; t < 16; ++t)
+       {
+               sk = teamscorekeepers[t];
+               if(!sk)
+                       continue;
+               for(i = 0; i < MAX_TEAMSCORE; ++i)
+                       if(sk.(teamscores[i]) != 0)
+                               if(teamscores_label[i] != "")
+                                       PlayerStats_TeamScore(t, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i]));
+       }
+}