Skip to content

Commit

Permalink
v0.3.9
Browse files Browse the repository at this point in the history
-------

Merge:
- i18n for Pals (Edit Instance dropdown menu) Pull Request #9 by KrisCris
- BatchDeleteUnreferencedItemContainers by Kakoen

Fix:

- Copy Player group instances bug
  • Loading branch information
magicbear committed Feb 8, 2024
1 parent 6f946dc commit 1e9bb4c
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ v0.3.9

Merge:
- i18n for Pals (Edit Instance dropdown menu) Pull Request #9 by KrisCris
- BatchDeleteUnreferencedItemContainers by Kakoen

Fix:

Expand Down
49 changes: 46 additions & 3 deletions palworld_server_toolkit/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -1762,10 +1762,19 @@ def build_gui(self):
f_target_guildbase.pack(anchor=tk.constants.W)
f_target_instance.pack(anchor=tk.constants.W)

g_pal = ttk.Button(master=g_button_frame, text="Pal Edit", style="custom.TButton", command=self.pal_edit)
g_wholefile = tk.Frame(borderwidth=1, relief=tk.constants.GROOVE, pady=5)
self.i18n['op_for_all'] = tk.Label(master=g_wholefile, text="Operate for All", font=self.font)
self.i18n['op_for_all'].pack(fill="x", side="top")
g_del_unref_item = ttk.Button(master=g_wholefile, text="Delete Unref Item", style="custom.TButton",
command=lambda: BatchDeleteUnreferencedItemContainers())
self.i18n['del_unreference_item'] = g_del_unref_item
g_del_unref_item.pack(side="left")

g_pal = ttk.Button(master=g_wholefile, text="Pal Edit", style="custom.TButton", command=self.pal_edit)
self.i18n['edit_pal'] = g_pal
g_pal.pack(side="left")
g_button_frame.pack()
g_wholefile.pack(fill=tk.X)


g_save = ttk.Button(text="Save & Exit", style="custom.TButton", command=self.save)
self.i18n['save'] = g_save
Expand Down Expand Up @@ -2516,9 +2525,41 @@ def FindReferenceItemContainerIds():
characterData = character['value']['RawData']['value']['object']['SaveParameter']['value']
if 'EquipItemContainerId' in characterData:
reference_ids.append(characterData['EquipItemContainerId']['value']['ID']['value'])


for baseCamp in wsd['BaseCampSaveData']['value']:
reference_ids.append(baseCamp['value']['WorkerDirector']['value']['RawData']['value']['container_id'])

return reference_ids

def GetReferencedItemContainerIdsByPlayer(player_uid):
err, player_gvas, player_sav_file, player_gvas_file = GetPlayerGvas(player_uid)
if err:
print("\033[33mWarning: Player Sav file Not exists: %s\033[0m" % player_sav_file)
return
player_container_ids = []
for key in ['OtomoCharacterContainerId', 'PalStorageContainerId']:
player_container_ids.append(player_gvas[key]['value']['ID']['value'])

for key in ['CommonContainerId', 'DropSlotContainerId', 'EssentialContainerId', 'FoodEquipContainerId',
'PlayerEquipArmorContainerId', 'WeaponLoadOutContainerId']:
player_container_ids.append(player_gvas['inventoryInfo']['value'][key]['value']['ID']['value'])
return player_container_ids


def FindAllUnreferencedItemContainerIds():
LoadItemContainerMaps()
referencedContainerIds = set(FindReferenceItemContainerIds())
allContainerIds = set(MappingCache.ItemContainerSaveData.keys())
for playerId in playerMapping:
referencedContainerIds.update(GetReferencedItemContainerIdsByPlayer(playerId))

return list(allContainerIds - referencedContainerIds)


def BatchDeleteUnreferencedItemContainers():
unreferencedContainerIds = FindAllUnreferencedItemContainerIds()
print(f"Delete Non-Referenced Item Containers: {len(unreferencedContainerIds)}")
BatchDeleteItemContainer(unreferencedContainerIds)

def BatchDeleteItemContainer(itemContainerIds):
LoadItemContainerMaps()
Expand All @@ -2532,6 +2573,8 @@ def BatchDeleteItemContainer(itemContainerIds):
continue

deleteItemContainerIds.append(itemContainerId)
if len(deleteItemContainerIds) % 10000 == 0:
print(f"Deleting Item Containers: {len(deleteItemContainerIds)} / {len(itemContainerIds)}")
container = parse_item(MappingCache.ItemContainerSaveData[itemContainerId], "ItemContainerSaveData")
containerSlots = container['value']['Slots']['value']['values']
for slotItem in containerSlots:
Expand Down
4 changes: 3 additions & 1 deletion palworld_server_toolkit/resources/gui_en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@
"edit_item": "Edit Item",
"edit_pal": "Edit Pal",
"migrate_player": "⬆️ Migrate Player ⬇️",
"copy_player": "⬆️ Copy Player ⬇️"
"copy_player": "⬆️ Copy Player ⬇️",
"op_for_all": "Operate for File",
"del_unreference_item": "Delete Unreference Item Containers"
}
4 changes: 3 additions & 1 deletion palworld_server_toolkit/resources/gui_zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@
"edit_item": "修改物品",
"edit_pal": "修改帕鲁",
"migrate_player": "迁移玩家",
"copy_player": "复制玩家"
"copy_player": "复制玩家",
"op_for_all": "对文件进行操作",
"del_unreference_item": "删除未引用的物品库"
}
6 changes: 3 additions & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ classifiers =

[options]
package_dir =
palworld_server_toolkit.PalEdit=palworld_server_toolkit/PalEdit/
palworld_server_toolkit.PalEdit.lib=palworld_server_toolkit/PalEdit/lib/
palworld_server_toolkit.PalEdit.lib.rawdata=palworld_server_toolkit/PalEdit/lib/rawdata/
palworld_server_toolkit.PalEdit=palworld_server_toolkit/PalEdit
palworld_server_toolkit.PalEdit.lib=palworld_server_toolkit/PalEdit/lib
palworld_server_toolkit.PalEdit.lib.rawdata=palworld_server_toolkit/PalEdit/lib/rawdata
#packages = find:
packages =
palworld_server_toolkit
Expand Down

0 comments on commit 1e9bb4c

Please sign in to comment.