RE:NODE

Команды CS2 для практики и приватных матчей (в том числе из CS:GO)

Автор Команда RE:NODE
15 мин чтения


Тренировка в Counter-Strike 2 - это около пятнадцати консольных команд, а приватный 5v5 - ещё около десяти. Для практики нужны sv_cheats 1, затем бесконечные патроны, покупка в любом месте, длинный раунд без freeze time, траектории гранат и боты, которых убрали или заморозили. Для приватного матча нужны число раундов, овертайм, перерыв между половинами и рестарт, а также две команды паузы на случай, если у кого-то отвалился роутер. Один раз положите каждый набор в файл .cfg, и вместо пятнадцати строк каждый раз вы вводите exec prac.

Многое из того, что находят по запросу "csgo practice server commands", работает до сих пор, потому что CS2 сохранила именование Source. Но не всё, а некоторые значения изменились, и прежде всего длина матча. В этой статье собраны версии для CS2, указано, чем они отличаются от старых команд CS:GO, и объяснено, где именно нужно вводить каждую команду. Именно на этом спотыкаются на выделенном сервере. Полный справочник по серверу лежит в статье команды и cvar сервера CS2, а вечер матчей с плагинами разобран в статье сервер для соревновательных матчей CS2.

Где выполняются команды: в вашей игре или на сервере#

Все команды ниже вводятся в консоль, но консолей может быть три, и ведут они себя по-разному.

ГдеКто является серверомКто может менять cvar с sv_ и mp_
Карта практики из менюВаша собственная играВы, в своей консоли
Группа на карте из мастерской или карте практикиИгра лидера группыТолько лидер
Выделенный серверОтдельный процессКонсоль сервера или RCON

Первый случай самый простой. Вы выбираете Practice, карту, и ваша игра запускает локальный сервер, на котором вы играете. Всё, что вы вводите, действует на этот сервер напрямую, потому что вы и есть сервер.

Третий случай - тот, где застревают чаще всего. На выделенном сервере cvar, начинающиеся с sv_, mp_, bot_ и ammo_, принадлежат серверу. Если ввести sv_infinite_ammo 1 в консоль своего клиента, будучи подключённым к чужому серверу, ничего не произойдёт, причём консоль не всегда об этом скажет. Эти строки нужно подавать через консоль сервера (на панели хостинга это вкладка консоли) или через rcon из клиента. Игрок может ввести сам для себя лишь небольшой набор чит-команд, которые действуют на его персонажа: noclip, give, setpos. Они работают только потому, что на сервере включён sv_cheats 1, поэтому эта строка идёт первой.

Включаем консоль и sv_cheats#

Консоль разработчика по умолчанию выключена. В CS2 она находится в Settings, Game, "Enable Developer Console (~)". Выберите Yes, и клавиша слева от 1 откроет консоль. В некоторых раскладках эта клавиша выдаёт другой символ. Если ничего не происходит, назначьте консоль на другую клавишу в настройках клавиатуры, а не воюйте с раскладкой.

Затем на карте, которую вы хостите:

code
sv_cheats 1

sv_cheats - это cvar сервера, поэтому на выделенном сервере его вводят в консоль сервера. Он не сохраняется после перезапуска сервера и не задаётся ни в одном из режимных конфигов Valve. Это хорошо: практический сервер, который ночью перезапустился, возвращается чистым. Если вы загрузили новую карту командой map, проверьте значение ещё раз, введя просто sv_cheats, - команда выведет текущее значение.

На выделенном сервере порядок важен ещё по одной причине. Несколько практических cvar помечены как читы, и если задать их до sv_cheats, они отклоняются с сообщением про sv_cheats. Когда конфиг "работает наполовину", причина обычно в этом.

Практический конфиг по строкам#

Вот полный практический конфиг для одиночной или командной работы с гранатами. Он одинаково работает и в вашей игре, и на выделенном сервере.

game/csgo/cfg/prac.cfg
sv_cheats 1mp_limitteams 0mp_autoteambalance 0mp_ignore_round_win_conditions 1mp_roundtime 60mp_roundtime_defuse 60mp_roundtime_hostage 60mp_freezetime 0mp_buy_anywhere 1mp_buytime 9999mp_maxmoney 60000mp_startmoney 60000mp_afterroundmoney 60000mp_respawn_on_death_t 1mp_respawn_on_death_ct 1sv_infinite_ammo 1ammo_grenade_limit_total 5sv_grenade_trajectory_prac_pipreview 1sv_grenade_trajectory_prac_trailtime 8sv_showimpacts 1sv_showimpacts_time 8bot_kickmp_warmup_endmp_restartgame 1

