Bibliothèque

Équipes et verrouillage

Numérotation des équipes, déplacement des joueurs et verrouillage avec lockTeams().

Numérotation des équipes

NuméroÉquipeConstante
0SpectateurTEAM_SPEC
1FFA (chacun pour soi)TEAM_FFA
2RougeTEAM_RED
3BleuTEAM_BLUE
4VertTEAM_GREEN
5JauneTEAM_YELLOW
ts
import { TEAM_BLUE, TEAM_SPEC } from 'bonktools';

room.setTeam(playerId, TEAM_BLUE);
room.setTeam(playerId, TEAM_SPEC);

Déplacer des joueurs

L'hôte déplace n'importe quel joueur avec setTeam(id, team). Le bot se déplace lui-même avec joinTeam(team).

ts
room.on('player-join', (p) => {
  // envoie chaque nouveau en spectateur
  room.setTeam(p.id, TEAM_SPEC);
});

Verrouiller les équipes

ts
room.lockTeams();      // les joueurs ne peuvent plus changer d'équipe ni passer en spectateur
room.unlockTeams();    // déverrouille à nouveau
room.state.teamsLocked; // état actuel

Avec les équipes verrouillées, seul l'hôte déplace les joueurs : room.setTeam(id, team) continue de fonctionner normalement. Cela évite que quelqu'un rejoigne une équipe de lui-même et déséquilibre la partie.

Comment ça marche

  • Seul l'hôte peut verrouiller. Appelé par un client qui n'est pas l'hôte, lockTeams() est ignoré et journalise un avertissement.
  • État local. room.state.teamsLocked est mis à jour au verrouillage et aussi quand le serveur le signale (teamlock-toggle).
  • Ceux qui arrivent après reçoivent déjà le salon verrouillé.
  • Reconstruction du salon. Si le salon tombe et est recréé, le verrou est réappliqué automatiquement (sauf si vous aviez appelé unlockTeams() avant).
  • Pas de rafales. Appeler lockTeams() plusieurs fois n'envoie le paquet qu'une fois. Si le serveur refuse pour cause de trop de requêtes (rate_limit_tl), la bibliothèque annule l'état local et réessaie après 1,5 s.

setTeamLock(boolean) reste disponible ; lockTeams() et unlockTeams() en sont des raccourcis.

Mode équipes

room.setTeamsEnabled(true) active le mode équipes. Sans lui, tout le monde joue en FFA. Au football, utilisez toujours les équipes.