Skip to content

Commit a17546a

Browse files
v0.4.11 major update
Several changes applied to make tools work with v0.4.11 patch. Includes revisions to how save structure works AND includes new map, that now has new area.
1 parent d82ac9d commit a17546a

File tree

10 files changed

+24
-22
lines changed

10 files changed

+24
-22
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# PalWorldSaveTools
22

3-
# Working as of v0.3.12 patch.
3+
# Working as of v0.4.11 patch.
44

55
- **Author:** MagicBear and cheahjs
66
- **License:** MIT License

external_libs/palworld_coord/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from collections import namedtuple
22

3-
__transl_x = 123888
4-
__transl_y = 158000
5-
__scale = 459
3+
__transl_x = 276020
4+
__transl_y = -15000
5+
__scale = 724
66

77
Point = namedtuple('Point', ['x', 'y'])
88

external_libs/palworld_save_tools/archive.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def get_type_or(self, path: str, default: str):
250250
if path in self.type_hints:
251251
return self.type_hints[path]
252252
else:
253-
print(f"Struct type for {path} not found, assuming {default}")
253+
#print(f"Struct type for {path} not found, assuming {default}")
254254
return default
255255

256256
def eof(self) -> bool:

external_libs/palworld_save_tools/rawdata/group.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def decode_bytes(
5959
group_data |= indie
6060
if group_type == "EPalGroupType::Guild":
6161
guild = {
62+
"unknown_field_1": reader.i64(),
63+
"unknown_field_2": reader.i64(),
6264
"admin_player_uid": reader.guid(),
6365
"players": [],
6466
}
@@ -116,6 +118,8 @@ def encode_bytes(p: dict[str, Any]) -> bytes:
116118
writer.i64(p["player_info"]["last_online_real_time"])
117119
writer.fstring(p["player_info"]["player_name"])
118120
if p["group_type"] == "EPalGroupType::Guild":
121+
writer.i64(p["unknown_field_1"])
122+
writer.i64(p["unknown_field_2"])
119123
writer.guid(p["admin_player_uid"])
120124
writer.i32(len(p["players"]))
121125
for i in range(len(p["players"])):

external_libs/palworld_save_tools/rawdata/work.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def decode_bytes(
102102
data["target_map_object_model_id"] = reader.guid()
103103

104104
if len(data.keys()) == 0:
105-
print(f"Warning, unable to parse {work_type}, falling back to raw bytes")
105+
#print(f"Warning, unable to parse {work_type}, falling back to raw bytes")
106106
return {"values": b_bytes}
107107
# UPalWorkProgressTransformBase->SerializeProperties
108108
transform_type = reader.byte()
@@ -116,9 +116,7 @@ def decode_bytes(
116116
data["transform"]["instance_id"] = reader.guid()
117117
else:
118118
remaining_data = reader.read_to_end()
119-
print(
120-
f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}: {''.join(f'{b:02x}' for b in remaining_data)}"
121-
)
119+
#print(f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}: {''.join(f'{b:02x}' for b in remaining_data)}")
122120
data["transform"]["raw_data"] = [b for b in remaining_data]
123121

124122
if not reader.eof():
@@ -245,10 +243,9 @@ def encode_bytes(p: dict[str, Any], work_type: str) -> bytes:
245243
writer.guid(p["transform"]["guid"])
246244
writer.guid(p["transform"]["instance_id"])
247245
else:
248-
print(
249-
f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}"
250-
)
251-
writer.write(p["transform"]["raw_data"])
246+
#print(f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}")
247+
#writer.write(p["transform"]["raw_data"])
248+
writer.write(bytes(p["transform"]["raw_data"]))
252249

253250
encoded_bytes = writer.bytes()
254251
return encoded_bytes

internal_libs/worldmap.png

-8.54 MB
Loading

palworld_save_tools/archive.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def get_type_or(self, path: str, default: str):
250250
if path in self.type_hints:
251251
return self.type_hints[path]
252252
else:
253-
print(f"Struct type for {path} not found, assuming {default}")
253+
#print(f"Struct type for {path} not found, assuming {default}")
254254
return default
255255

256256
def eof(self) -> bool:

palworld_save_tools/rawdata/group.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def decode_bytes(
5959
group_data |= indie
6060
if group_type == "EPalGroupType::Guild":
6161
guild = {
62+
"unknown_field_1": reader.i64(),
63+
"unknown_field_2": reader.i64(),
6264
"admin_player_uid": reader.guid(),
6365
"players": [],
6466
}
@@ -116,6 +118,8 @@ def encode_bytes(p: dict[str, Any]) -> bytes:
116118
writer.i64(p["player_info"]["last_online_real_time"])
117119
writer.fstring(p["player_info"]["player_name"])
118120
if p["group_type"] == "EPalGroupType::Guild":
121+
writer.i64(p["unknown_field_1"])
122+
writer.i64(p["unknown_field_2"])
119123
writer.guid(p["admin_player_uid"])
120124
writer.i32(len(p["players"]))
121125
for i in range(len(p["players"])):

palworld_save_tools/rawdata/work.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ def decode_bytes(
116116
data["transform"]["instance_id"] = reader.guid()
117117
else:
118118
remaining_data = reader.read_to_end()
119-
print(
120-
f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}: {''.join(f'{b:02x}' for b in remaining_data)}"
121-
)
119+
#print(f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}: {''.join(f'{b:02x}' for b in remaining_data)}")
122120
data["transform"]["raw_data"] = [b for b in remaining_data]
123121

124122
if not reader.eof():
@@ -245,10 +243,9 @@ def encode_bytes(p: dict[str, Any], work_type: str) -> bytes:
245243
writer.guid(p["transform"]["guid"])
246244
writer.guid(p["transform"]["instance_id"])
247245
else:
248-
print(
249-
f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}"
250-
)
251-
writer.write(p["transform"]["raw_data"])
246+
#print(f"Unknown EPalWorkTransformType, please report this: {transform_type}: {work_type}")
247+
#writer.write(p["transform"]["raw_data"])
248+
writer.write(bytes(p["transform"]["raw_data"]))
252249

253250
encoded_bytes = writer.bytes()
254251
return encoded_bytes

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.9.2
1+
0.9.3

0 commit comments

Comments
 (0)