Что делает каждая группа:

CvarЗначениеЗачем
sv_cheats1Открывает всё, что помечено как чит
mp_ignore_round_win_conditions1Раунд не заканчивается, даже если никто не жив
mp_roundtime и два его варианта60Минуты. 60 - это максимум
mp_freezetime0Нет замороженного старта после рестарта
mp_buy_anywhere1Меню покупки не только на респауне
mp_buytime9999Секунды. Фактически бесконечно
mp_maxmoney / mp_startmoney60000Деньги не кончатся посреди сессии
mp_respawn_on_death_*1Умерли - сразу вернулись
sv_infinite_ammo1Без перезарядки, гранаты не расходуются
ammo_grenade_limit_total5Можно нести по одной гранате каждого типа
sv_showimpacts1Рисовать попадания пуль
bot_kick-Убрать всех ботов

У sv_infinite_ammo есть два ненулевых значения, и они не одинаковы. 1 означает, что магазин никогда не пустеет, а брошенная граната остаётся в руке, так что один и тот же смок можно бросить двадцать раз без повторной покупки. 2 означает, что запас бесконечен, но перезаряжаться всё равно приходится. Это настройка для тренировки спрея, потому что перезарядка - часть спрея.

mp_roundtime относится к картам без конкретной цели, а mp_roundtime_defuse и mp_roundtime_hostage действуют на тех типах карт, которые указаны в названии. Если задать только первый, карта с обезвреживанием всё равно закончится по соревновательному времени. Это самый частый вопрос вида "у меня постоянно заканчивается раунд". Если при этом включён и mp_ignore_round_win_conditions 1, раунд не завершится ни по убийствам, ни по бомбе.

ammo_grenade_limit_total - общее число гранат, которое игрок может нести. Соревновательный лимит равен четырём. С пятью у вас одновременно есть HE, флешка, смок, молотов или зажигательная и обманка. У флешек отдельный лимит, две на игрока, в ammo_grenade_limit_flashbang, так что для тренировки двойной флешки общий лимит больше поднимать не нужно.

mp_warmup_end и mp_restartgame 1 стоят внизу не случайно. У разминки на свежей карте свои правила, а некоторые cvar вступают в силу только в начале раунда. Если завершить разминку и один раз перезапустить игру, весь файл применится разом.

Команды для тренировки гранат#

Четыре cvar выше делают сервер снисходительным. Эти же помогают чему-то научиться.

sv_grenade_trajectory_prac_pipreview 1 показывает небольшое превью того, куда упадёт граната, пока вы держите её в руке, ещё до броска. Это возможность CS2, и это самый полезный практический cvar в игре: вы выставляете бросок, смотрите, как превью ложится на нужный пиксель, и только потом отпускаете. Это серверная настройка, так что на выделенном сервере она есть у всех.

sv_grenade_trajectory_prac_trailtime 8 рисует путь, по которому пролетела брошенная граната, и оставляет его на экране на указанное число секунд. Когда превью показывает, куда она упадёт, а след - где она летела, хорошо видно, чем бросок в прыжке отличается от броска стоя.

sv_showimpacts 1 отмечает попадания пуль, а sv_showimpacts_time задаёт, сколько секунд они остаются видны. Отметки бывают двух цветов, клиентские и серверные, и разница между ними - это ваша ошибка в движении в момент выстрела. 2 показывает только клиентские отметки, а 3 только серверные.

Теперь команды, которые игрок вводит в собственную консоль:

code
sv_rethrow_last_grenadenoclipcl_showpos 1getpossetpos 1200 -560 64give weapon_smokegrenadebot_add_tbot_placebot_stop 1

sv_rethrow_last_grenade бросает вашу последнюю гранату ещё раз ровно с того места, откуда вы её бросили, не сдвигая вас. Повесьте её на клавишу, и вы сможете стоять в точке приземления и смотреть, как смок повторяется. noclip позволяет летать, и именно так вы доходите до конца смока, не оказываясь на стороне тех, кто в него попал.

getpos выводит готовую строку setpos ... ; setang ... с вашей текущей позицией и углом обзора. Скопируйте её в конфиг рядом с названием раскладки, и у вас будет телепорт обратно в точку броска. cl_showpos 1 показывает те же координаты в углу экрана в реальном времени.

bot_add_t (или bot_add_ct) добавляет одного бота, bot_place ставит последнего добавленного бота туда, куда вы смотрите, а bot_stop 1 останавливает всех ботов и лишает их реакции. Вместе они помещают цель ровно туда, где на пике стоит противник, и так проверяют, действительно ли флешка ослепляет угол или только выглядит эффектно. bot_kick в конце убирает их всех.

