Biblioteca
Times e lock
Numeração dos times, mover jogadores e travar os times com lockTeams().
Numeração dos times
| Número | Time | Constante |
|---|---|---|
0 | Espectador | TEAM_SPEC |
1 | FFA (todos contra todos) | TEAM_FFA |
2 | Vermelho | TEAM_RED |
3 | Azul | TEAM_BLUE |
4 | Verde | TEAM_GREEN |
5 | Amarelo | TEAM_YELLOW |
ts
import { TEAM_BLUE, TEAM_SPEC } from 'bonktools';
room.setTeam(playerId, TEAM_BLUE);
room.setTeam(playerId, TEAM_SPEC);Mover jogadores
O host move qualquer jogador com setTeam(id, team). O bot move a si mesmo com joinTeam(team).
ts
room.on('player-join', (p) => {
// manda todo novato para o espectador
room.setTeam(p.id, TEAM_SPEC);
});Travar os times
ts
room.lockTeams(); // jogadores não conseguem mais trocar de time nem sair para o spec
room.unlockTeams(); // libera de novo
room.state.teamsLocked; // estado atualCom os times travados, só o host move jogadores: room.setTeam(id, team) continua funcionando normalmente. Isso evita que alguém entre num time por conta própria e desbalanceie a partida.
Como funciona
- Só o host trava. Chamado por um cliente que não é host,
lockTeams()é ignorado e registra um aviso no log. - Estado local.
room.state.teamsLockedé atualizado ao travar e também quando o servidor avisa (teamlock-toggle). - Quem entra depois já recebe a sala travada.
- Reconstrução da sala. Se a sala cair e for recriada, o lock é reaplicado sozinho (a menos que você tenha chamado
unlockTeams()antes). - Sem rajadas. Chamar
lockTeams()várias vezes envia o packet uma vez só. Se o servidor recusar por excesso de pedidos (rate_limit_tl), a biblioteca desfaz o estado local e tenta de novo depois de 1,5 s.
setTeamLock(boolean) continua disponível; lockTeams() e unlockTeams() são atalhos.
Modo de times
room.setTeamsEnabled(true) liga o modo de times. Sem ele, todos jogam em FFA. Em football, sempre use times.