From: terencehill Date: Sat, 26 Jun 2010 00:11:50 +0000 (+0200) Subject: Fix this bug: playing Arena the field score is never updated in the scoreboard. The... X-Git-Tag: xonotic-v0.1.0preview~515 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=f291cdc835b56a498dd981b2e7e2bcfbfcf04ee3;p=xonotic%2Fxonotic-data.pk3dir.git Fix this bug: playing Arena the field score is never updated in the scoreboard. The cause is a typo, it was used player_cnt (count of CA players) instead of player_count (count of players in every game mode). That's why I've also renamed player_cnt in ca_players. While I was at it I've made a small clean up to arena.qc, trimming some trailing space and converting some FOR_EACH_CLIENT(self) if (self.classname == "player") into FOR_EACH_PLAYER(self). --- diff --git a/qcsrc/server/arena.qc b/qcsrc/server/arena.qc index 5a3ee7a0d..ee4ce1b87 100644 --- a/qcsrc/server/arena.qc +++ b/qcsrc/server/arena.qc @@ -10,7 +10,7 @@ entity spawnqueue_last; entity champion; float warmup; float allowed_to_spawn; -float player_cnt; +float ca_players; float required_ca_players; .float caplayer; @@ -123,7 +123,7 @@ void reset_map(float dorespawn) kh_Controller_SetThink(cvar("g_balance_keyhunt_delay_round")+(game_starttime - time), "", kh_StartRound); if(g_arena || g_ca) - if(champion && champion.classname == "player" && player_cnt > 1) + if(champion && champion.classname == "player" && player_count > 1) UpdateFrags(champion, +1); self = oldself; @@ -183,7 +183,7 @@ void Spawnqueue_Mark(entity e) * player when player is waiting for the countdown to finish. * Blocks the players movement while countdown is active. * Unblocks the player once the countdown is over. - * + * * Called in PlayerPostThink() */ float roundStartTime_prev; // prevent networkspam @@ -199,7 +199,7 @@ void Arena_Warmup() allowed_to_spawn = 0; - if(g_ca && (player_cnt < required_ca_players || inWarmupStage)) + if(g_ca && (ca_players < required_ca_players || inWarmupStage)) allowed_to_spawn = 1; msg = NEWLINES; @@ -242,15 +242,13 @@ void Arena_Warmup() { roundStartTime_prev = f; Announce("begin"); - centerprint(self, "^1Begin!\n"); + centerprint(self, "^1Begin!\n"); if(g_ca) { - player_cnt = 0; + ca_players = 0; - FOR_EACH_CLIENT(self) { - if (self.classname == "player") - player_cnt += 1; - } + FOR_EACH_PLAYER(self) + ca_players += 1; } } @@ -263,7 +261,7 @@ float next_round; * This function finds out whether an arena round is over 1 player is left. * It determines the last player who's still alive and saves it's entity reference * in the global variable 'champion'. Then the new enemy/enemies are put into the server. - * + * * Gets called in StartFrame() */ void Spawnqueue_Check() @@ -274,21 +272,18 @@ void Spawnqueue_Check() if(g_ca) { // check the amount of spawned players in each team float redspawned, bluespawned; - FOR_EACH_CLIENT(self) { - if (self.classname == "player") { - if (self.team == COLOR_TEAM1) redspawned += 1; - else if (self.team == COLOR_TEAM2) bluespawned += 1; - } + FOR_EACH_PLAYER(self) { + if (self.team == COLOR_TEAM1) redspawned += 1; + else if (self.team == COLOR_TEAM2) bluespawned += 1; } required_ca_players = max(2, fabs(cvar("bot_vs_human") + 1)); - if(player_cnt < required_ca_players && (redspawned && bluespawned)) { + if(ca_players < required_ca_players && (redspawned && bluespawned)) { reset_map(TRUE); } - else if(player_cnt < required_ca_players) { - FOR_EACH_CLIENT(self) - if(self.classname == "player") + else if(ca_players < required_ca_players) { + FOR_EACH_PLAYER(self) centerprint(self, strcat("^1Need at least 1 player in each team to play CA", "^7\n")); allowed_to_spawn = 1; diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 3911ffecb..2fe7d5120 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -433,7 +433,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht else Violence_GibSplash_At(hitloc, force, 2, bound(0, damage, 200) / 16, self, attacker); - if((g_arena && numspawned < 2) || (g_ca && player_cnt < required_ca_players) && !inWarmupStage) + if((g_arena && numspawned < 2) || (g_ca && ca_players < required_ca_players) && !inWarmupStage) return; if (!g_minstagib)