From 5796be3f4ad396abd26cd85c27334042bd53d22d Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 25 Jul 2008 15:47:40 +0000 Subject: [PATCH] add generic scores for all other game modes (hope it somewhat works) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3911 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/scores.qc | 15 ++++++++--- data/qcsrc/server/scores.qh | 2 ++ data/qcsrc/server/teamplay.qc | 47 ++++++++++++++++++++++++----------- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/data/qcsrc/server/scores.qc b/data/qcsrc/server/scores.qc index 28921e5a4..6361ce839 100644 --- a/data/qcsrc/server/scores.qc +++ b/data/qcsrc/server/scores.qc @@ -10,7 +10,6 @@ float teamscores_flags[MAX_TEAMSCORE]; float teamscores_entities_count; var .float scores_primary; var .float teamscores_primary; -float scores_initialized; void Net_LinkEntity(entity e) { @@ -92,7 +91,11 @@ float TeamScore_Compare(entity t1, entity t2) vector result; float i; for(i = 0; i < MAX_TEAMSCORE; ++i) - result = ScoreField_Compare(t1, t2, teamscores[i], teamscores_flags[i], result); + { + var .float f; + f = teamscores[i]; + result = ScoreField_Compare(t1, t2, f, teamscores_flags[i], result); + } return result_x; } @@ -253,8 +256,12 @@ float PlayerScore_Compare(entity t1, entity t2) vector result; float i; - for(i = 0; i < MAX_TEAMSCORE; ++i) - result = ScoreField_Compare(t1, t2, scores[i], scores_flags[i], result); + for(i = 0; i < MAX_SCORE; ++i) + { + var .float f; + f = scores[i]; + result = ScoreField_Compare(t1, t2, f, scores_flags[i], result); + } return result_x; } diff --git a/data/qcsrc/server/scores.qh b/data/qcsrc/server/scores.qh index f3847b0ca..5c776d03a 100644 --- a/data/qcsrc/server/scores.qh +++ b/data/qcsrc/server/scores.qh @@ -1,3 +1,5 @@ +float scores_initialized; // 1 when scores labels/rules have been set + /** * Attaches a PlayerScore entity to a player. Use that in ClientConnect. * Remember to detach it in ClientDisconnect! diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index 216a73b13..f09534669 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -318,6 +318,22 @@ void InitGameplayMode() kh_init(); else if (game == GAME_ONSLAUGHT) entcs_init(); + + if(!scores_initialized) + { + if(teamplay) + { + CheckAllowedTeams(world); + ScoreInfo_Init((c1>=0) + (c2>=0) + (c3>=0) + (c4>=0)); // NOTE this assumes that if team 2 is allowed, 1 is too, and if 3 is, 2 is, and if 4 is, 3 is! + } + else + ScoreInfo_Init(0); // NOTE this assumes that if team 2 is allowed, 1 is too, and if 3 is, 2 is, and if 4 is, 3 is! + ScoreInfo_SetLabel_TeamScore (ST_SCORE, "score", SFL_SORT_PRIO_PRIMARY); + ScoreInfo_SetLabel_PlayerScore(SP_KILLS, "kills", 0); + ScoreInfo_SetLabel_PlayerScore(SP_DEATHS, "deaths", 0); + ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_SCORE, "score", SFL_SORT_PRIO_PRIMARY); + } } string GetClientVersionMessage(float v) { @@ -632,21 +648,24 @@ void CheckAllowedTeams (entity for_whom) head = find(head, classname, teament_name); } - if(cvar("bot_vs_human") > 0) - { - // bots are all blue - if(clienttype(for_whom) == CLIENTTYPE_BOT) - c1 = c3 = c4 = -1; - else - c2 = -1; - } - else if(cvar("bot_vs_human") < 0) + if(for_whom) { - // bots are all red - if(clienttype(for_whom) == CLIENTTYPE_BOT) - c2 = c3 = c4 = -1; - else - c1 = -1; + if(cvar("bot_vs_human") > 0) + { + // bots are all blue + if(clienttype(for_whom) == CLIENTTYPE_BOT) + c1 = c3 = c4 = -1; + else + c2 = -1; + } + else if(cvar("bot_vs_human") < 0) + { + // bots are all red + if(clienttype(for_whom) == CLIENTTYPE_BOT) + c2 = c3 = c4 = -1; + else + c1 = -1; + } } } -- 2.39.2