Создание батника с автоперезапуском для сервера S.T.A.L.K.E.R. — S.T.A.L.K.E.R. Inside Wiki

Создание батника с автоперезапуском для сервера S.T.A.L.K.E.R.

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Зачем использовать батник для запуска сервера?

Этот способ запуска сервера предназначен для решения следующих проблем:

  • пропадание из мастер-листа и невозможности подключения клиентов при подключении самого себя к серверу с компьютера на котором запущен этот сервер
  • автоматического перезапуска сервера при вылетах
  • запуска нескольких серверов


Синтаксис командного файла для ТЧ и ЧН одинаков, но имеются небольшие различия, которые будут указаны.
Командный файл - это простой текстовый файл с любым именем и расширением *.CMD, который в нашем случае должен находиться в каталоге установки игры в папке \bin\, например:

E:\Program Files\GSC World Publishing\STALKER\bin\myserver.cmd


Создается он с помощью системного блокнота, который можно вызвать из меню Пуск>Стандартные, или меню Пуск>Выполнить>notepad. При сохранении файла важно обратить внимание на кодировку, это такой выпадающий список в окне сохранения файла под именем файла, нужно выбрать ANSI. В дальнейшем для редактирования командного файла щелкните по нему правой кнопкой мыши выберите «Изменить» или открыть с помощью Блокнота. При двойном клике по файлу будет выполняться сценарий. Для тех у кого имя сервера на русском языке отображается некорректно рекомендуется создавать сценарий в текстовом редакторе Bred3 (http://www.astonshell.ru/freeware/bred3) и сохранять в нем в кодировке OEM.
Сценарий в командном файле выглядит примерно так:

dedicated\xrEngine.exe -i -nosound -silent_error_mode -fsltx ..\fsgame.ltx -ltx user.ltx -start server(mp_agroprom/dm/ver=1.0/параметр1=значение1/параметр2=значение2/параметр..n=значение..n) client(localhost)


Здесь на сайте код сценария может отбражаться в несколько строк. В Блокноте этот код должен быть в одной строке, иначе работать не будет.


Первая часть кода

Разберем по порядку:

  • dedicated\xrEngine.exe — относительный путь к исполняемому файлу сервера ЧН
  • dedicated\XR_3DA.exe — относительный путь к исполняемому файлу сервера ТЧ
  • -i — отменяет захват устройств ввода. Без этого параметра не будет работать мышь.
  • -nosound — отключение проигрывания звука на сервере.
  • -silent_error_mode — отключает окно сообщения об ошибке при вылете сервера, рекомендуется для сервера с автоперезапуском. В некоторых случаях при отсутствии этого параметра сервер не будет перезапущен, пока вы сами не закроете окно с сообщением об ошибке. Также рекомендуется отключить различных отладчиков, отправку отчетов в Microsoft и т. п.


Параметры:
-fsltx ..\fsgame.ltx -ltx user.ltx имеют некоторую зависимость друг от друга, и очень важно их правильно настроить. -fsltx - это параметр, ..\fsgame.ltx — значение этого параметра, -ltx — параметр, user.ltx — значение.
Примечание: все файлы с расширением *.ltx являются простыми текстовыми файлами и открываются и редактируются с помощью Блокнота.
Подробнее об -fsltx ..\fsgame.ltx: Сервер при своей работе производит чтение и запись параметров из различных файлов конфигурации, которые находятся на «путях поддержки». Настройка путей поддержки важна для запуска нескольких серверов, использующих различные списки смены карт (мапцикл) и банлисты. Тем не менее, если у вас всего один сервер, либо все серверы используют один и тот же банлист и мапцикл — следует настроить один путь поддержки, отличающийся от пути по умолчанию. В параметре -fsltx нужно указать значение, которое является относительным путем к файлу fsgame.ltx, который находится в каталоге установки игры. Весь путь указывать не нужно, только имя файла. Создайте копию fsgame.ltx, переименуйте его и укажите измененное имя. Например: -fsltx ..\myserverfs.ltx

Далее все файлы, являющиеся переименованными копиями fsgame.ltx, будем называть просто fsgame, независимо от того, как вы назовете файл и сколько копий будете использовать.

Чтобы настроить путь поддержки для сервера, открываем fsgame. В первой строке вы увидите: $app_data_root$=true|false|C:\Users\Public\Documents\STALKER-STCS\ Как видно, в этой строке указан путь к папке, которая и является путем поддержки по умолчанию. Желательно этот путь поменять. Например: $app_data_root$=true|false|D:\myservers\myserverDM\ В конце пути обязательно должна быть косая черта

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

Если вы собираетесь запускать несколько серверов, которые будут использовать разные мапциклы и банлисты — так же создайте новый fsgame и пропишите в нем другую app_data, а в командных сценариях для запуска этих серверов в параметрах -fsltx впишите свой fsgame. Вы получите выделенные fsgame и app_data для каждого сервера. Если вы запускаете несколько серверов, которые будут использовать общие мапцикл и банлист, вам достаточно создать один fsgame для всех серверов. Есть еще один способ изменения app_data для сервера, отличный от предыдущего. При этом не нужно создавать копии fsgame и менять -fsltx ..\fsgame.ltx. Здесь используется дополнительный параметр -overlaypath, в значении которого нужно просто указать путь к app_data сервера.
Например:
-fsltx ..\fsgame.ltx -overlaypath D:\myservers\myserverDM\ В конце пути обязательно должна быть косая черта

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

Например: -overlaypath «D:\my servers\my server DM\»

Вы также можете заменить пробелы символом подчеркивания (_)

Параметр -overlaypath имеет более высокий приоритет подмены app_data. Это значит, что если вы используете этот параметр, уже не важно, какой fsgame вы используете и какой в нем путь к app_data. Подменять app_data параметром -overlaypath намного проще, но иногда по непонятным причинам этот параметр не работает и сервер падает сразу при запуске. В этой ситуации используйте подмену через fsgame.
В обоих случаях создавать саму папку app_data на диске необязательно, она будет создана автоматически при запуске сервера. -ltx user.ltx: Здесь нужно указать имя файла конфигурации, который лежит в папке app_data. Именно в нем записаны все параметры сервера. Имя файла — любое, набранное латинскими буквами и не содержащее пробелов, например: -ltx myserverDM.ltx

Далее файл, указанный в параметре -ltx будет иметь условное имя LTX, независимо от того, как вы его назовете.

Если несколько серверов используют одну app_data, для каждого сервера нужно указать различные имена файла LTX. Имя файла не имеет значения, если серверы используют разные app_data. Сам файл ltx в app_data создавать  необязательно; если вы запустите сервер с пустой app_data, то в этот файл будут скопированы команды из оригинального user.ltx, который лежит в папке, указанной в оригинальном fsgame.ltx. В принципе, нет необходимости вписывать команды в LTX, так как все необходимые параметры и настройки игры указываются в командном сценарии, хотя некоторые необязательные параметры читаются только из LTX. В LTX нельзя указывать некоторые функциональные команды консоли, такие как бан, кик, смена карты погоды, отмена голосования и т. п. Зачем такие сложности? Как говорилось выше, это нужно для серверов, использующих разные мапциклы и банлисты. Также замена app_data и LTX для сервера частично решает проблему подключения себя к своему серверу. Это связано с тем, что сама игра тоже использует файлы и параметры из оригинальной app_data, путь к которой указан в оригинальном fsgame.ltx и user.ltx. В любом случае, вы можете не менять app_data, но LTX желательно сменить.


Первая часть командного файла рассмотрена. Она может выглядеть так: dedicated\xrEngine.exe -i -nosound -silent_error_mode -fsltx ..\myserverfs.ltx -ltx myserverDM.ltx или так:

dedicated\xrEngine.exe -i -nosound -silent_error_mode -fsltx ..\fsgame.ltx -overlaypath D:\myservers\myserverDM\ -ltx myserverDM.ltx

В следующей части командного файла прописаны параметры и настройки самой игры и сетевые параметры сервера. Эти параметры являются аналогами настроек запуска сервера из интерфейса игры.


Вторая часть кода

Строка командного файла в этой части выглядит примерно таким образом:

-start server (mp_agroprom/dm/ver=1.0/параметр1=значение1/параметр2=значение2/параметр..n=значение..n) client(localhost)

Все по порядку: -start server — запускает сервер. Настроек и значений не имеет. Первые параметры в скобках для ЧН и ТЧ различны. Они соответствуют параметрам вкладки Сервер интерфейса запуска сервера через игру. Рассмотрим параметры для ЧН:
mp_agroprom — начальная карта при первом запуске сервера. Не имеет значений, так как параметр сам является еще и значением. Допустимые значения для карт, поставляемых на установочном диске:

<tbody> </tbody>

mp_agroprom — Завод «Агропром» mp_atp — АТП mp_autostation — Автостанция mp_bath — Бассейн (большой) mp_darkvalley — Темная долина mp_factory -  Завод «Янтарь» mp_firestation — Пожарная станция mp_garbage — Свалка mp_limansk — Лиманск mp_lost_village — Заброшенная деревня mp_military_1 — Военные склады mp_military_2 — Старая деревня mp_pool — Бассейн (маленький) mp_railroad — Ж/Д станция mp_rembasa — Ремонтная база mp_rostok — Завод «Росток» mp_sport_center — Спортивный центр mp_training_camp — Тренировочный лагерь mp_workshop — Заброшенная фабрика

    dm — тип игры. Так же как и карта является значением.
Допуситые значения:
dm — Все против всех
tdm — Команда пртив команды
ah — Охота за артефактом
cta — Захват артефакта
ver=1.0 — просто ver=1.0. Указывается только в ЧН.

Примеры: -start server(mp_agroprom/dm/ver=1.0/ -start server(mp_rembasa/tdm/ver=1.0/ -start server(mp_pool/ah/ver=1.0/ -start server(mp_limansk/cta/ver=1.0/
  Параметры для ТЧ:

(testers_mp_agroprom/deathmatch
testers_mp_agroprom — начальная карта.
Названия карт, поставляемых на установочном диске:

testers_mp_agroprom — Завод «Агропром»
testers_mp_atp — АТП
testers_mp_darkvalley — Темная долина
testers_mp_factory -  Завод «Янтарь»
testers_mp_lost_village — Покинутая деревня
testers_mp_military_1 — Военные склады
testers_mp_pool — Бассейн
testers_mp_railroad — Ж/Д станция
testers_mp_rostok — Завод «Росток»
testers_mp_workshop — Брошенная фабрика
mp_military_2 — mp_military_2

deathmatch — режим игры.
Допустимые режимы:
deathmatch — Все против всех
teamdeathmatch — Команда против команды
artefacthunt — Охота за артефактом

Примеры:
-start server(testers_mp_agroprom/deathmatch -start server(testers_mp_pool/teamdeathmatch -start server(testers_mp_railroad/ artefacthunt Чтобы организовать мапцикл (смена карт после окончания матча) нужно создать в папке app_data сервера текстовый файл maprot_list.ltx и в нем прописать карты в той последовательности, в которой они будут автоматически меняться по окончании матча.
Содержимое файла maprot_list.ltx с полным списком карт мапцикла для ЧН, поставляемых на установочном диске:
 

sv_addmap mp_agroprom/ver=1.0

sv_addmap mp_atp/ver=1.0

sv_addmap mp_autostation/ver=1.0

sv_addmap mp_bath/ver=1.0

sv_addmap mp_darkvalley/ver=1.0

sv_addmap mp_factory/ver=1.0

sv_addmap mp_firestation/ver=1.0

sv_addmap mp_garbage/ver=1.0

sv_addmap mp_limansk/ver=1.0

sv_addmap mp_lost_village/ver=1.0

sv_addmap mp_military_1/ver=1.0

sv_addmap mp_military_2/ver=1.0

sv_addmap mp_pool/ver=1.0

sv_addmap mp_railroad/ver=1.0

sv_addmap mp_rembasa/ver=1.0

sv_addmap mp_rembasa/ver=1.0

sv_addmap mp_rostok/ver=1.0

sv_addmap mp_sport_center/ver=1.0

sv_addmap mp_training_camp/ver=1.0

sv_addmap mp_workshop/ver=1.0

Содержимое файла maprot_list.ltx с полным списком карт мапцикла для ТЧ, поставляемых на установочном диске:

sv_addmap testers_mp_agroprom

sv_addmap testers_mp_atp

sv_addmap testers_mp_darkvalley

sv_addmap testers_mp_factory

sv_addmap testers_mp_lost_village

sv_addmap testers_mp_military_1

sv_addmap testers_mp_pool

sv_addmap testers_mp_railroad

sv_addmap testers_mp_rostok

sv_addmap testers_mp_workshop

sv_addmap mp_military_2

Карты в maprot_list.ltx можно прописывать в любой последовательности и в любом количестве, также допускается повторно прописывать одну и ту же карту.
Если в папке app_data отсутствует maprot_list.ltx, то мапцикла на сервере не будет, но игроки смогут переключаться на другие карты голосованием.

Если несколько серверов используют одну app_data, то соответственно они смогут использовать только один на всех мапцикл.

Чтобы особо не мучиться с прописыванием карт в maprot_list.ltx, создайте сервер через игровой интерфейс, на вкладке сервер укажите нужные вам карты и запустите сервер. В оригинальной app_data найдите maprot_list.ltx и скопируйте его в app_data своего сервера. Выключите сервер, запущенный через интерфейс игры.</p>  </p>


 </p> Большинство следующих параметров командного файла соответствуют тем параметрам, которые находятся на вкладке Опции интерфейса запуска.</p> Они имеют следующий синтаксис:</p> /параметр1=значение1/параметр2=значение2/параметр..n=значение..n</p> Значения этих параметров дублируются в файле LTX. Значения прописанные в командном файле имеют более высокий приоритет чем значения в LTX, если они различны.</p> Каждый режим игры имеет свои специфические параметры.</p> Рассмотрим эти параметры:</p> Общие параметры для всех типов игры:</p>

<tbody> </tbody>
Параметр Описание Значения Примечание
hname Имя сервера Например: /hname=My Server/
maxplayers Максимальное количество игроков на сервере 2-32
psw Пароль для входа на сервер Необязательный
public 0 — Сервер в локальной сети Не будет отображаться в мастер листе
1 — Интернет сервер Будет отображаться в мастер листе
portsv Номер порта сервера 1-65535 Эти три параметра решают проблему выпадения сервера из мастер-листа, при подключении самого себя к серверу.

Более подробная информация дана ниже.

portgs Порт GameSpy 1-65535
portcl Порт клиента. Прописывается в самом конце сценария. 1-65535
battleye Античит 1-включен Работает, если public=1
0-выключен
estime Начальное время суток в игре. 00:00-23:59

От времени суток зависит погода

Ясная

9:00

Облачная

13:00

Дождь 16:00
Ночь 01:00
etimef Скорость изменения погоды 0.0-100.0 Десятичное число с одним знаком после точки. Оптимальное значение 1.0
ans Аномалии 0-выключены
1-включены
anslen Период работы аномалий 0-бесконечные
1-180 — время в минутах
pdahunt +100р за поднятый рюкзак 0-нет
1-да
warmup Разогрев 0-выключен
1-3600 — время в секундах
timelimit Время матча 0-бесконечный
1-180 — время в минутах
dmgblock Время неуязвимости после рождения 0-отключено
1-600 время секундах
dmbi Индикатор неуязвимости 0-выключен
1-включен
fraglimit Лимит фрагов 0-бесконечные Используется только для режимов DM и TDM
1-100
spectrmds Настройка режимов наблюдения

Бит<a name="spectrsumm" title="spectrsumm"></a>

Значение

Сумма битовых флагов. <a href="#votesumm">Подробнее</a>
1 Свободный полет
2 От 1 лица
4 Свободно привязанный
8 От 3 лица
16 Только для команды
0 Все выключены
vote Включение определенных пунктов голосования

Бит<a name="votetable" title="votetable"></a>

Значение

Сумма битовых флагов. <a href="#votesumm">Подробнее</a><a href="#checksumm"> </a>

Аналог: команда консоли  SV_VOTE_ENABLED

0 Все выключены
1 Все включены
2 Рестарт
4 Быстрый рестарт
8 Выбросить
16 Заблокировать
32 Изменить карту
64 Изменить погоду
128 Режим
frcrspwn Принудительное рождение 0-выключено

Для DM и TDM

1-3600-время в секундах. Не забывайте что иногда игрокам нужно зайти в магазин

Общие настройки всех командных режимов:

<tbody> </tbody>
Параметр Описание Значения Примечание
abalance Автобаланс команд 0-выключен

Производится после окончания матча за счет игроков набравших наименьшее количество очков

1-включен
aswap Автосмена команд 0-выключен После окончания матча игроки автоматически меняются командами
1-включен
fi Иконка над головами игроков своей команды 0-выключен
1-включен
fn Имена над головами игроков своей команды 0 — только тогда, когда клавиша CapsLock нажата
1 — CapsLock действует как переключатель
ffire Коэффициент повреждения, наносимого игроками одной команды друг другу. 0.0-2.0 1.0 = 100 %, 2.0 = 200 %

Настройки только для режимов AH и CTA:

<tbody> </tbody>
Параметр Описание Значения Примечание
anum Количество артефактов 1-100
astime Артефакт лежит пока его никто не поднимет 0-всегда Только для AH
1-180-время в минутах
ardelta Задержка артефакта. Время до появления нового 0-выключен Только для AH
1-600-время в секундах
reinf Рождение игроков -1 — когда артефакт принесен на базу или одна из команд польностью уничтожена
0-игроки рождаются когда захотят
1-3600-время через которое игроки будут принудительно рождены.
artrettime Время через которое артефакт вернётся на вашу базу, если противник его потерял 0-сразу Только для CTA
1-300 время в секундах
actret Артефакт нужно взять в руки и нажать огонь 0-нет Только CTA
1-да

Настройки клиента:

К серверу, всегда, даже если на нем никого нет, подключен некий виртуальный игрок. Никто о нем не знает, никто его не видит, но он есть.</p> Параметры подключения такого скрытого игрока прописываются в самом конце строки сценария.</p>

client(localhost/portcl=4554/name=admin)

 

client(localhost — обязательная запись.</p> вместо localhost можно прописать внешний IP-адрес сервера если используется NAT и есть проблемы с подключением самого себя.</p> Ваш внешний IP {rdaddphp file=/mpnscripts/iptxt.php}</p> portcl — описание в таблице выше</p> name — любой набор буквенно-цифровых символов. Необязательный параметр. Может быть опущен.


Все особенности создания командного файла здесь разобраны. Подведем итог.</p> Вот один из примеров запуска сервера DM.</p>

<tbody> </tbody>
dedicated\xrEngine.exe -i -nosound -silent_error_mode -fsltx ..\myserverfs.ltx -ltx myserver.ltx -start server(mp_agroprom/dm/ver=1.0/public=1/hname=first_dm_server/portsv=4554/portgs=4556/battleye=1/estime=9:00/spectrmds=0/fraglimit=0/timelimit=30/dmgblock=3/dmbi=0/ans=1/anslen=3/warmup=60/pdahunt=1) client(localhost/portcl=4557)

В эту строку можно добавить любые параметры из таблицы выше. Все зависит от вашего вкуса и предпочтений.

Автоперезапуск сервера Пример:

load

start /wait dedicated\xrEngine.exe -i -nosound -silent_error_mode -fsltx ..\myserverfs.ltx -ltx myserver.ltx -start server(mp_agroprom/dm/ver=1.0/public=1/hname=first_dm_server/portsv=4554/portgs=4556/battleye=1/estime=9:00/spectrmds=0/fraglimit=0/timelimit=30/dmgblock=3/dmbi=0/ans=1/anslen=3/warmup=60/pdahunt=1) client(localhost/portcl=4557) goto load

Если добавить строчку из примера перед строкой сценария и соответствующую строчку после, то ваш сервер будет автоматически перезапускаться после вылета. Помешать перезапуску сервера может системная служба отправки отчетов в Microsoft, и различные системные отладчики, которые перед тем как закрыть приложение, сообщают об ошибке пользователю. Отключите эти функции в операционной системе.

Как командный файл может решить проблему выпадения из мастер-листа при подключении к локальному серверу

Существует предположение о том, что серверу необходимо указать правильные порты. Для этого нужно в параметрах portsv portgs portcl прописать значения, не равные 5445 5446 5447 и не равные между собой. Если эти параметры в строке сценария вовсе не указывать, то сервер будет по умолчанию использовать значения 5445 5446 5447. При подключении с локального компьютера на этих портах возникают конфликты, так как игра по умолчанию тоже использует несовместимые порты.
Порты 5445 5446 5447 предназначены только для подключения с удаленных компьютеров. Если вы запускаете несколько серверов, то значения этих параметров должны различаться не только между собой, но еще и в разных командных файлах. Если выразиться проще, то сервера не должны использовать одинаковые порты. Иначе говоря, серверы не должны использовать порты, занятые другими приложениями. Еще одна проблема может возникнуть из-за запрета в роутере или модеме подключения самого себя через внешний адрес. В этой ситуации у вас будет неверный хост. Для решения этой проблемы обратитесь к документации к своему сетевому оборудованию.

Что такое сумма битовых флагов?

Это целое число, являющееся суммой битов включенных элементов. Элементы, биты которых не участвуют в сумме, будут выключены.</p>

Рассмотрим на примере включения выключения пунктов голосования:

Например нам надо выключить пункты Изменить погоду и Рестарт. Для составления суммы лучше всего эту ситуацию рассматривать с другой стороны — нужно не выключить эти пункты, а включить все другие кроме этих пунктов.

Смотрим <a href="#votetable">биты</a> всех других пунктов кроме  Изменить погоду и Рестарт. Такие пункты как Все выключены и Все включены в суммах никогда не участвуют.

Бит

Значение

0 Все выключены
1 Все включены
2 Рестарт
4 Быстрый рестарт
8 Выбросить
16 Заблокировать
32 Изменить карту
64 Изменить погоду
128 Режим

В итоге vote=4+8+16+32+128=188. Пункты голсования будут выглядеть таким образом:

Vote 188.jpg

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

Параметры, на которые нужно обратить особое внимание (назначаются в LTX)


КомандаПараметрыОписание
mm_net_con_spectator 1,32 Число наблюдателей
mm_net_con_spectator_on on, off Включить/отключить режим наблюдателя (Применяет параметр выше)
sv_bearercantsprint 0,1 Выключить/включить возможность бежать, когда игрок несёт артефакт
sv_client_reconnect_time 0,60 Время в течении которого за игроком сохраняется статистика/ранг/деньги если он вышел или вылетел
sv_console_update_rate 1,100 Скорость обновления консоли
sv_hail_to_winner_time 0,60000 Время на приветствие победителя
sv_remove_corpse -1,0,1 Удалять тело после смерти игрока (-1 — никогда, 0 — сразу, 1 — по времени в конфигах)
sv_remove_weapon -1,0,1 Удалять оружие после смерти игрока (-1 — никогда, 0 — сразу, 1 — по времени в конфигах)
sv_dump_online_statistics_period 0,60 Период через который будет сохраняться файл online_dump.ltx
sv_statistic_collect 0,1 Расширенная статистика в online_dump.ltx
sv_vote_participants 0,1 Учитывать голоса только проголосовавших
sv_vote_quota 0.000,1.000 Процент для успешного голосования
sv_vote_time 0.500,10.000 Время на голосование
sv_teamkill_punish 0,1 Кикать за тимкилл
sv_teamkill_limit
Максимальное количество тимкиллов


Автор: Максим «Бармен» Максимов

Источник: MPNetworks.ru[1]

Другие места
LANGUAGE