相信不少人也遇到過這種報錯,真的鬧心。
如果是使用WitcherScriptMerger 0.6.2的話,這種錯誤是根本檢測不出來。
透過四處查找,終於找到了這種報錯的緣由。
問題出在檔案上。
在GOG年度版1.3.1遊戲原檔案中原本是有“GetChosenMainMenuType”等函數的定義的。
位置:E:The Witcher 3 GOGcontentcontent0scriptsgame
而在WitcherScriptMerger 0.6.2漢化版中,其初始默認的就缺失了這段“GetChosenMainMenuType”等函數的定義。
位置:E:The Witcher 3 GOGWitcher Script MergerToolswcc_liter4datascriptsgame
當使用0.6.2版去做mod整合時生成的mod0000_MergedFiles時,其生成的也就沒有“GetChosenMainMenuType”函數的
位置:E:The Witcher 3 GOGModsmod0000_MergedFilescontentscriptsgame
所以用0.6.2版整合腳本,檢測無錯(它本身就不包含GetChosenMainMenuType等有些函數的寫入),但開啟遊戲加載腳本時就會出錯。
解決方法:
GetChosenMainMenuType函數的定義等缺失部分,在PopulateMenuQueueMainAlways函數和GetNewGameDefinitionFilename函數之間。
1.開啟:E:The Witcher 3 GOGModsmod0000_MergedFilescontentscriptsgame (右鍵用記事本開啟該檔案)
2.搜尋(Ctrl+F):public function GetNewGameDefinitionFilename() : string
3.在其之前添加:GetChosenMainMenuType等函數的定義,內容如下(內容與E:The Witcher 3 GOGcontentcontent0scriptsgame中的相同)
private var _mainMenuType : int; default _mainMenuType = -1;
public function GetChosenMainMenuType() : int
{
return _mainMenuType;
}
private function ChooseRandomMainMenuIfNotChosenYet() : int
{
var availableMainMenuTypes : array< int >;
var seed : int;
var index : int;
if ( _mainMenuType > -1 )
{
return _mainMenuType;
}
Back( 0 );
if (LCManager()1Available())
{
Back( 1 );
}
if (LCManager()2Available())
{
Back( 2 );
}
seed = CalcSeed( theGame );
index = (int)RandNoiseF( seed, () );
_mainMenuType = availableMainMenuTypes[ index ];
LogChannel('asd', "RAND " + seed + " " + index + " " + _mainMenuType );
return _mainMenuType;
}
注意“}”別刪,“private var _mainMenuType : int;”前面的Tab符別忘,回車符要有。
改完之後,可以開啟E:The Witcher 3 GOGcontentcontent0scriptsgame,兩個檔案對比看看格式。
最後,如果沒有mod0000_MergedFiles檔案夾,比如單個mod的測試,也有相同的錯誤,上述的方法同樣適用。
在Mods檔案夾下搜尋“”
選擇可能引起報錯的,同樣地對照E:The Witcher 3 GOGcontentcontent0scriptsgame來添加缺失部分。