Как создать свой игровой сервер DayZ Standalone

Нам понадобится Stem CMD, создать нормальный bat- файл, прямые руки и немного везения… что ж за админ без везения… Так как 99% кода и башиков работают исключительно от везения) рофлю я…. Уровень юмора- Бог….

StemCMD — ссылка вот!
Ссылка для скачивания файла StemCMD вот.

Качаем файл, создаем на диске с:\ папку Servers, в ней создаем папку StemCMD. В неё перетаскиваем скаченный файл и запускаем его.

Далее в папке Servers создаем папку Chernarus и в ней ещё папку DayZChernarus
В папке Chernarus создаем папку BEC_Chernarus
Нужно скачать нам архив с BEC (Battleye Extended Controls — BEC) например тут или из просторов интернета и распаковать его в папку BEC_Chernarus.

Думаю теперь можно перейти к созданию главного файла для нас) StartChernarus.bat и текстовый файл Modlist_Chernarus.txt в нем будут список модов в формате:

1559212036,@CF
1564026768,@Community-Online-Tools


Где 1559212036 — номер мода в стиме, а @CF — название папки в которой хранить мод

Далее в папке C:\Servers\Chernarus\DayZChernarus создаем текстовый файл блокнота и переименовываем его в StartChernarus.bat открываем его Nodpad++ ну я пользую VScode, по тому, что сука я могу) опять рофлю… Просто мне так удобнее)

