SmartlyDressedGames / Unturned-3.x-Community

Community portion of the Unturned-3.x repo. If you have access to the source code you can find it here:
https://github.com/SmartlyDressedGames/Unturned-3.x/
88 stars 18 forks source link

Server disconnects players if a certain Barricades.dat isn't present. #522

Closed ndv400 closed 5 years ago

ndv400 commented 5 years ago

This is a rather weird issue that I have no idea how to fix. Actually, it prevents me from wiping my server altogether. So if I were to delete the Barricades.dat from Level\{mapname} from this particular workshop map of mine: https://steamcommunity.com/sharedfiles/filedetails/?id=1568202566 Then the server throws this error upon loading: [1/9/2019 10:51:03 PM] [Info] Loading level: 8% [1/9/2019 10:51:05 PM] [Info] Loading level: 16% [1/9/2019 10:51:06 PM] [Info] Loading level: 25% [1/9/2019 10:51:07 PM] [Info] Loading level: 33% [1/9/2019 10:51:08 PM] [Info] Loading level: 41% [1/9/2019 10:51:08 PM] [Info] Loading level: 50% [1/9/2019 10:51:08 PM] [Info] Loading level: 58% [1/9/2019 10:51:08 PM] [Info] Loading level: 66% [1/9/2019 10:51:08 PM] [Info] Loading level: 75% [1/9/2019 10:51:08 PM] [Info] Loading level: 83% [1/9/2019 10:51:08 PM] [Info] Loading level: 91% [1/9/2019 10:51:08 PM] [Info] Loading level: 100% [1/9/2019 10:51:08 PM] [Error] ArgumentException: The Object you want to instantiate is null. - UnityEngine.Object.CheckNullArgument (object,string) <0x00047> UnityEngine.Object.Instantiate<UnityEngine.GameObject> (UnityEngine.GameObject) <0x00025> SDG.Unturned.BarricadeTool.getBarricade (UnityEngine.Transform,byte,ulong,ulong,UnityEngine.Vector3,UnityEngine.Quaternion,uint16,byte[],SDG.Unturned.ItemBarricadeAsset) <0x00068> SDG.Unturned.BarricadeManager.spawnBarricade (SDG.Unturned.BarricadeRegion,uint16,byte[],UnityEngine.Vector3,byte,byte,byte,byte,ulong,ulong,uint) <0x00249> (wrapper dynamic-method) SDG.Unturned.BarricadeManager.load_Patch2 () <0x008af> SDG.Unturned.BarricadeManager.onLevelLoaded (int) <0x00229> SDG.Unturned.Level/<init>c__Iterator0.MoveNext () <0x00f31> UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator,intptr) <0x00058> After this error no player is able to connect as they get timed out. The server is still responsive to commands, however. If I don't remove the barricades file, the server works fine. I've attached the Barricades.dat file below.

Barricades.zip

No idea what could be causing this. There are no other significant errors in any log. Any help?

SDGNelson commented 5 years ago

Judging from the .load_Patch2 I'd guess that a plugin is injecting some code into the method that doesn't work properly without the Barricades.dat file. Easiest option might be to copy the Barricades.dat from an empty map instead

ndv400 commented 5 years ago

Hmm, I just tried to boot a freshly installed server on my PC without any plugins/modules/rocketmod and it still gives me the same error. Logs attached.

output_log.txt

Server_My_server2.log

SDGNelson commented 5 years ago

Thanks! In the vanilla code it looks like it's failing to create the server-side objects. For the next update I've adjusted them to return a temporary empty object, however the game should already be logging which assets are missing a gameobject as part of startup. (Most likely mod items are installed, but a few are missing the server-side versions)

ndv400 commented 5 years ago

@SDGNelson, hasn't been fixed, sadly :( Still can't wipe my server.

Desktop.zip

SDGNelson commented 5 years ago

Taking a look at the output_log.txt in Desktop.zip it appears to be running the old 3.27 version on Unity 5. Is it still happening for you in 3.28?