ит фигу».
ВАЖНО! Перед тем как что-либо делать с сервером, убедитесь что не включены никакие плагины для голосования или смены карт, если у Вас установлен Sourcemod. Частой проблемой является включенный по-умолчанию плагин nextmap.smx.
1. Добавление и ротация карт, с голосованием и без:
Рассмотрим на примере «Обычного» (casual) режима сервера (тут внимательно, если Вам нужен другой режим, то выбирайте «конфиг» Вашего режима). Вы выбрали сервер, оплатили сервер, привязали ключ от аккаунта, произвели предварительные настройки из панели управления и запустили сервер.
Из «коробки» вы получаете 7 конфигурационных файлов, которые нас интересуют: server.cfg, gamemodes.txt, gamemodes_casual_server.cfg, gamemodes_server.txt, maplist.txt, mapcycle.txt, autoexec.cfg, webapi_authkey.txt.
Файлы server.cfg и gamemodes_casual_server.cfg – основные «конфиги», в них записываются переменные настроек сервера (переменными называются сами команды записываемые в такие файлы). Раньше был один «конфиг» для всего, но у нас много режимов в игре, разделены, просто знайте gamemodes_casual_server.cfg продолжение server.cfg, не будет разницы куда добавить нужную вам переменную, если её нет изначально в стандартном «конфиге», главное не два раза. Рекомендую server.cfg не трогать, а всё настроить и добавлять в gamemodes_casual_server.cfg.
Файлы gamemodes.txt и gamemodes_server.txt – это уже настройки режимов, допустимых чисел игроков на режим, какие карты использовать, в каком порядке, какое оружие допускать в бой, как действовать в определённом режиме.
Файлы maplist.txt и mapcycle.txt – это списки карт вашего сервера, которыми он будет пользоваться в зависимости от ваших настроек.
Файл autoexec.cfg понадобится, если нужно правильно поставить карты из мастерской. Как это сделать смотрите здесь: Установка карт из Workshop
Файл webapi_authkey.txt пустой, в него нужно вписать ключ от мастерской, это делается один раз на все коллекции: Зарегистрировать ключ Steam Web API
10005222.png
Записанные хостингом настройки нужных нам переменных, которые мы получаем при первом удачном запуске «Обычного» режима такие:
mp_match_can_clinch 1 – если у вас 15 раундов, то при наборе больше половины (8 раунов) эта команда побеждает, т.к. у другой команды нет возможности отыграться;
mp_maxrounds 15 – количество раундов на карту;
mp_timelimit 0 – время на карту, если установлено число раундов, то время указывать нельзя (ставить 0 нужно), это две взаимоисключающие команды.
А вот чего там не написано, но нужно не в стандартном варианте для настройки:
mp_endmatch_votenextmap 1 – отвечает за голосование в конце матча, если у вас 15 раундов, то после 15 раундов будет голосование в течении 20 секунд за выбор карты, для отключения нужно поставить ноль (0);
mp_endmatch_votenextleveltime 20 – те самые 20 секунд времени голосования;
mp_endmatch_votenextmap_keepcurrent 1 – позволяет включить принудительно в список сыгранную только что карту или предоставить всё воле случая, если поставить значение ноль (0);
mp_match_end_changelevel 1 – отвечает за «автосмену» карты в конце матча, данная переменная пользуется вашим mapcycle.txt, если он пустой, то не произойдёт смены карты на другую, а запустит заново текущую, при включенном голосовании можно переменную оставить;
mp_match_end_restart 1- отвечает за рестарт текущей карты, при значении единица смены карты не происходит, текущая карта не перезапускается, а просто всех игроков отправляет в меню выбора команды и обнуляет счёт, полезна для тех у кого одна карта на сервере, у кого есть предел по раундам или по времени на матч и кто не хочет перезагружать карту полностью.
Почему я написал «записанные хостингом», потому что абсолютно все переменные используются на сервере, даже если их нет в «конфиге». Если их там нет, то они просто имеют стандартные значения для своего режима. А когда записываем, то выводим их из невидимости.
Теперь, немного черпнув информации, рассмотрим способы установки карт:
1. На хостинге после установки сервера устанавливают абсолютно все стандартные карты режимов. Для просмотра идёте в «Панель управления» => «Карты» => «Все карты на сервере», собственно вот и первый способ обрисовывается, можете удалить ненужные карты. Можете пройти во вкладку рядом «Установить карты», пройти в нужный раздел и выбрать карту, которые предлагает хостинг. Карты при такой установки просто скачиваются в папку maps вашего сервера.
9971450.png
2. Можете сами скачать карту откуда угодно, с помощью FileZilla открыть ваши файлы сервера и скопировать карту в папку maps.
3. Есть возможность поставить карту из Workshop (мастерская Steam), плюсы от такой установки в том, что если карты обновляются, то и на сервере тоже, так же в списке поиска серверов людям понятно, что карта из мастерской. Внимательно читайте здесь: Установка карт из Workshop
Функционал мастерской и карт добавленных обычным способом взаимоисключающий - невозможно смешать карты! Либо Вы устанавливаете карты вручную в папку maps, либо используете мастерскую и тогда карты все должны быть из мастерской.
Ну и собственно рассмотрим частные случаи на примере режима «Обычный»:
1. «Мне всё нравится, но хочу оставить 5 карт на сервере».
Для этого идёте в панель управления, далее во все карты и удаляете карты, если Вам необходимо место на жёстком диске сервера (можно не удалять). Ещё там же независимо от того удалили карты или нет, зайти в ротацию карт и список карт, там карты нужно стереть. Можете просто зайти через «конфиги» maplist.txt, mapcycle.txt и там стереть запись о картах. Далее идёте в gamemodes_server.txt и внимательно ищем наш режим, читаем подписи! Нас интересуют строки с надписями «Обычный» режим или casual. Нам нужна группа карт режима (mapgroup), которые он использует в голосовании, листаем в самый низ до слов // Группа карт "mg_custom" режима игры: Сustom (Свой режим), под этой записью видим карты. Которые используются в голосовании, ненужные стираем вместе с кавычками, убираем пробелы. Главное, что бы карты были в столбик и с нужным количеством кавычек, соблюдать отступ слева необязательно. После этого останется 5 карт, которые будут на сервере, за которые можно будет проголосовать в конце матча.
2. «Я хочу одну карту крутить на сервере всегда».
Аналогично вышеизложенному способу оставляем одну карту и дописываем в «конфиг» в gamemodes_casual_server.cfg переменную mp_endmatch_votenextmap 0 (напоминаю, в «Обычном» режиме переменная равна единице, если нужно голосование, то её прописывать не нужно, а если нужно выключить как в нашем случае, то нужно прописать) и ещё mp_match_end_changelevel 1. Теперь при окончании матча (по времени или по раундам), сервер сделает перезагрузку карты. Можете самостоятельно загрузить карту, можете воспользоваться инструкцией и сделать карту из Workshop, создав коллекцию с одной картой: Установка карт из Workshop
3. «Я хочу одну карту без перезагрузки».
Делаем тоже самое, что и во втором способе, но mp_match_end_changelevel 0 и добавляется ещё одна переменная mp_match_end_restart 1 (не забываем mp_endmatch_votenextmap 0)
4. «Я хочу поставить все карты из мастерской и с голосованием».
Пользуемся инструкцией: Установка карт из Workshop, и дописываем в «конфиг» mp_match_end_changelevel 1, в инструкции сказано, что нужно карты прописать в mapcycle.txt – это необязательно как по мне, на всякий случай пишите, у меня работало без этого с голосованием и без, потому что работает так будто коллекция важнее настроек, которую вы в autoexec.cfg уже указали и этого достаточно. Карты в голосовании после матча появятся автоматически, в gamemodes_ server.txt ничего не нужно писать или исправлять.
5. «Я хочу смешать карты из мастерской с обычными картами и чтоб с голосованием».
В этом случае есть два способа: а) Настроить как в пункте 4, но в коллекцию добавить обычную карту, все обычные карты есть в мастерской (авторство - CS:GO Official); б) Настроить как в пункте 1, но нужно будет скачать карты из мастерской. Скачать карту просто – пописываетесь на карту в Steam, дальше идёте в файлы вашего игрового клиента… в Вашей «Библиотеке» игр находите CS:GO, жмёте правой кнопкой мыши, потом «Свойства» => «Локальные файлы» => «Просмотреть локальные файлы», идёте в maps/workshop/111111 и скачиваете, например, de_superdust.bsp. Эту карту через FileZilla перемещаете в maps сервера, дальше прописать в gamemodes_server.txt эту карту, прописать в maplist.txt, mapcycle.txt.
6. «Я хочу поставить обычный de_dust2 днём и de_dust2_night ночью с перезагрузкой одной карты после матча на ней, голосование не нужно».
Для двух карт я вывел решение на myarena.ru, можно и больше карт, если рассчитать время, но нет возможности адекватного стандартного голосования. Итак, добавляем карты на сервер путём закачивания, если читали внимательно, то знаете что коллекции мастерской наплевать на «мапцикл». Дальше, добавляем карты в gamemodes_server.txt, а maplist.txt, mapcycle.txt делаем пустыми, дописываем в «конфиг» mp_match_end_changelevel 1, mp_endmatch_votenextmap 0. Создаём первое «Расписание» для дня (находятся расписания в «Панели управления», во вкладке «Задание») выбираем «Выполнить команды в консоли», пишем саму команду sm_nextmap de_dust2, выбираем время и сохраняем. Создаём второе расписание для ночи.
7. «Я хочу поставить обычный de_dust2 днём и de_dust2_night ночью с рестартом, голосование не нужно».
Аналогично способу 6, только в «конфиг» мы записывем mp_match_end_changelevel 0, mp_endmatch_votenextmap 0, mp_match_end_restart 1.
8. «Я хочу поставить 3 карты днём и 3 другие карты ночью с полным рестартом, голосование нужно».
Во-первых внимательно читайте как поставить карты из мастерской: Установка карт из Workshop, но в autoexec.cfg ничего не прописываем, а во-вторых вам нужно будет создать две такие коллекции, одну для дня, другую для ночи. Если читали не по-диагонали, то помните о наплевательском отношении карт мастерской к «мапциклу»и «маплисту», так вот дальше создаёте два «конфига», с любыми именами, например, night_maps.cfg и day_maps.cfg. В этих файлах нужно прописать в столбик: host_workshop_collection 1111111 workshop_start_map 222223 sv_workshop_allow_other_maps 0, где 1111111 - ваша дневная коллекция, а 222223 - карта старта, которая есть в дневной коллекции, тоже самое и для ночного «конфига». Теперь эти файлы через FileZilla загрузите в корневую папку сервера - cfg. Теперь нужно создать расписания для дня и для ночи, выбираем «Выполнить команды в консоли», пишем команду для дня exec day_maps, потом ставим время, повторяем процедуру для ночи. Рекомендую подписаться на ваши карты, выкачать их на клиент, потом предзагрузить их на сервер, скопировав из папки workshop клиента игры в такую, но на сервере. Если голосование не нужно, то допишите в «конфиг» команду: mp_endmatch_votenextmap 0. После этого перезагрузите сервер и выполните команду в консоли вручную exec day_maps или exec night_maps, если сейчас уже вечер. Всё, дальше будет автосмена коллекций с картами по времени как настроили. Единственное, что хочу отметить, меняется сразу, до паузы я не додумался ещё как реализовать, т.е. будет так, что идёт раунд и раз сервер перезагружается на ночные карты.
Кто пользуется плагинами «сорсмод» или хочет «админкой» менять карту, то нужно тогда прописывать карты в mapcycle, maplist, admins_mapist, но можете схитрить и не писать workshop\11111\de_syperdust, а просто de_superdust, важна правильная запись лишь в том случае, если две карты мастерской имеют одинаковый индекс (название .bsp), т.е. de_dust2_winter от одного автора и от другого писать нужно workshop/54555/de_dust2_winter и workshop/1112546/de_dust2_winter - тогда не будет ошибок, но останется ошибка радара, если карты на сервере играются подряд, то радар остаётся от сыгранной ранее карты того же индекса. Рекомендую в админ-меню (adminmenu_maplist.ini) написать без дополнительных записей, если нет повторов, а в остальные файлы писать полную.
2. Как перейти от настроенного голосования CS:GO к голосованию SourceMOD:
Ядро SourceMod позволяет настроить голосования своими методами, в наше поле зрения должны попасть стандартные плагины идущие с ядром:
- mapchooser.smx - это основа голосований, в основном чтобы голосование в конце карты запускалось, ставится в обязательном порядке для rockthevote и nominations;
- nextmap.smx - плагин последовательного запуска карт, в принципе не нужен, в СS:GO есть переменная аналог mp_match_end_changelevel 1;
- nominations.smx - плагин предложения карты на следующий матч в общем голосовании;
- randomcycle.smx - случайный порядок списка карт;
- rockthevote.smx - возможность игроков вынудить сервер сменить карту.
Всё очень просто (читайте инструкцию, с начала, там о всех файлах и переменных подробно):
1. Устанавливаем значение стандартного голосования (выключаем его):
mp_endmatch_votenextmap 0
2. Идём в плагины. По умолчанию некоторые плагины выключены, нам нужно из папки disabled в директории плагинов Вашего сервера перетащить нужные и перезапустить сервер. Например для сервера с rtv и nominate нужно что бы включены были: mapchooser.smx, nominations.smx и rockthevote.smx;
3. Важно что бы Ваши maplist.txt, mapcycle.txt были настроены, в них нужно прописать карты:
- в случае карт мастерской нужно писать так:
workshop/4545309/de_dust2
workshop/23244453/de_dust
workshop/7834253/de_dust_winter
- в случае карт загруженных обычным способом:
de_dust2
de_dust
de_dust_winter
3. Стандартные голосования:
sv_allow_votes
Включает или отключает возможность голосования на сервере. Значение по умолчанию — 1 (включено).
sv_vote_allow_spectators
Разрешает или запрещает участие в голосовании наблюдателей. Значение по умолчанию — 0 (запрещено).
sv_vote_failure_timer
Время (в секундах), по прошествии которого голосование может быть снова начато, если оно провалилось в предыдущий раз. Значение по умолчанию — 300 (5 минут).
sv_vote_issue_kick_allowed
Включает или отключает возможность голосования за отключение (в простой речи: кик) игрока. Значение по умолчанию — 0 (отключено).
sv_vote_kick_ban_duration
Время (в минутах), по прошествии которого игрок сможет вернутся на сервер, если его выгнали. Значение по умолчанию — 1. Значение 0 отключает эту функцию. В таком случае изгнанный игрок сможет почти сразу вернутся.
sv_vote_issue_nextlevel_allowed
Включает или отключает возможность начать голосование за выбор следующей карты. Значение по умолчанию — 1 (разрешено).
sv_vote_issue_nextlevel_allowextend
Разрешает или запрещает голосовать за продление текущей карты. Значение по умолчанию — 1 (разрешено).
sv_vote_issue_nextlevel_choicesmode
Разрешает или запрещает игрокам выбирать следующую карту из списка карт с наименьшим игровым временем. Значение по умолчанию 1 (разрешено).
sv_vote_issue_changelevel_allowed
Разрешает или запрещает сменить текущую карту сразу после окончания голосования. Значение по умолчанию 0 (запрещено).
sv_vote_issue_restart_game_allowed
Включает или отключает возможность голосования за переигрывание раунда. Значение по умолчанию 1 (включено).
sv_vote_issue_scramble_teams_allowed
Включает или отключает возможность голосования за смешивание команд. Значение по умолчанию 1 (включено).
После установки «сорсмода» рекомендую перед каждой переменной добавлять sm_cvar - вообще нужна для заблокированных переменных, когда сервер включен, запускает их в принудительном порядке, как Вы бы от имени администратора сервера это сами сделали.
4. Немного о VDS (все вопросы лучше задавать в специальном разделе форума):
Пример корректного запуска CS:GO как для стандартных карт, так и для карт мастерской на VDS с включением RCON-команд:
srcds -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2
На VDS вы так же можете создать autoexec.cfg и записать карты мастерской, но параметры запуска не изменяете, карта автоматически переключится с de_dust2 на ту что указана в autoexec.cfg (повторюсь это нужно чтобы сервер в процессе скачивания карты или проблем знал куда переключиться). Или если используете например Linux Game Server Manager, то там в основном "конфиге" запуска добавляются записи для мастерской и так же не изменяются параметры запуска, они уже вписаны в строку запуска как для простых карт, так и для обычных, только карты мастерской не включатся, пока не будут заполнены соответствующие поля в этом "конфиге", а как только они будут заполнены, то стандартные карты во внимание сервером приниматься не будут.
UPD: Особых изменений нет, записал в самом начале предупреждение.