动态NPC——解决多个MOD间的NPC冲突(SKSE)
转自:https://www.nexusmods.com/skyrimspecialedition/mods/172584
通过SKSE解决多个MOD间的NPC冲突。
·运行需求
- 必需安装SKSE插件地址库:https://bbs.3dmgame.com/thread-6549645-1-1.html
- 必需安装上古卷轴脚本扩展工具(SKSE64):https://bbs.3dmgame.com/thread-6550387-1-1.html
当多个MOD修改同一个NPC时,《上古卷轴》仅会保留加载顺序中最后一个MOD的修改内容,丢弃其他所有MOD的改动。本插件可修复该问题,找回所有丢失的修改内容并妥善解决冲突,涵盖:背包物品、法术、perk、AI包、阵营、着装、属性、技能、AI性格、特性、关键词以及Papyrus脚本。
本版本为alpha测试版,尚未经过完整游戏流程测试,可能存在BUG。可能会导致NPC行为异常,或无法掉落正确物品。在我的测试环境中一切运行正常。本MOD支持随时安装与卸载,无安全风险,但建议提前备份存档以防万一。
xEdit版本教程。常规版本的INI文件中提供了类似的.esp优先级列表选项。
---
·运行需求
- 《上古卷轴5》特别版(1.5.97)、周年版(1.6.x)或VR版
- SKSE
- SKSE插件地址库
·本MOD功能
我会尽量简化说明,欢迎提出疑问。
当多个MOD修改同一个NPC时,绝大多数情况下,《上古卷轴》仅会保留加载顺序中最后一个MOD的内容,其他所有MOD的改动都会被无提示删除。本插件会检查所有修改了对应NPC的MOD,识别出每个MOD新增或移除的内容,并在游戏启动时将所有改动整合还原。你可以把它理解为针对NPC的自动Bashed补丁,而且效果大概率更出色。
可解决11个类别的NPC冲突。典型场景:你安装了多个从不同维度修改NPC的MOD,一个MOD给莱迪亚新增了法术,另一个给她更换了更好的装备,第三个将她加入了新的阵营,第四个修改了她的战斗风格。而《上古卷轴》只会保留加载顺序最后的MOD内容,无提示丢弃其他所有改动。之后你只能费力寻找兼容补丁,寄希望于Wrye Bash修复问题,或是在TES5Edit中手动制作补丁。本MOD的目标,就是让这些麻烦彻底成为过去。
- 尊重移除操作。如果某个MOD明确移除了NPC的某个法术、perk、物品或阵营身份,该移除操作会被保留,插件不会将其恢复。大型overhaul MOD常会进行针对性的内容移除,若没有兼容补丁,这些移除操作会失效。本MOD可避免该问题发生。
- 尊重模板规则。如果最终生效的MOD使用模板标记从模板NPC继承数据,插件不会覆盖这些继承的字段,仅会合并最终生效MOD实际修改的内容。
简单来说,无需制作任何实际补丁,它就能完成数十个兼容补丁的工作。
---
·修复内容
每个类别都可在INI文件中单独开启或关闭。
- 背包物品:NPC背包中的武器、护甲、药水及其他所有物品。可追踪所有新增、移除与数量变更操作。
- FaceGen面部数据:NPC的外观数据,包括脸型、肤色、发型、眼睛、伤疤与头部部件。你可在INI文件中为每个NPC指定最终生效的外观MOD,列表中排在最后的MOD享有优先级,且仅对其修改的NPC生效。
- 法术:常规法术、等级法术与龙吼。如果某个MOD为NPC新增了法术,而另一个MOD覆盖了该NPC的设置,本插件会恢复新增的法术。
- Perk:Perk与perk等级变更。如果某个MOD新增或修改了perk,该改动会被恢复。
- AI包:控制NPC日常行为的AI逻辑。丢失的AI包会被添加到列表末尾,避免打乱最终生效MOD的AI包排序。完全兼容AI Overhaul等同类MOD。
- 阵营:阵营归属与阵营等级。如果某个MOD将NPC加入了新阵营或修改了其阵营等级,这些改动会被恢复。
- 着装:定义NPC穿戴内容的着装记录。如果一个MOD为某套装束新增了护甲,而另一个MOD覆盖了该着装设置,新增的护甲会被恢复。同时支持睡眠装束。
- 属性:生命值、法力值、耐力值偏移量,等级与等级范围,移动速度,倒地流血设置,全部18项技能数值与偏移量,以及Essential必需、Protected受保护、Unique唯一、Respawn可刷新、IsGhost幽灵、Invulnerable无敌等NPC标记。每个字段与标记都会单独处理。
- AI数据:NPC的性格设置,包括攻击性、自信度、活跃度、道德准则、情绪与援助行为。同时会恢复旁观、观察尸体、守卫警告、进入战斗相关的行为覆盖列表。
- 特性:种族、职业、默认着装、战斗风格、犯罪阵营、礼物筛选、语音类型、身高、体重与显示名称。
- 关键词:其他MOD与游戏系统用于识别NPC类型的标签。被覆盖的MOD所新增或移除的关键词会被恢复。
- Papyrus脚本:MOD附加到NPC上的脚本。如果某个MOD为NPC添加了脚本,而另一个MOD覆盖了该NPC的设置,该脚本会被恢复。从模板继承脚本的NPC不会被改动。
---
·本MOD不具备的功能(常见问题)
这类问题被频繁问到,在此明确说明:
- 本MOD不是SPID。SPID的功能是根据MOD作者定义的规则分发物品与法术,而本插件的作用是恢复你的MOD已做出、但被游戏丢弃的改动。二者的功能完全不同。
- 本MOD不会随机选择新增或移除的内容。它所解决的每一处冲突,都来自于你已安装MOD的明确改动,只是因为另一个MOD编辑了同一个NPC,这些改动才被游戏丢弃。
- 本MOD不能完全替代Wrye Bash。它仅在NPC相关功能上与Wrye Bash有相似之处,且测试效果更优,而Bashed补丁还有其他更多用途。
- 本MOD不会改动等级列表、容器或其他任何内容,仅处理NPC相关数据。如需对应功能,可查看Dynamic Leveled Lists与Dynamic Container Loot这两个MOD。
- 本MOD不会盲目合并记录。它会将每个MOD的改动与原版内容进行对比,仅保留每个MOD明确新增或移除的内容,以智能方式解决冲突,而非盲目复制数据。
- 本MOD不会产生脏编辑(ITM)。不会向磁盘写入任何内容,所有冲突解决都在游戏加载时于内存中完成,绝不会改动你的插件文件。
---
·问题根源
《上古卷轴》有一条简单的规则:如果两个MOD编辑了同一项内容,加载顺序中排在最后的MOD会完全生效,另一个MOD的改动会被全部丢弃。因此如果MODA给莱迪亚新增了法术,MODB给她更换了新装备,最终你只会得到新装备,新增的法术会彻底消失。没有任何警告与报错,只是被无提示删除。
你安装的MOD越多,这个问题就越严重。加载顺序中数百项针对NPC的改动可能会凭空消失,法术、perk、背包物品、阵营归属、AI包、属性、性格设置,所有内容都可能仅仅因为两个MOD作者恰好编辑了同一个NPC而全部丢失。
·解决方案
动态NPC会检查所有编辑了对应NPC的MOD,识别出每个MOD新增或移除的内容,再将所有改动整合还原。最终效果等同于你为加载顺序中的每一处NPC冲突都手动制作了兼容补丁,而你无需进行任何操作。
·运行原理
- 在游戏启动时、进入主菜单前运行一次
- 找出所有被两个及以上MOD修改过的NPC
- 读取每个MOD中对应NPC的设置,识别其新增与移除的内容
- 整合所有改动,避免非预期的内容丢失
- 以相同逻辑对着装记录进行单独处理
---
·设置说明
- enablelogs
默认值:false
记录针对每个NPC的所有改动。如果你想查看具体的合并内容,该功能会很有帮助,但会拖慢游戏启动速度。除非你有相关需求或正在排查问题,否则建议保持关闭。
- mergeInventories
默认值:true
为NPC恢复丢失的背包物品(武器、护甲、药水、杂物)
- mergeSpells
默认值:true
为NPC恢复丢失的法术、等级法术与龙吼
- mergePerks
默认值:true
为NPC恢复丢失的perk与perk等级变更
- mergeOutfits
默认值:true
解决着装冲突,包括睡眠装束。由于着装是独立的记录类型,该功能会与NPC冲突解决分开单独处理。
- mergePackages
默认值:true
为NPC恢复丢失的AI包。新增的AI包会被添加到列表末尾,以保留最终生效MOD的AI包优先级。
- mergeFactions
默认值:true
为NPC恢复丢失的阵营归属与等级变更
- mergeStats
默认值:true
解决属性冲突:生命值、法力值、耐力值偏移量,等级与等级范围,移动速度,倒地流血设置,全部18项技能数值与偏移量,以及Essential必需、Protected受保护、Unique唯一、Invulnerable无敌等独立角色标记。
- mergeAIData
默认值:true
解决AI性格冲突:攻击性、自信度、活跃度、道德准则、情绪、援助行为与仇恨距离。同时恢复旁观、观察尸体、守卫警告、进入战斗相关的行为覆盖列表。
- mergeTraits
默认值:true
解决特性冲突:种族、职业、默认着装、战斗风格、犯罪阵营、礼物筛选、语音类型、身高、体重与显示名称。如果某个MOD修改了NPC的核心基础设定,这些改动会被保留。
- mergeKeywords
默认值:true
恢复丢失的NPC关键词。关键词是游戏与其他MOD用于分类NPC的标签(例如ActorTypeUndead亡灵类型、MagicNoAbsorb法术无法吸收)。如果某个MOD新增或移除了关键词,而另一个MOD覆盖了该NPC的设置,这些关键词改动会被恢复。
- mergeScripts
默认值:true
恢复附加到NPC上丢失的Papyrus脚本。如果某个MOD为NPC添加了脚本,而另一个MOD覆盖了该NPC的设置,该脚本会被恢复。从模板继承脚本的NPC不会被改动。
---
·日志读取
日志文件路径为Documents/my games/Skyrim Special Edition/DynamicNPCs.log,会始终显示运行汇总信息,示例如下:
=== DynamicNPCs:合并完成 ===
NPC:总计1234个,45个存在冲突,32个已解决
背包:新增156项,移除23项,8项数量变更
法术:新增89项,移除12项
Perk:新增34项,移除5项,3项等级变更
AI包:新增12项,移除4项
阵营:新增18项,移除2项,5项等级变更
属性:14个字段变更,6个标记变更
AI数据:8个字段变更,3个覆盖包变更
特性:5项变更
关键词:新增7项,移除2项
脚本:新增3项,移除1项
冲突:4项(保留最终生效MOD数值)
着装:总计256套,12套存在冲突,8套已解决
着装物品:新增34项,移除5项
---
·兼容性
- Wrye Bash/Mator Smash:可完美兼容。这类工具会提前完成补丁合并,而本MOD会在游戏启动时补全它们遗漏的内容。
- SPID:无冲突。二者功能不同,可独立运行。
- 加载顺序:无影响。适配任何加载顺序,仅会读取你的MOD内容,不会对其进行修改。
- Dynamic Container Loot:完全兼容。该插件处理容器相关内容,本MOD处理NPC相关内容,二者同时安装可实现全内容覆盖。
- Dynamic Leveled Lists:完全兼容。该插件处理等级列表相关内容,本MOD处理NPC相关内容,二者同时安装可实现全内容覆盖。
- 其他SKSE插件:无冲突。本插件不会挂钩任何游戏函数,因此不会与其他插件产生冲突。
---
下载地址:
**** Hidden Message *****
66666666666666666666
太厉害了~~~~ 感谢感谢 感谢分享 谢谢分享
455555555555555
感谢大佬分享
谢谢分享,这就试试
谢谢分享
666666666666666
谢谢分享
鼓励分享!~
谢谢谢谢谢谢
6666666666666666666666
69666666666666666666666666666666
感谢分享
emmmmmmmmmmmmmmmm
666666666666666666666
666666666666
动态NPC——解决多个MOD间的NPC冲突(SKSE)
1111111111111
谢谢楼主分享
66666666666666666666
来了老弟。
666666666666666666666666
6666666666666666666
感谢分享!
谢谢分享!!! DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
页:
[1]
2