Сохраняем как .cfg и запускаем через exec#

Конфиг - это обычный текстовый файл с консольными строками, по одной в строке, с расширением .cfg. Строки, начинающиеся с //, - комментарии.

Для вашей собственной игры папка находится внутри установки Steam, где до сих пор используется старое имя папки:

code
Steam/steamapps/common/Counter-Strike Global Offensive/game/csgo/cfg/

Для выделенного сервера это тот же относительный путь, game/csgo/cfg/, внутри каталога сервера. На панели хостинга файл создают в файловом менеджере или загружают по SFTP. Затем:

code
exec prac

Расширение .cfg указывать не обязательно. exec читает из папки cfg, подпапка тоже подойдёт, например exec practice/mirage.

Две привычки делают практические конфиги приятными, а не просто терпимыми. Во-первых, парный файл prac_off.cfg, который возвращает всё обратно, так что для завершения сессии хватает одной команды, а не перезапуска сервера:

game/csgo/cfg/prac_off.cfg
sv_infinite_ammo 0sv_grenade_trajectory_prac_pipreview 0sv_showimpacts 0mp_ignore_round_win_conditions 0mp_buy_anywhere 0mp_respawn_on_death_t 0mp_respawn_on_death_ct 0sv_cheats 0mp_restartgame 1

Во-вторых, бинды для команд, которые вы используете с гранатой в руке. Они идут в клиентский конфиг, а не в серверный:

cfg/autoexec.cfg
bind "mouse4" "sv_rethrow_last_grenade"bind "mouse5" "noclip"bind "kp_enter" "getpos"

Запускает ли CS2 autoexec.cfg сам, от обновления к обновлению работало непоследовательно. Надёжный путь - добавить +exec autoexec в параметры запуска игры в Steam, тогда он выполняется каждый раз независимо ни от чего. Телепорты на раскладки можно вынести в файлы по картам, например exec lineups_mirage со строкой setpos на каждый смок. Именно этим и исчерпывается значительная часть платных практических инструментов.

Команды для приватного 5v5#

Для приватной игры десяти человек настройки соревновательного режима по умолчанию уже почти подходят. Вручную задают длину матча, овертайм и перерыв между половинами, а затем делают рестарт, чтобы всё применилось.

game/csgo/cfg/scrim.cfg
sv_cheats 0mp_maxrounds 24mp_halftime 1mp_halftime_duration 15mp_overtime_enable 1mp_overtime_maxrounds 6mp_overtime_startmoney 12500mp_match_can_clinch 1mp_freezetime 15mp_roundtime_defuse 1.92mp_buytime 20mp_buy_anywhere 0mp_startmoney 800mp_maxmoney 16000mp_autoteambalance 0mp_limitteams 0mp_autokick 0mp_warmup_endmp_restartgame 3
CvarЧто определяет
mp_maxroundsДлина основного времени. 24 - это MR12, до 13 побед
mp_halftimeСмена сторон после половины раундов
mp_halftime_durationСекунды перерыва между половинами
mp_overtime_enableИграть овертайм при 12-12 или допустить ничью
mp_overtime_maxroundsРаундов в овертайме. 6 - это MR3
mp_overtime_startmoneyДеньги в начале каждой половины овертайма
mp_match_can_clinchЗакончить на 13, а не доигрывать все 24
mp_autokick0 отключает кик за простой во время долгой паузы

mp_match_can_clinch стоит пояснить, потому что его выключают случайно. Когда он включён, матч при счёте 13-3 заканчивается на 13-3. Когда выключен, сервер доигрывает все 24 раунда, а это нужно только для намеренной отработки всей экономики. mp_overtime_enable 0 позволяет основному времени закончиться вничью 12-12. Для скрима это нормально, а для всего, где нужен результат, неправильно.

mp_restartgame 3 перезапускает игру через три секунды. Подойдёт любое число, и 1 тоже годится. Сначала выполните конфиг через exec, потом рестарт. Если сделать рестарт, а потом exec, в первом раунде останутся старые деньги и старый счёт раундов, и счёт окажется неверным раньше, чем кто-либо заметит.

Ещё несколько команд держите под рукой на вечер. mp_warmup_start возвращает сервер в разминку, а mp_warmup_pausetimer 1 держит разминку, пока вы сами её не завершите. Так ждут десятого игрока, и таймер не решает за вас. mp_swapteams меняет всех местами между сторонами и перезапускает игру, поэтому его нужно вызывать до начала матча, а не после. mp_teamname_1 и mp_teamname_2 задают названия команд в таблице счёта. changelevel de_nuke переходит на другую карту, и все остаются подключёнными, а map de_nuke делает то же самое, но отключает и заново подключает всех клиентов.

