注: 以下内容windows服务器和本地联机理论上可行,但未亲测,效果不敢保证~
背景
服务器突然出现坏档,我碰到的具体表现为:
- 某一时段同时在线的玩家们在服务器重启后下次上线时需创建新号,旧档丢失(存档文件大小明显减小),当时不在线的玩家不受影响;
- 服务器重置后将【坏档】放入存档文件夹,这些玩家会出现在原本的位置上,但等级、帕鲁、科技、装备等均清空,然而地图的迷雾已开放至原先状态,但传送点需重新激活;
- 另可能出现“奔跑从摁住shift变成点shift切换”、“鼠标左键不能摁住”等奇怪现象(来源于贴吧),已证实存在。
解决办法
所需材料:
- 【必选】距离坏档时间点较近的存档/尚未创建新角色的坏档;
- 【可选】存档转换脚本(https://github.com/MuelNova/Palworld-Save-Patcher);
- 【可选】用户steam id;
别急,可选材料获取办法将放在文章中详解。
步骤:回档+改档
- 找到服务器存档位置,linux服务器存档位置为[你的安装路径]/Pal/Saved/SaveGames/0。
你会看到一个名称很长的字符串文件夹,这个文件夹名称对应的是[你的安装路径]/Pal/Saved/Config/LinuxServer/GameUserSettings.ini中的DedicatedServerName。
- 找到你存档文件夹中的Players文件夹下的玩家存档中的几个坏档
存档文件夹中会有Players文件夹,Level.sav和LevelMeta.sav,
Players文件夹中的是玩家存档,Level.sav是包含玩家等级、已解锁地图、地图数据等的总存档,以下称为大档;LevelMeta.sav是Level.sav的元数据,应该是类似头文件的作用。玩家存档均为十六进制.sav,无法直接通过文件名判断属于谁。
- 用备份的存档中同名的玩家存档替换坏档(这一步需要先关服)
识别坏档有3种方法:
①在游戏中使用管理员指令/adminpassword [你的密码]开通管理员,然后在选项中可看到在线玩家的列表,点击即可复制坏档玩家的steam id,之后将该id转为十六进制即为玩家存档名称;
②通过时间排序,如果最新存档中存在特别小的存档(2.5KB左右)大概率为坏档,在备份的存档中查找同名文件即可。
③如果坏档了但是还没创建新角色的注意,这里你的存档还是正常大小(>2.5KB),直接备份整个Players存档文件夹!然后再开服->创建新角色->这时候就已经可以在Players文件夹中看到新出现的2.5KB以下的存档了,那个就是你的,关服用刚刚备份过的同名存档替换掉即可
-
重启服务器,应该已经恢复了等级、装备、帕鲁以及传送点,但是此时如果备份时间较早,可能会丢失科技点(科技点和古代科技点均为0)。
-
【可选步骤】修改存档以恢复科技点
参考全网首发:幻兽帕鲁魔改文件实现四人房服主传送,下载项目https://github.com/MuelNova/Palworld-Save-Patcher,在有python3.0以上版本的环境下运行(否则需删除脚本中所有的annotation)。
在Palworld-Save-Patcher-main目录下打开cmd输入python script.py <xxxx>.sav <xxxx>.json
将玩家存档.sav文件转为json文件,然后使用任意IDE打开json文件(可以记事本)搜索UnlockedRecipeTechnologyNames。在该行前面,如果已有TechnologyPoint和bossTechnologyPoint,则直接修改值即可,如图
如果存档中没有,则需手动将上述内容复制到UnlockedRecipeTechnologyNames前面,特别注意括号和逗号!如果没有操作json的经验,可以用JSON在线解析及格式化验证 - JSON.cn等辅助确认没有搞错。
修改完成后,使用python script.py <xxxx>.json <xxxx>.sav
将json文件转回.sav文件,在关闭服务器的情况下覆盖服务器存档(记得备份),重启服务器即可。