Давайте разберем наш будущий bat`ник. Ниже код батника приведен полностью.

  • Шапка файла. она просто нужна и всё. Тут нефиг объяснять…
@echo off
COLOR 0A
TITLE -= Chernarus =-
  • Далее идет блок с переменными, где мы объявляем константы такие как стим логин и пароль SteamLogin=SteamLogin SteamPass Только нужно указать свои данные.
:: ______________________________________________________________________________________

	SET SteamLogin=SteamLogin SteamPass
	SET DayZBranch=223350
	SET DayZServerPath="C:\Servers\Chernarus\DayZChernarus"
	SET SteamCMDPath="C:\Servers\SteamCMD"
	SET BECPath="C:\Servers\Chernarus\BEC_Chernarus"
	SET DayZModList=(C:\Servers\Chernarus\DayZChernarus\Modlist_Chernarus.txt)
	SET SteamCMDWorkshopPath="C:\Servers\SteamCMD\steamapps\workshop\content\221100"
	SET SteamCMDDelay=3
	setlocal EnableDelayedExpansion
:: ______________________________________________________________________________________
  • Тут наш батник проверяет запущен ли сервер, если нет то идет к функции killServer
:checkServer
tasklist /fi "imagename eq DayZ_Chernarus.exe" 2>NUL | find /i /n "DayZ_Chernarus.exe">NUL
if "%ERRORLEVEL%"=="0" goto checkBEC
goto killServer
  • Тут наш батник проверяет запущен ли BEC, если нет то идет к функции killServer
:checkBEC
tasklist /fi "imagename eq Bec_Chernarus.exe" 2>NUL | find /i /n "BEC_Chernarus.exe">NUL
if "%ERRORLEVEL%"=="0" goto loop
goto startBEC
  • Если всё ок, то идём на круг 15 сек и проверяем заново
:loop
FOR /L %%s IN (15,-1,0) DO (
	cls
	echo Server is running. Checking again in %%s seconds.. 
	timeout 1 >nul
)
goto checkServer
  • Этот блок «Килляет» все и отправляется до фикции поднять сервер
:killServer
taskkill /f /im BEC_Chernarus.exe 1>nul 2>&1
taskkill /f /im DayZ_Chernarus.exe 1>nul 2>&1
taskkill /f /im ModS_Chernarus.exe 1>nul 2>&1
goto updateServer
  • Функция поднять сервер
:updateServer
cls
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Updating Chernarus Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%SteamCMDPath%"
steamcmd.exe +login %SteamLogin% +force_install_dir %DayZServerPath% +"app_update %DayZBranch%" +quit
  • Функция обновление модов
:updateMods
FOR /L %%s IN (%SteamCMDDelay%,-1,0) DO (
	cls
	echo Checking for Chernarus Mods updates in %%s seconds... 
	timeout 1 >nul
)
cls
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Updating Chernarus Mods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd %SteamCMDPath%
for /f "tokens=1,2 delims=," %%g in %DayZModList% do steamcmd.exe +login %SteamLogin% +workshop_download_item 221100 "%%g" +quit
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UPDATE COMPLETE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
for /f "tokens=1,2 delims=," %%g in %DayZModList% do robocopy "%SteamCMDWorkshopPath%\%%g" "%DayZServerPath%\%%h" *.* /mir > nul
for /f "tokens=1,2 delims=," %%g in %DayZModList% do forfiles /p "%DayZServerPath%\%%h" /m *.bikey /s /c "cmd /c copy @path %DayZServerPath%\keys" > nul
set "MODS_TO_LOAD="
for /f "tokens=1,2 delims=," %%g in %DayZModList% do (set "MODS_TO_LOAD=!MODS_TO_LOAD!%%h;")
set "MODS_TO_LOAD=!MODS_TO_LOAD:~0,-1!"
goto startServer
  • Функция Старт сервер
:startServer
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Starting Chernarus Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%DayZServerPath%"
start "Chernarus --->" /MIN ModS_Chernarus.exe -dayzserver=DayZ_Chernarus.exe -cpuCount=4 -instanceId=1 -config=serverDZ.cfg -profiles=profiles -port=2302 -mod=!MODS_TO_LOAD!% -servermod=@KillFeed_ServerMod;@Extended_Radio;@SurvivorMissions -scrAllowFileWrite -noFilePatching -dologs -adminlog -freezecheck
timeout 30 > nul
  • Функция старт BEC
:startBEC
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Starting Chernarus BEC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%BECPath%"
start BEC_Chernarus.exe -f Chernarus.cfg --dsc
timeout 5 > nul
goto checkServer
  • StartChernarus.bat целиком:
@echo off
COLOR 0A
TITLE -= Chernarus =-
:: ______________________________________________________________________________________

	SET SteamLogin=SteamLogin SteamPass
	SET DayZBranch=223350
	SET DayZServerPath="C:\Servers\Chernarus\DayZChernarus"
	SET SteamCMDPath="C:\Servers\SteamCMD"
	SET BECPath="C:\Servers\Chernarus\BEC_Chernarus"
	SET DayZModList=(C:\Servers\Chernarus\DayZChernarus\Modlist_Chernarus.txt)
	SET SteamCMDWorkshopPath="C:\Servers\SteamCMD\steamapps\workshop\content\221100"
	SET SteamCMDDelay=3
	setlocal EnableDelayedExpansion
:: ______________________________________________________________________________________

:checkServer
tasklist /fi "imagename eq DayZ_Chernarus.exe" 2>NUL | find /i /n "DayZ_Chernarus.exe">NUL
if "%ERRORLEVEL%"=="0" goto checkBEC
goto killServer

:checkBEC
tasklist /fi "imagename eq Bec_Chernarus.exe" 2>NUL | find /i /n "BEC_Chernarus.exe">NUL
if "%ERRORLEVEL%"=="0" goto loop
goto startBEC

:loop
FOR /L %%s IN (15,-1,0) DO (
	cls
	echo Server is running. Checking again in %%s seconds.. 
	timeout 1 >nul
)
goto checkServer

:killServer
taskkill /f /im BEC_Chernarus.exe 1>nul 2>&1
taskkill /f /im DayZ_Chernarus.exe 1>nul 2>&1
taskkill /f /im ModS_Chernarus.exe 1>nul 2>&1
goto updateServer

:updateServer
cls
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Updating Chernarus Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%SteamCMDPath%"
steamcmd.exe +login %SteamLogin% +force_install_dir %DayZServerPath% +"app_update %DayZBranch%" +quit

:updateMods
FOR /L %%s IN (%SteamCMDDelay%,-1,0) DO (
	cls
	echo Checking for Chernarus Mods updates in %%s seconds... 
	timeout 1 >nul
)
cls
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Updating Chernarus Mods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd %SteamCMDPath%
for /f "tokens=1,2 delims=," %%g in %DayZModList% do steamcmd.exe +login %SteamLogin% +workshop_download_item 221100 "%%g" +quit
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UPDATE COMPLETE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
for /f "tokens=1,2 delims=," %%g in %DayZModList% do robocopy "%SteamCMDWorkshopPath%\%%g" "%DayZServerPath%\%%h" *.* /mir > nul
for /f "tokens=1,2 delims=," %%g in %DayZModList% do forfiles /p "%DayZServerPath%\%%h" /m *.bikey /s /c "cmd /c copy @path %DayZServerPath%\keys" > nul
set "MODS_TO_LOAD="
for /f "tokens=1,2 delims=," %%g in %DayZModList% do (set "MODS_TO_LOAD=!MODS_TO_LOAD!%%h;")
set "MODS_TO_LOAD=!MODS_TO_LOAD:~0,-1!"
goto startServer

:startServer
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Starting Chernarus Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%DayZServerPath%"
start "Chernarus --->" /MIN ModS_Chernarus.exe -dayzserver=DayZ_Chernarus.exe -cpuCount=4 -instanceId=1 -config=serverDZ.cfg -profiles=profiles -port=2302 -mod=!MODS_TO_LOAD!% -servermod=@KillFeed_ServerMod;@Extended_Radio;@SurvivorMissions -scrAllowFileWrite -noFilePatching -dologs -adminlog -freezecheck
timeout 30 > nul

:startBEC
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Starting Chernarus BEC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
cd "%BECPath%"
start BEC_Chernarus.exe -f Chernarus.cfg --dsc
timeout 5 > nul
goto checkServer

Добавить комментарий

Ваш адрес email не будет опубликован.