Bibliothek
Teams und Sperre
Team-Nummerierung, Spieler verschieben und Teams mit lockTeams() sperren.
Team-Nummerierung
| Nummer | Team | Konstante |
|---|---|---|
0 | Zuschauer | TEAM_SPEC |
1 | FFA (jeder gegen jeden) | TEAM_FFA |
2 | Rot | TEAM_RED |
3 | Blau | TEAM_BLUE |
4 | Grün | TEAM_GREEN |
5 | Gelb | TEAM_YELLOW |
ts
import { TEAM_BLUE, TEAM_SPEC } from 'bonktools';
room.setTeam(playerId, TEAM_BLUE);
room.setTeam(playerId, TEAM_SPEC);Spieler verschieben
Der Host verschiebt jeden Spieler mit setTeam(id, team). Der Bot verschiebt sich selbst mit joinTeam(team).
ts
room.on('player-join', (p) => {
// schickt jeden Neuling zu den Zuschauern
room.setTeam(p.id, TEAM_SPEC);
});Die Teams sperren
ts
room.lockTeams(); // Spieler können weder das Team wechseln noch zu den Zuschauern gehen
room.unlockTeams(); // entsperrt wieder
room.state.teamsLocked; // aktueller ZustandBei gesperrten Teams verschiebt nur der Host Spieler: room.setTeam(id, team) funktioniert weiterhin normal. So verhinderst du, dass jemand eigenständig einem Team beitritt und die Partie aus dem Gleichgewicht bringt.
Wie es funktioniert
- Nur der Host kann sperren. Wird
lockTeams()von einem Client aufgerufen, der nicht Host ist, wird es ignoriert und eine Warnung protokolliert. - Lokaler Zustand.
room.state.teamsLockedwird beim Sperren aktualisiert und auch, wenn der Server es meldet (teamlock-toggle). - Spätere Beitretende erhalten den Raum bereits gesperrt.
- Raum-Neuaufbau. Fällt der Raum aus und wird neu erstellt, wird die Sperre automatisch erneut angewendet (außer du hattest vorher
unlockTeams()aufgerufen). - Keine Schübe. Mehrfaches Aufrufen von
lockTeams()sendet das Paket nur einmal. Lehnt der Server wegen zu vieler Anfragen ab (rate_limit_tl), macht die Bibliothek den lokalen Zustand rückgängig und versucht es nach 1,5 s erneut.
setTeamLock(boolean) ist weiterhin verfügbar; lockTeams() und unlockTeams() sind Kurzformen.
Team-Modus
room.setTeamsEnabled(true) schaltet den Team-Modus ein. Ohne ihn spielen alle im FFA. Beim Fußball nutze immer Teams.