Создание батника с автоперезапуском для сервера S.T.A.L.K.E.R. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Flammable (обсуждение | вклад) (оформление) |
Flammable (обсуждение | вклад) (→Вторая часть кода) |
||
Строка 196: | Строка 196: | ||
</td> | </td> | ||
</tr> | </tr> | ||
− | + | </table> | |
</table> | </table> | ||
deathmatch — режим игры. | deathmatch — режим игры. | ||
Строка 677: | Строка 677: | ||
</table> | </table> | ||
<p>В эту строку можно добавить любые параметры из таблицы выше. Все зависит от вашего вкуса и предпочтений.</p> | <p>В эту строку можно добавить любые параметры из таблицы выше. Все зависит от вашего вкуса и предпочтений.</p> | ||
− | '''Автоперезапуск сервера''' | + | '''Автоперезапуск сервера''' |
− | Пример: | + | Пример: |
− | :load | + | :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 | goto load | ||
− | Если добавить строчку из примера перед строкой сценария и соответствующую строчку после, то ваш сервер будет автоматически перезапускаться после вылета. | + | Если добавить строчку из примера перед строкой сценария и соответствующую строчку после, то ваш сервер будет автоматически перезапускаться после вылета. |
Помешать перезапуску сервера может системная служба отправки отчетов в Microsoft, и различные системные отладчики, которые перед тем как закрыть приложение, сообщают об ошибке пользователю. Отключите эти функции в операционной системе. | Помешать перезапуску сервера может системная служба отправки отчетов в Microsoft, и различные системные отладчики, которые перед тем как закрыть приложение, сообщают об ошибке пользователю. Отключите эти функции в операционной системе. | ||
Версия 17:45, 3 марта 2010
Содержание
- 1 Зачем использовать батник для запуска сервера?
- 2 Первая часть кода
- 3 Вторая часть кода
- 4 Как командный файл может решить проблему выпадения из мастер-листа при подключении к локальному серверу
- 5 Что такое сумма битовых флагов?
- 6 Параметры, на которые нужно обратить особое внимание (назначаются в LTX)
Зачем использовать батник для запуска сервера?
Этот способ запуска сервера предназначен для решения следующих проблем:
- пропадание из мастер-листа и невозможности подключения клиентов при подключении самого себя к серверу с компьютера на котором запущен этот сервер
- автоматического перезапуска сервера при вылетах
- запуска нескольких серверов
Синтаксис командного файла для ТЧ и ЧН одинаков, но имеются небольшие различия, которые будут указаны.
Командный файл - это простой текстовый файл с любым именем и расширением *.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 — начальная карта при первом запуске сервера. Не имеет значений, так как параметр сам является еще и значением.
Допустимые значения для карт, поставляемых на установочном диске:
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 — Завод «Агропром» mp_military_2 — mp_military_2
Содержимое файла maprot_list.ltx с полным списком карт мапцикла для ТЧ, поставляемых на установочном диске:
Карты в maprot_list.ltx можно прописывать в любой последовательности и в любом количестве, также допускается повторно прописывать одну и ту же карту. Чтобы особо не мучиться с прописыванием карт в 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>
Общие настройки всех командных режимов:
Настройки только для режимов AH и CTA:
Настройки клиента: К серверу, всегда, даже если на нем никого нет, подключен некий виртуальный игрок. Никто о нем не знает, никто его не видит, но он есть.</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 — любой набор буквенно-цифровых символов. Необязательный параметр. Может быть опущен.
В эту строку можно добавить любые параметры из таблицы выше. Все зависит от вашего вкуса и предпочтений. Автоперезапуск сервера Пример:
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. При подключении с локального компьютера на этих портах возникают конфликты, так как игра по умолчанию тоже использует несовместимые порты. Что такое сумма битовых флагов?Это целое число, являющееся суммой битов включенных элементов. Элементы, биты которых не участвуют в сумме, будут выключены.</p> Рассмотрим на примере включения выключения пунктов голосования: Например нам надо выключить пункты Изменить погоду и Рестарт. Для составления суммы лучше всего эту ситуацию рассматривать с другой стороны — нужно не выключить эти пункты, а включить все другие кроме этих пунктов. Смотрим <a href="#votetable">биты</a> всех других пунктов кроме Изменить погоду и Рестарт. Такие пункты как Все выключены и Все включены в суммах никогда не участвуют.
В итоге vote=4+8+16+32+128=188. Пункты голсования будут выглядеть таким образом:
Включение выключение других пунктов голосования, а так же режимов наблюдения производится аналогичным способом. Параметры, на которые нужно обратить особое внимание (назначаются в LTX)
|