首要兼容性补丁

首要兼容性补丁

让Primer(炼金术)与改变炼金菜单的模组一起运行,例如Living Economy、UI Remastered Edition、Better Icons和Sort Everything。添加游戏炼金菜单中Primer菜单缺少的部分,以便它们的脚本能够编译。不改变Primer中的任何内容。

[center][size=5][b][color=#E3C16F][url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 兼容补丁[/color][/b][/size]
让 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 能与修改炼金菜单的模组一同运行,例如 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url]、[url=https://www.nexusmods.com/witcher3/mods/14578]UI Remastered Edition[/url]、[url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 和 [url=https://www.nexusmods.com/witcher3/mods/1710]Sort Everything[/url]。[/center]

[line]

[size=5][b][color=#E3C16F]问题所在[/color][/b][/size]
[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 用一个同名菜单替换了游戏的炼金菜单。许多模组会对游戏的炼金菜单进行扩展:显示价格、排序配方、更改图标。它们期望游戏菜单中存在某些部分,而 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单并不具备,因此游戏在编译脚本时会停止并报出类似以下的错误:

[code]Error [modlivingeconomy]local\livingeconomy.ws(340): @wrapMethod cannot wrap 'CR4AlchemyMenu::GetTooltipData' because it is a definition inherited from 'CR4ListBaseMenu'.
Error [mod0000_uiremasterededition]local\uiremasterededition\uire_status.ws(956): @wrapMethod cannot wrap 'CR4AlchemyMenu::PopulateData' because it is a definition inherited from 'CR4ListBaseMenu'.[/code]
[size=5][b][color=#E3C16F]补丁的作用[/color][/b][/size]
它为 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单补上了游戏炼金菜单中仍然缺失的部分:8 个字段和 10 个方法。自 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 1.22 起,作者已自行添加其余部分。[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单从不调用本补丁添加的内容,因此其中不会有任何变化。
[list]
[][url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 完全按照其作者制作的方式运行。[/]
[]其他模组在游戏的其余部分正常工作。它们通过全游戏范围的物品查找所做的更改仍会作用于 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单([url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 的图标会在其中显示)。它们仅通过游戏炼金菜单所做的更改则不会:[url=https://www.nexusmods.com/witcher3/mods/1710]Sort Everything[/url] 的排序、[url=https://www.nexusmods.com/witcher3/mods/14578]UI Remastered Edition[/url] 的突变物分组以及 [url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 的“显示名称”选项。[/]
[]配合 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url] 时,每家商店、铁匠、修理、奖励和制作费用都保留其地区价格。自 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 1.22 起,菜单还会告知 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url] 正在与哪位商人交易,因此 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url] 现在可能适用于在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 炼金菜单内购买的配料。此点尚未完全测试:如果那里的价格看起来不对,请在 Posts 标签页中报告。[/]
[]它不包含来自 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 或任何其他模组的代码,也不替换任何文件,因此无需合并。[/]
[/list]
[size=5][b][color=#E3C16F]可选:Better Icons Names[/color][/b][/size]
[url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 的图标已能在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单中显示。其针对炼金和制作的“显示名称”选项则不能,因为 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单从不请求名称。可选文件 [b]Better Icons Names[/b] 解决了这个问题:它遵循你的 [url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 设置,因此当你开启该选项时,[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 菜单中的配方和配料图标会显示名称。[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 自带的六个物质图标则保持 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 绘制的方式。需要本补丁、[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 和 [url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url]:没有本补丁,[url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 和 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 无法一起编译。方法由 [url=https://www.nexusmods.com/profile/01DarkLord04]01DarkLord04[/url] 提供。

[size=5][b][color=#E3C16F]未覆盖的内容[/color][/b][/size]
[list]
[][b]炼金菜单文件(.swf):[/b]只能加载一个模组的菜单文件。如果另一个模组的菜单文件先加载([url=https://www.nexusmods.com/witcher3/mods/14578]UI Remastered Edition[/url] 会先加载,名为 mod0000_),[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的配料筛选可能无法正常工作,如 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的页面所述。[/]
[][b][url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 替换的文件[/b](playerWitcher.ws、playerabilitymanager.ws 等):安装 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 后运行 [url=https://www.nexusmods.com/witcher3/mods/484]Script Merger[/url] 并检查其合并结果。在测试中,它丢弃了 [url=https://www.nexusmods.com/witcher3/mods/7249]God Mode[/url] 在 playerabilitymanager.ws 中需要的两行(LoadMutagenSlotsDataFromXML 中的 [font=Courier New]var one : int;[/font] 和 [font=Courier New]one = 1;[/font])。[/]
[][b][url=https://www.nexusmods.com/witcher3/mods/8921]Auto Take All[/url]:[/b]开启其草药自动采集后,杰洛特的草药拾取行为会变得异常,因为 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 改变了草药的运作方式。请关闭草药自动采集。[/]
[/list]
[size=5][b][color=#E3C16F]需求[/color][/b][/size]
[list]
[]《巫师 3》次世代版(已在 2026 年 10 月 29 日的更新上测试)[/]
[][url=https://www.nexusmods.com/witcher3/mods/8081]Primer (Alchemy)[/url] 1.22 或更高版本。对于 Primer 1.21 及更早版本,请从 Old files 下载 1.0.0 版本。[/]
[/list]已与 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url]、[url=https://www.nexusmods.com/witcher3/mods/14578]UI Remastered[/url]、[url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url]、[url=https://www.nexusmods.com/witcher3/mods/1710]Sort Everything[/url] 和 [url=https://www.nexusmods.com/witcher3/mods/7249]God Mode[/url] 一同测试。

[size=5][b][color=#E3C16F]安装[/color][/b][/size]
[list=1]
[]按照 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 页面的说明安装它:其 Mods 和 DLC 文件夹、其输入设置,然后运行 [url=https://www.nexusmods.com/witcher3/mods/484]Script Merger[/url]。[/]
[]将此压缩包中的 [font=Courier New]Mods[/font] 文件夹复制到你的游戏文件夹(包含 bin 和 content 的那个),或使用模组管理器安装。[/]
[/list]
[size=5][b][color=#E3C16F]卸载[/color][/b][/size]
删除 [font=Courier New]Mods\modPrimerCompatibilityPatch[/font]。当你移除 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 时请一并移除它,因为没有 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 它无法编译。要移除 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 本身,请遵循 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 自己的步骤(先使用其“Uninstall Mod”选项)。

[size=5][b][color=#E3C16F]致 [url=https://www.nexusmods.com/witcher3/mods/14735]A Witcher's Knowledge[/url] 玩家[/color][/b][/size]
[url=https://www.nexusmods.com/witcher3/mods/14735]A Witcher's Knowledge[/url] 有自己的可选文件,[url=https://www.nexusmods.com/witcher3/mods/14735?tab=files][b]AWK - Primer Patch[/b][/url],它在“Seasoned Alchemist”开启时,将 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的六个蒸馏配方隐藏,直到完成“Practicum in Advanced Alchemy”。无论是否使用本补丁,它都能正常工作。

[size=5][b][color=#E3C16F]致模组作者[/color][/b][/size]
本补丁仅用于阻止崩溃。如果你希望你的模组炼金菜单功能也能在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单中显示,请基于下方的钩子和获取器构建,而不是 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的内部实现。它们的名称不会改变;可能会新增。让你的补丁依赖本补丁。
[spoiler]
[b]钩子[/b]
每个钩子都是 [font=Courier New]CR4AlchemyMenu[/font] 的一个空方法,会在其旁注明的 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 方法之后立即运行。用 [font=Courier New]@wrapMethod(CR4AlchemyMenu)[/font] 包装你需要的那个,并先调用 [font=Courier New]wrappedMethod()[/font]。
[list]
[][font=Courier New]PCP_OnMenuOpened()[/font]:在 OnConfigUI 之后。菜单已打开,其炼金师(如果有)已知。[/]
[][font=Courier New]PCP_OnRecipesReady()[/font]:在 PreProcessRecipes 之后。配方列表已构建并评估,尚未绘制。[/]
[][font=Courier New]PCP_OnRecipeListDrawn()[/font]:在 DrawRecipeList 之后。列表已发送到菜单。[/]
[][font=Courier New]PCP_OnRecipeSelected(tag : name)[/font]:在 OnEntrySelected 之后。tag 是配方 id,当选择被清除时为 ''。[/]
[][font=Courier New]PCP_OnItemCrafted(recipeId : name, count : int)[/font]:在 CreateRecipeItem 之后(酿造、蒸馏、制作)。[/]
[][font=Courier New]PCP_OnIngredientBought(itemId : SItemUniqueId, quantity : int)[/font]:在 BuyIngredient 之后,仅在购买成功时。[/]
[][font=Courier New]PCP_OnMenuClosing()[/font]:在 OnClosingMenu 之后。[/]
[/list]
[b]获取器[/b]
[list]
[][font=Courier New]PCP_Version() : string[/font],例如 "1.1.0"[/]
[][font=Courier New]PCP_GetAlchemist() : CNewNPC[/font] 和 [font=Courier New]PCP_GetAlchemistInventory() : CInventoryComponent[/font];不在商店时为 NULL[/]
[][font=Courier New]PCP_GetSelectedRecipeId() : name[/font] 和 [font=Courier New]PCP_GetRecipeCount() : int[/font][/]
[/list]
[b]示例[/b]
[code]// Tell the player which alchemist's shop the menu opened in.
@wrapMethod(CR4AlchemyMenu) function PCP_OnMenuOpened()
{
wrappedMethod();
if ( PCP_GetAlchemist() )
thePlayer.DisplayHudMessage( "Trading with " + PCP_GetAlchemist().GetDisplayName() );
}[/code]
[b]注意事项[/b]
[list]
[]你的包装位于 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的类内部,因此它们也可以读取其自身字段(recipes、ingredients、current_recipe)。这些字段可能随 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 更新而变化;获取器则不会。[/]
[]配料提示框无法被钩住:[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 在一个事件内构建并发送它。[/]
[]当多个模组包装同一个钩子时,它们之间没有固定顺序。[/]
[]本补丁添加的原版字段保持为空,其添加的原版方法永远不会被 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单调用。不要依赖它们在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单中生效。[/]
[]可选下载 [b]Hook Tester[/b]:每次钩子运行时在屏幕上显示一条消息。仅供测试。[/]
[/list][/spoiler]

[size=5][b][color=#E3C16F]鸣谢[/color][/b][/size]
[list]
[][url=https://www.nexusmods.com/profile/skyliner390]SkylineR390[/url],感谢 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url][/]
[][url=https://www.nexusmods.com/profile/Exiur]Exiur[/url],感谢 [url=https://www.nexusmods.com/witcher3/mods/13678]Living Economy[/url][/]
[][url=https://www.nexusmods.com/profile/satityr]satityr[/url],感谢报告和错误日志[/]
[][url=https://www.nexusmods.com/profile/01DarkLord04]01DarkLord04[/url],感谢 Better Icons Names 方法[/]
[][url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 团队([url=https://www.nexusmods.com/profile/Deepk]Deepk[/url]、[url=https://www.nexusmods.com/profile/Akatoshka7]Akatoshka7[/url]、[url=https://www.nexusmods.com/profile/01DarkLord04]01DarkLord04[/url]),感谢 [url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url][/]
[/list]
[size=5][b][color=#E3C16F]更新日志[/color][/b][/size]
[spoiler]
[b]1.1.0[/b]
[list]
[]需要 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 1.22 或更高版本。[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 1.22 自行添加了部分游戏炼金菜单部件(GetTooltipData、PopulateData、ShowSelectedItemInfo、CreateItem 以及九个字段),因此本补丁不再添加它们。它添加仍然缺失的 8 个字段和 10 个方法。[/]
[]修复:PCP_OnItemCrafted 钩子和 PCP_GetSelectedRecipeId 获取器现在跟随 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 1.22 中重命名的 CreateRecipeItem 和 current_recipe。钩子和获取器名称保持不变。[/]
[/list]
[b]Better Icons Names 1.0.0(可选文件)[/b]
[list]
[]新增可选文件:[url=https://www.nexusmods.com/witcher3/mods/13197]Better Icons[/url] 的“显示名称”选项现在可在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的炼金菜单中生效。方法由 [url=https://www.nexusmods.com/profile/01DarkLord04]01DarkLord04[/url] 提供。[/]
[/list]
[b]1.0.0[/b]
[list]
[]首次发布:[url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的炼金菜单获得游戏炼金菜单中它缺失的每个部分,因此钩住炼金菜单的模组可以与 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 一起编译。[/]
[]为模组作者在 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 的菜单内提供七个钩子和五个获取器,以及可选的 Hook Tester。[/]
[/list][/spoiler]

[size=5][b][color=#E3C16F]支持[/color][/b][/size]
发现了仍会与 [url=https://www.nexusmods.com/witcher3/mods/8081]Primer[/url] 冲突的模组?在 Posts 标签页中发布其名称和编译错误,我会查看。
如果本补丁挽救了你的加载顺序,请考虑支持我的 [size=4][url=https://ko-fi.com/geronimoes][b]Ko-Fi[/b][/url][/size] 或 [size=4][url=https://patreon.com/Geronimoes?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink][b]Patreon[/b][/url][/size]
这从来不是必须的,无论如何本补丁都保持免费。