博德之门3删除其他玩家角色方法教学
之前和好兄弟玩的时候因为一些原因不能继续跟了,搜了一下拉瑞安貌似还没有做删除队友角色这个功能,不过好在之后在reddit上看到了这篇教学,搬到这里来给大家做个参考。
原文链接:
https://www.reddit.com/r/BaldursGate3/comments/15qb8lu/guide_removing_custom_multiplayer_party_members/
该方法已知的问题:
其他玩家的角色被删除后,这个玩家不能再次加入游戏,既不能捏人加入也不能以预设角色加入,他们之后只能旁观不能游玩,暂时还没看到有解决办法
与角色绑定的任务道具很难甚至不能转移到其他角色的背包中,如果删除这种角色那后续剧情可能会无法展开
如果角色如果在营地中有未进行的对话,删除角色有可能会坏档,操作之前一定要先手动存档
不能用来删除主机角色
需要做的准备:
一个由Norbyte编写的小工具,需要下载"BG3SE-Updater-wConsole-v1.zip",github项目地址:https://github.com/Norbyte/bg3se/releases
清空要删除的角色背包,防止错过好用的装备
尽量在删除之前长休一次,甚至两次,这样角色就不会有未进行的对话或者过场动画,同时尽可能在营地里删除
步骤:
打开游戏,在主页面设置中将游戏画面改为无边框窗口化,方便后续观察代码是否生效,读取想要删除角色的存档,手动存一次档,把存档命名为未删除,之后如果删除失败了可以读档重来,然后退出游戏和启动器。
找到博德之门3的安装路径,可以在steam库中右键博德之门3,管理,浏览本地文件,将上方下载的压缩包解压到博德之门3文件夹中的bin子文件夹中,路径可能长这样:
C:\Program Files (x86)\Steam\steamapps\common\Baldurs Gate 3\bin
重新启动游戏,此时会有一个命令行窗口弹出,游戏启动器会警告数据错误,可以直接忽略,然后通过启动器打开游戏。
读档,不要邀请之前存档里的玩家,然后选中想要删除的角色,再次确认长休,营地,背包都已妥善处理,然后按Alt+Tab切换到上一步弹出的命令行窗口。
在窗口中逐行输入下列代码,可以复制粘贴,每输完一行就按一次回车,第二行代码结束后窗口会返回一行角色编号,这就是你当前选中角色的编号,下一步会用到。
osi
print(GetHostCharacter())
在命令行窗口中逐行输入下列命令,每输完一行就按一次回车,把每一行中的编号二字替换为上一步中返回的角色编号,注意保留命令中的双引号。
osi
MakeNPC("编号")
SetOnStage("编号", 0)
Osi.DB_Players:Delete("编号")
Osi.DB_Avatars:Delete("编号")
Osi.PROC_CheckPartyFull()
现在玩家自创的角色应该已经消失了,可以随意添加NPC队友,存档并重命名为“已删除”,然后退出游戏
把第二步中解压到游戏bin文件夹中的两个文件(DWrite.dll、ScriptExtenderSettings.json)删除,这样启动器就不会再报错了

如果想要删除的角色背包里有影心的圣物,在删除之前用下面的代码将圣物转移到其他人的背包,否则剧情可能无法推进,在执行命令前需要选中你想要持有圣物的角色
Osi.PROC_GLO_InfernalBox_MoveBoxToCharacter(GetHostCharacter())
Osi.PROC_GLO_InfernalBox_SetPlayerOwner(GetHostCharacter())

(可选)下面的命令可以隐藏已删除的角色在营地中的宝箱,记得先将宝箱清空,这个命令只是隐藏并非删除,不过不删除也不会有影响,也能多一些存储空间
for _,entry in pairs(Osi.DB_Camp_UserCampChest:Get(nil,nil)) do print(entry[2]) end
将下一行命令中的宝箱编号四个字替换为上一行命令返回的编号,注意保留命令中的双引号,如果你删除了不止一个角色,那需要对每个宝箱都运行一次命令
SetOnStage("宝箱编号", 0)

上文中的转移影心圣物与隐藏营地宝箱的命令译者尚未尝试,如果读者有任何问题可以评论或者私信交流