Voice-Comms in CS2- und FACEIT-Demos hören
Voice-Comms in jeder CS2- oder FACEIT-Demo hören: welche Demos Voice enthalten, wie die Slot-Bitmaske funktioniert und wie der Textchat dazukommt.
Du schaust eine Demo und hörst nichts ausser Schritten. Voice ist in Counter-Strike-2-Demos standardmässig aus, und der Befehl, der sie einschaltet, verlangt eine Zahl, die die wenigsten je herleiten. Schlimmer: oft ist der Befehl gar nicht das Problem, weil in der Demo schlicht keine Sprache steckt.
Damit fängt man an, denn davon hängt ab, ob der Rest dieser Seite überhaupt helfen kann.
Nur die Befehle? Lade deine Demo in den CS2 Voice Comms Calculator , hake die Spieler an, die du hören willst, und kopiere die fertigen
tv_listen_voice_indices-Befehle. Der Rest dieser Seite erklärt, warum sie funktionieren.
Welche CS2-Demos enthalten überhaupt Voice-Comms?
Valve-Matchmaking- und Premier-Demos enthalten keinerlei Sprachdaten. Nicht stummgeschaltet, nicht verschlüsselt, sondern gar nicht vorhanden. Das Werkzeug, das Sprachspuren aus Counter-Strike-Demos extrahiert, trägt die Warnung ganz oben in seiner README: aus einer MM-Demo gibt es nichts zu holen.1 Kein Konsolenbefehl kann Audio abspielen, das nie in die Datei geschrieben wurde.
Die zweite Hälfte überspringen die meisten Anleitungen. Voice auf einem SourceTV-Server ist ebenfalls nicht automatisch. In CS2 zeichnet SourceTV die Sprache der Spieler nur auf, wenn der Server das einschaltet, was historisch sv_alltalk 1 oder ein Plugin bedeutete.2 FACEIT nimmt Comms auf und sagt den Spielern, wie sie sie abspielen.5 Ein Pickup-Server, den jemand letzte Woche gemietet hat, sehr wahrscheinlich nicht.
| Herkunft der Demo | Enthält Voice? |
|---|---|
| FACEIT | Ja |
| ESEA und andere Ligen | Ja |
| Community-SourceTV-Server | Nur wenn dieser Server es aktiviert hat |
| Valve-Matchmaking | Nein |
| Valve Premier | Nein |
Bei einer stummen Demo lautet die Frage also nicht "was habe ich falsch getippt", solange nicht geklärt ist, ob überhaupt Sprache drin sein konnte.
Was macht tv_listen_voice_indices?
Der Befehl entscheidet, wessen Stimme du beim Zuschauen über SourceTV hörst. Standardwert ist 0, und 0 heisst niemand.2
Der Wert ist ein Bitfeld der Spieler-Slots:
-1- alle hören, denn -1 setzt jedes Bit0- niemand hören, der Standard und der Reset- jede andere Zahl - genau die Slots hören, deren Bits gesetzt sind
Der _h-Befehl ist keine Kopie, sondern die andere Hälfte
Das ist der meistmissverstandene Teil, und die meisten Anleitungen wiederholen den Fehler.
tv_listen_voice_indices und tv_listen_voice_indices_h sind die beiden Hälften eines einzigen 64-Bit-Felds. Der erste hält die unteren 32 Bit und adressiert die Spieler-Slots 0 bis 31. Der _h-Befehl hält die oberen 32 Bit für die Slots 32 bis 63.2 Der CS Demo Manager erzeugt sie genau so: eine Schleife, ein Bit pro Spieler-Id, der niedrige Wert für Ids unter 32 und der hohe für Ids ab 32.3
Das ändert den Rat, den man überall liest:
- Für alle setzt du beide auf
-1. Genau das gibt FACEIT aus,5 und es funktioniert, weil -1 jedes Bit beider Hälften füllt. - Für einzelne Spieler kommt die Maske in
tv_listen_voice_indices, und_hbekommt0. In einem 5v5 sitzt niemand auf Slot 32 oder höher,_hhat also niemanden zu adressieren. Dieselbe Zahl dort hineinzukopieren bringt nichts, und auf einem grossen SourceTV-Server würde es ein spiegelverkehrtes Set hoher Slots freischalten, das du nie ausgewählt hast.
_h auf 0 zu setzen löscht ausserdem, was vorher in der Sitzung darin stand. Das allein lohnt sich schon.
Wie die Slot-Bitmaske funktioniert
Jedes Bit steht für einen Slot. Slot 1 ist Bit 0, Slot 2 ist Bit 1, Slot 3 ist Bit 2, und jeder Slot ist doppelt so viel wert wie der vorige. Du addierst die Werte der Slots, die du hören willst:
| Slot | Bit-Wert |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
Slots 1, 3 und 4 ergeben 1 + 4 + 8 = 13:
tv_listen_voice_indices 13
tv_listen_voice_indices_h 0
Der Voice Comms Calculator übernimmt die Addition. Wer lieber von einem Binärmuster ausgeht, wandelt es mit unserem Zahlensystem-Konverter in das Dezimal um, das CS2 erwartet.
Herausfinden, wer auf welchem Slot sitzt
Die Slot-Reihenfolge stammt aus der in der Demo aufgezeichneten Entity-Reihenfolge der Spieler. Sie ist also nicht die Scoreboard-Reihenfolge, und es gibt keinen Grund, warum sie deiner Intuition entsprechen sollte. Für diese eine Demo ist sie allerdings fest - dieselbe Datei spielt jedes Mal mit denselben Slots ab. Was nicht übertragbar ist, ist die Maske selbst: eine Zahl, die im Dienstagsmatch deinen IGL isoliert hat, trifft am Donnerstag eine fremde Person.
Von Hand geht es so:
spec_player 1
spec_player 2
spec_player 3
und notieren, wer erscheint. Schneller ist der Upload in den Calculator, der die Slot-Tabelle aus der Datei liest und jeden Eintrag mit Namen und Team beschriftet.
Ein ganzes Team hören
Wenn klar ist, welche Slots zu welcher Seite gehören, addierst du deren Werte. Der Calculator hat dafür All / All T / All CT, was du beim Casten oder beim Schneiden von Highlights willst, wo zehn überlappende Stimmen die Runde begraben.
Ein Hinweis, falls du stattdessen die Aliase voice_ct und voice_t des CS Demo Manager nutzt: sie beziehen sich auf die Startseite jedes Spielers, nicht auf die aktuelle.4 Nach der Halbzeit bedeuten sie nicht mehr, was ihre Namen nahelegen. Dasselbe Werkzeug bietet auch voice_STEAMID64 für einen einzelnen Spieler.4
Auch den Textchat mitlesen
Voice ist die halbe Aufzeichnung. Für den Ingame-Textchat:
tv_relaytextchat 2
2 leitet alles weiter, inklusive All-Chat, 0 blendet den Chat ganz aus. FACEIT nennt ihn als dritten der drei Befehle für die Demo-Auswertung.5 Seinen Wert zeigt er, sobald du zwar einen Call hörst, aber die Stimme nicht zuordnen kannst.
Sie werden bei jedem Spielende zurückgesetzt
Beide Convars fallen auf 0, sobald CS2 sich beendet. Das ist die "gestern ging es noch"-Falle: nichts ist kaputt, die Sitzung startete nur wieder beim Standardwert Stille. Halte die Befehle irgendwo bereit, statt die Zahl jedes Mal neu zu bauen.
Alles zusammen
- Prüfen, ob die Demo Voice enthalten kann - FACEIT oder Liga, nicht MM oder Premier.
- Herausfinden, welche Spieler auf welchen Slots sitzen, oder den Calculator lesen lassen.
- Die Bit-Werte der gewünschten Spieler addieren.
tv_listen_voice_indicesauf diese Zahl setzen undtv_listen_voice_indices_hauf0. Für alle beide auf-1.tv_relaytextchat 2dazu, wenn du den Chat willst, dann die Demo abspielen.
Rechnerei und spec_player-Schleife sparst du dir mit dem CS2 Voice Comms Calculator : Demo hochladen, Spieler anhaken, Befehle kopieren.
Quellen
Jede Zahl in diesem Artikel lässt sich auf eine Quelle unten zurückführen. Behauptungen ohne Beleg wurden gestrichen, nicht abgeschwächt.
- BegutachtetAkiVer
Dass Valve-Matchmaking-Demos keinerlei Sprachdaten enthalten, als stehende Warnung des Werkzeugs, das Sprachspuren aus CS:GO- und CS2-Demos extrahiert.
- Begutachtetb0ink
Die wörtlichen Convar-Beschreibungen, dass tv_listen_voice_indices ein Bitfeld der Slots 0 bis 31 ist und tv_listen_voice_indices_h die oberen 32 Bit für die Slots 32 bis 63, beide mit Standardwert keine, sowie dass CS2-SourceTV Sprache nur aufzeichnet, wenn der Server das aktiviert.
- PrimärquelleCS Demo Manager
Dass der Wert eine Bitmap ist, die in zwei 32-Bit-Hälften zerfällt, niedrig für die Ids 0 bis 31 und hoch für 32 bis 63, so implementiert im Werkzeug, das diese Befehle erzeugt.
- PrimärquelleCS Demo Manager
Die Aliase voice_ct, voice_t und voice_STEAMID64, und dass sich die Team-Aliase auf die Startseite beziehen, nicht auf die aktuelle.
- PrimärquelleFACEIT
Die drei Befehle, die FACEIT Spielern für die Demo-Auswertung nennt, und dass FACEIT-Demos Voice-Comms enthalten.
Themen
In diesem Artikel erwähnte Tools
- CS2 Voice Comms Calculator - Hear specific players in a CS2 or FACEIT demo - upload it to auto-fill players and get the tv_listen_voice_indices commands.
- CS2 Crosshair Code Decoder - Decode a CSGO-xxxxx crosshair share code into cl_crosshair console commands.
- CS2 Sensitivity Converter - Convert mouse sensitivity between CS2, Valorant, Apex and more, with eDPI and cm/360.
- SteamID Converter - Convert between SteamID64, STEAM_0:Y:Z, SteamID3 [U:1:W], account ID and profile URL.
Neue Tools per E-Mail
Neue Tools und gelegentlich ein ausführlicher Artikel, etwa einmal im Monat. Kein Spam, deine Adresse bekommt niemand, Abmeldung mit einem Klick.