Помните, куда это вводится на выделенном сервере. scrim.cfg, который задаёт значения mp_, безопасно выполнять на ходу, но если вы хотите, чтобы значения стали значениями по умолчанию при каждой загрузке карты, их место в gamemode_competitive_server.cfg, потому что режимный конфиг Valve выполняется после server.cfg на каждой карте и перезаписывает его. Статья команды и cvar сервера CS2 подробно объясняет этот порядок.

Паузы, таймауты и исправление раунда#

Матч останавливают две команды:

code
mp_pause_matchmp_unpause_match

mp_pause_match не замораживает игру посреди перестрелки. Пауза наступает на ближайшем freeze time: идущий раунд заканчивается, а следующий ждёт на экране покупки. Так сделано намеренно, ведь пауза посреди раунда изменила бы его исход. mp_unpause_match возобновляет игру. Обе команды серверные, поэтому в приватной игре их выполняет хост или тот, у кого есть RCON.

Тактические таймауты устроены отдельно. mp_team_timeout_time задаёт их длину в секундах, а mp_team_timeout_max - сколько их у каждой команды. Игроки вызывают их через меню голосования во время freeze time. Администратор тоже может запустить таймаут для команды командами timeout_terrorist_start или timeout_ct_start. Если в вашей сборке таких команд нет, find timeout покажет, как они называются в текущей версии.

Когда раунд нужно переиграть (сбой во время закупки, игрок, отключившийся в самый неподходящий момент), на помощь приходят резервные копии раундов движка. mp_backup_round_auto 1 записывает небольшой файл на каждый раунд, а mp_backup_restore_load_file загружает его обратно с деньгами и счётом. Это помогает, только если опция была включена до проблемы, так что добавьте её в конфиг скрима. Подробности, а также то, как MatchZy оборачивает тот же механизм в команду .stop, с которой должны согласиться обе команды, есть в статье про сервер для соревновательных матчей.

Что изменилось по сравнению с CS:GO#

Большинство практических и матчевых конфигов из CS:GO загружаются в CS2, но несколько строк не срабатывают. Вот те, о которых стоит знать.

CS:GOCS2
mp_maxrounds 30 (MR15)mp_maxrounds 24 (MR12)
Деньги в овертайме 10000mp_overtime_startmoney 12500
csgo/cfg/game/csgo/cfg/
cl_grenadepreview 1sv_grenade_trajectory_prac_pipreview 1
sv_grenade_trajectory 1sv_grenade_trajectory_prac_trailtime
128 tick для практики64 tick с sub-tick вводом

Длина матча - это изменение, которое бьёт больнее всего. Конфиг скрима из CS:GO задаёт mp_maxrounds 30, и CS2 спокойно играет тридцать раундов. Ошибок нет, просто это другая игра, не та, в очередь на которую все встают. Замените значение на 24.

Cvar траекторий гранат переработали, а не просто переименовали один в один. Старые руководства используют sv_grenade_trajectory 1 вместе с sv_grenade_trajectory_time, а у практических cvar CS2 в названии есть _prac_. Выполните find grenade_trajectory в вашей сборке, чтобы увидеть, какие именно есть, потому что Valve правила эту группу не раз. Клиентского превью из CS:GO больше нет, превью в руке теперь - серверная настройка pipreview.

Вопрос про 128 tick тоже изменился. В CS:GO тренировка смоков на 64 tick могла научить раскладкам, которые не срабатывали на серверах FACEIT с 128 tick, поэтому все тренировались на 128. Серверы CS2 по умолчанию работают на 64 tick и обрабатывают ввод между тиками, что сокращает разницу, но физика гранат по-прежнему считается по тикам. Если вы тренируетесь на выделенном сервере, запускайте его с тем tick rate, на котором будете играть. Почему так, объясняет статья что на самом деле означает tick rate.

Без изменений и безопасно для копирования: sv_cheats, sv_infinite_ammo, sv_showimpacts, sv_rethrow_last_grenade, mp_buy_anywhere, mp_buytime, mp_roundtime и его варианты, mp_freezetime, mp_warmup_end, mp_restartgame, mp_halftime, mp_match_can_clinch, mp_pause_match, bot_kick, bot_place, noclip, getpos и setpos. Если строка из старого конфига не срабатывает, консоль выводит "Unknown command", а find с частью названия подскажет, переехала команда или исчезла.

Практика на сервере, а не в своей игре#

