v0.3.7 update bugged the tools.
Opened this issue ยท 15 comments
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\convert.py", line 145, in
main()
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\convert.py", line 65, in main
convert_sav_to_json(
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\convert.py", line 105, in convert_sav_to_json
gvas_file = GvasFile.read(
^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\gvas.py", line 131, in read
gvas_file.properties = reader.properties_until_end()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 399, in property
value = self.struct(path)
^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 515, in struct
value = self.struct_value(struct_type, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 477, in property
value = self.prop_value(value_type, value_struct_type, value_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 499, in prop_value
return self.struct_value(struct_type_name, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 396, in property
value = self.custom_properties[path][0](self, type_name, size, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\rawdata\character.py", line 13, in decode
value["value"] = decode_bytes(reader, char_bytes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\rawdata\character.py", line 22, in decode_bytes
"object": reader.properties_until_end(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 399, in property
value = self.struct(path)
^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 515, in struct
value = self.struct_value(struct_type, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Desktop\PalworldSaveToolsMaster\PalworldSaveTools.v0.7.3\palworld_save_tools\archive.py", line 493, in property
raise Exception(f"Unknown type: {type_name} ({path})")
Exception: Unknown type: ByteProperty (.SaveParameter.Rank)
Gives me an error after getting the Level.sav from updated server after the update v0.3.7. Any suggestions/inputs on how to fix this?
AND
Exception: Unknown type: ByteProperty (.SaveParameter.Talent_HP)
TestSavev0.3.7.zip
Thought I should attach my updated save from my server after updating to v0.3.7 just in case to help you debug and finding the potential fix.
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.
I've compared values between IV stats + character levels and found the original values for the fields are stored in the upper 8 bits of the uint16, e.g.:
512 -> 2
4608 -> 18
5120 -> 20
7168 -> 28
9216 -> 36
(New vals on left, original on right, right values are the same as left >> 8
)
(Less like uint16, more like uint8 (value) and another uint8 (padding?))
unknown_str
always seems to be "None" for my sample
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.
Are you saying that the code in that .zip file can properly convert the Level.sav file to JSON?
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
palworld_save_tools.zip
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.Are you saying that the code in that .zip file can properly convert the Level.sav file to JSON?
As far as I am concerned, and on multiple saves, yes - it should.
I also used it for converting from local to dedicated server, and via versa, seems to be working without any issues. As far as I know.
The only issue I can see, is if we try to use this version of tool with older saves that aren't updated on/after v0.3.7 patch, it'll error out. Besides that, the saves on/after v0.3.7 patch will work as intended.
Checking if Python is installed as python3
INFO: Could not find files for the given pattern(s).
Checking if Python is installed as python
C:\Users\Administrator\AppData\Local\Programs\Python\Python312\python.exe
Found Python at python
Python version:
Python 3.12.6
Converting C:\TCAFiles\Users\bobasaurs\14\Pal\Saved\SaveGames\0\B378F4FE4EFAF82D90BE9399231CD6A0\Level.sav to JSON, saving to C:\TCAFiles\Users\bobasaurs\14\Pal\Saved\SaveGames\0\B378F4FE4EFAF82D90BE9399231CD6A0\Level.sav.json
Decompressing sav file
Loading GVAS file
Traceback (most recent call last):
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\convert.py", line 164, in
main()
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\convert.py", line 75, in main
convert_sav_to_json(
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\convert.py", line 118, in convert_sav_to_json
gvas_file = GvasFile.read(
^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\gvas.py", line 131, in read
gvas_file.properties = reader.properties_until_end()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 399, in property
value = self.struct(path)
^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 515, in struct
value = self.struct_value(struct_type, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 477, in property
value = self.prop_value(value_type, value_struct_type, value_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 499, in prop_value
return self.struct_value(struct_type_name, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 396, in property
value = self.custom_properties[path][0](self, type_name, size, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\rawdata\character.py", line 13, in decode
value["value"] = decode_bytes(reader, char_bytes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\rawdata\character.py", line 22, in decode_bytes
"object": reader.properties_until_end(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 399, in property
value = self.struct(path)
^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 515, in struct
value = self.struct_value(struct_type, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 542, in struct_value
return self.properties_until_end(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 386, in properties_until_end
properties[name] = self.property(type_name, size, f"{path}.{name}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\Downloads\palworld-save-tools-windows-v0.23.1\palworld_save_tools\archive.py", line 493, in property
raise Exception(f"Unknown type: {type_name} ({path})")
Exception: Unknown type: ByteProperty (.SaveParameter.Level)
Press any key to continue . . .
fresh world save today gives this error ?
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
palworld_save_tools.zip
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.Are you saying that the code in that .zip file can properly convert the Level.sav file to JSON?
As far as I am concerned, and on multiple saves, yes - it should.
I also used it for converting from local to dedicated server, and via versa, seems to be working without any issues. As far as I know.
Would you mind sharing an example of the command syntax you're using? I cant seem to get it to work no matter what.
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
palworld_save_tools.zip
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.Are you saying that the code in that .zip file can properly convert the Level.sav file to JSON?
As far as I am concerned, and on multiple saves, yes - it should.
I also used it for converting from local to dedicated server, and via versa, seems to be working without any issues. As far as I know.Would you mind sharing an example of the command syntax you're using? I cant seem to get it to work no matter what.
I use my own script batch to launch convert.py. I have a repo of it if you want to check.
Basically, it's just "python convert.py Level.sav" for me.
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
palworld_save_tools.zip
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.Are you saying that the code in that .zip file can properly convert the Level.sav file to JSON?
As far as I am concerned, and on multiple saves, yes - it should.
I also used it for converting from local to dedicated server, and via versa, seems to be working without any issues. As far as I know.Would you mind sharing an example of the command syntax you're using? I cant seem to get it to work no matter what.
I use my own script batch to launch convert.py. I have a repo of it if you want to check.
Basically, it's just "python convert.py Level.sav" for me.
Yes, please share your repo. Thanks!
https://github.com/deafdudecomputers/PalWorldSaveTools This is my repo.
https://github.com/deafdudecomputers/PalWorldSaveTools This is my repo.
Hilarious! Your repo was the one I actually used for a long while now. I only found this one after the update broke your tool. I love your work, thanks for doing it.
Nice to hear that, lol. Glad you like it. :)
Thanks to Choi-Jungwoo above, the tool has a temporary solution.
Both archive.py and item_container_slots.py has been updated from v0.23.1 version of tool.
THANKS SO MUCH! I needed this to move my server from windows to linux the GUIDs are fucked and the new save format is ass and doesnt convert without this patched version