r3897 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Jul 24 08:42:00 EDT 2008
Author: div0
Date: 2008-07-24 08:42:00 -0400 (Thu, 24 Jul 2008)
New Revision: 3897
Modified:
trunk/data/qcsrc/server/gamecommand.qc
trunk/data/qcsrc/server/keyhunt.qc
trunk/data/qcsrc/server/scores.qc
trunk/data/qcsrc/server/scores.qh
Log:
keyhunt sends scores
Modified: trunk/data/qcsrc/server/gamecommand.qc
===================================================================
--- trunk/data/qcsrc/server/gamecommand.qc 2008-07-24 12:14:23 UTC (rev 3896)
+++ trunk/data/qcsrc/server/gamecommand.qc 2008-07-24 12:42:00 UTC (rev 3897)
@@ -208,6 +208,10 @@
print("Client not found\n");
return;
}
+ if (argv(0) == "sdp")
+ {
+ Score_DebugPrint();
+ }
print("Invalid command. For a list of supported commands, try sv_cmd help.\n");
}
Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc 2008-07-24 12:14:23 UTC (rev 3896)
+++ trunk/data/qcsrc/server/keyhunt.qc 2008-07-24 12:42:00 UTC (rev 3897)
@@ -436,7 +436,11 @@
sound(player, CHAN_AUTO, kh_sound_collect, 1, ATTN_NORM);
if(key.kh_dropperteam != player.team)
+ {
kh_Scores_Event(player, key, "collect", cvar("g_balance_keyhunt_score_collect"), 0);
+ PlayerTeamScore_Add(player, ST_SCORE, ST_SCORE, cvar("g_balance_keyhunt_score_collect"));
+ PlayerScore_Add(player, SP_KH_COLLECT, 1);
+ }
key.kh_dropperteam = 0;
bprint(player.netname, "^7 picked up the ", key.netname, "\n");
@@ -462,6 +466,7 @@
while((key = player.kh_next))
{
kh_Scores_Event(player, key, "losekey", 0, 0);
+ PlayerScore_Add(player, SP_KH_LOSEKEY, 1);
bprint(player.netname, "^7 died and lost the ", key.netname, "\n");
kh_Key_AssignTo(key, world);
makevectors('-1 0 0' * (45 + 45 * random()) + '0 360 0' * random());
@@ -599,7 +604,13 @@
// twice the score for 3 team games, three times the score for 4 team games!
// note: for a win by destroying the key, this should NOT be applied
FOR_EACH_KH_KEY(key)
- kh_Scores_Event(key.owner, key, "capture", DistributeEvenly_Get(1), 0);
+ {
+ float f;
+ f = DistributeEvenly_Get(1);
+ kh_Scores_Event(key.owner, key, "capture", f, 0);
+ PlayerTeamScore_Add(key.owner, SP_KH_CAPS, ST_KH_CAPS, 1);
+ PlayerTeamScore_AddScore(key.owner, f);
+ }
first = TRUE;
FOR_EACH_KH_KEY(key)
@@ -645,6 +656,7 @@
entity player, key, attacker;
float players;
float keys;
+ float f;
attacker = world;
if(lostkey.pusher)
@@ -660,6 +672,8 @@
kh_Scores_Event(lostkey.kh_previous_owner, world, "pushed", 0, -cvar("g_balance_keyhunt_score_push"));
// don't actually GIVE him the -nn points, just log
kh_Scores_Event(attacker, world, "push", cvar("g_balance_keyhunt_score_push"), 0);
+ PlayerScore_Add(attacker, SP_KH_PUSH, 1);
+ PlayerTeamScore_AddScore(attacker, cvar("g_balance_keyhunt_score_push"));
centerprint(attacker, "Your push is the best!\n\n\n");
bprint("The ", ColoredTeamName(teem), "^7 could not take care of the ", lostkey.netname, "^7 when ", attacker.netname, "^7 came\n");
}
@@ -680,11 +694,17 @@
kh_Scores_Event(lostkey.kh_previous_owner, world, "destroyed", 0, -cvar("g_balance_keyhunt_score_destroyed"));
// don't actually GIVE him the -nn points, just log
+ PlayerScore_Add(lostkey.kh_previous_owner, SP_KH_DESTROYED, 1);
+
DistributeEvenly_Init(cvar("g_balance_keyhunt_score_destroyed"), keys * of + players);
FOR_EACH_KH_KEY(key)
if(key.owner && key.team != teem)
- kh_Scores_Event(key.owner, world, "destroyed_holdingkey", DistributeEvenly_Get(of), 0);
+ {
+ f = DistributeEvenly_Get(of);
+ kh_Scores_Event(key.owner, world, "destroyed_holdingkey", f, 0);
+ PlayerTeamScore_AddScore(key.owner, f);
+ }
fragsleft = DistributeEvenly_Get(players);
@@ -707,7 +727,11 @@
FOR_EACH_PLAYER(player)
if(player.team == thisteam)
- kh_Scores_Event(player, world, "destroyed", DistributeEvenly_Get(1), 0);
+ {
+ f = DistributeEvenly_Get(1);
+ kh_Scores_Event(player, world, "destroyed", f, 0);
+ PlayerTeamScore_AddScore(key.owner, f);
+ }
--j;
}
@@ -880,10 +904,14 @@
for(k = targ.kh_next; k != world; k = k.kh_next)
++nk;
kh_Scores_Event(attacker, targ.kh_next, "carrierfrag", -nk * cvar("g_balance_keyhunt_score_collect"), 0);
+ PlayerTeamScore_AddScore(attacker, -nk * cvar("g_balance_keyhunt_score_collect"));
}
else
{
kh_Scores_Event(attacker, targ.kh_next, "carrierfrag", cvar("g_balance_keyhunt_score_carrierfrag")-1, 0);
+ PlayerTeamScore_AddScore(attacker, cvar("g_balance_keyhunt_score_carrierfrag") - 1);
+ PlayerScore_Add(attacker, SP_KH_KCFRAG, 1);
+ // the frag gets added later
}
}
Modified: trunk/data/qcsrc/server/scores.qc
===================================================================
--- trunk/data/qcsrc/server/scores.qc 2008-07-24 12:14:23 UTC (rev 3896)
+++ trunk/data/qcsrc/server/scores.qc 2008-07-24 12:42:00 UTC (rev 3897)
@@ -10,6 +10,7 @@
float teamscores_entities_count;
var .float scores_primary;
var .float teamscores_primary;
+float scores_initialized;
.float Version;
.float(entity to) SendEntity;
@@ -60,6 +61,7 @@
void TeamScore_Add(entity player, float scorefield, float score)
{
entity s;
+ if(!scores_initialized) return; // FIXME remove this when everything uses this system
s = teamscorekeepers[player.team];
if(!s)
error("Adding score to unknown team!");
@@ -116,6 +118,7 @@
void ScoreInfo_Init(float teams)
{
+ scores_initialized = 1;
if(teams >= 1)
TeamScore_Spawn(COLOR_TEAM1, "Red");
if(teams >= 2)
@@ -205,6 +208,7 @@
void PlayerScore_Add(entity player, float scorefield, float score)
{
entity s;
+ if(!scores_initialized) return; // FIXME remove this when everything uses this system
s = player.scorekeeper;
if(!s)
error("Adding score to unknown player!");
@@ -212,6 +216,12 @@
s.Version += 1;
}
+void PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score)
+{
+ PlayerScore_Add(player, pscorefield, score);
+ TeamScore_Add(player, tscorefield, score);
+}
+
float PlayerScore_Compare(entity t1, entity t2)
{
if(!t1 || !t2) return (!t2) - !t1;
@@ -273,3 +283,38 @@
WinningConditionHelper_winnerteam = -1;
}
}
+
+void Score_DebugPrint()
+{
+ entity p, sk;
+ float i, t;
+
+ print("netname");
+ for(i = 0; i < MAX_SCORE; ++i)
+ print(":", scores_label[i]);
+ print("\n");
+ FOR_EACH_PLAYER(p)
+ {
+ sk = p.scorekeeper;
+ print(p.netname);
+ for(i = 0; i < MAX_SCORE; ++i)
+ print(":", ftos(sk.(scores[i])));
+ print("\n");
+ }
+
+ print("teamname");
+ for(i = 0; i < MAX_SCORE; ++i)
+ print(":", scores_label[i]);
+ print("\n");
+ for(t = 0; t < 16; ++t)
+ {
+ sk = teamscorekeepers[t];
+ if(sk)
+ {
+ print(ftos(t));
+ for(i = 0; i < MAX_TEAMSCORE; ++i)
+ print(":", ftos(sk.(teamscores[i])));
+ print("\n");
+ }
+ }
+}
Modified: trunk/data/qcsrc/server/scores.qh
===================================================================
--- trunk/data/qcsrc/server/scores.qh 2008-07-24 12:14:23 UTC (rev 3896)
+++ trunk/data/qcsrc/server/scores.qh 2008-07-24 12:42:00 UTC (rev 3897)
@@ -1,4 +1,4 @@
-#define MAX_SCORE 9
+#define MAX_SCORE 10
#define MAX_TEAMSCORE 2
/**
@@ -33,6 +33,16 @@
void TeamScore_Add(entity player, float scorefield, float score);
/**
+ * Adds a score to both the player and the team.
+ */
+void PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score);
+
+/**
+ * Adds to the generic score fields for both the player and the team.
+ */
+#define PlayerTeamScore_AddScore(p,s) PlayerTeamScore_Add(p, SP_SCORE, ST_SCORE, s)
+
+/**
* Initialize the scores info for the given number of teams.
* Immediately set all labels afterwards.
*/
@@ -54,6 +64,11 @@
void Score_ClearAll();
/**
+ * Prints the scores (ugly!) to the console.
+ */
+void Score_DebugPrint();
+
+/**
* Lower scores are better (e.g. deaths)
*/
#define SFL_DECREASING 1
@@ -80,16 +95,16 @@
#define SP_DEATHS 1
#define SP_SUICIDES 2
#define SP_SCORE 3 // personal score, game modes can set it their own way
+#define ST_SCORE 0
#define SP_CTF_CAPS 4
#define SP_CTF_RETURNS 5
-#define ST_CTF_CAPS 0
-#define ST_CTF_SCORE 1
+#define ST_CTF_CAPS 1
#define SP_KH_COLLECT 4
#define SP_KH_LOSEKEY 5
-#define SP_KH_CAPTURE 6
+#define SP_KH_CAPS 6
#define SP_KH_PUSH 7
#define SP_KH_DESTROYED 8
-#define ST_KH_CAPS 0
-#define ST_KH_SCORE 1
+#define SP_KH_KCFRAG 9
+#define ST_KH_CAPS 1
More information about the nexuiz-commits
mailing list