Локальной карты практики хватает, если вы один. Перестаёт хватать, когда пятеро хотят бросать гранаты вместе: на listen-сервере игра хоста и есть сервер, поэтому частота кадров и соединение хоста становятся общими, а сессия заканчивается, когда он выходит.

Небольшой выделенный сервер решает эту проблему. Он хранит практический конфиг, пока на нём никого нет, работает с выбранным вами tick rate, и команда заходит на него по адресу с паролем. Десять игроков на практике или 5v5 на 64 tick - лёгкая нагрузка: около 1 ГБ памяти и одно ядро для ванильной CS2, больше с плагинами или на 128 tick. Настройка с нуля, включая токен игрового сервера Steam, описана в статье настройка сервера Counter-Strike 2. Приватному серверу, на который заходят по адресу, токен вообще не нужен, он важен только для публичного списка.

На RE:NODE практические конфиги и конфиги скримов кладут в game/csgo/cfg/ через файловый менеджер, а консоль панели принимает exec prac или mp_pause_match напрямую, так что пароль RCON никому не нужен. Этот экран описан в руководстве по консоли панели. Если группе нужны практика и матчи одновременно, это два сервера, потому что на одном sv_cheats 1, а на другом его быть не должно.

Решение проблем#

Консоль отклоняет команду и упоминает sv_cheats. Это значит именно то, что написано. Сначала включите sv_cheats 1 на сервере, затем выполните конфиг снова. На выделенном сервере ввод в консоль собственного клиента ничего не даёт.

Практические команды ничего не делают на чужом или выделенном сервере. Вы ввели серверные cvar в консоль клиента. Используйте консоль сервера или добавляйте к каждой строке префикс rcon. Только noclip, give, setpos и подобные действуют на вашего собственного игрока.

Раунд всё равно заканчивается через две минуты. mp_roundtime_defuse не задан, либо mp_ignore_round_win_conditions равен 0, и раунд закончился по бомбе или убийствам. Задайте оба, затем mp_restartgame 1.

`exec` пишет, что файл не найден. Не та папка или скрытое расширение .txt. Windows по умолчанию прячет расширения, поэтому prac.cfg часто оказывается prac.cfg.txt. Файл должен лежать в game/csgo/cfg/, а не в старой csgo/cfg/.

Настройки сбрасываются при смене карты. Режимный конфиг выполняется при каждой загрузке карты. Выполните свой конфиг снова после загрузки карты или на выделенном сервере перенесите значения в gamemode_competitive_server.cfg.

Матч закончился на 16 победах или не заканчивался вовсе. Конфиг из CS:GO с mp_maxrounds 30 или mp_match_can_clinch 0. Задайте 24 и 1.

Пауза не наступила. Наступила, просто она ждёт ближайшего freeze time. Если и тогда не срабатывает, проверьте, что вы отправили команду на сервер, а не в клиент.

FAQ#

Работают ли в CS2 команды практики из CS:GO?

Большинство работает. sv_cheats, sv_infinite_ammo, sv_showimpacts, mp_buy_anywhere, noclip, bot_kick и остальной частый набор не изменились. Cvar превью и траекторий гранат переработали, а длина матча сократилась с 30 раундов до 24, так что в конфиге из CS:GO эти строки нужно заменить.

Куда положить практический конфиг в CS2?

В game/csgo/cfg/ внутри папки Counter-Strike Global Offensive вашей библиотеки Steam или по тому же пути внутри каталога выделенного сервера. Запускайте его через exec и имя файла, с .cfg или без.

Как получить бесконечные гранаты в CS2?

sv_cheats 1, затем sv_infinite_ammo 1. Брошенная граната остаётся в руке, так что один и тот же смок можно бросать снова и снова. Добавьте ammo_grenade_limit_total 5, чтобы нести по одной гранате каждого типа одновременно.

Могут ли друзья зайти на мою карту практики?

Да, группой в игре лидера, но компьютер лидера становится сервером для всех, и менять cvar может только он. Для регулярных командных тренировок надёжнее выделенный сервер с паролем, который продолжает работать, когда лидер вышел.

Как сыграть приватный 5v5 по настоящим соревновательным правилам?

Выполните конфиг с mp_maxrounds 24, mp_halftime 1, mp_overtime_enable 1 и mp_overtime_maxrounds 6, затем mp_warmup_end и mp_restartgame 1. Убедитесь, что sv_cheats равен 0, и задайте sv_password, чтобы зайти могли только вы десятеро.

Почему mp_pause_match не ставит паузу сразу?

По замыслу пауза наступает в начале freeze time следующего раунда, так что текущий раунд доигрывается как обычно. mp_unpause_match возобновляет игру.

Это было полезно?