Как услышать войс в демке FACEIT (CS2)
FACEIT пишет голос обеих команд, но только в одной из двух демок матча. Какой файл открыть, три команды от FACEIT и битовая маска слотов.
После матча на FACEIT у вас остаются две демки: демка Valve в истории матчей в игре, в которой тишина, и собственный .dem.zst от FACEIT из комнаты матча, где записан голос обеих команд. Возьмёте не тот файл, и никакая консольная команда не поможет: включать там нечего.
Разберётесь с файлом, и дальше останутся две команды и одно число.
Нужны только команды? Загрузите
.dem.zstв калькулятор войса для демок CS2, отметьте игроков, которых хотите слышать, и скопируйте готовые командыtv_listen_voice_indices. Остальная часть страницы объясняет, почему они работают.
В какой из двух демок есть голос
В демках матчмейкинга Valve и Premier нет голосовых данных. Не заглушены, не зашифрованы - их просто нет. Инструмент, который вытаскивает голосовые дорожки из демок Counter-Strike, держит это предупреждение в самом верху README: из ММ-демки извлекать нечего.1 Никакая консольная команда не воспроизведёт звук, который не попал в файл.
Вторую половину большинство гайдов пропускает. На сервере с SourceTV голос тоже не пишется сам по себе. В CS2 SourceTV не записывает голос игроков, пока сервер это не включит, а исторически это значило sv_alltalk 1 или плагин, который делает это за вас.2 FACEIT войс записывает и объясняет игрокам, как его включить.5 Сервер для пикапов, который кто-то арендовал на прошлой неделе, вполне может этого не делать.
| Источник демки | Есть голос? |
|---|---|
| FACEIT | Да |
| ESEA и другие лиги | Да |
| Комьюнити-сервер с SourceTV | Только если сервер это включил |
| Матчмейкинг Valve | Нет |
| Premier Valve | Нет |
Так что если демка молчит, вопрос "что я ввёл не так" имеет смысл только после того, как вы убедились, что голос в этой демке вообще мог быть.
Что делает tv_listen_voice_indices?
Эта команда решает, чей голос вы слышите при просмотре демки через SourceTV. По умолчанию она равна 0, а 0 значит никого.2
Значение - это битовое поле слотов игроков:
-1- слышно всех, потому что в -1 установлены все биты0- не слышно никого, это значение по умолчанию и сброс- любое другое число - слышно конкретный набор слотов, чьи биты установлены
Команда с _h - не копия, а вторая половина
Это самое непонятое место, и большинство гайдов повторяют одну и ту же ошибку.
tv_listen_voice_indices и tv_listen_voice_indices_h - две половины одного 64-битного битового поля. Первая хранит младшие 32 бита и отвечает за слоты игроков с 0 по 31. Команда с _h хранит старшие 32 бита и отвечает за слоты с 32 по 63.2 CS Demo Manager генерирует их именно так: один цикл, один бит на id игрока, младшее значение для id меньше 32 и старшее для id от 32 и выше.3
Это меняет совет, который вы встретите везде:
- Чтобы слышать всех, ставьте обе на
-1. Именно этот рецепт публикует FACEIT,5 и он работает, потому что -1 заполняет все биты обеих половин. - Чтобы слышать конкретных игроков, пишите маску в
tv_listen_voice_indices, а_hставьте на0. В 5v5 никто не сидит в слоте 32 и выше, так что_hне к кому обращаться. Копировать туда то же число бесполезно, а на большом сервере с SourceTV это включило бы зеркальный набор старших слотов, которые вы не выбирали.
Заодно _h со значением 0 сбрасывает то, что там осталось с начала сессии, и уже ради этого стоит его ставить.
Если вам нужны коллы одного человека, а не всей стороны, в статье как услышать войс одного игрока в демке CS2 разобрано, как выбрать слоты вручную.
Как работает битовая маска слотов
Каждый бит соответствует одному слоту. Слот 1 - это бит 0, слот 2 - бит 1, слот 3 - бит 2 и так далее: каждый слот стоит вдвое больше предыдущего. Сложите значения нужных слотов:
| Слот | Значение бита |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
Слоты 1, 3 и 4 дают 1 + 4 + 8 = 13:
tv_listen_voice_indices 13
tv_listen_voice_indices_h 0
Калькулятор войса сложит за вас. Если удобнее считать от двоичной записи, наш конвертер систем счисления переведёт её в десятичное число, которое ждёт CS2.
Как узнать, кто в каком слоте
Порядок слотов берётся из порядка сущностей игроков, записанного в демке. Это не порядок в таблице счёта, и нет причин, чтобы он совпадал с вашими ожиданиями. Зато он фиксирован для этой демки: один и тот же файл каждый раз воспроизводится с теми же слотами. А вот маска не переносится: число, которое выделяло вашего IGL во вторничном матче, в четверговом укажет на незнакомца.
Вручную слоты перебирают так:
spec_player 1
spec_player 2
spec_player 3
и смотрят, кто появляется. Быстрее загрузить демку в калькулятор: он читает таблицу слотов из файла и подписывает каждый слот ником и командой игрока, так что перебор не нужен.
Как услышать одну команду
Когда знаете, какие слоты у какой стороны, сложите значения этой стороны. В калькуляторе есть кнопки Все / Все T / Все CT, которые собирают число для целой стороны в один клик. Это то, что нужно для кастов или нарезки хайлайтов, где десять перебивающих друг друга голосов заглушают раунд.
Одна оговорка, если вместо этого вы пользуетесь алиасами voice_ct и voice_t из CS Demo Manager: они относятся к стартовой стороне каждого игрока, а не к текущей.4 После смены сторон они уже не значат то, что написано в названии. Там же есть voice_STEAMID64 для одного игрока.4
Если вам нужна другая сторона, в статье как услышать вражескую команду объясняется, где всё усложняется: есть ли их голос в файле вообще, решил сервер ещё во время матча.
Текстовый чат в придачу
Голос - это половина записи. Чтобы подтянуть текстовый чат из игры:
tv_relaytextchat 2
2 показывает всё, включая общий чат, а 0 скрывает чат полностью. FACEIT включает эту команду в тройку, которую даёт для разбора демок.5 Она выручает, когда колл слышно, но непонятно, чей это голос.
Они сбрасываются при каждом закрытии игры
Обе переменные возвращаются к 0, когда CS2 закрывается. Это и есть ловушка "вчера же работало": ничего не сломалось, просто сессия снова началась с тишины по умолчанию. Держите команды там, откуда их можно вставить, а не пересчитывайте число каждый раз.
Всё вместе
- Убедитесь, что в демке может быть голос: FACEIT или лига, а не ММ и не Premier.
- Выясните, кто из игроков в каком слоте, или пусть их прочитает калькулятор.
- Сложите значения битов нужных игроков.
- Поставьте
tv_listen_voice_indicesна это число, аtv_listen_voice_indices_hна0. Для всех ставьте обе на-1. - Добавьте
tv_relaytextchat 2, если нужен чат, и запускайте демку.
Пропустите арифметику и перебор через spec_player с помощью калькулятора войса для демок CS2: загрузите демку, отметьте игроков, скопируйте команды.
Шаги 1 и 2 на FACEIT можно вообще больше не делать. DemoVoice добавляет кнопку в комнату матча, поэтому выбрать он может только нужный .dem.zst, распаковывает его прямо при скачивании и читает таблицу слотов из файла на вашем компьютере. Если сравниваете его с CS Demo Manager или другими калькуляторами, в статье все способы услышать войс в демке FACEIT расписано, что делает каждый из них и что остаётся на вас.
Когда голос слышно, вторая половина разбора демки - добраться до нужного момента. В статье как перевести тик во время разобраны demo_gototick, порядок аргументов, на котором спотыкаются, и почему тикрейт надо брать из демки, а не по привычке.
Источники
Каждое число в этой статье подтверждено источником ниже. Утверждения, которые не удалось подтвердить, убраны, а не смягчены.
- Рецензируемый источникAkiVer
That Valve matchmaking demos contain no voice audio data, stated as a standing warning by the author of the tool that extracts voice from CS:GO and CS2 demos.
- Рецензируемый источникb0ink
The verbatim convar descriptions, that tv_listen_voice_indices is a bitfield of player slots 0 to 31 and tv_listen_voice_indices_h the high 32 bits covering slots 32 to 63, both defaulting to none, and that CS2 SourceTV does not record player voice unless the server enables it.
- ПервоисточникCS Demo Manager
That the value is one bitmap split into two 32-bit halves, low for ids 0 to 31 and high for ids 32 to 63, as implemented by the demo tool that generates these commands.
- ПервоисточникCS Demo Manager
The voice_ct, voice_t and voice_STEAMID64 aliases, and that the team aliases refer to the starting side rather than the current one.
- ПервоисточникFACEIT
The exact three-command recipe FACEIT tells players to paste when reviewing a FACEIT demo, and that FACEIT demos do carry voice comms.
Темы
Инструменты из статьи
- Калькулятор войса для демок CS2 - Слушайте нужных игроков в демке CS2 или FACEIT - загрузите демку, игроки подставятся сами, а вы получите команды tv_listen_voice_indices.
- CS2 Demo Tick Calculator - Convert a CS2 demo tick to a timestamp and back, and copy the demo_gototick command that jumps there.
- 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.
Новые инструменты на почту
Новые инструменты и иногда подробный разбор, примерно раз в месяц. Без спама, адрес никому не передаем, отписка в один клик.