pelican-eggs / games-steamcmd

Eggs for game servers that use SteamCMD to install.
MIT License
41 stars 20 forks source link

[Bug]: DayZ persistence does not work #39

Open Tetra2k opened 2 weeks ago

Tetra2k commented 2 weeks ago

Panel Version

1.11.7

Wings Version

1.11.8

Service

-

Modified

No, I did not modify the egg

Expected Behavior

we expect the server to save the current status after a stop

Actual Behavior

0:19:21 --- Termination successfully completed --- 0:19:21 String id 225 is not localized 0:19:21 src/tier1/fileio.cpp (5466) : m_vecRegisteredWriters.Count() == 0 src/tier1/fileio.cpp (5466) : m_vecRegisteredWriters.Count() == 0 src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited src/tier1/fileio.cpp (5528) : CFileWriterThread already exited 0:19:22 Memory should be free now. 0:19:22 149910136 B not deallocated

Steps To Reproduce

Setp 1: Dayz egg install (https://github.com/pelican-eggs/games-steamcmd/blob/2db252b510589e256a2bf130e1e1f749ff4baa60/dayz/egg-pterodactyl-day-z.json) Step 2: restart the server

Install logs

https://pteropaste.com/k08d

SulivanM commented 5 days ago

I have the same issue with pelican egg, i put all but nothing works..

lilkingjr1 commented 4 days ago

Just got a potential lead on this issue. Give me some time to investigate.

lilkingjr1 commented 3 days ago

So... turns out SteamCMD serves different server files for the same DayZ Server App ID depending on if the account used to sign in owns the game (a different App ID) or not. (insert the biggest facepalm ever here)

It appears that downloading it with an account that does not own the game yields a valid serverDZ.cfg template file, but does not provide the required ./mpmissions/ directory or mission files contained within it (this causes loot tables and persistence to not work). Downloading with an account that does own the game yields a valid and filled ./mpmissions/ directory, but also an empty serverDZ.cfg file with no default values in it. I am going to have to (begrudgingly) work on a revised install script that accounts for these two scenarios.

In the meantime, @Tetra2k, could you please manually create a ./mpmissions/ directory, download this official release of the mission files, place the folders dayzOffline.chernarusplus and (optionally) dayzOffline.enoch in the ./mpmissions/ directory, and test to see if persistence works.

KaiAnti commented 3 days ago

hello, I have the same error and have already tried your last message. But unfortunately it didn't help, the error still comes after stopping the server.

as info I have an account with DayZ. I have exchanged all files in ./mpmissions/ folder with the officel release and my serverDZ.cfg file looks like this:

hostname = "-";
password = "-";
passwordAdmin = "-";
enableWhitelist = 0;
maxPlayers = 64;

verifySignatures = 2;
forceSameBuild = 1;
disableVoN = 0;
vonCodecQuality = 20;

disable3rdPerson = 0;
disableCrosshair = 0;
disablePersonalLight = 1;
lightingConfig = 0;

serverTime="SystemTime";    // 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 = 12;
serverNightTimeAcceleration = 1;
serverTimePersistent = 0;
guaranteedUpdates=1;        // Communication protocol used with game server (use only number 1)

loginQueueConcurrentPlayers=5;  // 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=500;       // The maximum number of players that can wait in login queue

instanceId = 1;             // DayZ server instance id, to identify the number of instances per box and their storage folders with persistence files

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)

class Missions
{
    class DayZ
    {
        template="dayzOffline.chernarusplus"; // Mission to load on server startup. <MissionName>.<TerrainName>
                          // Vanilla mission: dayzOffline.chernarusplus
                          // DLC mission: dayzOffline.enoch
    };
};

logFile = "server.log";
steamport = 15005;
steamqueryport = 2305;
adminLogPlayerHitsOnly = 0;
adminLogPlacement = 0;
adminLogBuildActions = 0;
adminLogPlayerList = 0;
disableBaseDamage = 0;
disableContainerDamage = 0;
disableRespawnDialog = 0;
disableRespawnInUnconsciousness = 0;
enableCfgGameplayFile = 0;
networkObjectBatchSend = 10;
networkObjectBatchCompute = 1000;`
hostname = "-";
password = "-";
passwordAdmin = "-";
enableWhitelist = 0;
maxPlayers = 64;

verifySignatures = 2;
forceSameBuild = 1;
disableVoN = 0;
vonCodecQuality = 20;

disable3rdPerson = 0;
disableCrosshair = 0;
disablePersonalLight = 1;
lightingConfig = 0;

serverTime="SystemTime";    // 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 = 12;
serverNightTimeAcceleration = 1;
serverTimePersistent = 0;
guaranteedUpdates=1;        // Communication protocol used with game server (use only number 1)

loginQueueConcurrentPlayers=5;  // 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=500;       // The maximum number of players that can wait in login queue

instanceId = 1;             // DayZ server instance id, to identify the number of instances per box and their storage folders with persistence files

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)

class Missions
{
    class DayZ
    {
        template="dayzOffline.chernarusplus"; // Mission to load on server startup. <MissionName>.<TerrainName>
                          // Vanilla mission: dayzOffline.chernarusplus
                          // DLC mission: dayzOffline.enoch
    };
};

logFile = "server.log";
steamport = 15005;
steamqueryport = 2305;
adminLogPlayerHitsOnly = 0;
adminLogPlacement = 0;
adminLogBuildActions = 0;
adminLogPlayerList = 0;
disableBaseDamage = 0;
disableContainerDamage = 0;
disableRespawnDialog = 0;
disableRespawnInUnconsciousness = 0;
enableCfgGameplayFile = 0;
networkObjectBatchSend = 10;
networkObjectBatchCompute = 1000;

if you need a test server you can contact us and and we can create an account for you.