Господа, ну я сильно удивлен, что такие вещи, как авторестарт сервера многим даются сложно для понимания. Ведь все довольно легко, да и способов море в сети.
Опишу в теме парочку своих способов.
Способ I:
1. Создаем в папке с сервером игры файл с именем 'AutoRestartScript.bat' и заполняем его следующими данными:
@echo off
cd /d %~dp0
::CODE FILE UTF-8 + Russian OEM 866
::: Здесь указываем имя серверного exe (обязательно, он проверяется на запущенность)
set PROC_SERVER=DayZServer_x64.exe
::: Здесь указываем параметры запуска сервера для запуска сервера с exe напрямую
set PROC_SERVER_PARAMS=-port=2302 -config=Instance_1\server.cfg -cfg=Instance_1\basic.cfg -profiles=Instance_1 -user=Instance_1 -name=Server -nologs -adminlog -freezecheck -noFilePatching
::: Здесь указываем путь до папки с сервером
set Patch_server=C:\servers\DayZServer_063
::: Здесь указываем имя файла, в который будут писаться логи рестарта
set LOGFILE=log_restarter_server.txt
::: Здесь указываем время между проверками на запущенность процесса сервера (в секундах)
set TIME_CHECK=60
::: Указываем 1 если хотим запускать сервер в режиме запуска через SmartSteamEmu
set Start_server_with_smartsteamemu=1
::: Указываем путь до папки с SmartSteamLoader
set NAME_DIR_smartsteamemu=C:\servers\DayZServer_063\SmartSteamEmu
::: Указываем имя запускаемого файла SmartSteamLoader
set NAME_LOADER_smartsteamemu=SmartSteamLoader_x64.exe
::: Указываем путь и имя конфиг-файла SmartSteamLoader
set NAME_CONFIG_smartsteamemu=C:\servers\DayZServer_063\SmartSteamEmu\Test_config.ini
::: Указываем 1 если хотим контролировать BEC на запущенность (чтобы вкл. параметры ниже указать 1)
set Use_BEC_AutoRestarter=1
::: Здесь указываем имя BEC exe
set PROC_BEC=Bec_063.exe
::: Здесь указываем параметры запуска BEC
set PROC_BEC_PARAMS=--dsc -f config.cfg
::: Здесь указываем путь до папки с BEC
set Patch_bec=C:\servers\DayZServer_063\Instance_1\bec
::: ДАЛЕЕ НИЧЕГО НЕ ТРОГАЕМ!!!
setlocal EnableDelayedExpansion
echo.
echo. AutoRestart Script started!
echo.
:check
COLOR 0C
timeout /t 10 /nobreak > nul
set FLAG=0
set PROC_SERVER_START_EXE=%PROC_SERVER%
set PROC_SERVER_START_Patch=%Patch_server%
for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_SERVER%" /FI "STATUS eq RUNNING"') do (
set /a FLAG += 1
)
if %Start_server_with_smartsteamemu% == 1 (
set PROC_SERVER_START_Patch=%NAME_DIR_smartsteamemu%
set PROC_SERVER_START_EXE=%NAME_LOADER_smartsteamemu%
set PROC_SERVER_PARAMS=%NAME_CONFIG_smartsteamemu%
)
if %FLAG% == 1 (
TIMEOUT /T %TIME_CHECK% /NOBREAK > nul
cd "%Patch_server%"
start "" "%PROC_SERVER_START_Patch%\%PROC_SERVER_START_EXE%" %PROC_SERVER_PARAMS%> nul^
&& (set MSG=[%date% %time%] %PROC_SERVER% restarted
echo !MSG!
echo !MSG! >> %LOGFILE%
timeout /t %TIME_CHECK% /nobreak > nul)^
|| (set MSG=[%date% %time%] Error restarting PROC_SERVERess
echo !MSG!
echo !MSG! >> %LOGFILE%)
)
if (%Use_BEC_AutoRestarter% != 1) goto :check
set FLAG_BEC=0
for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_BEC%" /FI "STATUS eq RUNNING"') do (
set /a FLAG_BEC += 1
)
if %FLAG_BEC% == 1 (
TIMEOUT /T %TIME_CHECK% /NOBREAK > nul
cd "%Patch_bec%"
start "" "%Patch_bec%\%PROC_BEC%" %PROC_BEC_PARAMS%> nul^
&& (set MSG=[%date% %time%] %PROC_BEC% restarted
echo !MSG!
echo !MSG! >> %LOGFILE%
timeout /t %TIME_CHECK% /nobreak > nul)^
|| (set MSG=[%date% %time%] Error restarting PROC_BECess
echo !MSG!
echo !MSG! >> %LOGFILE%)
)
goto :check
exit
Кому лень создавать, вот готовый: _AutoRestarter1.bat
2. Заменяем и правим параметры в файле на свои, в данном случае это параметры запуска сервера, местонахождение сервера на компьютере и т.п., пояснения есть, как видим.
Крайне не рекоммендую в названиях файлах и расположениях сервера указывать пробелы, bat-файлы их не любят!
Если вы используете 'SmartSteamEmu', можно активировать опцию запуска сервера через него.
Также в батничке есть контролер 'BEC' на случай и его падений (произвольного выключения)
3. Сохраняем, запускаем, и спустя время, обозначенное в параметре:
set TIME_CHECK=60
сервер у вас запустится, если он отсутствует в процессах windows (при условии, если не напортачили в параметрах).
Способ II:
1. Создаем в папке с сервером игры файл с именем 'AutoRestartScript.bat' и заполняем его следующими данными:
@echo off
cd /d %~dp0
::CODE FILE UTF-8 + Russian OEM 866
::: Здесь указываем имя серверного exe (обязательно, он проверяется на запущенность)
set PROC_SERVER=DayZServer_x64.exe
::: Здесь указываем параметры запуска сервера для запуска сервера с exe напрямую
set PROC_SERVER_PARAMS=-port=2302 -config=Instance_1\server.cfg -cfg=Instance_1\basic.cfg -profiles=Instance_1 -user=Instance_1 -name=Server -nologs -adminlog -freezecheck -noFilePatching
::: Здесь указываем путь до папки с сервером
set Patch_server=C:\servers\DayZServer_063
::: Здесь указываем имя файла, в который будут писаться логи рестарта
set LOGFILE=log_restarter_server.txt
::: Здесь указываем время между проверками на запущенность процесса сервера (в секундах)
set TIME_CHECK=60
::: Указываем 1 если хотим запускать сервер через свой batch-файл, 0 если хотим запускать сервер напрямую с exe-файла сервера с параметрами выше
set USE_BATCH_FILE__FOR_START_SERVER=1
::: Указываем путь до папки с SmartSteamLoader
set BATCH_FILE_START_SERVER=C:\servers\DayZServer_063\Start_server_game.bat
::: ДАЛЕЕ НИЧЕГО НЕ ТРОГАЕМ!!!
setlocal EnableDelayedExpansion
echo.
echo. AutoRestart Script started!
echo.
:check
COLOR 0C
timeout /t 10 /nobreak > nul
set FLAG=0
set PROC_SERVER_START_Patch=%Patch_server%\%PROC_SERVER%
set PROC_SERVER_START_PARAMS=%PROC_SERVER_PARAMS%
for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_SERVER%" /FI "STATUS eq RUNNING"') do (
set /a FLAG += 1
)
if %USE_BATCH_FILE__FOR_START_SERVER% == 1 (
set PROC_SERVER_START_Patch=%BATCH_FILE_START_SERVER%
set PROC_SERVER_START_PARAMS=
)
if %FLAG% == 1 (
TIMEOUT /T %TIME_CHECK% /NOBREAK > nul
cd "%Patch_server%"
start "" "%PROC_SERVER_START_Patch%" %PROC_SERVER_START_PARAMS%> nul^
&& (set MSG=[%date% %time%] %PROC_SERVER% restarted
echo !MSG!
echo !MSG! >> %LOGFILE%
timeout /t %TIME_CHECK% /nobreak > nul)^
|| (set MSG=[%date% %time%] Error restarting PROC_SERVERess
echo !MSG!
echo !MSG! >> %LOGFILE%)
)
goto :check
exit
Кому лень создавать, вот готовый: _AutoRestarter2.bat
2.Заменяем и правим параметры в файле на свои, в данном случае это параметры запуска сервера, местонахождение сервера на компьютере и т.п., пояснения также есть, как видим.
Крайне не рекоммендую в названиях файлах и расположениях сервера указывать пробелы, bat-файлы их не любят!
Если вы используете BEC, Whitelister, еще что-либо, запускаете сервер игры не напрямую, а через loader crack (как в smartsteamemu), или вовсе хотите делать при рестарте что-то свое, можно запускать сервер не с exe-файла сервера, а с указанного bat-файла. (примеры файлов: Start_server.bat test SmartSteamEmu.bat)
3. Сохраняем, запускаем, и спустя время, обозначенное в параметре:
set TIME_CHECK=60
сервер у вас запустится, если он отсутствует в процессах windows (при условии, если не напортачили в параметрах).
Способ III:
1. Создаем, если отсутствует, простенький батничек, который будет запускать сервер ваш со всем необходимым. Если имеется такой, переходим далее. Примеры есть в п. 3 ниже!
2. Скачиваем и запускаем простенькую программку:
https://yadi.sk/d/k1Jk3sByqzczAQ
RestartOnCrash.rar
3. Запускаем программку и добавляем новое правило нажатием Add, настраиваем:
6 - Указываем сам bat-файл, запускающий наш сервер (создавали в п. 1)(примеры файлов test SmartSteamEmu.bat Start_server.bat)
7 - Указываем папку с вашим сервером
Настройки на скриншоте рабочие для сервера DayZ 0.63
4. Сохраняем настройки кнопкой OK
5. Ставим галочку, если не стоит в списке рядом с созданным нами заданием
6. Готово, сервер сам перезапустится, спустя время в секундах, обозначенное в настройках прграммы + время в правиле, созданном нами.
Указанные выше способы далеко не единственные, и пойдут наверняка не только для сервера DayZ 0.63, но и для остальных игр и версий издателя Bohemia Interactive, а может и вовсе для других серверов и программ, но я надеюсь, что данная тема будет для вас полезна и поможет внести понимание того как и что работает!