I hate this method... What I hate about it most, is when you get a team full of vets vs a team full of noobs, and the server won't let them rearrange the team assignments without an admin making the decisions for everyone.
My solution is simple:
- 1) When you attempt to spawn, the server counts the number of live players on each team. If your team has less live players than another team, you will spawn. Otherwise you enter your team's spawn queue, and the server attempts to spawn the next player in the other team's queue.
2) Disable "Annihilation::fairteams", which prevents you from choosing to be on the team with the most teammates. This way, you can choose to be on which ever team you want. But if you choose the team with the most players, you'll have to wait longer to spawn (unless your whole team sucks and dies frequently).
This will keep the number of live players per team even, even when the number of clients per team is not. The only way you'll encounter unfair teams with this method, is if one team never dies, and the other team rage quits. But it'll sort itself out quickly if any of them do die, because they won't be able to respawn until teams are even, again.