博德之門(mén)3刪除其他玩家角色方法教學(xué)
之前和好兄弟玩的時(shí)候因?yàn)橐恍┰虿荒芾^續(xù)跟了,搜了一下拉瑞安貌似還沒(méi)有做刪除隊(duì)友角色這個(gè)功能,不過(guò)好在之后在reddit上看到了這篇教學(xué),搬到這里來(lái)給大家做個(gè)參考。
原文鏈接:
https://www.reddit.com/r/BaldursGate3/comments/15qb8lu/guide_removing_custom_multiplayer_party_members/
該方法已知的問(wèn)題:
其他玩家的角色被刪除后,這個(gè)玩家不能再次加入游戲,既不能捏人加入也不能以預(yù)設(shè)角色加入,他們之后只能旁觀不能游玩,暫時(shí)還沒(méi)看到有解決辦法
與角色綁定的任務(wù)道具很難甚至不能轉(zhuǎn)移到其他角色的背包中,如果刪除這種角色那后續(xù)劇情可能會(huì)無(wú)法展開(kāi)
如果角色如果在營(yíng)地中有未進(jìn)行的對(duì)話,刪除角色有可能會(huì)壞檔,操作之前一定要先手動(dòng)存檔
不能用來(lái)刪除主機(jī)角色
需要做的準(zhǔn)備:
一個(gè)由Norbyte編寫(xiě)的小工具,需要下載"BG3SE-Updater-wConsole-v1.zip",github項(xiàng)目地址:https://github.com/Norbyte/bg3se/releases
清空要?jiǎng)h除的角色背包,防止錯(cuò)過(guò)好用的裝備
盡量在刪除之前長(zhǎng)休一次,甚至兩次,這樣角色就不會(huì)有未進(jìn)行的對(duì)話或者過(guò)場(chǎng)動(dòng)畫(huà),同時(shí)盡可能在營(yíng)地里刪除
步驟:
打開(kāi)游戲,在主頁(yè)面設(shè)置中將游戲畫(huà)面改為無(wú)邊框窗口化,方便后續(xù)觀察代碼是否生效,讀取想要?jiǎng)h除角色的存檔,手動(dòng)存一次檔,把存檔命名為未刪除,之后如果刪除失敗了可以讀檔重來(lái),然后退出游戲和啟動(dòng)器。
找到博德之門(mén)3的安裝路徑,可以在steam庫(kù)中右鍵博德之門(mén)3,管理,瀏覽本地文件,將上方下載的壓縮包解壓到博德之門(mén)3文件夾中的bin子文件夾中,路徑可能長(zhǎng)這樣:
C:\Program Files (x86)\Steam\steamapps\common\Baldurs Gate 3\bin
重新啟動(dòng)游戲,此時(shí)會(huì)有一個(gè)命令行窗口彈出,游戲啟動(dòng)器會(huì)警告數(shù)據(jù)錯(cuò)誤,可以直接忽略,然后通過(guò)啟動(dòng)器打開(kāi)游戲。
讀檔,不要邀請(qǐng)之前存檔里的玩家,然后選中想要?jiǎng)h除的角色,再次確認(rèn)長(zhǎng)休,營(yíng)地,背包都已妥善處理,然后按Alt+Tab切換到上一步彈出的命令行窗口。
在窗口中逐行輸入下列代碼,可以復(fù)制粘貼,每輸完一行就按一次回車,第二行代碼結(jié)束后窗口會(huì)返回一行角色編號(hào),這就是你當(dāng)前選中角色的編號(hào),下一步會(huì)用到。
osi
print(GetHostCharacter())
在命令行窗口中逐行輸入下列命令,每輸完一行就按一次回車,把每一行中的編號(hào)二字替換為上一步中返回的角色編號(hào),注意保留命令中的雙引號(hào)。
osi
MakeNPC("編號(hào)")
SetOnStage("編號(hào)", 0)
Osi.DB_Players:Delete("編號(hào)")
Osi.DB_Avatars:Delete("編號(hào)")
Osi.PROC_CheckPartyFull()
現(xiàn)在玩家自創(chuàng)的角色應(yīng)該已經(jīng)消失了,可以隨意添加NPC隊(duì)友,存檔并重命名為“已刪除”,然后退出游戲
把第二步中解壓到游戲bin文件夾中的兩個(gè)文件(DWrite.dll、ScriptExtenderSettings.json)刪除,這樣啟動(dòng)器就不會(huì)再報(bào)錯(cuò)了

如果想要?jiǎng)h除的角色背包里有影心的圣物,在刪除之前用下面的代碼將圣物轉(zhuǎn)移到其他人的背包,否則劇情可能無(wú)法推進(jìn),在執(zhí)行命令前需要選中你想要持有圣物的角色
Osi.PROC_GLO_InfernalBox_MoveBoxToCharacter(GetHostCharacter())
Osi.PROC_GLO_InfernalBox_SetPlayerOwner(GetHostCharacter())

(可選)下面的命令可以隱藏已刪除的角色在營(yíng)地中的寶箱,記得先將寶箱清空,這個(gè)命令只是隱藏并非刪除,不過(guò)不刪除也不會(huì)有影響,也能多一些存儲(chǔ)空間
for _,entry in pairs(Osi.DB_Camp_UserCampChest:Get(nil,nil)) do print(entry[2]) end
將下一行命令中的寶箱編號(hào)四個(gè)字替換為上一行命令返回的編號(hào),注意保留命令中的雙引號(hào),如果你刪除了不止一個(gè)角色,那需要對(duì)每個(gè)寶箱都運(yùn)行一次命令
SetOnStage("寶箱編號(hào)", 0)

上文中的轉(zhuǎn)移影心圣物與隱藏營(yíng)地寶箱的命令譯者尚未嘗試,如果讀者有任何問(wèn)題可以評(píng)論或者私信交流