Messerrunde auf dem eigenen Match-Server, danach derselbe Server fürs Match
Bei Seitenwahl per Messerrunde richtet die App den Match-Server in der Lobby als Messer-Server ein (Passwort des Matches, Aufwärmphase ohne Ende). Spieler sehen die Verbindungsdaten in der Lobby, der Organisator startet bzw. wiederholt die Runde. Nach dem Veto wird derselbe Server fürs Match eingerichtet, die Messer-Einstellungen werden zurückgenommen.
This commit is contained in:
1 parent
2c57b8c170
commit
13320313ec
10 files changed
+220
-20
No files matched your search
@@ -1065,25 +1065,21 @@ export class MatchService extends EventEmitter {
|
||||
updatedAt: row.updated_at,
|
||||
idleTimeoutMinutes: this.config.idleTimeoutMinutes,
|
||||
};
|
||||
// Messerrunde auf dem Match-Server: Spieler bekommen die Verbindungsdaten schon in der Lobby
|
||||
const knife = match.status === 'lobby' && row.knife_at && row.status === 'ready';
|
||||
if (match.status === 'lobby' && match.veto_start === 'knife') view.knife = { ready: !!knife, phase: knife ? row.knife_phase : null };
|
||||
if (viewer.isOrganizer) {
|
||||
// Zeitpunkt der letzten Anforderung (neuer Start oder "Server neu starten / wiederholen")
|
||||
view.requestedAt = row.started_at ?? null;
|
||||
if (row.host) view.address = { host: row.host, port: row.port, tvPort: row.tv_port };
|
||||
}
|
||||
const configured = row.status === 'configured';
|
||||
if (knife && viewer.role !== 'public' && (viewer.isOrganizer || viewer.playerId)) view.connect = this.connectInfo(row);
|
||||
if (!configured || viewer.role === 'public') return view;
|
||||
|
||||
const isTeam = viewer.isOrganizer || !!viewer.playerId;
|
||||
const isSpectatorView = viewer.isOrganizer || viewer.isSpectator;
|
||||
if (isTeam) {
|
||||
view.connect = {
|
||||
host: row.host,
|
||||
port: row.port,
|
||||
password: row.server_password,
|
||||
command: `password ${row.server_password}; connect ${row.host}:${row.port}`,
|
||||
steamUrl: `steam://connect/${row.host}:${row.port}/${row.server_password}`,
|
||||
};
|
||||
}
|
||||
if (isTeam) view.connect = this.connectInfo(row);
|
||||
if (isSpectatorView && this.config.match.tvEnabled) {
|
||||
view.gotv = {
|
||||
host: row.host,
|
||||
@@ -1095,4 +1091,14 @@ export class MatchService extends EventEmitter {
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
connectInfo(row) {
|
||||
return {
|
||||
host: row.host,
|
||||
port: row.port,
|
||||
password: row.server_password,
|
||||
command: `password ${row.server_password}; connect ${row.host}:${row.port}`,
|
||||
steamUrl: `steam://connect/${row.host}:${row.port}/${row.server_password}`,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user