Giter Site home page Giter Site logo

xnul / palworld-host-save-fix Goto Github PK

View Code? Open in Web Editor NEW
885.0 9.0 64.0 57 KB

Fixes the bug which forces a player to create a new character when they already have a save. Useful for migrating maps from co-op to dedicated servers and from one dedicated server to another.

License: MIT License

Python 100.00%
bugfix co-op dedicated-server multiplayer palworld palworld-dedicated-server steam

palworld-host-save-fix's Introduction

Palworld Host Save Fix

⚠️ This tool is experimental. Be careful of data loss and always make a backup. ⚠️

Fixes the bug which forces a player to create a new character when they already have a save.

Note: If you have an advanced co-op map with level 30-40+ characters and can't get the fix to work for you, please open an issue and send the save to me. I have some major and more complete changes in the works but I need mid to late game saves to make sure I get everything and people to confirm it's working correctly before I release.

Table of Contents

Abstract

Palworld save files are different depending on the type of server you are running. Co-op, Windows dedicated server, Linux dedicated server, SteamCMD dedicated server, all of these are different types of Palworld servers and if you try to migrate a save file from one type of server to another, you can run into a player save bug which forces you to create a new character.

For example:

  • Moving a Windows co-op save to a Windows dedicated server will force the host to create a new character and lose their save.
  • Moving a Windows dedicated server save to a Linux dedicated server will force all players to create a new character and lose their save.
  • Moving a Linux dedicated server save to a Windows dedicated server will force all players to create a new character and lose their save.
  • Moving a Windows co-op save to a Linux dedicated server will force all players to create a new character and lose their save.
  • Etc.

The bug happens because players are identified and correlated to their save via their GUID. These different types of servers generate player GUIDs differently so when a player joins, the server generates a new GUID that doesn't match the old save's GUID and because of this, doesn't realize the player already has a save.

To fix this bug, we've made a script that takes the GUID of the player on the new server and applies it to the player save from the old server so that the new server will use the player save from the old server.

Usage

Dependencies:

  • Python >=3.10
  • Install Palworld Save Tools v0.17.1 with python -m pip install palworld-save-tools==0.17.1
  • Clone the repository with git clone https://github.com/xNul/palworld-host-save-fix

Using the GUI:

  • Open Command Prompt in the folder
  • Run command python gui.py
  • Browse for your save folder
  • Select the new character to overwrite and the old character you want to fix/keep from the dropdowns
  • Enable the guild fix if required
  • Hit the button to run the command
  • Read the warning in Command Prompt and press enter

Command:

python fix_host_save.py <save_path> <new_guid> <old_guid> <guild_fix>

<save_path> - Path to your save folder
<new_guid> - GUID of the player on the new server
<old_guid> - GUID of the player from the old server
<guild_fix> - True or False. Apply the fix for the [Guild bug].

Example:

python fix_host_save.py "C:\Users\John\Desktop\my_temporary_folder\2E85FD38BAA792EB1D4C09386F3A3CDA" 6E80B1A6000000000000000000000000 00000000000000000000000000000001 False

Migration Examples

How to migrate a co-op save to a Windows dedicated server

Only my co-op host isn't able to use their character on the dedicated server.

Prerequisites:

  • Install the dependencies above.
  • The dedicated server is installed, running, and you're able to join it.
  • Follow the workaround below for the [Guild bug] in co-op before moving the save.
  • If you have a Viewing Cage, follow the workaround below for the [Viewing Cage bug] in co-op before moving the save.

