Jump to content

UdderlyEvelyn

Member
  • Posts

    21
  • Joined

  • Last visited

Posts posted by UdderlyEvelyn

  1. It would seem that map_sand.bin, which stores the sandbox settings, is used if present on a save, yet not necessarily updated in MP when the user joins the server. This means old settings can be retained, and it likely means that you could hex edit the file to change settings and cheat.

     

    It seems that the client won't get new settings unless they delete map_sand.bin from their save folder when this happens, whatever conditions it happens under. When this is the case, there are the following implications which I have personally experienced:

     

    • Old settings are persistently used on a client even when the server's sandbox options have changed from these settings. Turned a feature on? Too bad, it's off on this client. Changed a value? Too bad, it's the old value still for this client.
    • If this happens to an admin account and that user goes to edit the sandbox options, it will overwrite existing options with those from map_sand.bin upon saving. It will show these in the sandbox options screen as if those settings were never changed, though if you go to look at the file on the server the values are in fact the newer values (unless that admin hits save).

     

    I first posted this on Discord in late January here: https://discord.com/channels/136501320340209664/1067210244159193108

     

    Was told it wouldn't necessarily get attention there on 3/8 but between being sick and being busy I have not had a chance to post it here until now. The Discord thread has links to places where others encountered this issue and/or resolved it by deleting the map_sand.bin file as I describe being the issue above. It also has other prominent modders sharing concerns having also seen the issue.

  2. Very much agree, and if it is a security feature why does it not have a toggle like other anti-cheat options? I have zero interest in this feature and now my 100+ players are suffering with a broken map mod, a broken vehicle claim player list, broken walkie talkie communication without visiting a player in person (I know Spiffo insists that you made no changes to this, but without any changes on my end it broke with 41.78.12 and remains broken, reproduced with no mods and a fresh save), and more all since 41.78.12. All sorts of things broken because of it, making me run around troubleshooting instead of playing the game or making new mods and content for the community.

     

    I really don't mean to be rude, but it seems like a really bad idea to silently roll out changes like this, particularly at the end of a patch cycle. If it had been clearly noted in the changelog I would have tested that unstable version and I'm sure others would have, but we have to prioritize and nothing in that changelog made me think breaking changes were included. I also really don't understand how this suddenly became a critical issue in need of fixing at the end of a patch cycle when it's been this way for the entire time and I've only seen someone hack the game two times in my year or more of serious online play.

     

    Frankly there are much larger security holes like being able to decompile, modify the java, recompile, and join a server with any code you like. This includes enabling debug mode on someone's server without admin privileges and running whatever code you like. I'm not sure why the ability to quickly go between players to do something like kill them is somehow a big threat. I'm not personally even worried about that, though, because that's what backups are for and if it happens it happens. In fact I have a repository with added security features via modifying the java on the server end and I haven't bothered rolling them out because it isn't worth the hassle of having to recompile when the game is updated to me at this time.

     

    I think I speak for a large portion of the community when I say we're far more concerned about being able to enjoy a stable experience without wrenches being thrown into things like this, and to be able to modify the game without the carpet being pulled out from under us with little-to-no warning. I realize there is also a portion of the community that is very concerned about hackers and cheating because it's more PVP focused and largely vanilla, but I would ask that you consider that this is not everyone who plays your game.

     

    We really appreciate what you do - we love the game. I've spent about 2400 hours in it so far. That said, it is very frustrating when our experiences with the game are marred by things like this. I hope you don't take my bluntness here as being overly entitled or rude, I really don't mean it that way, but I feel I'd do you a disservice by not speaking up at this point as dozens of users are frustrated in my community alone, and I know mine can't be the only one.

  3. That mean zombie animals are on the table? I've planned to do zombie cows if you don't, but if you do that'll save me some work. xD

     

    Farm stuff looks great!

  4. Lua checksum system is not case sensitive with filenames, but OS can be and it causes a mis-targeted "File doesn't exist on the client" for a file that does exist from an unrelated mod. In this case my mod UdderlyRP had a file called BetterFlashlights_Distributions.lua in media/lua/server/items and had other files in media/lua/server/Items (note the capital 'I'), and it reported media/lua/server/Items/CBX_MedBagLootDistributions.lua from ClothesBox Redux (2847911733).. This happens with a Linux server and Windows OR Linux clients. I tried moving the file from items to Items and it still overrides the lua file it was intended to in another mod (UdderlyRP is my server mod that tweaks things), so due to this I was able to surmise the lua system doesn't care about capitalization. I'm not sure of the precise nature of the problem as I did not dig into the Java end, I leave that to you. This is at least one cause of the issue I reported here:

    Even if you don't fix the lua system's response to this sort of situation, it would be greatly appreciated if you could at least fix the way it reports the error to avoid misleading server operators, players, and modders.

     

    Thanks.

  5. This still occurs as of 41.77.4, and yes mods are enabled. The error occurs in vanilla code on the java side, though, so I'm not sure how it could be mod-related - what kind of mod could make the square a zombie is at null?

     

    There's reports of this error online as far back as December 2021.. In order to avoid clients being booted to the menu it would be helpful if a check for whether a square is null were in place.

     

    Edit: Is this item in the changelog referencing this bug?

    - Fixed NullPointerException in bThump animation variable when the object isn't loaded.
  6. This does not happen every single time I try this but when it does, it is reproducible back to back without any failure. Nothing changes to make it happen, and nothing changes to make it stop. If I close the client it will work and if I then leave it on and restart the server it will fail. It gives this error message (some previous lines included for context):

     

    LOG  : General     , 1665368097678> 5,344,655,451> <End of map-folders list>
    LOG  : General     , 1665368097711> 5,344,655,484> IsoMetaGrid.Create: finished scanning directories in 0.044 seconds
    LOG  : General     , 1665368097711> 5,344,655,484> IsoMetaGrid.Create: begin loading
    LOG  : General     , 1665368097712> 5,344,655,485> LuaEventManager: adding unknown event "OnPreDistributionMerge"
    ERROR: General     , 1665368097713> 5,344,655,485> GameServer.main> Exception thrown java.lang.NullPointerException: Cannot invoke "se.krka.kahlua.vm.KahluaTable.rawget(Object)" because "zombie.Lua.LuaManager.env" is null at LuaEventManager.AddEvent line:417. Message: Exception Thrown
    ERROR: General     , 1665368097713> 5,344,655,486> DebugLogStream.printException> Stack trace:
    java.lang.NullPointerException: Cannot invoke "se.krka.kahlua.vm.KahluaTable.rawget(Object)" because "zombie.Lua.LuaManager.env" is null
    	at zombie.Lua.LuaEventManager.AddEvent(LuaEventManager.java:417)
    	at zombie.Lua.LuaEventManager.checkEvent(LuaEventManager.java:47)
    	at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:60)
    	at zombie.iso.IsoWorld.init(IsoWorld.java:2289)
    	at zombie.network.GameServer.main(GameServer.java:703)
    LOG  : General     , 1665368097713> 5,344,655,486> Server Terminated.
    src/tier1/fileio.cpp (5164) : m_vecRegisteredWriters.Count() == 0
    src/tier1/fileio.cpp (5164) : m_vecRegisteredWriters.Count() == 0

     

    I am running many mods, but these mods work fine together and do not stop the server from starting.. unless the client is open on the same machine. It's very odd! I do this because I am a modder and server operator and this is how I test both my mods and other mods in concert with one another before pushing them to live. The mod that is triggering OnPreDistirbutionMerge content I believe is More Loot Settings, but it doesn't really matter because it will do it with whatever event code calls first, probably even unmodded. After not being able to start the server with the client open for an hour or so now I suddenly can - the problem is intermittent and seemingly arbitrary but probably has to do with the state of the client since the server is being freshly started whenever the issue comes up. I think what ends up changing it is at some point I restart the client and then it works fine even if I start the client back up *first*.

  7. Found a way to trigger a world dictionary error, this should be the reproduction steps:

    - Install a mod that adds an item.
    - Override that item in another mod that changes a few stats on it.
    - Copy that mod to a new mod ID, and try to load the world with the new mod ID instead of the old one (or I suppose just change the mod ID of the original copy).

     

    This was in testing for me on a local dedicated server, so not a huge issue, but this could ruin someone's day/save sometime. For me, today, I'll just make a new world on the test server, though.

     

    LOG  : General     , 1665190404351> 0> WorldDictionary: Checking dictionary...
    LOG  : General     , 1665190404370> 0> === Dictionary Item Debug Print ===
    registryID = 5482,
    fulltype = "Dislaik.UpperLegs_LegBag",
    modID = "UdderlyRPTesting",
    existsAsVanilla = false,
    isModded = true,
    obsolete = false,
    removed = false,
    isModdedOverride = 0,
    ===================================
    
    ERROR: General     , 1665190404370> 0> java.lang.RuntimeException: Cannot override modID. ModID=UdderlyRPTesting
    ERROR: General     , 1665190404371> 0>     at zombie.scripting.objects.Item.setModID(Item.java:3357)
    ERROR: General     , 1665190404371> 0>     at zombie.world.DictionaryDataClient.parseCurrentItemSet(DictionaryDataClient.java:37)
    ERROR: General     , 1665190404371> 0>     at zombie.world.WorldDictionary.init(WorldDictionary.java:213)
    ERROR: General     , 1665190404371> 0>     at zombie.iso.IsoWorld.init(IsoWorld.java:2430)
    ERROR: General     , 1665190404371> 0>     at zombie.gameStates.GameLoadingState$1.runInner(GameLoadingState.java:268)
    ERROR: General     , 1665190404371> 0>     at zombie.gameStates.GameLoadingState$1.run(GameLoadingState.java:225)
    ERROR: General     , 1665190404371> 0>     at java.base/java.lang.Thread.run(Unknown Source)
    LOG  : General     , 1665190404371> 0> WorldDictionary: Warning: error occurred loading dictionary!
    ERROR: General     , 1665190404372> 0> ExceptionLogger.logException> Exception thrown zombie.world.WorldDictionaryException: WorldDictionary: Cannot load world due to WorldDictionary error. at WorldDictionary.init line:255.
    ERROR: General     , 1665190404372> 0> DebugLogStream.printException> Stack trace:
    zombie.world.WorldDictionaryException: WorldDictionary: Cannot load world due to WorldDictionary error.
        at zombie.world.WorldDictionary.init(WorldDictionary.java:255)
        at zombie.iso.IsoWorld.init(IsoWorld.java:2430)
        at zombie.gameStates.GameLoadingState$1.runInner(GameLoadingState.java:268)
        at zombie.gameStates.GameLoadingState$1.run(GameLoadingState.java:225)
        at java.base/java.lang.Thread.run(Unknown Source)

     

  8. ERROR: General     , 1663945464480> 6,878,750,020> ExceptionLogger.logException> Exception thrown java.lang.NullPointerException: Cannot invoke "zombie.iso.IsoGridSquare.getX()" because "this.square" is null at IsoObject.getX line:3023.
    ERROR: General     , 1663945464480> 6,878,750,020> DebugLogStream.printException> Stack trace:
    java.lang.NullPointerException: Cannot invoke "zombie.iso.IsoGridSquare.getX()" because "this.square" is null
    	at zombie.iso.IsoObject.getX(IsoObject.java:3023)
    	at zombie.characters.IsoZombie.lambda$registerVariableCallbacks$12(IsoZombie.java:565)
    	at zombie.core.skinnedmodel.advancedanimation.AnimationVariableSlotCallback.getValue(AnimationVariableSlotCallback.java:34)
    	at zombie.core.skinnedmodel.advancedanimation.AnimationVariableSlotCallbackBool.getValueString(AnimationVariableSlotCallbackBool.java:49)
    	at zombie.core.skinnedmodel.advancedanimation.AnimationVariableSource.getVariableString(AnimationVariableSource.java:292)
    	at zombie.characters.IsoGameCharacter.getVariableString(IsoGameCharacter.java:13614)
    	at zombie.characters.action.conditions.CharacterVariableCondition.resolveValue(CharacterVariableCondition.java:247)
    	at zombie.characters.action.conditions.CharacterVariableCondition.passes(CharacterVariableCondition.java:279)
    	at zombie.characters.action.ActionTransition.passes(ActionTransition.java:138)
    	at zombie.characters.action.ActionContext.evaluateCurrentStateTransitions(ActionContext.java:157)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.characters.action.ActionContext.updateInternal(ActionContext.java:78)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.characters.action.ActionContext.update(ActionContext.java:66)
    	at zombie.characters.IsoGameCharacter.postUpdateInternal(IsoGameCharacter.java:12046)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.characters.IsoGameCharacter.postupdate(IsoGameCharacter.java:12025)
    	at zombie.characters.IsoZombie.postUpdateInternal(IsoZombie.java:2103)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.characters.IsoZombie.postupdate(IsoZombie.java:2095)
    	at zombie.MovingObjectUpdateSchedulerUpdateBucket.postupdate(MovingObjectUpdateSchedulerUpdateBucket.java:97)
    	at zombie.MovingObjectUpdateScheduler.postupdate(MovingObjectUpdateScheduler.java:185)
    	at zombie.CollisionManager.resolveContactsInternal(CollisionManager.java:411)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.CollisionManager.ResolveContacts(CollisionManager.java:236)
    	at zombie.iso.IsoWorld.updateInternal(IsoWorld.java:3482)
    	at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
    	at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
    	at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
    	at zombie.util.Lambda.capture(Lambda.java:130)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
    	at zombie.iso.IsoWorld.update(IsoWorld.java:3407)
    	at zombie.gameStates.IngameState.updateInternal(IngameState.java:1657)
    	at zombie.gameStates.IngameState.update(IngameState.java:1373)
    	at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:101)
    	at zombie.GameWindow.logic(GameWindow.java:297)
    	at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
    	at zombie.GameWindow.frameStep(GameWindow.java:764)
    	at zombie.GameWindow.run_ez(GameWindow.java:680)
    	at zombie.GameWindow.mainThread(GameWindow.java:494)
    	at java.base/java.lang.Thread.run(Unknown Source)

    This doesn't happen with any consistency, only at random, but it seems once in a while there's somehow no square for the IsoZombie. I've experienced this on all versions from 41.71 and up - not sure if it ever happened prior but I don't recall it.

  9. This has now occurred to another user who has no such known connectivity issue. They logged out and when they went to log back in it prompted them to make a new character. Another user who was able to get in just fine reported that the first was in their car and that the car would not move.

     

    This user's report was a bit inaccurate. They apparently were not seen by the other player to be in a vehicle it just said the seat was occupied, and they apparently logged in with the wrong username. Users, eh? lol..

     

    Can't seem to delete posts so I've striked it through.. The original post is still relevant, that situation was bad and should not occur.

  10. My internet is out right now, and we are using a phone hotspot, so our connection is abnormally unstable and ping spikes to 500ms or 2000ms at random once in a while. One day when I finished playing on my server, I logged out as normal, PZ no longer running. The next day I logged in and was prompted to create a new character. Sometimes losing connection while joining can do this, so I hit back, repeated the attempt, it kept doing this. I looked in players.db and I was dead somehow. I edited players.db and set myself to not be dead, and when I joined I had almost every negative moodle maxed out and low health, and instantly died.

     

    At first I was confused, I thought this had something to do with laggy disconnection but thought it was more of a corruption or glitch issue. However, tonight when I quit out I then had a server restart, and I saw the server log reported me disconnecting even though I'd been gone for some half an hour. I looked further up in the log and it never showed me disconnect when I actually did. Not much to show you due to the nature of the problem.

  11. On my server (UdderlyRP) I have an incredibly small test group whom I do not have much control over, so forgive me that I cannot be 100% certain, but I think that the spontaneous reboots on 41.76 servers are caused by players who are still on 41.73 attempting to join. For them it gets stuck "Connecting" or "Contacting" instead of a P2P error sometimes, and then the server restarts after choking on the connection attempt. Attached is a tarball of two SIGSEGVs which I think are from this phenomena.

     

    I am in contact with the Valhalla Community staff and they were able to confirm this on their server. I will hand them the URL to this thread so they can add any evidence they have of the phenomena.

    server-files.tar.gz

    1. Could you expose the Vehicles.DB to Lua in some way, at least to get a list? It is useful to get a list of what vehicles are in a cell beyond what is currently loaded in. It would also be useful to have the accompanying functionality to check if it's loaded in, and force a vehicle to then load in if it is not. I would primarily be using this to get a count of vehicles in a cell and removing vehicles if they have not been interacted with in too long, but this would enable a lot of car-related dynamic features to run faster and be more reliable. I would hope this would be a relatively simple thing to implement that you wouldn't mind adding?
    2. I posted this as a separate thread without noticing this thread, so I'll reiterate this one: scripts need a syntax checking pass. I've lost dozens of hours to equals-instead-of-semicolon, missing bracket, and "Item" instead of "item" being overlooked. I'm sure this happens to many others too.
    3. When you override a recipe, it only applies to the first recipe with that name. That makes sense.. but how do you affect any further recipes with that name? Perhaps a syntax that lets you affect all recipes with a given name, or filter down by some other property such as ingredient or result would help. At present the only way to do this is to loop through every recipe and check for the name, and if it's the one you want, then do what you want to do to it in a lua script at load-time. If multiple mods do this, imagine how many times all the recipes are being looped through! Another way to fix this would be to give us a lua-exposed function capable of doing what ScriptManager:getRecipe(name) does, but capable of returning a table/array of recipes instead of just one - that way we can act on all of them without looping through everything at all. Further, it would be nice if there were a method to remove a recipe outright after it has been loaded in so that I don't have to set IsHidden to true and NeedToBeLearn to true to effectively remove them (thus at runtime less of code having to run through recipes that are not relevant).
  12. I keep losing hours of my day, every day, to the script system not having syntax checking to alert me of errors. The game hangs or silently misbehaves instead. A simple scan through the file to verify all brackets have corresponding closing brackets, and that ":", ";", ",", and "=" are used in appropriate circumstances, keyword spelling and validity (e.g., did you put "Item" instead of "item") and maybe even if a property/field (whatever term you like) exists on a type (item, recipe, etc.) would save thousands of hours collectively across the modding community per day. Bonus points if it can tell you what line a problem is on and in what file.

     

    I'm losing so many hours to this that I might need to just write my own syntax checking tool to pass things through when mystery problems occur.

  13. Yeah I did that, every file exists in both places and is the same size now and yet it still says the first file of the first mod, alphabetically, is missing on the client. I understand something might have a bit flipped or something, it's possible, but I've reinstalled all mods on both ends and it persists. Either way, I'm confident that the file it's pointing to is not an issue as it has the exact same contents and is present on both ends, and then if I remove that mod it points to each one alphabetically down the list. Something in the system that reports what's wrong in this scenario is broken.

     

    Edit: It's not alphabetical, the ones it reports are in alphabetical order of one another but it isn't just every mod id alphabetically, trying to determine order.

     

    Edit 2: Was a few things, the Boots Expanded mod was triggering this, as well as a mod in my Zomboid\mods folder which started reporting after the boot mod was removed. The game persistently kept telling me random other mods were the problem until I added things bit by bit and narrowed it down to the boot mod. Whatever is preventing the game from telling you the real culprit is the bug I am reporting with this thread, if that is unclear.

  14. I had problems with tsarslib but continue to have issues after fixing that particular issue (retained file on server, it seems steam workshop does not delete files that no longer exist in a mod but PZ cares if it's on the server but not the client).

     

    Minimal Display Bars also looks like it stores its settings in lua files in the mod folder which would have course cause mismatches, I reported this to them and removed it.

     

    I've tested after dealing with those and it still throws an error pointing at that mechanics sounds mod that is alphabetically first yet present on both ends.

     

    I performed an exhaustive diff between client and server workshop folders and after dealing with anything including the aforementioned it still reports that that script is missing on the client, even though every file is present and the same size on both ends.

     

    Edit: Still working on this (1 hour after original post, been working on it nonstop for the past 3 days now), some folders display a different size even though contents are identical and each file within is the same size.. That's about the only thing I can find that differs and I'm not sure what it means.

  15. 6 hours ago, Beard said:

    Can you try loading just that one problematic mod and check if you still get the error?

     

    Yep works just fine, no error.

     

    Edit: I was starting to wonder if maybe it's just misreporting which mod is an issue, and someone else posted on the PZ Discord (https://discord.com/channels/136501320340209664/919609757168468028/1013190091130278040) about this being the case for them. I'll poke through my mods (which will.. take some time..) but I guess that's one avenue to look at for the problem in the Java - perhaps just misattribution of which file/mod is to blame. Would save many hours if it reports properly if so, hah!

     

    By the way, thank you tons for making the map_zone.bin size limit higher. Makes all the difference in the world for my server. <3

     

    Edit 2: Happened to be tsarslib in this case - definitely it reports the wrong mods/files under at least some circumstances.

  16. I'm familiar with this behavior, it's been my assumption that it is intended, personally. It only happens when someone who isn't authorized is in a safehouse with the invisible walls disabled ("allow tresspass"). It's my understanding that this is the security method for the safehouses without preventing entry, and that it'd be better if certain actions were blacklisted instead like opening containers and grabbing and picking tiles up, etc.. I've considered making a mod for this myself with a configurable list of context options that would be disallowed or allowed for mod support.

     

    Edit: I believe if you allow "stealing" from safehouses then the context menu is enabled, by the way.

  17. Freshly installed set of mods on a server and a client, verified file exists on both ends. Client joins server, somehow fails to find the file and the server kicks the client because the file can't be found. It reports this for every installed mod in alphabetical order if you remove one it just goes to the next. It always seems to be a script file rather than a lua file, but I'm not sure if that's just due to the order of files loaded - it probably is, but I don't know for sure.

     

    I suspect this has to do with the total number of mods installed and hitting some kind of buffer limit somewhere. I took it upon myself to locate it to confirm since the output of the NetChecksum class is relatively minimal, and poked around in a decompile, but I'm not familiar enough with the codebase to locate it and decided it would be more efficient to just report it as-is.

     

    I run a lot of mods on my server (326 at present, many are tiny QOL things or fixes, it's not as crazy as it sounds), and we're planning to launch around the end of the month but DoLuaChecksum has had to be off during testing. I wanted to debug it and enable it before release, but it's looking like that isn't possible.

     

    I realize my number of mods is probably an extreme case, but less extreme cases seem to run into the issue as well and have to end up removing mods that have no actual issue to resolve, just the game failing to find a script that again, is present.

     

    Here's an example case of the log:

    [26-08-22 22:16:20.243] LOG  : General     , 1661566580243> 0> NetChecksum: send total checksum.
    [26-08-22 22:16:20.492] LOG  : General     , 1661566580492> 0> NetChecksum: total checksum lua=false script=false.
    [26-08-22 22:16:20.492] LOG  : General     , 1661566580492> 0> NetChecksum: send group checksums 0-9.
    [26-08-22 22:16:20.631] LOG  : General     , 1661566580631> 0> NetChecksum: group checksum 0 match=true.
    [26-08-22 22:16:20.631] LOG  : General     , 1661566580631> 0> NetChecksum: send group checksums 10-19.
    [26-08-22 22:16:20.702] ERROR: General     , 1661566580702> 0> IsoMetaGrid$MetaGridLoaderThread.loadCell> duplicate RoomDef.metaID for room at 8705,17649,1.
    [26-08-22 22:16:20.705] ERROR: General     , 1661566580705> 0> IsoMetaGrid$MetaGridLoaderThread.loadCell> duplicate RoomDef.metaID for room at 7723,17134,0.
    [26-08-22 22:16:20.706] ERROR: General     , 1661566580706> 0> IsoMetaGrid$MetaGridLoaderThread.loadCell> duplicate RoomDef.metaID for room at 7719,17127,1.
    [26-08-22 22:16:20.708] LOG  : General     , 1661566580708> 0> NetChecksum: group checksum 10 match=true.
    [26-08-22 22:16:20.708] LOG  : General     , 1661566580708> 0> NetChecksum: send group checksums 20-29.
    [26-08-22 22:16:20.808] LOG  : General     , 1661566580808> 0> NetChecksum: group checksum 23 match=false.
    [26-08-22 22:16:20.808] LOG  : General     , 1661566580808> 0> NetChecksum: send file checksums 23.
    [26-08-22 22:16:20.947] LOG  : General     , 1661566580947> 0> 1661566580947> znet: Java_zombie_core_raknet_RakNetPeerInterface_disconnect.
    [26-08-22 22:16:20.947] LOG  : General     , 1661566580947> 0> RakNetPeerInterface.connectionStateChangedCallback state=Disconnecting message= thread=Thread[GameLoadingThread,5,Workers].
    [26-08-22 22:16:20.947] WARN : General     , 1661566580947> 0> ConnectionManager.log> Force disconnect [checksum-File doesn't exist on the client:
    media/scripts/AdminMoreTiles.txt
    Z:\home\evelyn\.local\share\Steam\steamapps\workshop\content\108600\2711526629\mods\Admin More Tiles\media\scripts\AdminMoreTiles.txt].

    That's from the Windows build running on wine but it happens on a native Win11 client as well. In case the space in the path makes you wonder, the next mod that pops up after this one does not have spaces, so that isn't it.

     

    Here's the complimentary bit from the server (might not be the same kick I was restarting it and removing things to see what was going on):

    [27-08-22 01:32:57.853] LOG  : General     , 1661563977853> 4,497,263,393> User Ducky is trying to connect..
    [27-08-22 01:32:57.854] DEBUG: Multiplayer , 1661563977854> 4,497,263,393> GameServer.receiveLogin             > User Ducky ping 55 ms.
    [27-08-22 01:32:58.016] LOG  : Network     , 1661563978016> 4,497,263,556> Connected new client Ducky ID # 0 and assigned DL port 27176.
    [27-08-22 01:34:19.656] LOG  : General     , 1661564059656> 4,497,345,196> NetChecksum: PacketTotalChecksum lua=false script=false.
    [27-08-22 01:34:19.657] LOG  : General     , 1661564059657> 4,497,345,196> user Ducky will be kicked because Lua/script checksums do not match.
    [27-08-22 01:34:20.567] LOG  : General     , 1661564060567> 4,497,346,107> 1661564060567> znet: Connection closed: reason=1 port=1.
    [27-08-22 01:34:20.568] LOG  : General     , 1661564060568> 4,497,346,107> 1661564060568> znet: Disconnecting client #0 SteamID=76561198157362692.
    [27-08-22 01:34:20.968] LOG  : General     , 1661564060968> 4,497,346,507> 1661564060968> znet: OnValidateAuthTicketResponse response=6 SteamID=76561198157362692.
    [27-08-22 01:34:23.572] LOG  : General     , 1661564063572> 4,497,349,112> 1661564063572> znet: Finally disconnected client 76561198157362692.

    If I remove "Admin More Tiles" then "AFTAANSNS" becomes the problem, etc..

     

    Again, I must stress that this happens to any/every random mod in the list, and that the file(s) in question are present and identical on both ends.

  18. Version: 41.71
    Mode: MP/Dedicated
    Mods: Many mods, but it doesn't matter which as long as the total number of cells affected by the map mods hits a certain amount, so it's not technically "mod-specific".
    Old/New Save: Happens with old or new once you cross the line of how many cells.

     

    Reproduction:
    1. Install lots of map mods, particularly ones that add many cells to make it easier to hit the limit like Slocan Lake, Fort Knox, and Eerie Country along with a bunch more.
    2. Run the server (this part works fine).
    3. Join with any client, you will be greeted with a blank screen that says "Quit to Desktop" at the bottom on a button (the error has no translation so appears blank). The actual error is that map_zone.bin can't be saved, and the log preceding it tells you it's because the heap has been overflowed.

     

    If you check the log on client *or* server it will give you more detail about the error, here's an example of a local dedicated server kicking me for it:

    ERROR: General     , 1658611037615> 2,414,282,505> java.nio.BufferOverflowException
    ERROR: General     , 1658611037615> 2,414,282,505>     at java.base/java.nio.Buffer.nextPutIndex(Unknown Source)
    ERROR: General     , 1658611037615> 2,414,282,505>     at java.base/java.nio.HeapByteBuffer.putShort(Unknown Source)
    ERROR: General     , 1658611037615> 2,414,282,505>     at zombie.iso.IsoMetaGrid.saveZone(IsoMetaGrid.java:1852)
    ERROR: General     , 1658611037615> 2,414,282,505>     at zombie.network.GameServer.receiveRequestData(GameServer.java:5385)
    ERROR: General     , 1658611037615> 2,414,282,505>     at zombie.network.PacketTypes$PacketType.onServerPacket(PacketTypes.java:1012)
    ERROR: General     , 1658611037615> 2,414,282,505>     at zombie.network.GameServer.mainLoopDealWithNetData(GameServer.java:1541)
    ERROR: General     , 1658611037615> 2,414,282,505>     at zombie.network.GameServer.main(GameServer.java:816)
    WARN : General     , 1658611037615> 2,414,282,505> GameServer.kick> The player UdderlyEvelyn was kicked. The reason was You have been kicked from this server because map_zone.bin could not be saved., null

     

    It would seem to me that if this heap could be increased, or if perhaps the process could be distributed among multiple calls instead of one go, it would fix the issue. I'm also curious if generating the initial files in SP and then transferring them to the dedicated server (not sure if this is a one-time generation or if it's generated every time one joins, etc. - still learning the save format) would allow this to be bypassed, since this does not occur in SP.


    As a quick way to fix it, perhaps the buffer can be initialized based on the cell count in the maps (I assume it has to do with the number of cells since removing larger maps seems to let you add multiple smaller maps, but this is a guess) rather than a fixed value (I assume it is a fixed value at present)? 

     

    Since this is one such error, I'd also like to ask why some errors force you to quit to desktop when joining a server - they don't seem the right kind of fatal to need that and it makes troubleshooting/testing take way longer. If possible I'd request that this not occur with such errors on join, but I understand if there's technical reasons I am unaware of for it (I am a programmer myself, but I have not read PZ's code or anything as yet).

     

    Edit: Example list of map mods (and required tilesets) that is just shy of the limit, install one or two more and it will cause the issue:

    Mods=tkTiles_01;DylansTiles;Diederiks Tile Palooza;FantaStreetTiles_01;AdmMTiles;BigZombieMonkeys_tile_pack;SkizotsTiles;GreensTiles;EN_Flags;AquatsarYachtClub;KingsmouthKY;wildberries;RedRacer;hopewell_eng;Trelai_4x4_Steam;NWBlockade;Ashenwood;FortKnoxLinked;FortKnoxRoad;BedfordFalls;BillionaireSafehouse;Blackwood;CONRTF;Chernaville;DeadinHongKong;DeltaCreekMunitions;EdsAutoSalvage;EerieCountry;Elysium_Island;firecamp;Fort Benning;FORTREDSTONE;Fort Waterfront;FrankfortKY;Grapeseed;Greenleaf;InGameMaps;InGameMaps_FortKnoxLinked;InGameMaps_FortKnoxRoad;klin;Laconia;Laconia Expansion;lakeivytownship;Linden;LittleTownship;Militaryairport;MonmouthCounty;MRE;Muldraugh Fire Department;Riverside Fire Department;NewEkron;ParkingLot;EN_Newburbs;Otr;OtrSR;PitstopLegacy;RabbitHashKY;RavenCreek;Refordville;rbr;rbrA;Riverwood;BedfordRoad;pz_rosewoodexp_map;SanctuaryHills;SantuarioMapMod;SaveOurStation_Core;SaveOurStation_KnoxCountry;Seaside;SecretBaseRoadV2;RavenCreekEerieCompatibleSlocanLake;RavenCreekEerieCompatibleSlocanLakeIngameMap;StudioSouthShore;Suvival's Store;TrimbleCountyPowerStation;Tugaland;West Point Fire Department;WestPointTrailerParkAndVhsStore;WesternTown;WesternScrapCarYard;Xonics Mega Mall;ExclusionZone;Chinatown;
    Map=Chinatown;Northwest Blockade;Klin;Kingsmouth;NewDenver;Rosebery;Silverton;NewDenver_Connection_map;NewDenver_map;Rosebery_map;Silverton_map;li_township;RavenCreek;FortRedstone;CONRTF;Elysium_Island;MREX;militaryairport;BillionaireSafehouse;WestPointTrailerParkAndVhsStore;pz_rosewoodexp_map;NewEkron;Linden;Fort Benning;researchbase;rbr_road;RabbitHashKY;Fort Waterfront;Greenleaf;RedstoneRaceway;TrimbleCountyPowerStation;Over the River - Secondary Route;Otr;Laconia;Laconia Expansion;Trelai_4x4;Dead in Hong Kong;Suvival's Store;LittleTownship;Tugaland;Pitstop;Blackwood;Grapeseed;Bedford road;North;South;West;Near Fort Knox;To Bedford Falls;To Eerie Country;Fort Knox linked to Eerie Country_map;Eerie Country;Eerie A;Eerie B;Eerie C;Eerie D;Fort Knox linked to Eerie Country;From Bedford Falls to Fort Knox;BedfordFalls;From Bedford Falls to Fort Knox_map;Xonics Mega Mall;Xonics Mega Mall Exterior;Xonics Mega Mall Interior;Xonics Mega Mall Roof;MonmouthCounty;InGameMaps_Main;Muldraugh, KY
    WorkshopItems=2707344076;2392987599;2773732963;2799120190;2671890843;2169435993;2619072426;2646041510;2831252135;2001719506;2744114761;2634426926;2832136889;2503622437;2819655145;2817859141;2800337234;2820363371;2335368829;522891356;2768818690;2536865912;2766626985;2734683361;2730975264;2797636826;2789237738;2485420813;1254546530;2693585128;2595249356;1516836158;2779248414;2582178794;2463499011;2778799110;2756689895;2595785944;2803292383;2434339338;2790749470;2804574707;2821027450;2252982049;2709828723;2542249811;2778676843;2737546323;2804453891;2789097802;2712480036;2789257975;2671414643;926737806;2603239477;2597946327;2815966702;2196102849;2726058465;2807152393;2802298898;2735894249;2718350686;2775803004;2783077891;2398274461;2783179512;2183283602;2461163224;2753396660;2672968796;2802755864;2781180323;2787439893;2721653030;2819565407;2800054149;1713269594;2785623545;2384329562;2599752664;2337452747;2554699200;2711526629;2804428637;2774834715;2740919036;2734679675;2772575623;2478247379;2785549133;2799152995;2719592131;2818847163;2778576730;2618213077;2811383142;2805630347;2469388752;2566953935;2489148104;2516123638;2522173579;2441990998;2443275640;2422681177;2409333430;2642541073;2457212020;2498500781;2273010892;2675429658;2567438952;2282429356;2592358528;2743496289;2811232708;2681635926;2636100523;2792425535;2782258356;1510950729;2771297715;2781895054;2759339330;2732639855;1475243816;2791656602;2064137012;1773965512;2292487242;2734164805;2830343776;2834352171;2694079976;2730158335;2809595776;2808679062;2127583399;2760742937;2241990680;2594865484;2688676019;2711057211;2286124931;1924146603;1988306113;2513537093;2701170568;2798170078;2616986064;2402057349;2714198296;2553593324;2706119869;2434125078;2454293014;2685168362;2075777590;2732804047;1517585848;2657661246;2377867605;2687515849;2142622992;2815560151;1922750845;2704811006;2831590169;2366717227;2688151429;2769706949;1955995443;2809719515;2696083206;1651019937;2629074154;2759895539;2709199201;2780392280;1315313725;2787291513;2507488373;2050264961;2780637194;2801714948;2688737276;2709502667;2422848231;2629286881;2658619264;2766223413;2713921292;2831715402;2048411289;2643606499;2447729538;2463184726;2392709985;710542108;2529746725;2688538916;566115016;2680473910;2688809268;2732594572;2627877543;2464581798;2577243435;2602450182;2582648054;2812890317;2458631365;2710407461;2693227148;2737665235;2237300246;2659216714;2637692469;2714848168;2651349283;2686624983;2762648316;2725378876;2289429759;2713055926;2712632417;2687798127;2752895143;2478768005;2739375743;2734051025;2495778666;2392676812;2268557398;2724151227;2613146550;2802600810;2290690369;2400370190;2401339485;2790397567;2810378872;2790428261;2800412098;2789503316;2802456220;2789839628;2784607980;2699856770;2648152698;2645975408;2801575579;2715579154;2822408566;2372994639;2681257693;2754567348;2786499395;2125659488;2122265954;2667899942;2819367991;1703604612;2445720450;2188496940;2465017864;2487022075;2648779556;2707957711;2831786301;2635550102;2795036124;2497342974;

    You'll have to forgive me that the workshop items list has way more IDs than necessary for repro, I was able to easily trim the other two lists to just the relevant things but this one has not only other map mods I was adding/removing to try to troubleshoot but a lot of unrelated mod workshop IDs that I excluded from the Mod= list.

  19. I'm no expert on PZ internals, but what appears to be the two errors that caused the disconnects:

    1. ERROR: General , 1652993924460> 9,952,611,057> java.lang.NullPointerException: Cannot invoke "fmod.FMODSoundBuffer.pull(long)" because "zombie.core.raknet.VoiceManager.FMODReceiveBuffer" is null
    2. ERROR: General     , 1652915822116> 9,874,508,713> ExceptionLogger.logException> Exception thrown java.lang.RuntimeException: attempted index: getAllowRandomTint of non-table: null at KahluaThread.tableget line:1689.
      [6:52 PM]

    The first error is from console/log_2.txt, the second is from console/log_5.txt in Logs.zip generated by the game. I'd love to post that but the 4MB limit is quite small, I can't even upload the relevant files, so hopefully you'll be OK with a Mediafire link:

    http://www.mediafire.com/file/94glnp9n7dl8ghk/logs.zip

  20. Creating methods for granular spawn controls for modder use, as well as for dedicated server and sandbox config tie-in, would be really useful for customizing how dense the zombie population is at certain places. Ex. the Crossroads Mall modded map is really packed with zombies when it spawns because they are placed manually on it (if I understand correctly), but once it's cleared out that's that. It's literally empty forever. It'd be nice if we could turn up the spawn rate in those cells to make it always likely to be jammed with zombies. For that matter, it would be nice if the spawn rate of loot or the rarity of loot could be configured in this way too. If that were the case, the mall could be made with a higher spawn rate out of the gate for zombies and for loot, so it would feel more worthwhile to fight through said zombies. Could do the same to other locations for a more custom sandbox or dedicated server experience. Maybe you want military bases crawling with zombies? Maybe you want to remove zombie spawns from an area or turn them down? Maybe you want to make it so that military base loot doesn't respawn as fast as residential? All this would be possible with per-cell spawn rate controls.

     

    While I'm on this note, it would also be nice if the rarity of each item (including modded) were configurable, with whitelist and blacklist of containers or zombie types it can spawn in for similar reasons.

×
×
  • Create New...