X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Farena.qc;h=0c9d769e4c9973ab471d3d65b0b28253b10fabf4;hb=098b78e21b4dedb0a1d2fafe091a20d4ffc17957;hp=5a3ee7a0d8838d4d5d736c932fa92bdb4da90807;hpb=ab95e3a46d6514a744cdd8784995492882ba1064;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/arena.qc b/qcsrc/server/arena.qc index 5a3ee7a0d..0c9d769e4 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; @@ -122,10 +122,14 @@ void reset_map(float dorespawn) if(g_keyhunt) 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(g_arena) + if(champion && champion.classname == "player" && player_count > 1) UpdateFrags(champion, +1); + if(g_ca) + if(champion && champion.classname == "player" && player_count > 1) + TeamScore_AddToTeam(champion.team, SP_SCORE, 1); + self = oldself; } @@ -183,7 +187,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 +203,7 @@ void Arena_Warmup() allowed_to_spawn = 0; - if(g_ca && (player_cnt < required_ca_players || inWarmupStage)) + if(inWarmupStage) allowed_to_spawn = 1; msg = NEWLINES; @@ -242,15 +246,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 +265,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 +276,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;