Steps:

  1. Copy your desired save's folder from C:\Users\<username>\AppData\Local\Pal\Saved\SaveGames\<random_numbers> to your dedicated server at PalServer\Pal\Saved\SaveGames\0.
  2. In the PalServer\Pal\Saved\Config\WindowsServer\GameUserSettings.ini file, change the DedicatedServerName to match your save folder's name. For example, if your save folder's name is 2E85FD38BAA792EB1D4C09386F3A3CDA, the DedicatedServerName changes to DedicatedServerName=2E85FD38BAA792EB1D4C09386F3A3CDA.
  3. Delete PalServer\Pal\Saved\SaveGames\0\<your_save_here>\WorldOption.sav to allow modification of PalWorldSettings.ini. Players will have to choose their respawn point again, but nothing else is affected as far as I can tell.
  4. Confirm you can connect to your save on the dedicated server and that the world is the one you want. You can connect to the dedicated server and check the world with a character that does not belong to the co-op host.
  5. Afterwards, the co-op host must create a new character on the dedicated server. A new .sav file should appear in PalServer\Pal\Saved\SaveGames\0\<your_save_here>\Players.
  6. The name of that new .sav file is the co-op host's new GUID. We will need the co-op host's new GUID for the script to work.
  7. Shut the server down and then copy the entire save folder in the dedicated server at PalServer\Pal\Saved\SaveGames\0\<your_save_here> (it must be the save folder with the co-op host's new character!) into a temporary folder and remember the path for the temporary folder because it's needed to run the script.
  8. Make a backup of your save folder! This is an experimental script and has known bugs so always keep a backup copy of your save folder.
  9. Run the script using the command in the Usage section with the information you've gathered, using 00000000000000000000000000000001 as the co-op host's old GUID, and make sure to set <guild_fix> to False.
  10. Copy the save folder from the temporary folder back to the dedicated server. Move the save folder you had in the dedicated server somewhere else or rename it to something different.
  11. Start the server back up and have the co-op host join the server with their fixed character.
  12. If, after 5 minutes of play, your Pals won't attack for you or do work in the base, follow the [Pal bug] workaround to fix them.

How to migrate a Windows/Linux dedicated server save to a Linux/Windows dedicated server

No player, co-op host or otherwise, is able to use their character on the dedicated server.

Note: This method relies on the [Guild bug] fix even though the fix itself has bugs because with this migration process, every player loses access to their character and they all have to be fixed so there is no 'good' character who can hold the guild for other players as in the co-op to dedicated server migration process above. Progress on the [Guild bug] fix is ongoing and it will hopefully be completely fixed soon.

Prerequisites:

  • Install the dependencies above.
  • The new dedicated server is installed, running, and you're able to join it.

Steps:

  1. Copy the save folder from your old dedicated server to your new dedicated server.
  2. In the PalServer\Pal\Saved\Config\WindowsorLinuxServer\GameUserSettings.ini file of the new server, change the DedicatedServerName to match your save folder's name. For example, if your save folder's name is 2E85FD38BAA792EB1D4C09386F3A3CDA, the DedicatedServerName changes to DedicatedServerName=2E85FD38BAA792EB1D4C09386F3A3CDA.
  3. Start the new server and have every player create a new character. When a player creates a new character, a new .sav file will appear in PalServer\Pal\Saved\SaveGames\0\<your_save_here>\Players. The name of that new .sav file is the player's new GUID. Make sure to keep track of all old GUIDs, new GUIDs, and which player they belong to.
  4. Shut the server down and then copy the entire save folder from the new server at PalServer\Pal\Saved\SaveGames\0\<your_save_here> (it must be the save folder with all the new characters!) into a temporary folder and remember the path for the temporary folder because it's needed to run the script.
  5. Make a backup of your save folder! This is an experimental script and has known bugs so always keep a backup copy of your save folder.
  6. For each player's corresponding new GUID and old GUID pair, run the script using the command in the Usage section and make sure to set <guild_fix> to True.
  7. Copy the save folder from the temporary folder back to the dedicated server. Move the save folder you had in the dedicated server somewhere else or rename it to something different.
  8. Start the server back up and have each player join the server with their fixed character.
  9. If, after 5 minutes of play, a player's Pals won't attack for them or do work in their base, have them follow the [Pal bug] workaround to fix them.

How to migrate a Windows dedicated server save to co-op

  1. Copy the save from the dedicated server to a temporary folder.
  2. Start a new co-op game and create a new character, copy the new character C:\Users\<username>\AppData\Local\Pal\Saved\SaveGames\<random_numbers>\Players\00000000000000000000000000000001.sav to <your_temporary_folder>\<your_save_here>\Players.
  3. Run the script while using 00000000000000000000000000000001 as the <new_guid> and the character you want to be host as the <old_guid>.
  4. Once complete, you can copy the save folder from the temporary folder to C:\Users\<username>\AppData\Local\Pal\Saved\SaveGames.
  5. Start the game and you should be able to play normally, friends can join in without any issue since there guid remains the same.

Finding Player GUIDs

If you are having trouble figuring out which GUID is associated to a player, you can try using the following steps:

  1. Set an admin password in the older server's PalServer\Pal\Saved\Config\WindowsorLinuxServer\PalWorldSettings.ini file.
  2. Connect to the older server, open chat, and type /adminpassword <your_admin_password>.
  3. Open chat and run /showplayers (or you can click esc and go to the options page to see and copy your own ID after entering the admin password).
  4. Record the playeruid field for each player.
  5. Use a tool to convert the playeruid number to 8-character hexadecimal GUID prefix. For example, you can run
python -c "print(format(<your_player_id_number>, '08x'))"
  1. The output of the command is the prefix player's GUID (i.e. find the .sav file that starts with the output).
  2. Repeat the steps for the new server if needed.

Known bugs

[Guild bug]

Details: Guild membership doesn't work properly after fixing a character. This is likely happening because there's some guild configuration being missed in the character migration from the old save to the new save.

Workaround: [Co-op Only] In co-op, before moving the save, transfer ownership from the co-op host's character to another character and have the co-op host's character leave the guild. Fixes the issue entirely. Doesn't work when all players lose their save data because there is no working player to hold the guild.

[Pal bug]

Details: Pals owned by the player won't do anything at the base. This is likely caused by the Pals not being registered with the correct guild.

Workaround: On the new server, after the save has been fixed, have each player's character go into their base, drop on the ground and pick up every single Pal they own, including the base workers. This can be done using the "Drop" button in the Party menu. This will re-register the Pals with the correct guild and fix the issue entirely.

[Viewing Cage bug]

Details: The Viewing Cage isn't officially supported on dedicated servers so if you have built one in co-op, it needs to be removed from your co-op save before migrating it to your dedicated server.

Workaround: [Co-op Only] If you have built a Viewing Cage, it needs to be removed from your co-op save before migrating it to your dedicated server.

[Left Click bug]

Details: After applying the fix, some players experience a bug where you can't hold your left mouse button to attack. It seems like this only happens if you didn't do the [Guild bug] workaround but I'm not sure.

Workaround: If you leave the guild and rejoin, it goes away. Thanks /u/skalibran!

Credit to cheahjs for his very useful script helping me to make this fix!

Appreciate any help testing and resolving bugs.

palworld-host-save-fix's People

Contributors

crc32ex avatar jfw225 avatar jwidea avatar magiwarriorx avatar mudesigns avatar xnul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

palworld-host-save-fix's Issues

invalid syntax error

I have got the temporary copy of the save folder and followed the usage instructions but when I try to execute the script I get an invalid syntax error

PS C:\Users\John\Documents\Palworld> python fix-host-save.py "C:\Users\John\.cargo\bin\uesave.exe" "C:\Users\John\Documents\Palworld\CDEDB7914209AA4B3CDB30B19E977A77" 7B014718000000000000000000000000 E8C70342000000000000000000000000
  File "fix-host-save.py", line 146
    print(f'File {file} is not a save file, found {magic_bytes} instead of P1Z')

Following the format python fix-host-save.py <uesave.exe> <save_path> <new_guid> <old_guid>

error: no such command: `to-json`

When I run the script I get the following error:

uesave.exe failed to convert C:\Users\quint\Desktop\palworld-host-save-fix-main\palworld-host-save-fix-main/Level.sav (return 101)

error: no such command: to-json

        View all installed commands with`cargo --list
        Find a package to install to-json with cargo search cargo-to-json

I run the script as follows:

python fix-host-save.py "C:\Users\quint\.cargo\bin\cargo.exe" "C:\Users\quint\Desktop\palworld-host-save-fix-main\palworld-host-save-fix-main" 9AEC141F000000000000000000000000

I have done everthing that needed to be done, uesave is installed.
When I try to run cargo search cargo-to-json, nothing is found.
Googling the error didn't help unfortunately

Windows to Windows help.

Im able to get get the script running. The first time trying, I had my character while the other 2 players in my server did not. I assumed this had something to do with the guild(im leader). I passed leader & retried from scratch, and now noone is getting their character. Anyone possibly have some experience on what im doing wrong?

Sometimes my friends joiined, and even tho they dont have their character, they have their updated quest log. showing the current quest their on rather than a new characers. not sure what to think of that.

guild data

Eveything worked as expected other than the guild getting reset for my host player. Not sure if I did something wrong in the process or if this is a known issue. Would appreciate any help also not sure what I could include for context that would help.

Unknown issue for me

WARNING: Running this script WILL change your save files and could potentially corrupt your data. It is HIGHLY recommended that you make a backup of your save folder before continuing. Press enter if you would like to continue.

Traceback (most recent call last):
File "C:\Users\owl337\AppData\Local\pal\Saved\SaveGames\76561198000627022\8013B81E42219F64AD1914Ac81822C28\fix-host-save.py", line 197, in
main()
File "C:\Users\owl337\AppData\Local\pal\Saved\SaveGames\76561198000627022\8013B81E42219F64AD1914Ac81822C28\fix-host-save.py", line 41, in main
sav_to_json(uesave_path, level_sav_path)
File "C:\Users\owl337\AppData\Local\pal\Saved\SaveGames\76561198000627022\8013B81E42219F64AD1914Ac81822C28\fix-host-save.py", line 90, in sav_to_json
with open(file, 'rb') as f:
^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\owl337\Desktop\my_pal_save/Level.sav'
PS C:\Users\owl337\AppData\Local\pal\Saved\SaveGames\76561198000627022\8013B81E42219F64AD1914Ac81822C28>

Issue with existing users losing character when migrating the host user

We put our Coop save onto a dedicated server last night before we ran the fix to update the host ids. While we were waiting a friend who was not part of the Coop save created a new character and has put 12 hours in already. When we used the script to fix the host character, it forced our friend to have to create a new character, but the host was fixed.

So it seems this can be used to fix users who were there for the Coop save by running this with their new Ids. But it breaks users that were not part of the Coop save but had made progress on the Linux server.

Environment: Windows to Linux
How we ran it: Pull save files from Linux server to windows PC. Ran the python file to fix the host. Put files back on Linux server.

Is there anyway we can use this to fix the host without breaking current users on the Linux server?

Dedicated servers can only have maximum 15 workers UNLESS you use WorldOptions.sav

Hey.

It would be great to include in readme that BaseCampWorkerMaxNum is basically ignored from PalWorldSettings.ini.

If you want to have more workers then you edit world options from your single player save and grab WorldOptions.sav from it then paste it into your PalworldServer\Pal\Saved\SaveGames\0\XXXXXXXXXXX folder.

You can edit WorldOptions with this: https://gist.github.com/cheahjs/300239464dd84fe6902893b6b9250fd0

So you can either remove WorldOptions.sav (like the readme is recommending) or you can keep it BUT you have to use uesave and bat/py files from above to edit it.

Infinite loading screen

After undertaking this process, my character simply won't load in. Everyone else can log in but me. I'll note that I'm doing this process after a delay (my friends have been playing while I figure this out). I guess that's what's fucking me.

incorrect command usage

Im trying to migrate from a dedicated server to a coop one.
and I keep getting this error

Your player save does not exist. Did you enter the correct new GUID of your player? It should look like "8E910AC2000000000000000000000000".
Did your player create their character with the provided save? Once they create their character, a file called "C:\Users\DeyFle\AppData\Local\Pal\Saved\SaveGames\76561198286082122\1C6BBC9D427EBB776F84C0B99145392E\Players/Players/00000000000000000000000000000001.sav" should appear. Look back over the steps in the README on how to get your new GUID.

invalid syntax

i get this error when running the script:

File "fix-host-save.py", line 99
print(f'File {file} is not a save file, found {magic_bytes} instead of P1Z')

$ python fix-host-save.py /root/.cargo/bin/uesave.exe ~/.steam/steam/SteamApps/common/PalServer/Pal/Saved/SaveGames/0/FA28EBD942E5A4415308D5A378ABF3F0/Players E348DD44000000000000000000000000

getting error

hi

done step 1-8 fine

image

New guid : 4AECFFFB000000000000000000000000 ( from joining and creating player in server)

old guid : 00000000000000000000000000000001

folder location : C:\Users\Player 1\Desktop\palworldsave\70FF2F994A4BECC8AF1380B6D0827DEB\

commands i ran

python fix-host-save.py "C:\Program Files\uesave\bin\uesave.exe"
"C:\Users\Player_1\Desktop\palworldsave\70FF2F994A4BECC8AF1380B6D0827DEB\" 4AECFFFB000000000000000000000000 00000000000000000000000000000001

error

image

Host Player Permissions Broken

After doing the migration, with zero pals down in the world in bases and the host player not in a guild (all of the workarounds in the README), the host players permissions are still messed up.

Host player always sees "Unnamed Guild" above any pal they throw out in the world. Inside of a base or via a pal sphere.

Additionally, pals in a base owned by the host player cannot be interacted with. The Interact menu keybind (4) does now show up, pals cannot be petted, and player cannot pick up pals to assign them.

Infinite loading screen for only one player *Solved*

Issue:

I (not original host) had an infinite loading screen when connecting to the server after applying this fix for the original host.
Possibly related to #30

Steps to reproduce:

Could not reproduce

Solution:

Reverting the local save back to an earlier version fixed the issue. Local save was in: %localappdata%\Pal\Saved\SaveGames\<SteamID>\<ServerID>\backup\local\<dateTime>\LocalData.sav. I used a backup that matched the last time that I had joined the original coop world.

Speculation:

I had been testing the server and I had to re-create it several times, this was based on an older version of the saved coop world. When I joined the server after the host fix had been applied, my local save might have been out of sync in some way. Here is a copy of my local data files in case it helps in finding the exact cause: LocalData.zip
LocalData.sav.old is the version that does not work.
LocalData.sav is the version that works.

Another issue when migrating form dedicated to coop

Hi,

so i already did this once when we migrated my coop save to dedicated but now when i try to reverse it after playing with my friends for awhile it just doesnt work.

i just get this error

File C:\Users\yo\Desktop\aaa/Level.sav uncompressed successfully
uesave.exe failed to convert C:\Users\yo\Desktop\aaa/Level.sav (return 101)

error: no such command: to-json

    View all installed commands with `cargo --list`
    Find a package to install `to-json` with `cargo search cargo-to-json`

File C:\Users\yo\Desktop\aaa/Players/7257BAF8000000000000000000000000.sav uncompressed successfully
uesave.exe failed to convert C:\Users\yo\Desktop\aaa/Players/7257BAF8000000000000000000000000.sav (return 101)

error: no such command: to-json

    View all installed commands with `cargo --list`
    Find a package to install `to-json` with `cargo search cargo-to-json`

when using this command
python fix-host-save.py C:\Users\yo.cargo\bin\cargo.exe C:\Users\yo\Desktop\aaa 00000000000000000000000000000001 7257BAF8000000000000000000000000

If this doesnt fit the issue page then maybe just remove it. im just desperate for help

Error when running script

File C:\Users\a7xkr\Desktop\palworld server fix\EFB7BB404C4D161F711C7AB73E91D0B3/Level.sav uncompressed successfully
File C:\Users\a7xkr\Desktop\palworld server fix\EFB7BB404C4D161F711C7AB73E91D0B3/Level.sav (type: 50) converted to JSON successfully
File C:\Users\a7xkr\Desktop\palworld server fix\EFB7BB404C4D161F711C7AB73E91D0B3/Players/00000000000000000000000000000001.sav uncompressed successfully
File C:\Users\a7xkr\Desktop\palworld server fix\EFB7BB404C4D161F711C7AB73E91D0B3/Players/00000000000000000000000000000001.sav (type: 49) converted to JSON successfully
Converted save files to JSON
Traceback (most recent call last):
File "fix-host-save.py", line 248, in
main()
File "fix-host-save.py", line 89, in main
level_json = json.load(f)
File "c:\users\a7xkr\appdata\local\programs\python\python38-32\lib\json_init_.py", line 293, in load
return loads(fp.read(),
MemoryError

this is how my command looks when running it:

python fix-host-save.py "C:\Users\a7xkr.cargo\bin\uesave.exe" "C:\Users\a7xkr\Desktop\palworld server fix\EFB7BB404C4D161F711C7AB73E91D0B3" 35CFB02A000000000000000000000000 00000000000000000000000000000001

Original Host Co-Op not being transferred despite successful execution

I've followed the steps and transferred the save from the original Co-Op play over to a new SteamCMD running inside a Docker within Unraid. The server works beautifully and even has the old map and everything. I go to perform the steps in the script and the original host character never gets transferred to the new GUID character that belongs to me. I've meticulously checked every part of the steps and the code runs fine no errors. But every time I boot the server back up and join it makes me create a new character and back to Level 1. I'll even make some progress and the GUID it saves this new progress under is the same as the GUID that was originally created for the script to iterate over. It's as-if the script didn't do anything at all except delete the 00001 and rename it to the new name but no progress with transferring the character/data.

Instructions

This is less of an issue and more of a question. Does the host delete there local save file after migration to the server? I know at least for the co-op game I'm playing with my brother I have a local save data for the co-op game even though I'm not the host. I've been trying to test this on my own and am having trouble getting it to work. Every time I join the server it makes me make a new character, I know the first time joining after the copy over I have to make a new character to get the UID but after running the script I try and join but get the result of making a new character. My assumption is that I'm trying to do it by myself. Would it help if I ran the local world with multiplayer turned on?

invalid character '·' (U+00B7)

Hey,

iam using Windows 11 - German language.
I get this Error:

File "C:\Users\USERNAME\Desktop\jo\Pal-bearbeitung\fix-host-save.py", line 103
<title>palworld-host-save-fix/fix-host-save.py at main · xNul/palworld-host-save-fix · GitHub</title>
^
SyntaxError: invalid character '·' (U+00B7)

Do you have some advice how to fix this?
I tried to remove the dot or to replace it and then i got:

File "C:\Users\USERNAME\Desktop\jo\Pal-bearbeitung\fix-host-save.py", line 7

^
SyntaxError: invalid syntax

I dont have any skills in html, python.

Thanks a lot.

Greetings,

Chris

Question: How to make friends make new characters

I have a Linux dedicated server. When I join (as the host) I have the issue where i have to make a new character. However my friends can join using their old characters. This then raises the question. How does my friend make a new character for this world?

Im asking this because when i convert my GUID to the new GUID my friends have to make a new character. But once that character is made it doesn't make a new .sav file for them..

Non-english system locale causes problems

Hi, I want to preface everything by saying saying thank you so very much for making this fix!

That said, after following the instructions and getting the all-clear message from the program, my save file still refuses to get loaded by the dedicated server and forces a character creation.

The 000001.sav file gets correctly deleted and the file with my steam UUID becomes the size of the 000001 file, so the transfer appears to have worked, but the loading doesn't work.

My computer was using a non-english system locale. I switched it to english and that fixed the issue.

Doubt it's something worth fixing in the code, but good to have as heads up to anyone getting this issue

Character Transfer doesnt stick

Posting this in case anyone else is having this issue. First I have 2 different computers a desktop to play the games and a smaller computer that is always on that hosts just servers. I am running the dedicated server on the smaller server computer.

I am the host and have transferred the save went through every step in the tutorial about bringing over the Coop save. I followed the instructions to the letter and the python script completes without any errors I even check the player folder to compare the sizes of the 00000001.sav and the new one it transferred over to which using my GUID. They are also identical in size. however when I join the server it forces a new character no matter what and wipes the old guid.sav file with a smaller new one. Only happens to me, the host, other players seem to load into their previous characters they had on the coop server without error on the new dedicated server. Only thing I can think that changed is my in game character names being different. Thats the only difference, but I dont see how it would effect it.

Thanks for the work on this script. Not sure if anyone has run into this.

Script runs with success message, but character remains unchanged

Testing the script. I have a player folder with a single 001 file, and another file from the host (these are the only 2 files in the players folder)

The script runs successfully, and i can see it create the json file, merge the two, and then clean up to only the new file, but the character remains un-modified from when it was initially created.

I have tried regenerating the server version of the character, as well as different combinations of player character "alignment" but it seems that no properties are being copied.

Windows Local World > Linux Dedicated Server - Pterodactyl Egg | Unfortunately not successful in getting the players data.

Hello all.

Felt it would be right to add my issue into here so people can keep track of migrating from Windows locally to a Linux Dedicated Server like Pterodactyl's Egg and Nest system.

I am happy to provide sav files if need be. I followed every step down to a T and the script completed successfully but sadly joining still makes me make a new character.

0g6I4K 1

I do want to point out though that the file is NOT being overwritten on the server, it's the same name, so it's got something right, but not entirely.

The world exists and has all the builds, but still, sadly, the player (such as the host, me) has to re-create the character.

Accidentally closed it! Don't mind me.

[Feature Request] Action in Reverse?

This tool is to create a XXXXX000000,sav from 0000000001.sav
I am in a reversed situation as I want to create a 000000000.1sav from XXXXX0000000.sav
Grateful if anyone share their experience on this.

Successfuly updating the GUID.save but asking to create a new character

Hello ,
I successfuly run the code , got this stdout :

WARNING: Running this script WILL change your save files and could potentially corrupt your data. It is HIGHLY recommended that you make a backup of your save folder before continuing. Press enter if you would like to continue.

File A:\todelete\B8796C414A6A14A79A2868BC37124733/Level.sav uncompressed successfully
File A:\todelete\B8796C414A6A14A79A2868BC37124733/Level.sav (type: 50) converted to JSON successfully
File A:\todelete\B8796C414A6A14A79A2868BC37124733/Players/00000000000000000000000000000001.sav uncompressed successfully
File A:\todelete\B8796C414A6A14A79A2868BC37124733/Players/00000000000000000000000000000001.sav (type: 49) converted to JSON successfully
Converted save files to JSON
JSON files have been parsed
Changes have been made
JSON files have been exported
Converted A:\todelete\B8796C414A6A14A79A2868BC37124733/Level.sav.json to A:\todelete\B8796C414A6A14A79A2868BC37124733/Level.sav
Converted A:\todelete\B8796C414A6A14A79A2868BC37124733/Players/00000000000000000000000000000001.sav.json to A:\todelete\B8796C414A6A14A79A2868BC37124733/Players/00000000000000000000000000000001.sav
Converted JSON files back to save files
Miscellaneous files removed
Fix has been applied! Have fun!

Then i copy the GUID.save and the level.save from local to the dedicated server . Once i start up the server and login it still asks me to create a new character . I m also sure that the GUID is the right one since i deleted all of the .save in the dedicated server before creating one . I also don't understand why but in the server it creates a new 00000000000000000000000000000001.sav .

Any clue on what can cause that ?

Thanks

Fix is not applied even after doing everything right

I am able to get the the fix to copy my 001.sav to the new one, however when I put the new sav into the server, the server just creates a new sav file and replaces my fresh copy. My friends are able to have all their data without any rewrites. Any idea why this might be happening? Want to add that system locale is set to english and US

EDIT* I am also able to recover all of my map progress (only fog of war) on the fresh character which is the only thing that I have been able to recover from my coop save, otherwise the dedicated server forces me to create a fresh character.

Character not loading.

Hi,

For context, I was able to get the character successfully transferred over 1 time, but I was running into the guild issue where it was acting like my character wasn't in a guild after I transferred it over. So, I tried to redo it and ever since then I haven't been able to log back into my character. I follow all the steps and it seems to work perfectly fine, but when I try to log into the server it makes me create a new character instead of using my old character or even the character that was created when I logged into the server to create the new player save.

Thanks for any help you can provide.

Host Player Map resets.

I applied your fix, however upon a lengthy disconnect and reconnect, the hosted player loses all map progress. (but not boss completions or fast travel points, just what you are able to see) IE the fog of war comes back and you have to clear it to access your fast travels again.

Left click bug on weapons

Seems you cannot hold your left mouse to attack for more than 1 attack before it stops. Not sure why that is the case after the save transfer.

Players don't seem to transfer over

Firstly, thank you for making this script. I am wondering if there is a solution anyone knows of.

My friend was a co-op host. I took his co-op save data, transferred it to a local Windows server, modified the .ini to use the world GUID. I noted my old GUID and his GUID being 0001.

Then, I joined, created a new character. Noted my GUID. I had him join, create a new character. Noted that GUID. Transferred that save over to a temporary folder, ran the script twice, with each GUID.

Then, copied the modified files over to the server again (while it is shut down).

I even tried with the GUID order reversed, but no matter what I seem to do, when I rejoin the server, it is always on the temporary character I made. Any advice?

Instructions unclear

Hi Guys,

Really appreciate that you have worked on this, you'll be saving me and my buddies hours on the levelling etc.

However, im struggling to follow the instructions, especially regarding the use of uesave.exe. When i try to use the program, it flashes up and instantly closes. I assumed maybe i was using it wrong and tried opening this through python but "and get the file path to its install location" is slightly unhelpful. I appreciate i'm using this incorrectly. Its been many years since i've had to use python and it was never to this sort of level, however rudimentry this is to you guys.

Any further help on this would be much appreciated.

many thanks,

[BUG] Not working

After patching everything up and replace things in the directory.

I found that the game UI said I am "Old Host", and when I entered game, I have to create a new character.

Server settings not applied on a transfered save

When a server loads a transfered save, it doesn't use the server settings set in the PalWorldSettings.ini file.

For example, the server name in the option tag will be "Default Palworld Server" (this isn't really an issue).
However it's impossible to be admin since /adminpassword will show "No admin password set", even though a password is provided by the config file.

Loading a fresh save from the server works fine so this it is not a config problem from my side.

I've tried decompressing all the level files to see where the server name / admin password could be stored but I couldn't find anything.
My shot in the dark: A field present in a save file makes the server use these options and not the provided config?

ValueError: invalid literal for int() with base 16: 'rs'

Hi I'm new to this, this is the error i received when trying to run script

File "C:\Users\ikuro\Downloads\uesave-x86_64-pc-windows-msvc\fix-host-save.py", line 244, in
main()
File "C:\Users\ikuro\Downloads\uesave-x86_64-pc-windows-msvc\fix-host-save.py", line 42, in main
temp_old = str(int(old_guid[x-1] + old_guid[x], 16))+',\n'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 16: 'rs'

[zlib.error: Error -5 while decompressing data: incomplete or truncated stream]

When I tried to migrate WINDOWS to LINUX, this error occurred. Is there a problem with my ZLIB dependency?

Thanks!

C:\Users\admin\Downloads\pal>python fix-host-save.py "C:\Users\admin\Downloads\pal\uesave.exe" C:\Users\admin\Downloads\pal\Saved\SaveGames\0\14D127E34FDD6679C9F8759F1560EA5F 088D0CD1000000000000000000000000 9A8203B0000000000000000000000000
WARNING: Running this script WILL change your save files and could potentially corrupt your data. It is HIGHLY recommended that you make a backup of your save folder before continuing. Press enter if you would like to continue.
>
C:\Users\admin\Downloads\pal\uesave.exe
C:\Users\admin\Downloads\pal\Saved\SaveGames\0\14D127E34FDD6679C9F8759F1560EA5F/Level.sav
Traceback (most recent call last):
  File "C:\Users\admin\Downloads\pal\fix-host-save.py", line 247, in <module>
    main()
  File "C:\Users\admin\Downloads\pal\fix-host-save.py", line 75, in main
    sav_to_json(uesave_path, level_sav_path)
  File "C:\Users\admin\Downloads\pal\fix-host-save.py", line 165, in sav_to_json
    uncompressed_data = zlib.decompress(data[12:])
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
zlib.error: Error -5 while decompressing data: incomplete or truncated stream

C:\Users\admin\Downloads\pal>

zlib.error: Error -3 while decompressing data: invalid block type

I have followed Steps 1-10. but when i try too run the command it returns the following error everytime
image

This is the command I ran

python fix-host-save.py "C:\Users\Dr.Schark\Desktop\UESaveEditor\uesave.exe" "C:\Users\Dr.Schark\Desktop\Temporary\06DFC218474097059AD13CBDAB185A3D" E9681AA2000000000000000000000000 00000000000000000000000000000001

player save does not exist ( though it does )

image
getting this error not sure how to fix it tried moving the files into a different folder and changing the directory to that but it did not work
directly copying the new guid from the file name

Cannot Run script

I am using this to run the script, but nothing happens.

python fix-host-save.py "C:\Users\ROB\Downloads\Palworldstuff\uesave-x86_64-pc-windows-msvc\uesave.exe" "C:\Users\ROB\Downloads\Palworldstuff\uesave-x86_64-pc-windows-msvc\DBD5F3B1497985F3B81232A61F9B782A" F06837B4000000000000000000000000 00000000000000000000000000000001

Uesave location, Save location, New GUID, Old GUID. No errors or anything,

Found the problem. Run using "py" instead of "python" for the first word.

Steps confusion

Im a little confused with the steps for this?:

I have the host co-op save -> ...1.sav in a folder old_save/...01.sav
I have the host uuid -> XXXXXXXX0...

But when I run the command:
python fix-host-save.py C:\Program Files\uesave\bin\uesave.exe old_save XXXXXXXX0...

or

python fix-host-save.py C:\Program Files\uesave\bin\uesave.exe old_save\00000000000000000000000000000001.sav XXXXXXXX0...

i get a error:
ERROR: Your co-op host's player save does not exist. Did your host create their character? Once they create their character, a file called "..." should appear. Refer to steps 3&4 of the README.

server config not work and the solution (from reddit author:NoukonNeko)

NoukonNeko

12h ago
Issue:
The game wasn't reading or writting the PalWorldSetting.ini file at all. This was most likely due to transferring save data from a hosted world to a dedicated server, which I notced had two extra files "LocalData.sav" and "WoldOptions.sav" located in:
"PalServer\Pal\Saved\SaveGames\0\AAA988BD43F0E0D951687382A8EC7A80"

The Fix:
After deleting both of those files my game started reading from PalWorldSetting.ini and appying my settings.

Notes:
I lost map progress and tutorial started over from doing this, but I heard this is more from changing server name which is one of the things I was trying to change. So you might be keep them by leaving the server name alone. I deleted "LocalData.sav" first, but that didn't change anything. It was after I deleted "WoldOptions.sav" that I noticed my PalWoldSetting.ini being applied, so you might just need to delete the "WoldOptions.sav" but I figured you probably don't need "LocalData.sav" anyway if dedicated servers normally don't have them and could have have issues keeping it around.

Host Must Create New Character

Followed all steps and script works like a charm for all users but host. Host UID gets updated, but when they join world they have to create a new character each time (this is after the step of creating new character for new UID and running script). My scenario was trying to move a co-op game to a windows dedicated server (different box than what was running co-op).

The workaround I used was using ashiswin's script (https://github.com/ashiswin/Palworld-Dedicated-Server-Host-Fix/tree/main) in conjunction with this script.

Steps:

  1. Loaded into our co-op game
  2. Host passed guild lead to non-host
  3. Everyone left guild so they were in their own guild. NON-HOST owned base
  4. Saved co-op folder. Mine was C:\Users\logan\AppData\Local\Pal\Saved\SaveGames\76561198054363400\C8B2C9BD436FD1C6DBD3469C69DA9404
  5. Moved save file to dedicated server
  6. Everyone logged in and their new UID were generated in Players folder
  7. Deleted WorldOption.sav file
  8. Copied whole game folder "C8B2C9BD436FD1C6DBD3469C69DA9404" to temp folder that also housed scripts
  9. Ran xNul's script for all non-host characters, using their old UID and new UID
  10. Ran ashiswin's script for host character
  11. Deleted the .old and old 0000...1 player .sav file
  12. Moved game folder "C8B2C9BD436FD1C6DBD3469C69DA9404" back dedicated server file structure
  13. Turned server on, everyone was where they should be and we rejoined guild
  14. We did have the pal bug where pals weren't in the guild. We did workaround of dropping the pals and picking them back up to fix

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.