Jump to content

PseudonymousEd

Member
  • Posts

    21
  • Joined

  • Last visited

Reputation Activity

  1. Spiffo
    PseudonymousEd reacted to AuthenticPeach in How to fix updated mods in Build 41 Multiplayer   
    Hello All! I made this guide to assist the many bug reports that have come in regarding mods that have updated after the release of Build 41 Multiplayer.
    I have put together all the walkthroughs and guides here so you don't have to fish around for odd ends and bits. More may come as things develop.
     
    One of the main issues that sprung up with the release of Project Zomboid's Build 41 Multiplayer is the issue of mods updating after a local or dedicated server uses the mod for its save.  
    This issue occurs because, in the last six months, steam's servers have been unreliably updating mod data for clients.
    Some things to know:
    Workshop ID's for mods are located on the bottom of each mod's workshop page.

    Figure 1: Mod Workshop ID of Authentic Z 
      When you enable a mod for a server, there are two locations involved:  A server directory for each mod A client directory for each mod  
    When it comes to PZ Multiplayer, all of the files in both locations must be identical as it is used as an anti-cheat measure. Therefore:
    Since the client's copy may be mismatched with the server copy, the client will be rejected with a message:  "Workshop item version is different than server's"  

    Figure 2: Mod mismatch from the host end.

    Figure 3: Mod mismatch from the client end.
     
    The Fixes
    There are a few fixes and workarounds that people have found to have fixed this issue.
     
    Method 1: 
    Copy, delete, paste method
     Note: this method may only apply to Local Hosted servers. 
    1: Copy mod folder from "...\steam\steamapps\workshop\content\108600"
    2: Delete the old and Paste the mod folder in  "...\Steam\steamapps\common\ProjectZomboid\steamapps\workshop\content\108600"
     
    Example:
    Copy the 2335368829 folder (Authentic Z mod folder) from
    "...\steam\steamapps\workshop\content\108600"

    and pasted it to "...\Steam\steamapps\common\ProjectZomboid\steamapps\workshop\content\108600"

    Figure 4:  Step 1 on Left, Step 2 on Right. Notice how the right location was older than the left location. Delete the old, paste in the newer one from the left side. 
     
     
    Method 2: 
    E6 Method (from user Глеб) 
    1. Delete the "appworkshop_108600.acf" file that's inside the "C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid\steamapps\workshop" path, if you are running a dedicated server it would be in "\SteamLibrary\steamapps\common\Project Zomboid Dedicated Server\steamapps\workshop"
    after that run the server and it will force update the mods of your server
     
     
    Method 3: 
    Klean Method
     Note: this method  only applies  to Dedicated servers. 
    "For klean's server, after Filibuster's updated, this worked so that the server would update to the updated version of Filibusters. Should work for mods that recently updated, although the clients also need to ensure that they have updated versions of the mods as well
    In the installation directory for the dedicated server, you'll have a steamapps folder. Just delete it, as it only contains mod info, including Steam's manifest. If there's an issue with the manifest updating (or it thinks its already updated), the game won't download the mods.
    It should then work the next time you start the server."

    Regarding Local hosted servers
    go into steam and into the game's properties, browse local files, inside the PZ folder, delete the entire steamapps folder. 
     
    Method 4: 
    Spiffo Bot Method
    Many instances of mismatching mod versions have been fixed by unsubscribing from the mod(s), restarting Steam, and then resubscribing to the mod(s). Alternatively, in the installation directory for the dedciated server, you'll have a *steamapps *folder. Just delete it, as it only contains mod info, including Steam's manifest. If there's an issue with the manifest updating (or it thinks its already updated), the game won't download the mods. The mod might then work when restarting the server.
     
    Please also make sure you are not subscribing to random mod packages that simply upload an unedited version of a mod. When the original mod authors update their mods, you will have to rely on whoever uploaded that modpack to keep the mods up to date. Instead, use the workshops "Collections" feature. Modpacks that upload mods without the approval of the mod authors are also subject to be removed from the workshop at any point.
     
     
    Method 5: 
    The Nuclear Route (To get it working at all costs)
    1: Delete world
    2: Remove problematic mod(s) from server settings and save this. 
    3: Close game and unsubscribe from problematic mod(s)
    4: Completely Close Steam
    5: Re-subscribe to problematic mod(s) , start game up, readd them in settings, create new world. 
     
    Some other helpful reads:
     
    https://steamcommunity.com/sharedfiles/filedetails/?id=2681173441
    https://steamcommunity.com/app/108600/discussions/0/3198115500363908004
    https://steamcommunity.com/app/108600/discussions/0/3198116134628473049/
    https://steamcommunity.com/workshop/filedetails/discussion/2335368829/3198116134629549910/
     
    More methods may come at a later time. 
  2. Like
    PseudonymousEd got a reaction from TheZombiesPro115 in [RESOLVED - NOT A BUG] FastHealer and SlowHealer doesn't affect Vehicle Crash Fractures   
    The FastHealer and SlowHealer traits affect how much time it takes to heal a fracture caused by landing from a high distance.
                    float f2 = Rand.Next(50, 80);                 if (this.Traits.FastHealer.isSet()) {                     f2 = Rand.Next(30, 50);                 } else if (this.Traits.SlowHealer.isSet()) {                     f2 = Rand.Next(80, 150);                 }                 switch (SandboxOptions.instance.InjurySeverity.getValue()) {                     case 1: {                         f2 *= 0.5f;                         break;                     }                     case 3: {                         f2 *= 1.5f;                     }                 }                 this.getBodyDamage().getBodyPart(BodyPartType.FromIndex(Rand.Next(BodyPartType.ToIndex(BodyPartType.UpperLeg_L), BodyPartType.ToIndex(BodyPartType.Foot_R) + 1))).setFractureTime(f2);  
    EDIT:  FastHealer and SlowHealer ARE factors in how much time it takes to heal a fracture caused by a vehicle accident.  It's just higher up in the code than where I was looking!
     
    But FastHealer and SlowHealer aren't factors in how much time it takes to heal a fracture caused by a vehicle accident.
    In the BaseVehicle class:
    else if (f2 > 50.0f && Rand.Next(10) == 0 && SandboxOptions.instance.BoneFracture.getValue()) {                 if (bodyPart.getType() == BodyPartType.Neck || bodyPart.getType() == BodyPartType.Groin) {                     bodyPart.generateDeepWound();                 } else {                     bodyPart.setFractureTime(Rand.Next(Rand.Next(10.0f, f2 + 10.0f), Rand.Next(f2 + 20.0f, f2 + 30.0f)));                 }             } There is no reference to FastHealer or SlowHealer.
  3. Like
    PseudonymousEd got a reaction from Sedgwick in [RESOLVED - NOT A BUG] FastHealer and SlowHealer doesn't affect Vehicle Crash Fractures   
    The FastHealer and SlowHealer traits affect how much time it takes to heal a fracture caused by landing from a high distance.
                    float f2 = Rand.Next(50, 80);                 if (this.Traits.FastHealer.isSet()) {                     f2 = Rand.Next(30, 50);                 } else if (this.Traits.SlowHealer.isSet()) {                     f2 = Rand.Next(80, 150);                 }                 switch (SandboxOptions.instance.InjurySeverity.getValue()) {                     case 1: {                         f2 *= 0.5f;                         break;                     }                     case 3: {                         f2 *= 1.5f;                     }                 }                 this.getBodyDamage().getBodyPart(BodyPartType.FromIndex(Rand.Next(BodyPartType.ToIndex(BodyPartType.UpperLeg_L), BodyPartType.ToIndex(BodyPartType.Foot_R) + 1))).setFractureTime(f2);  
    EDIT:  FastHealer and SlowHealer ARE factors in how much time it takes to heal a fracture caused by a vehicle accident.  It's just higher up in the code than where I was looking!
     
    But FastHealer and SlowHealer aren't factors in how much time it takes to heal a fracture caused by a vehicle accident.
    In the BaseVehicle class:
    else if (f2 > 50.0f && Rand.Next(10) == 0 && SandboxOptions.instance.BoneFracture.getValue()) {                 if (bodyPart.getType() == BodyPartType.Neck || bodyPart.getType() == BodyPartType.Groin) {                     bodyPart.generateDeepWound();                 } else {                     bodyPart.setFractureTime(Rand.Next(Rand.Next(10.0f, f2 + 10.0f), Rand.Next(f2 + 20.0f, f2 + 30.0f)));                 }             } There is no reference to FastHealer or SlowHealer.
  4. Spiffo
    PseudonymousEd reacted to ogossman in Latest TileZed, WorldEd, and Tilesets (April 17 2021)   
    Hello One and All I self Answered... for all linux Users, and if the owner of the tilesets see this, 
     
    You forgot 1 file in the linux download pack, the file  -MapBaseXML.txt
     
    I was able to download the windows pack and copy the file from that and put it in the  WorldEd folder to get the map to properly bmp to tmx.
     
    And a Quick tip for linux version Users.  GIMP is shit.  find something called Pinta, it is basically the closest thing to Paint.net on Ubuntu that I could find. 
  5. Pie
    PseudonymousEd got a reaction from Pandorea in [IWBUMS 41.53] Thick Skinned and Thin Skinned do the opposite of what they should do?   
    Maybe I'm not thinking clearly, but it looks like Thick Skinned makes it easier to hit the character and Thin Skinned makes it harder to hit the character.  That should be flipped.
     


     
    I also have a pastebin that describes the issue:  
    https://pastebin.com/dS1BhYcx
     
     
  6. Spiffo
    PseudonymousEd reacted to Faalagorn in Latest TileZed, WorldEd, and Tilesets (April 7 2021)   
    It seems that no matter what I try, it doesn't want to launch from Linux, here's the error:
     
    The from path is empty and the file is getting created under /home/faalagorn/.TileZed/Tilesets.txt properly. It happens with the pre-compiled version as well as the one compiled from GitHub https://github.com/timbaker/tiled
     
    Might be my system as I'm not on Ubuntu but Arch instead, though the old version seemed to work for me…
     
    It seems the problem is known in other applications as well, but I'm fighting hard to troubleshoot it for few hours now, I'll let you know if I find anything, but maybe someone else has an idea?
     
    EDIT: It seems that I solved it by commenting lines 77 to 111: https://github.com/timbaker/tiled/blob/zomboid/src/tiled/BuildingEditor/simplefile.cpp#L77 to https://github.com/timbaker/tiled/blob/zomboid/src/tiled/BuildingEditor/simplefile.cpp#L111
     
    so the following lines are gone:
     
    // foo.txt -> foo.txt.bak QFileInfo destInfo(filePath); QString backupPath = filePath + QLatin1String(".bak"); QFile backupFile(backupPath); if (destInfo.exists()) { if (backupFile.exists()) { if (!backupFile.remove()) { mError = QString(QLatin1String("Error deleting file!\n%1\n\n%2")) .arg(backupPath) .arg(backupFile.errorString()); return false; } } QFile destFile(filePath); if (!destFile.rename(backupPath)) { mError = QString(QLatin1String("Error renaming file!\nFrom: %1\nTo: %2\n\n%3")) .arg(filePath) .arg(backupPath) .arg(destFile.errorString()); return false; } } // /tmp/tempXYZ -> foo.txt tempFile.close(); if (!tempFile.rename(filePath)) { mError = QString(QLatin1String("Error renaming file!\nFrom: %1\nTo: %2\n\n%3")) .arg(tempFile.fileName()) .arg(filePath) .arg(tempFile.errorString()); // Try to un-rename the backup file if (backupFile.exists()) backupFile.rename(filePath); // might fail return false; }  
    with this code gone, I made sure the respective files are in tiled/share/tilezed/config/ directory (I copied the one that were created before), that way it works by not looking for the files from the home directory. It' It seems that looking for files there is broken for me for some reason
     
    It's a very hacky solution, so a proper fix would be welcome (especially as I see there's a "might fail" code. I might take a look and at least post an issue on GitHub if I won't forget
     
    EDIT2: While it allows the program to run, it can't save anything. I gotta troubleshoot the issue further it seems… The old version works fine with saving.
     
    EDIT3: It turned out to be more complicated; it seems that the software can't write to my home folder sometimes, this also happened for me with the old version. I saved stuff in /tmp temporarily, and it seems to work! Something worth to take a closer look indeed, but at least I got to run stuff on the latest version.
  7. Spiffo
    PseudonymousEd reacted to nasKo in [SOLVED] How do we define custom perks (skills ingame)?   
    Here's an example mod.
    MyPerkMod.zip
×
×
  • Create New...