FAQ по созданию батника Сталкер ТЧ с поддержкой нескольких серверов и автоперезапуском
Создание командного файла (он же батник) для запуска выделенного сервера S.T.A.L.K.E.R. Тени Чернобыля
Этот способ запуска сервера предназначен для решения следующих проблем:
-пропадание из мастер-листа и невозможности подключения клиентов при подключении самого себя к серверу с компьютера на котором запущен этот сервер
-автоматического перезапуска сервера при вылетах
-запуска нескольких серверов Командный файл это простой текстовый файл с любым именем и расширением *.bat, который должен находиться в каталоге установки игры в папке \bin\, например: E:\Program Files\GSC World Publishing\STALKER\bin\myserver.bat
Создается с помощью системного блокнота, который можно вызвать из меню Пуск>Стандартные или меню Пуск>Выполнить>notepad.
Сценарий в командном файле выглядит примерно так:
Quote
dedicated\XR_3DA.exe -i -nosound -silent_error_mode -fsltx ..\fsgame.ltx -ltx user.ltx -start server(mp_agroprom/dm/параметр1=значение1/параметр2=значение2/параметр..n=значение..n) client(localhost)
ВАЖНО в Блокноте этот код должен быть в одной строке, иначе работать не будет. Разберем по порядку:
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 ..\fsarthunt.ltx или -fsltx ..\fstdm.ltx - хотя можете их назвать как Вам нравится
Quote
Далее все файлы, являющиеся переименованными копиями fsgame.ltx, будем называть просто fsgame, независимо от того, как вы назовете файл и сколько копий будете использовать.
Чтобы настроить путь поддержки для сервера, открываем fsgame. В первой строке вы увидите:
$app_data_root$=true|false|C:\Users\Public\Documents\STALKER-SHOC\
Как видно, в этой строке указан путь к папке, которая и является путем поддержки по умолчанию. Желательно этот путь поменять.
Например:
$app_data_root$=true|false|D:\myserver\Artefacthunt\ - В конце пути обязательно должна быть косая черта.
Строка $mod_dir$ = false | false | $fs_root$ | mods\ - это путь к папке mods, где хранятся карты. Вы можете создать разные папки с разными картами для разных режимов игры
Создайте папку(папки) поддержки сервера в соответствии пути который Вы указали в измененном fsgame
Quote
Далее папку, которую вы назначите путем поддержки для сервера, будем называть app_data, независимо от того, как вы ее назовете и сколько их будете использовать.
Если вы собираетесь запускать несколько серверов, которые будут использовать разные мапциклы и банлисты - так же создайте новый fsgame и пропишите в нем другую app_data, а в командных сценариях для запуска этих серверов в параметрах -fsltx впишите свой fsgame. Вы получите выделенные fsgame и app_data для каждого сервера.
Если вы запускаете несколько серверов, которые будут использовать общие мапцикл и банлист, вам достаточно создать один fsgame для всех серверов.
-ltx user.ltx: Здесь нужно указать имя файла конфигурации, который лежит в папке app_data. Именно в нем записаны все параметры сервера. Имя файла - любое, набранное латинскими буквами и не содержащее пробелов, например:
-ltx serverah.ltx
Quote
Далее файл, указанный в параметре -ltx будет иметь условное имя LTX, независимо от того, как вы его назовете.
Примечание: все содержимое этой папки является копией содержимого папки Stalker-shos, переименован только user.ltx в serverah.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 желательно сменить.
Первая часть командного файла рассмотрена.
В следующей части командного файла прописаны параметры и настройки самой игры и сетевые параметры сервера. А если быть более точным, то эти параметры являются аналогами настроек запуска сервера из интерфейса игры.
Далее я посчитал не нужным продолжать FAQ, т.к. у PAHANa все подробно расписано
И напоследок примеры моих батников:
Для режима arthunt:
Quote
dedicated\xr_3DA.exe -i -nosound -svcfg serverah.ltx -fsltx fsarthunt.ltx -start server(l01_escape/artefacthunt/hname=superbabylia funserver/portgs=5444/portsv=5445/maxplayers=24/abalance=1/aswap=1/ans=1/anslen=1/anum=30/dmbi=0/dmgblock=0/estime=6:00/etimef=0/vote=1/timelimit=0/ffire=1.0/fi=0/fn=1/frcrspwn=0/pdahunt=1/public=1/reinf=1/warmup=120) client(localhost/portcl=2330/name=stalker)
@echo off
echo avtorestart %DATE% %TIME%
mkdir crash\%DATE%
echo STALKER restart %DATE% %TIME% >> crash\%DATE%\artefacthunt.log
:RESTART
dedicated\xr_3DA.exe -i -nosound -svcfg serverah.ltx -fsltx fsarthunt.ltx -start server(l01_escape/artefacthunt/hname=superbabylia funserver/portgs=5444/portsv=5445/maxplayers=24/abalance=1/aswap=1/ans=1/anslen=1/anum=30/dmbi=0/dmgblock=0/estime=6:00/etimef=0/vote=1/timelimit=0/ffire=1.0/fi=0/fn=1/frcrspwn=0/pdahunt=1/public=1/reinf=1/warmup=120) client(localhost/portcl=2330/name=stalker)
set Crashdir=crash\%DATE%
mkdir %Crashdir%
echo STALKER avtorestart %DATE% %TIME% >> crash\%DATE%\artefacthunt.log
set Crashdir= crash\%DATE%
goto RESTART
Для режима teamdeathmatch:
Quote
dedicated\xr_3DA.exe -i -nosound -svcfg server.ltx -fsltx fstdm.ltx -start server(testers_mp_military_1/teamdeathmatch/hname=superbabylia TDM/portgs=5449/portsv=5450/maxplayers=24/abalance=1/aswap=1/dmbi=0/dmgblock=0/estime=7:00/etimef=0/vote=1/timelimit=120/fraglimit=250/ffire=0,01/fi=0/fn=1/frcrspwn=0/pdahunt=1/public=1/reinf=1/warmup=360) client(localhost/portcl=2335/name=stalker)
@echo off
echo avtorestart %DATE% %TIME%
mkdir crash\%DATE%
echo STALKER restart %DATE% %TIME% >> crash\%DATE%\teamdeathmatch.log
:RESTART
dedicated\xr_3DA.exe -i -nosound -svcfg server.ltx -fsltx fstdm.ltx -start server(testers_mp_military_1/teamdeathmatch/hname=superbabylia TDM/portgs=5449/portsv=5450/maxplayers=24/abalance=1/aswap=1/dmbi=0/dmgblock=0/estime=7:00/etimef=0/vote=1/timelimit=120/fraglimit=250/ffire=0,01/fi=0/fn=1/frcrspwn=0/pdahunt=1/public=1/reinf=1/warmup=360) client(localhost/portcl=2335/name=stalker)
set Crashdir=crash\%DATE%
mkdir %Crashdir%
echo STALKER avtorestart %DATE% %TIME% >> crash\%DATE%\teamdeathmatch.log
set Crashdir= crash\%DATE%
goto RESTART