If each player has individual scores, the first step would be to add them all up into one cohesive team score. One way to do this would be to use a fake player for each team.
Setup:
/scoreboard objectives add teamScore dummy
Run whenever you want to update the scores:
/scoreboard players set red teamScore 0
/scoreboard players operation red teamScore += @a[team=red] enemyKills
/scoreboard players set blue teamScore 0
/scoreboard players operation blue teamScore += @a[team=blue] enemyKills
This will create two scores in teamScore
. One named red
with the combined enemyKills
scores of everyone on the red
team, and one named blue
with the combined enemyKills
scores of everyone on the blue
team.
To test if a team has won:
/scoreboard players test red teamScore 100
will test if the red team has won, while
/scoreboard players test blue teamScore 100
will test if the blue team has won.
Obviously, you don't have to use red
and blue
for the team names, and you could do this for more teams if necessary. And you don't need to use enemyKills
for your scoreboard objective, the names were just arbitrarily chosen and could be any valid name.
Hope this helps! If you find anything unclear, just comment below.
If your map is not going to be multiplayer, you may want to consider tracking if each zombie spawned is alive by attempting to execute commands on them and checking if said commands succeed.
Another solution, which I think is probably the best, is to implement custom loot from the different zombies that you spawn, perhaps paper or gold that is renamed to different values, or just different drops from each enemy, that are then automatically cleared from the players' inventories in exchange for scoreboard points.
Best Answer
You can add an objective of type
stat.killEntity.Zombie
, which will keep track of how many zombies the player has killed:You can select people who have killed 50 zombies with
@a[score_KillZombie_min=50]
. For example, to teleport them somewhere: