换服必丢角色?用 palworld-host-save-fix 做一次帕鲁存档迁移,从此不怕“创建新角色“
换服必丢角色?用 palworld-host-save-fix 做一次帕鲁存档迁移,从此不怕"创建新角色"
【免费下载链接】palworld-host-save-fixFixes 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.项目地址: https://gitcode.com/gh_mirrors/pa/palworld-host-save-fix
凌晨两点,你终于把和朋友在合作模式里肝了四十多个小时的幻兽帕鲁存档,搬进了新买的专用服务器。满怀期待地登录,屏幕上却弹出三个字——"创建新角色"。角色没了,帕鲁没了,基地也没了。是不是隔着屏幕都能感觉到血压在飙升?别急着骂游戏:这不是你的操作问题,而是幻兽帕鲁存档迁移里一个出了名的 bug,而palworld-host-save-fix,正是专治它的开源工具——它唯一的使命,就是让你在换服务器、换平台时,把旧存档连同角色、帕鲁和基地完整地"搬"过去。
先用一张"户口本"看懂存档为什么认不出你
把存档迁移想象成搬家,你会瞬间明白问题出在哪。
你在老城市有完整的档案——银行、医院、房产,全部挂在你的身份证号下面。搬到新城市,政府给你发了一张新的身份证号,可老档案上写的还是旧号码。于是新城市的每个机构都查不到你,只能把你当成从零开始的新人,重新建档。
幻兽帕鲁的存档就是这个逻辑。游戏用GUID(32 位十六进制字符串,相当于玩家的"身份证号")来识别每个角色,你的等级、帕鲁归属、公会关系,全部挂在这串字符下面。麻烦在于:合作模式、Windows 专用服务器、Linux 专用服务器,每种环境的 GUID 生成规则都不一样。你一换服务器,新服务器生成一个全新 GUID,对着旧存档一查——查无此人,那就新建角色吧。
palworld-host-save-fix 的核心思路只有一句话:把新服务器分配给你的新 GUID 写进旧存档,让新服务器"认出"你本来就有角色。
它的做法很稳:先用 palworld-save-tools 库把.sav二进制存档解压成可读的 JSON,把所有记录旧 GUID 的位置(玩家档案、角色参数、公会数据)统一替换成新 GUID,再压缩回.sav格式,最后把存档文件改名成新 GUID 的文件名。服务器启动时一看:这个人有户口,档案齐全,欢迎回家。
动手前先花五分钟,把这三件小事做扎实
1. 备份,备份,还是备份
这句话值得用三遍强调,因为作者自己在文档里就写了:这是实验性脚本,已知存在 bug,请务必保留存档副本。工具只负责改存档,不负责给你兜底。把整个存档文件夹复制一份放到别处,是你买过最便宜的保险。
2. 装好依赖环境
工具需要Python 3.10 或更高版本,外加一个叫 palworld-save-tools 的解析库:
# 安装解析 .sav 存档的核心依赖(版本号务必保持一致) python -m pip install palworld-save-tools==0.17.1 # 获取工具代码 git clone https://gitcode.com/gh_mirrors/pa/palworld-host-save-fix cd palworld-host-save-fix3. 认准存档里的"身份证号"
在服务器存档目录下,Level.sav是整个世界的地图数据,Players文件夹里每一个.sav文件的文件名,就是对应玩家的 GUID。比如6E80B1A6000000000000000000000000.sav,前面那串 32 位字符就是这位玩家的身份标识。记住它——后面所有命令,本质都是在和这串字符打交道。做错了,最坏的情况就是把 A 玩家的存档盖到 B 玩家身上。
先对号入座:你是哪一类"换服难民"
接下来的操作分两种场景,先别急着抄命令:
- 场景 A:合作模式 → 专用服务器。只有合作主机一个人的角色会丢,其他人不受影响。跳到下一节。
- 场景 B:专用服务器 → 另一台专用服务器(比如 Windows 服搬到 Linux 服)。全员 GUID 都变了,人人都被强制新建角色,没有一个人能幸免。跳到"场景 B"一节。
场景 A:把合作模式的存档搬进专用服务器
这是最常见的情形:你们在合作模式玩到中期,决定搭一个 24 小时在线的专用服务器。别慌,按这条主线走,十分钟内能完成。
第 1 步,先把存档送进新服务器。把合作存档文件夹(一般在AppData\Local\Pal\Saved\SaveGames\<随机数字>下)整个复制到专用服务器的PalServer\Pal\Saved\SaveGames\0目录,然后修改服务器的GameUserSettings.ini,把DedicatedServerName改成你存档文件夹的名字。这一步是让服务器"加载哪份世界地图";改错了,服务器会开一张全新地图,等于白搬。顺手删掉存档文件夹里的WorldOption.sav,服务器的PalWorldSettings.ini设置才会生效,代价只是玩家要重新选一次重生点。
第 2 步,在新服务器上"占个坑"。启动服务器,先让一个不属于合作主机的角色登录确认世界是对的,然后让原来的合作主机登录并创建一个新角色。这个新角色的.sav文件会出现在Players文件夹里,它的文件名就是你需要的"新 GUID"。记住它,这是后面命令的两个关键参数之一。
第 3 步,让旧存档"认领"新身份。关闭服务器,把整个存档文件夹(注意,是带着新角色那个)复制到一个临时文件夹,然后打开命令行运行:
python fix_host_save.py "临时文件夹路径\存档文件夹名" 新GUID 00000000000000000000000000000001 False三个要点必须看仔细:
- 合作模式主机的旧 GUID 永远是
00000000000000000000000000000001,别自己猜,直接用这一串。 - 最后那个参数
False表示这次不需要公会修复,原因下面会讲。 - 命令会先弹出一段数据风险警告,要求按回车确认,确认前请确保你已经备份过了。
工具会依次完成"解压存档 → 替换 GUID → 写回存档 → 改名"整套动作。跑完后把临时文件夹里的存档复制回服务器(服务器里原来那份挪走或改名,别直接覆盖),启动,让主机登录——角色应该完完整整地回来了。
场景 B:全员换服,给每个玩家跑一遍修复
如果你搬的是整个专用服务器,情况要复杂一些:所有玩家的 GUID 都变了,没有一个人能幸免。这时候思路一样,只是要重复执行:
- 新服务器启动后,让每个玩家都登录一次创建新角色,把每个人的新旧 GUID 一一对应记下来(记在小本子上,别靠脑子);
- 关闭服务器,复制存档到临时文件夹;
- 依次对每个玩家运行一遍修复命令,这次最后一个参数要写成
True,开启公会修复:
# 玩家一 python fix_host_save.py "临时文件夹路径\存档文件夹名" 玩家一的新GUID 玩家一的旧GUID True # 玩家二 python fix_host_save.py "临时文件夹路径\存档文件夹名" 玩家二的新GUID 玩家二的旧GUID True没错,这里没有一键批量按钮,逐个玩家跑命令就是官方推荐的"批量"方式。虽然看起来笨,但胜在每一步都可控:某个人跑挂了,你立刻知道是哪个 GUID 对不上,不至于一锅端。每跑完一个,工具都会在最后打印一句Fix has been applied! Have fun!,看到这句再处理下一个。
修完后别急着庆祝,先做这套五分钟验收
存档修好、服务器重启、全员登录之后,先别急着开香槟。官方明确提示:玩满 5 分钟,重点核对两个信号。
- 信号一:帕鲁是否正常工作。如果发现帕鲁不工作、不攻击,别慌,这是已知的"帕鲁 bug"。让对应玩家进入基地,把帕鲁从队伍里全部丢到地上再捡起来,包括基地里的工作帕鲁。这个过程会重新登记帕鲁与公会的归属关系,问题当场解决。
- 信号二:左键攻击是否失灵。少数玩家修复后会遇到按住左键无法连续攻击的怪现象,退出公会再重新加入就好了。
两个信号都正常,才算验收通过,可以放心把存档留在新家。
四个高频翻车现场,翻车前先看一眼
翻车一:GUID 多带了 .sav。从文件名复制 GUID 时手一抖,把扩展名也带上去了。工具会直接报错提醒你,因为它要求参数必须是纯 32 位字符。同理,长度不对、新旧 GUID 填成同一个,工具都会在动手前拦住你——这些校验逻辑都是它内置的,你只要读懂报错信息即可。
翻车二:合作模式迁移前没处理公会。这是官方标注的头号已知问题:修复后公会成员关系可能不正常。官方给的解法是,合作模式在搬档之前,先把公会所有权转让给另一个角色,让主机角色退出公会,再开始迁移。这一步做在前面,能绕开整个公会 bug。
翻车三:带着"观赏笼"搬家。合作模式里建的观赏笼不被专用服务器支持,如果不拆掉就迁移,后续会出问题。搬档前记得先拆。
翻车四:找不到玩家的 GUID。除了看.sav文件名,还可以在旧服务器里设一个管理员密码,进游戏后在聊天框输入/adminpassword <你的密码>,再输入/showplayers,列表里的playeruid字段就是玩家的身份编号。它是一串十进制数字,转成 8 位十六进制就是 GUID 的前缀,用这一小段去Players文件夹里匹配文件名即可:
# 把 playeruid 数字转成 16 进制前缀,例如 python -c "print(format(你的playeruid数字, '08x'))"用两个小技巧,把迁移之路走得更顺
技巧一:不想碰命令行,直接用图形界面。运行python gui.py,会弹出一个窗口,点 Browse 选择存档文件夹,工具会自动扫描Players目录,把每个角色解析成"角色名(等级)"显示在下拉框里——你根本不用记 GUID,选人就行。勾选公会修复选项,点 Run Command,再回到终端按一下回车确认即可。这个模式特别适合给看不懂命令的队友操作。
技巧二:用 GUI 辅助命令行。命令行模式卡在 GUID 上时,可以先打开 GUI 让它扫一遍存档,把角色名和 GUID 的对应关系看清楚,再切回命令行精确输入。两步结合,效率和准确率兼得。仓库里还附带一个extract_byte_data.py脚本,能把存档 JSON 中所有尚未解码的原始字节数据导出成文件,怀疑某个数据块有问题时,它是最有用的探针——普通玩家用不上,但愿意折腾的话,它能帮你彻底理解存档的内部构造。
现在,轮到你动手了
换服丢档这件事,本质上是游戏存档机制设计带来的历史遗留问题,你完全没必要为它买单。现在你知道了原理:GUID 就是存档世界的身份证号,而 palworld-host-save-fix 就是那个帮你"改户口本"的工具。备份一份存档,装好依赖,对号入座,完成一次真正的帕鲁存档迁移——回到那个凌晨两点,这一次,屏幕上不会再出现"创建新角色",你的角色正带着满身家当,在新家的基地里等你。
祝迁移顺利,帕鲁们在新家等你。
【免费下载链接】palworld-host-save-fixFixes 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.项目地址: https://gitcode.com/gh_mirrors/pa/palworld-host-save-fix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
