jmkl009 / PalworldCharacterTransfer

This script transfers character between worlds in Palworld, which allows friends to transfer their characters to each other's server without losing one's progress.
121 stars 7 forks source link

我有一个新方法,不需要使用python转换存档文件,而且可以将文件放回单人游戏使用 #7

Closed number201724 closed 7 months ago

number201724 commented 7 months ago

我有一个新方法,不需要使用python转换存档文件,而且可以将文件放回单人游戏使用 通过给服务器打patch,让服务器正确识别其他玩家的steamid的hash和通过指定单人模式的steamid来让dedicated server也能使用本地用户的.sav文件

https://github.com/number201724/PalServerHostFix

jmkl009 commented 7 months ago

很好,不过我好奇你这个方法能让服务器的存档转回单机使用吗?

number201724 commented 7 months ago

可以是可以,但是有条件,比如A用户创建的存档,可以让A用户放回单机用,如果B用户放回来有点问题,可以处理,但是我没做,主要是在https://github.com/number201724/PalServerHostFix/blob/cddb452237a0e28b2f5b7f0c6a567ce35d95d4bc/PalServerHostSaveFix/dllmain.cpp#L117 这里把Guid换成目标用户就行了,我目前只处理了单机存档的steamid到00000000000000000000000000000001.sav的问题

而且我还修复了一个东西,就是如果没装steam的机器,使用steamcmd更下来的服务器,使用palserver直接启动的话,不会找到steamclient64啥的,导致players目录下的hash不一样,然后就会出现单机的存档放到服务器后,需要一个一个用户挨个转存档的问题,我这个设置了环境变量可以让它直接找到steamclient64然后成功初始化steam状态,然后所有存档的guid就和单机模式一样了

jmkl009 commented 7 months ago

还有一个问题,因为帕鲁的信息保留在本地的Level.sav里,所以如果服务器已经有一些人在玩有自己的存档的话,那我们只能把人物文件复制到服务器,这样的话是不是不能保留在本地玩的时候抓的帕鲁了?

number201724 commented 7 months ago

我做这个的目的主要是方便单机存档放到专用服务器上跑,就本地开多人模式只能4个人,朋友一起玩的多了之后人数多了,就要专用服务器了,然后又不想丢本地存档的所有进度……,然后我转存档转炸了才做的这个工具