diff --git a/DayZServerStart/A_Mods/.empty b/DayZServerStart/A_Mods/.empty new file mode 100644 index 0000000..6e5c7be --- /dev/null +++ b/DayZServerStart/A_Mods/.empty @@ -0,0 +1 @@ +放置需要玩家挂载的mod \ No newline at end of file diff --git a/DayZServerStart/A_NeedDel/.empty b/DayZServerStart/A_NeedDel/.empty new file mode 100644 index 0000000..20d035b --- /dev/null +++ b/DayZServerStart/A_NeedDel/.empty @@ -0,0 +1,5 @@ +将需要删除的模组, 放置到这里, 然后重新运行 + +initGamesServer.bat + +就会将对应的模组卸载掉. 并会更新启动脚本. \ No newline at end of file diff --git a/DayZServerStart/A_Profiles/.empty b/DayZServerStart/A_Profiles/.empty new file mode 100644 index 0000000..f1cfe2d --- /dev/null +++ b/DayZServerStart/A_Profiles/.empty @@ -0,0 +1 @@ +模组配置存放目录 \ No newline at end of file diff --git a/DayZServerStart/A_ServerMods/.empty b/DayZServerStart/A_ServerMods/.empty new file mode 100644 index 0000000..a88d661 --- /dev/null +++ b/DayZServerStart/A_ServerMods/.empty @@ -0,0 +1 @@ +纯服务端模组, 模组名字要按照普通模组的文件命名 \ No newline at end of file diff --git a/DayZServerStart/battleye/BEServer_x64_active_40aa.cfg b/DayZServerStart/battleye/BEServer_x64_active_40aa.cfg new file mode 100644 index 0000000..82175aa --- /dev/null +++ b/DayZServerStart/battleye/BEServer_x64_active_40aa.cfg @@ -0,0 +1,12 @@ +RConport 2314 +RConPassword STmvYKpryKunWA0 +RestrictRCon 1 +MaxSetDamagePerInterval 3 1 +MaxSetPosPerInterval 3 1 +MaxAddBackpackCargoPerInterval 1 1 +MaxAddMagazineCargoPerInterval 1 1 +MaxAddWeaponCargoPerInterval 1 1 +MaxCreateVehiclePerInterval 1 1 +MaxDeleteVehiclePerInterval 1 1 +MaxPacketLoss 10 +LogLevel 2 \ No newline at end of file diff --git a/DayZServerStart/battleye/beserver_x64.dll b/DayZServerStart/battleye/beserver_x64.dll new file mode 100644 index 0000000..fb593b6 Binary files /dev/null and b/DayZServerStart/battleye/beserver_x64.dll differ diff --git a/DayZServerStart/battleye/beserver_x64.so b/DayZServerStart/battleye/beserver_x64.so new file mode 100644 index 0000000..4a84e23 Binary files /dev/null and b/DayZServerStart/battleye/beserver_x64.so differ diff --git a/DayZServerStart/bin/jq.exe b/DayZServerStart/bin/jq.exe new file mode 100644 index 0000000..686894a Binary files /dev/null and b/DayZServerStart/bin/jq.exe differ diff --git a/DayZServerStart/config.json b/DayZServerStart/config.json new file mode 100644 index 0000000..99619f7 --- /dev/null +++ b/DayZServerStart/config.json @@ -0,0 +1,7 @@ +{ + "serverPath" : "E:\\SteamLibrary\\steamapps\\common\\DayZServer", + "mpmissions" : "E:\\SteamLibrary\\steamapps\\common\\DayZServerStart\\mpmissions\\dayzOffline.chernarusplus", + "serverCfg" : "E:\\SteamLibrary\\steamapps\\common\\DayZServerStart\\serverDZ.cfg", + "serverPort" : 2302, + "cpuCount" : 4 +} \ No newline at end of file diff --git a/DayZServerStart/initGameServer.bat b/DayZServerStart/initGameServer.bat new file mode 100644 index 0000000..a43c0d9 --- /dev/null +++ b/DayZServerStart/initGameServer.bat @@ -0,0 +1,135 @@ +@echo off +fsutil behavior set disablelastaccess 0 >nul +::CODER BY Mr.Yu POWERD BY iBAT + +cd /d %~dp0 + +set "config=%~dp0config.json" +set "jq=%~dp0bin\jq.exe" + +@REM get dayz game server root path +for /f "delims=" %%i in ('type %config% ^|%jq% -r ".serverPath"') do ( + set serverPath=%%i +) +@REM get dayz missions path +for /f "delims=" %%i in ('type %config% ^|%jq% -r ".mpmissions"') do ( + set mpmissions=%%i +) +@REM get server config file path +for /f "delims=" %%i in ('type %config% ^|%jq% -r ".serverCfg"') do ( + set serverCfg=%%i +) +@REM get game service port +for /f "delims=" %%i in ('type %config% ^|%jq% -r ".serverPort"') do ( + set serverPort=%%i +) +@REM get cpu counts +for /f "delims=" %%i in ('type %config% ^|%jq% -r ".cpuCount"') do ( + set cpuCount=%%i +) + +set "ModPath=A_Mods" +set "ServerModPath=A_ServerMods" +set "ProfilePath=A_Profiles" +set "DelModPath=A_NeedDel" + +if NOT EXIST %ModPath% mkdir %ModPath% +if NOT EXIST %ServerModPath% mkdir %ServerModPath% +if NOT EXIST %ProfilePath% mkdir %ProfilePath% +if NOT EXIST %DelModPath% mkdir %DelModPath% + +echo [Processing need delete modules] +for /f "delims=" %%i in ('dir /a/b/s %DelModPath% ^|findstr ".bikey .bisign"') do ( + Setlocal enabledelayedexpansion + if %%~xi == .bisign ( + set "dbisignName=%%~ni.bisign" + del /f/q "%serverPath%\Addons\!dbisignName!" + echo SignFile [!dbisignName!] was deleted + ) + + if %%~xi == .bikey ( + set "dbikeyName=%%~ni.bikey" + del /f/q "%serverPath%\Keys\!dbikeyName!" + echo KeyFile [!dbikeyName!] was deleted + ) + endlocal +) +echo. + +rd /s/q "%DelModPath%" +mkdir "%DelModPath%" + +set "mpath=" +for /l %%z in (1 1 2) do ( + Setlocal enabledelayedexpansion + if %%z EQU 1 ( + set mpath=%ModPath% + echo [Processing client modules] + ) else ( + set mpath=%ServerModPath% + echo [Processing server modules] + ) + + for /f "delims=" %%i in ('dir /a/b/s !mpath! ^|findstr ".bikey .bisign"') do ( + + if %%~xi == .bisign ( + cd /d %%~dpi + set "cbisignName=%%~ni.bisign" + set "cbisignNamePath=%%~dpni.bisign" + xcopy /y "!cbisignNamePath!" "%serverPath%\Addons" >nul + echo signFile ["!cbisignName!"] update success + ) + + if %%~xi == .bikey ( + cd /d %%~dpi + set "cbikeyName=%%~ni.bikey" + set "cbikeyNamePath=%%~dpni.bikey" + xcopy /y "!cbikeyNamePath!" "%serverPath%\Keys" >nul + echo KeyFile ["!cbikeyName!"] update success + ) + ) + endlocal + echo. +) + +cd /d %~dp0 +set "modsName=" +Setlocal enabledelayedexpansion +for /f "delims=" %%i in ('dir /a:d /b %~dp0%ModPath% ^|findstr /b "@"') do ( + set currPath=%%~dpi%ModPath%\%%i + set modsName=!modsName!!currPath!; +) + +set "serverModsName=" +for /f "delims=" %%i in ('dir /a:d /b %~dp0%ServerModPath% ^|findstr /b "@"') do ( + set currPath=%%~dpi%ServerModPath%\%%i + set serverModsName=!serverModsName!!currPath!; +) + +set "clientMods=-mod=%modsName%" +set "serverMods=-servermod=%serverModsName%" +set "startParameter=-port=%serverPort% -cpuCount=%cpuCount%" +set "otherParameter=-adminlog -dologs -netlog -noFilePatching" +set "profilesPath=-profiles=%~dp0A_Profiles" +set "missionsPath=-mission=%mpmissions%" +set "serverCfgPath=-config=%~dp0serverDZ.cfg" + +echo @echo off > startDayZServer.bat +echo mode con lines=32 cols=50 >> startDayZServer.bat +echo title Server-side monitor >> startDayZServer.bat +echo. >> startDayZServer.bat +echo :setup >> startDayZServer.bat +echo start /wait /high "" "%serverPath%\DayZServer_x64.exe" ^^>> startDayZServer.bat +echo "%serverCfgPath%" ^^>> startDayZServer.bat +echo %startParameter% ^^>> startDayZServer.bat +echo %otherParameter% ^^>> startDayZServer.bat +echo "%profilesPath%" ^^>> startDayZServer.bat +echo "%missionsPath%" ^^>> startDayZServer.bat +echo "%clientMods%" ^^>> startDayZServer.bat +echo "%serverMods%">> startDayZServer.bat +echo goto :setup >> startDayZServer.bat +endlocal +pause +call startDayZServer.bat + + \ No newline at end of file diff --git a/DayZServerStart/killServer.bat b/DayZServerStart/killServer.bat new file mode 100644 index 0000000..a4bf95b --- /dev/null +++ b/DayZServerStart/killServer.bat @@ -0,0 +1,7 @@ +@echo off + +wmic process where name="wmic.exe" get ParentProcessId|( + for /f %%a in ('findstr [0-9]')do taskkill /f /t /fi "pid ne %%a" /im cmd.exe +) + +taskkill /im DayZServer_x64.exe /f \ No newline at end of file diff --git a/DayZServerStart/mpmissions/.empty b/DayZServerStart/mpmissions/.empty new file mode 100644 index 0000000..6d380e0 --- /dev/null +++ b/DayZServerStart/mpmissions/.empty @@ -0,0 +1 @@ +这里放置地图任务文件, 可以从服务端复制过来. \ No newline at end of file diff --git a/DayZServerStart/serverDZ.cfg b/DayZServerStart/serverDZ.cfg new file mode 100644 index 0000000..00f0968 --- /dev/null +++ b/DayZServerStart/serverDZ.cfg @@ -0,0 +1,85 @@ +hostname = "DayZ Server Powered By DcrClub"; // Server name +password = ""; // Password to connect to the server +passwordAdmin = ""; // Password to become a server admin + +BattlEye = 1; +enableCfgGameplayFile = 1; //使用json配置文件的配置 +enableWhitelist = 0; // Enable/disable whitelist (value 0-1) + +maxPlayers = 10; // Maximum amount of players + +verifySignatures = 0; // Verifies .pbos against .bisign files. (only 2 is supported) +forceSameBuild = 1; // When enabled, the server will allow the connection only to clients with same the .exe revision as the server (value 0-1) + +disableVoN = 0; // Enable/disable voice over network (value 0-1) +vonCodecQuality = 20; // Voice over network codec quality, the higher the better (values 0-30) + +disable3rdPerson=0; // Toggles the 3rd person view for players (value 0-1) +disableCrosshair=0; // Toggles the cross-hair (value 0-1) + +disablePersonalLight = 1; // Disables personal light for all clients connected to server +lightingConfig = 0; // 0 for brighter night setup, 1 for darker night setup + +serverTime="2022/3/15/08/00"; // Initial in-game time of the server. "SystemTime" means the local time of the machine. Another possibility is to set the time to some value in "YYYY/MM/DD/HH/MM" format, f.e. "2015/4/8/17/23" . +serverTimeAcceleration=1; // Accelerated Time (value 0-24)// This is a time multiplier for in-game time. In this case, the time would move 24 times faster than normal, so an entire day would pass in one hour. +serverNightTimeAcceleration=1; // Accelerated Nigh Time - The numerical value being a multiplier (0.1-64) and also multiplied by serverTimeAcceleration value. Thus, in case it is set to 4 and serverTimeAcceleration is set to 2, night time would move 8 times faster than normal. An entire night would pass in 3 hours. +serverTimePersistent=1; // Persistent Time (value 0-1)// The actual server time is saved to storage, so when active, the next server start will use the saved time value. + +guaranteedUpdates=1; // Communication protocol used with game server (use only number 1) + +loginQueueConcurrentPlayers=2; // The number of players concurrently processed during the login process. Should prevent massive performance drop during connection when a lot of people are connecting at the same time. +loginQueueMaxPlayers=10; // The maximum number of players that can wait in login queue + +instanceId = 3; // DayZ server instance id, to identify the number of instances per box and their storage folders with persistence files +lootHistory = 1; // How many persistence history files should be kept by instance, number is looped over during save +storeHouseStateDisabled = false; // Disable houses/doors persistence (value true/false), usable in case of problems with persistence +storageAutoFix = 1; // Checks if the persistence files are corrupted and replaces corrupted ones with empty ones (value 0-1) + +respawnTime = 3; // Sets the respawn delay (in seconds) before the player is able to get a new character on the server, when the previous one is dead + +maxPing= 200; // Max ping value until server kick the user (value in milliseconds) + +timeStampFormat = "Short"; // Format for timestamps in the .rpt file (value Full/Short) +logAverageFps = 0; // Logs the average server FPS (value in seconds), needs to have ''-doLogs'' launch parameter active +logMemory = 0; // Logs the server memory usage (value in seconds), needs to have the ''-doLogs'' launch parameter active +logPlayers = 0; // Logs the count of currently connected players (value in seconds), needs to have the ''-doLogs'' launch parameter active +logFile = "ServerLogs\server_console.log"; // Saves the server console log to a file in the folder with the other server logs + +adminLogPlayerHitsOnly = 1; // 1 - log player hits only / 0 - log all hits ( animals/infected ) +adminLogPlacement = 1; // 1 - log placement action ( traps, tents ) +adminLogBuildActions = 1; // 1 - log basebuilding actions ( build, dismantle, destroy ) +adminLogPlayerList = 1; // 1 - log periodic player list with position every 5 minutes + +enableDebugMonitor = 0; // shows info about the character using a debug window in a corner of the screen (value 0-1) + +steamQueryPort = 2305; // defines Steam query port, should fix the issue with server not being visible in client server browser + +allowFilePatching = 0; // if set to 1 it will enable connection of clients with "-filePatching" launch parameter enabled + +simulatedPlayersBatch = 10; // 20, Set limit of how much players can be simulated per frame (for server performance gain) + +multithreadedReplication = 1; // enables multi-threaded processing of server's replication system + // number of worker threads is derived by settings of jobsystem in dayzSettings.xml by "maxcores" and "reservedcores" parameters (value 0-1) +speedhackDetection = 3; // enable speedhack detection, values 1-10 (1 strict, 10 benevolent, can be float) + +networkRangeClose = 20; // network bubble distance for spawn of close objects with items in them (f.i. backpacks), set in meters, default value if not set is 20 +networkRangeNear = 150; // network bubble distance for spawn (despawn +10%) of near inventory items objects, set in meters, default value if not set is 150 +networkRangeFar = 500; // network bubble distance for spawn (despawn +10%) of far objects (other than inventory items), set in meters, default value if not set is 1000 +networkRangeDistantEffect = 2500; // network bubble distance for spawn of effects (currently only sound effects), set in meters, default value if not set is 4000 + +defaultVisibility=1375; // highest terrain render distance on server (if higher than "viewDistance=" in DayZ client profile, clientside parameter applies) +defaultObjectViewDistance=1375; // highest object render distance on server (if higher than "preferredObjectViewDistance=" in DayZ client profile, clientside parameter applies) + +disableBaseDamage = 0; // set to 1 to disable damage/destruction of fence and watchtower +disableContainerDamage = 0; // set to 1 to disable damage/destruction of tents, barrels, wooden crate and seachest +disableRespawnDialog = 1; // set to 1 to disable the respawn dialog (new characters will be spawning as random) + +class Missions +{ + class DayZ + { + template="dayzOffline.chernarusplus"; // Mission to load on server startup. . + // Vanilla mission: dayzOffline.chernarusplus + // DLC mission: dayzOffline.enoch + }; +}; \ No newline at end of file diff --git a/README.md b/README.md index 10c6dd7..3de8344 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # DayZScripts -仓库中存放一些DayZ的服务端用脚本, 或者玩家端使用的脚本. \ No newline at end of file +仓库中存放一些DayZ的服务端用脚本, 或者玩家端使用的脚本. + +## 目录说明: +- DayZServerStart DayZ开服脚本. \ No newline at end of file