我的家就是你的家 SKSE NG
My Home Is Your Home的独立SKSE/CommonLibSSE-NG重建版
分配自定义住所、早餐区、午餐区、晚餐区、睡眠区、工作区和警卫岗,最多可分配给 1,000名关注者.
概述
吾家即汝家SKSE NG是经典随从住宅模组的独立技术重构版
我的家就是你的家.
原始概念和对话结构保持不变,内部实现已围绕以下内容重新设计:
- 一个持久化的SKSE原生常驻数据库
- 运行时创建的位置标记
- 八个独立的任务别名包系统
- 所有行为任务的稳定居民栏位共享
- 独立宅邸、早餐、午餐、晚餐、睡眠、工作和守卫控制
- 分离被动防御与主动防御行为,使其共享一个防御位置
- 动态单活动包日程评估器
- 新一代的脏槽队列,以小批量方式处理日程变更
- 玩家当前可比空间内居民的最优先时间表更新
- 用于逐居民日程编辑和守卫模式切换的SkyUI MCM菜单
- 一个轻量级 ESL 插件
每位已注册的信徒都可以拥有独立的:
- 当前位置
- 早餐区域
- 午餐区域
- 用餐区
- 睡眠区
- 工作区域
- 守卫区域
早餐、午餐、晚餐、睡眠、工作和守卫均为可选活动。设置家园不会自动启用这六项活动中的任何一项。
开发过程借助了AI工具辅助,最终整合及游戏内流畅度测试由作者在Skyrim SE 1.5.97版本上完成。
1.3版本 - 可选Prisma UI日程界面
版本1.3新增了对可选项的原生支持
棱镜界面 居民日程管理界面。
原始SkyUI MCM仍完全受支持。除非安装了可选的居民日程界面,否则无需使用Prisma UI。
两个界面使用同一个原生的MHiYH常驻数据库:
- 原始的SkyUI MCM将继续正常工作
- 可选的Prisma UI面板提供了更大的可视化日程编辑器
- 在任何一端界面上所做的更改,在另一端刷新或重新打开后均会显示。
- 最新应用的设置已生效
居民日程界面
可选的Prisma UI界面提供了一个专用面板,用于管理已注册MHiYH居民的日程时间。
功能特性:
- 按姓名或数据库槽位搜索居民
- 显示居民姓名、槽位和FormID
- 编辑早餐时间表
- 编辑午餐时间表
- 编辑用餐时间表
- 编辑睡眠时间表
- 编辑工作日程表
- 编辑守护排班
- 选择被动防御或主动防御
- 显示已配置位置和启用状态信息
- 恢复默认日程时间
- 直接将更改应用于现有的本地居民数据库
支持的时间值:
- 开始时间:00:00 - 23:00
- 结束时间:00:00 - 24:00
- 支持隔夜班次,例如22:00 - 07:00
包位置和普通日程的启用状态仍归对话所有。
使用随从对话命令来指定或取消早餐、午餐、晚餐、睡觉、工作和守卫地点。Prisma UI面板可更改日程时间窗口并选择守卫模式。
正在打开Prisma UI界面
可选界面新增内容:
MHiYH:居民日程这是一个次级能力,可通过常规能力/吼叫键打开居民日程面板。
首次安装时,功率为:
自动加入收藏的操作仅在首次获得该能力时执行。如果玩家之后将其从收藏中移除,MHiYH不会在每次加载游戏时强制重新添加。
主动与被动防御
当居民已配置守卫位置时,Prisma 界面可在被动守卫和主动守卫之间切换该居民。
- 被动防御 使用非攻击性守卫行为
- 主动防御 使用激进的巡逻行为
- 两种守卫模式无法同时激活。
- 必须先在追随者对话中指定守卫位置
切换警卫模式不会创建、移动或移除居民的警卫标记。
原始MCM兼容性
版本1.3不会替换或移除原始SkyUI MCM。
更新的MHiYH.dll包含:
- MCM所使用的现有Papyrus原生函数
- 本地居民数据库
- 调度器与包刷新系统
- 现有的SKSE序列化系统
- 可选的Prisma UI桥接器
因此,原始MCM和Prisma UI面板操作的是相同的数据。
当一个界面已打开,而更改通过另一个界面应用时,请先关闭并重新打开或刷新相关页面,再查看新数值。
可选Prisma界面要求
Prisma UI界面需要:
可选界面包内含:
- MHiYHPrismaUI.esl
- PrismaUI/views/MHiYH/index.html
- PrismaUI/views/MHiYH/styles.css
- PrismaUI/views/MHiYH/app.js
可选包中不包含MHiYH.dll。
权威的 MHiYH.dll 随 MHiYH 主文件一同分发,以防止主文件与可选的 Prisma UI 界面安装不同版本的 DLL。
安装顺序
推荐的安装顺序:
- 安装或更新“My Home Is Your Home SKSE NG”
- 安装Prisma UI
- 安装可选的MHiYH Prisma UI日程界面
- 如果使用,请随后安装可选的简体中文替换包
推荐的插件顺序:
MHiYH.esl
MHiYHPrismaUI.esl
简体中文版为覆盖替换版本,并保留文件名:
MHiYHPrismaUI.esl
允许翻译后的文件和翻译后的Prisma UI视图文件覆盖英文可选界面。
正在更新 MHiYH SKSE NG
版本1.3可安装于现有存档上。
安装更新的主文件,以便使用1.3版MHiYH.dll。
重要:请勿使用包含其自带MHiYH.dll的旧版Prisma UI补丁。旧版可选DLL可能会覆盖当前主文件DLL,并恢复过时的原生代码。
当前可选的Prisma UI界面仅包含其ESL和界面资源。
无需为版本1.3重新编译任何Papyrus脚本。现有的常驻数据库、序列化格式、调度器以及已保存的常驻数据均保持兼容。
未安装Prisma UI的玩家可以正常继续使用原版SkyUI MCM。
版本1.2.1热修复
版本1.2.1修复了继承的门锁行为。
MHiYH睡眠包.
变更内容:
- 已禁用 锁定车门? 在MHiYHSleepPackage中
- 已禁用 锁定前警告? 在MHiYHSleepPackage中
- 阻止了追随者在设定的睡眠时间开始时要求玩家离开
- 阻止相关侵入状态阻碍玩家睡觉或等待
- 保留了普通跟随者旅行、床铺选择及睡眠行为
这是一个小型ESL包数据更新。它不会更改原生居民数据库、调度器、对话系统、SKSE DLL或Papyrus逻辑。
睡眠命令描述的替代文本
替换以下内容下的现有描述:
你可以在夜间在此区域睡觉。与:
将玩家的当前位置设置为随从的睡眠区域。
命令:
- 创建或替换睡眠标记。
- 设置MHiYHSleepMarkerLink
- 填充对应的MHiYHSleepQuest别名
- 启用睡眠套装
睡眠包允许随从前往指定区域,找到合适的床,并在设定的时间表内睡觉。
锁定舱门? 和
锁定前警告? 被禁用。追随者不应在开始睡眠包时锁定位置、要求玩家离开或触发擅闯限制。
默认日程:
22:00 - 07:00
重要信息下的可选补充
睡眠包与玩家访问权限
MHiYH睡眠包不使用其模板的门锁或预锁警告行为。
以下包数据值已禁用:
这可以防止开始睡眠行为的居民把玩家当作必须离开该地点的人。
此更改不会修改单元格、建筑、门或床的归属权。由其他模组或所在位置自身归属数据引发的独立侵入限制不在MHiYH的适用范围之内。
替换更新说明
在下面添加以下一行
正在更新 MHiYH SKSE NG:
1.2.1版本是对MHiYHSleepPackage数据的小幅修正,禁用了“锁门?”和“锁门前警告?”。现有存档仍可使用,不过测试前建议离开并重新进入受影响的区域,或让随从重新评估其行为包。
1.2版本更新
1.2版本专注于更流畅的日程应用、更安全的守卫行为以及更快捷的多地点设置。
1.2版本新增内容:
- 预防性日程更新优化
日程变更现在会收集到一个去重的脏槽队列中,并分批处理,每批最多25名居民。这样可以将Alias和AI包的工作分散到多个短批次中,而不是一次性应用大量变更。 - 最新状态优先队列重建中
如果当前队列完成前游戏时间再次发生变化,过时的剩余工作将被丢弃,并根据最新的期望时间表重建。当前正在处理的居民将被允许原子性地完成,然后旧世代才会停止。 - 最近的居民将优先更新
当构建队列时,同一可比室内单元格或室外世界空间中的居民将按照单一距离快照,从最近到最远进行优先排序。坐标无法安全比较的居民将随后按稳定槽位顺序处理。 - 被动防御现在为默认防御行为
对话指令 守卫这个区域。 始终配置被动守卫。被动守卫在共享守卫标记处采用非攻击性沙盒行为,不会主动挑衅附近的普通NPC。 - MCM中的可选主动护卫模式
守卫页面现在包含了 主动守卫 切换。启用后,会将已配置的守卫位置从被动守卫切换为原有的攻击性守卫行为。禁用后,则将该位置切换回被动守卫;但不会移除守卫位置。 - 主动防御与被动防御互斥
两种模式共享同一个守卫标记、时间窗和半径。同一时间只能激活一种守卫模式。守卫位置本身仍只能通过对话移除。 - 改进了活动区域对话流程
在大多数移动回家、用餐、睡眠、工作以及设置/移除守卫动作之后,对话现在会返回到 关于这个特定的区域……。这使得在一次对话中可以配置多个地点。 其实,我改变主意了。 仍然退出对话。 - 新被动防御包任务
本次发布新增了独立的“被动守卫”礼包及配套的1,000个别名“被动守卫”任务,同时保留了原有的“主动守卫”礼包和任务。 - 更新的简体中文替换包
翻译包括当前对话、完整MCM以及控制器通知文本。
队列系统是一项预防性优化,旨在减少大规模日程变更的峰值。它并不意味着在一个区域内加载或主动模拟数百名NPC是可取的。
1.1版本更新
1.1版本扩展了原有的在家、睡觉、工作和守卫系统,新增了独立的早餐、午餐和晚餐地点、动态日程评估器、SkyUI MCM,以及重新整理的活动区域对话。
1.1版本新增内容:
- 早餐、午餐和晚餐的地点 每位已登记的居民
- 通过SkyUI MCM按居民编辑日程
- 居民搜索和十项分页 在MCM中
- 每次仅可使用一个MHiYH活动礼包
- 活动优先级: 早餐 > 午餐 > 晚餐 > 睡眠 > 工作 > 被动守卫 > 主动守卫 > 家园
- 搬回家,仅替换家园标记,并保留所有可选活动地点
- 餐饮、睡眠、工作和警卫子菜单 在区域对话下
- 更新的SKSE协同存档格式,并自动迁移早期的MHiYH SKSE NG数据
- 三个新的餐饮套餐以及三个新的1000艾拉斯餐食任务
- 包含新启用起始游戏的餐食任务的更新版SEQ文件。
- 包含完整MCM的更新版简体中文补丁
默认活动时间:
- 早餐:07:00 - 08:00
- 午餐:12:00 - 13:00
- 晚餐:18:00 - 19:00
- 睡眠:22:00 - 07:00
- 工作:09:00 - 17:00
- 警卫:07:00 - 22:00
当没有可选活动处于激活状态时,主界面将作为永久默认界面。1.2版本保留了1.1版本的餐食与MCM功能,同时扩展了调度器和守卫系统。
主要特性
- 最多支持1,000名注册居民
- 兼容自定义玩家住宅
几乎任何有效位置都可以放置家园标记,包括模组添加的家园。 - 独立的家,早餐,午餐,晚餐,睡眠,工作,以及守卫地点
- 早餐、午餐、晚餐、睡眠、工作和守卫可分别启用或移除
- 地点可能会被反复重新分配
居民保留相同的数据库槽位和任务别名编号。 - 被解散的追随者将返回其指定的住所
- 可选早餐、午餐、晚餐、睡眠、工作和守卫时间表
- 默认被动防御
对话创建的守卫位置使用非攻击性沙盒行为包。 - 可选主动防御模式
MCM可以将现有的守卫地点切换为原始的攻击性守卫行为,并可切换回被动守卫。 - 基于队列的日程安排应用
变更居民将按每批最多25人处理,附近条件相近的居民优先更新。 - 多地点对话工作流
大多数活动操作会返回区域菜单,以便在一次对话中配置多个地点。 - 快速旅行至追随者指定的家
- 移动回家,且不覆盖活动地点
- 直接将遣散的追随者送回其家中
- SkyUI MCM 日程编辑器
直接选择居民,按姓名搜索,每页浏览十位居民,编辑活动时间,切换被动/主动看守模式,恢复默认设置,应用更改,或取消。 - 家族名册任务簿
记录最多1,000名已登记居民的全名。 - 持久化SKSE数据库
居民和标记数据存储于SKSE协同存档中。 - 运行时创建的标记
该插件无需预先放置数千个标记引用。 - ESL标记的主插件
MHiYH.esl 占用了轻量插件槽位。 - 简体中文翻译可用
文件部分提供了独立的简体中文替换包,包含完整的MCM和控制器通知翻译。
相对原版模组的重大改进
原版《吾家即汝家》支持最多250名已登记的随从,而其中独立的睡眠、工作及守卫区域系统则限制为60名随从。
MHiYH SKSE NG 将系统扩展至:
- 1,000个家园槽位
- 1,000 个早餐时段
- 1,000 个午餐时段
- 1,000份晚餐名额
- 1,000个睡眠槽位
- 1,000个工作槽位
- 1,000个共享守卫标记槽位
- 1,000 个被动防御别名槽位
- 1,000 个活跃守护别名槽位
其他重大变更包括:
- 原生数据库取代数百个硬编码的Papyrus属性
- 运行时创建标记,而非预先放置大量标记
- 八个独立的AI组合包任务
- 早餐、午餐、晚餐、睡眠、工作和守卫的独立移除命令
- 一个动态调度器,一次仅应用一个MHiYH活动包。
- 带代际替换的去重脏槽队列,每批最多25个居民
- 可比居民就近优先处理
- 用于管理居民日程编辑的SkyUI MCM模组
- 改进居民注销时的清理流程
- 位置重新分配时稳定复用插槽
- 重写的家族名册,附带缓存文本清理的变通方案
- 包含MCM和控制器翻译的独立简体中文替换包
点击展开:与原实现的详细对比剧透:
显示
原始实现原版MOD主要依赖于:
- 大型固定Papyrus属性集合
- 固定派系用作注册槽位
- 已存在的标记引用
- 单体控制任务
- 硬编码槽位与标记处理
原版支持:
- 最多250名已注册关注者
- 为最多60名追随者设置睡眠、工作和守卫区域
SKSE NG 实现此重建使用:
- 持久化的C++常驻数据库
- 将Actor的FormID作为常驻身份标识键
- 0到999之间的稳定槽位
- 运行时创建的XMarkers
- 八个独立的包裹任务
- 包位置的命名链接引用
- 动态原生调度评估器
- Papyrus仅作为游戏玩法和对话协调层
数据库存储每个已登记居民的独立居家、早餐、午餐、晚餐、睡眠、工作及守卫标记信息,同时记录共享同一守卫标记的被动守卫和主动守卫两种独立日程状态。
对话指令
主线对话以:
让我们聊聊家吧……这将打开所选随从的MHiYH管理菜单。
点击展开:完整对话指令参考剧透:
显示
这里就是你新的家了。将玩家当前所在位置设为随从的家。
命令:
- 将角色注册到本地数据库中
- 分配或复用常驻槽位
- 创建一个新的家园标记
- 设置MHiYHHomeMarkerLink
- 填充对应的MHiYHHomeQuest居民别名
- 将居住者添加到家庭登记册
- 解雇后启用家庭沙盒包
更改家庭位置不会改变现有的早餐、午餐、晚餐、睡眠、工作或守卫位置。
关于这片特定的区域……打开组织活动区域菜单。
地区菜单现在依次包含:
- 将您的家迁移到此处。
- 来聊聊你在哪儿吃饭的事吧。
- 我们来谈谈你睡哪儿吧。
- 我们来聊聊你的工作吧。
- 来说说你守护的区域吧。
- 其实,我改变主意了。
完成大部分搬家、用餐、睡觉、工作或守卫设置/移除操作后,对话框将返回此区域菜单而非关闭。这样可以在一次对话中配置多个位置。
其实,我改变主意了。 选项仍会退出对话。
将你的家迁移到这个地方。仅替换追随者的家园标记。
替换是事务性的:旧的家标记仅在新标记和命名链接引用成功建立后才会被删除。
早餐、午餐、晚餐、睡觉、工作和守卫位置未更改。
我们来聊聊你在哪儿吃饭吧。打开餐食子菜单。
子菜单按顺序包含:
- 设置早餐区域
- 设置午餐区域
- 晚餐区设置
- 移除早餐区
- 移除午餐区
- 移除用餐区
- 其实,我改变主意了。
你可以在这个区域吃早餐。创建或替换早餐标记,填充匹配的早餐任务别名,启用早餐,并使用默认日程:
07:00 - 08:00
你可以在这个区域吃午餐。创建或替换午餐标记,填充匹配的午餐任务别名,启用午餐功能,并使用默认时间表:
12:00 - 13:00
您可以在这个区域用晚餐。创建或替换晚餐标记,填充匹配的晚餐任务别名,启用晚餐,并使用默认日程:
18:00 - 19:00
请勿在此区域再吃早餐。仅禁用早餐并移除其任务别名、命名链接引用、运行时标记及原生标记数据。
请勿再在此区域吃午餐。仅停用午餐,并移除其任务别名、命名链接引用、运行时标记及原生标记数据。
不要在这个区域吃晚饭了。仅禁用晚餐,并移除其任务别名、命名链接引用、运行时标记和原生标记数据。
来聊聊你睡哪儿吧。打开睡眠子菜单:
- 你可以在夜间于此处休息。
- 请勿再在此区域睡觉。
- 其实,我改主意了。
你可以在夜间在此区域睡觉。将玩家的当前位置设置为追随者的睡眠区域。
命令:
- 创建或替换睡眠标记
- 设置MHiYHSleepMarkerLink
- 填充对应的MHiYHSleepQuest别名
- 启用睡眠包
默认日程:
22:00 - 07:00
我们来聊聊你工作的地方吧。打开工作子菜单:
- 你可以在这片区域工作,如果你愿意的话。
- 请勿在此区域继续作业。
- 其实,我改主意了。
你喜欢的话,可以在这片区域工作。将玩家的当前位置设定为随从的工作区域。
命令:
- 创建或替换工作标记
- 设置MHiYHWorkMarkerLink
- 填充对应的MHiYHWorkQuest别名
- 启用工作沙盒包
默认日程:
09:00 - 17:00
来说说你守卫的区域吧。打开守卫子菜单:
- 守卫这个区域。
- 别再守卫这片区域了。
- 其实,我改变主意了。
守护这片区域。将玩家当前所在位置设为跟随者的共享警戒区域,并始终选中
被动防御.
命令:
- 创建或替换共享的守卫标记
- 设置MHiYHGuardMarkerLink
- 启用被动防御排班
- 禁用主动守卫日程
- 允许调度器在配置的时间间隔内填充匹配的MHiYHPassiveGuardQuest别名
被动守卫在守卫标记处使用常规沙盒行为。此设定旨在避免原本具有攻击性的守卫流程仅因中立NPC接近该区域就主动挑衅。根据天际原版AI,该角色仍可自卫或与真正敌对的角色战斗。
默认日程:
07:00 - 22:00
MCM
主动守卫 切换开关可将该守卫点恢复为原始攻击性守卫包。激活的守卫可能会根据派系关系和AI数据,挑战或攻击附近的NPC。关闭开关则将该点恢复为被动守卫;此操作不会移除守卫点。
请勿在此区域睡觉。仅禁用睡眠行为。
命令清除:
- 睡眠任务代号
- 名为“链接引用”的沉睡
- 睡眠标记
- 对应的原生标记数据
主页、工作与守卫未更改。
请勿在此区域继续工作。仅禁用“工作”行为。
主页、睡眠和守卫未更改。
不要再守卫这片区域了。完全禁用守卫位置。被动守卫和主动守卫均被关闭,共享的守卫标记和命名链接引用被移除,相关的守卫别名也被清除。
家庭、睡眠和工作并未改变。
让我们去你家吧。尝试快速旅行到所选随从指定的家园标记处。
正常天际快速旅行限制仍然适用。
你应该回家了。将被移除的随从直接移动到指定的家标记处,并重新评估该角色的AI行为包。
此命令不会强制遣散仍是活跃玩家队友的角色。
一名活跃的追随者可能会改为回答:
我仍然想和你一起冒险。你不喜欢自己的家,对吧?打开“忘记家园”确认对话框。
确认后,该模组将:
- 清除所有八个包任务中的居民
- 删除所有运行时标记
- 清除所有MHiYH命名链接引用
- 移除原生数据库条目
- 移除家园阵营
- 将居民姓名从家族名册中移除
- 重新评估角色的AI行为包
其实,我改主意了。关闭当前对话菜单,且不更改任何数据。
家族登记册
模组中包含一本名为:
MHiYH家族登记册这本书:
- 显示已登记居民的全名
- 最多支持1000个条目
- 当随从收到家园时会更新
- 使用“忘记家园”时移除名称
- 不能被正常丢弃、出售或转让
注册表还包含一个针对《天际》缓存别名书文本的解决方案。
当一位居民被移除时,相关的房屋别名会暂时分配到一个共享的无名XMarker上。这迫使Skyrim刷新显示的别名文本,防止旧随从名字残留在书中。
重要信息
集结指令暂时隐藏
原始对话内容如下:
我们在这儿集合吧,这地方看起来是个不错的落脚点。此命令将所有已登记居民的家园标记移动至玩家当前位置。
我暂时将这个指令从常规对话菜单中移除了,因为我认为全局家园搬迁操作可能具有潜在危险。
原因包括:
- 这影响每一位已登记的居民
- 它可以覆盖数百个精心配置的家庭位置
- 早餐、午餐、晚餐、睡眠、工作和守卫位置不会随家园标记移动
- 它可能会让每位居民的家园和活动区域位于完全不同的地区。
- 新的最大容量为1,000名居民
- 意外触发可能会影响非常庞大的居民数据库
- 大规模同步Alias扫描可能会在处理完成前一直锁定对话界面
底层开发记录可能仍保留在插件中,但该选项无法通过正常游戏流程访问。
请勿将该Mod与原版插件同时使用
MHiYH SKSE NG 是独立重构版本,并非原版ESP的补丁。
不要同时启用:
同时运行两套系统可能导致:
- 重复对话
- 复制AI套件
- 两个独立的标记系统控制同一个NPC
- 追随者返回至错误位置
- 注册数据冲突
被动与主动防御模式
守卫位置有两种互斥的行为模式:
- 被动防御 是默认设置。对话始终选择此模式。它在守卫标记处使用非攻击性的沙盒行为。
- 主动防御 使用原有的激进守卫包,可在MCM中手动开启。可能会根据接近NPC的阵营和AI关系,向其发起挑战或攻击。
两种模式共用一个守卫标记、一个时间段窗口和一个半径。MCM开关仅改变模式:
- 主动守卫开启:被动守卫关闭,主动守卫开启
- 主动守卫关闭:被动守卫开启,主动守卫关闭
MCM无法移除已配置的Guard位置。请使用
不要再守卫这个区域了。 在对话中禁用两种模式并删除共享的Guard位置。
1,000是技术上限
该插件最多可管理1,000条居民记录。
这并不意味着推荐在一个区域内加载或主动模拟1,000个NPC。
实际性能取决于:
- 附近单元格中加载的actor数量
- 其他随从框架
- 任务与场景AI
- 活动礼包数量
- 已安装NPC模组的复杂程度
- 玩家的脚本和插件加载
追随者AI条件
家、早餐、午餐、晚餐、睡眠、工作、被动守卫和主动守卫套餐仅在以下情况下运行:
GetPlayerTeammate == 0
活跃的追随者不会离开玩家去执行指派的家园活动。
配置的包裹将在追随者被解散后变为可用。
同一时间仅可应用一个MHiYH活动包。当配置的时间范围重叠时,调度程序将使用:
早餐 > 午餐 > 晚餐 > 睡眠 > 工作 > 被动守卫 > 主动守卫 > 回家
家是最低优先级的永久后备方案。被动防御与主动防御被设计为互斥关系;其相对顺序仅作为数据不一致时的防御性后备方案。
特殊任务控制NPC
为以下对象分配家园时请谨慎:
- 临时任务追随者
- 当前参与脚本场景的演员
- 由自定义AI框架控制的随从
- 拥有重要任务特定包裹堆叠的NPC
- 诸如塞拉娜或西塞罗这样的角色,在任务进行期间
建议在继续涉及这些角色的主要任务流程之前,使用“遗忘之家”。
尚未重新实现的功能
当前未包含或尚未完全验证某些原始的特殊行为,包括:
- 自动守卫火把
- 特殊龙裔矮人自动机处理
- 原版宠物专属兼容性逻辑
基于天际省常规随从系统的标准人形随从是主要目标。
需求
- 天际特别版或周年纪念版
- SKSE64
- SKSE插件地址库
- SkyUI
- 由上传的MHiYH.dll支持的运行时
天际特别版1.5.97是当前快乐流程测试所使用的主要运行环境。
其他运行时版本,只有在提供兼容的DLL并明确列在文件部分时,才应被视为官方支持。
安装
使用模组管理器安装主压缩包。
安装必须保留:
Data/MHiYH.esl
数据/脚本/
Data/SKSE/Plugins/MHiYH.dll
Data/Seq/MHiYH.seq
请确保SKSE64、Address Library和SkyUI已正确安装。
版本1.1新增了三个开局即启用的餐食任务。本次发布还新增了一个开局即启用的被动守卫任务。更新后的MHiYH.seq必须与匹配的ESL、DLL和Papyrus脚本一同安装。
简体中文补丁
单独的简体中文补丁已提供。
安装顺序:
- 安装英文主文件
- 安装简体中文补丁
- 允许中文补丁覆盖MHiYH.esl、MHiYHMCM.pex和MHiYHController.pex
翻译补丁是同名覆盖,仅更改可见文本。
译为:
- 对话与新餐食、睡眠、工作和守卫子菜单
- 任务和书籍显示文本
- 完整的SkyUI MCM,包括主动守卫开关
- 控制器居住容量通知
它不会改变:
- FormID
- 编辑器ID
- 任务或别名结构
- AI 包
- Papyrus字节码逻辑
- SKSE DLL
- 序列化数据
不要重命名已翻译的插件。
它必须保持原样:
MHiYH.esl
控制器和原生代码在解析表单时可能会使用固定的插件文件名。
点击展开:现有存档、更新、迁移与卸载剧透:
显示
现有存档仅文本更新和简体中文补丁通常可应用于现有存档。
更改任务别名拓扑、包结构或数据库行为的更新,在以下环境中最为安全:
- 新游戏
- 安装 MHiYH SKSE NG 之前创建的存档
- 备份的测试存档
从原版模组迁移原版模组与MHiYH SKSE NG使用了不同的:
原始居民不会被自动导入。
推荐的迁移步骤:
- 对原模组中的所有居民使用“忘记家园”技能
- 创建备份存档
- 完全退出天际
- 移除原始插件及其松散脚本
- 安装MHiYH SKSE NG
- 在干净存档或新存档上测试
- 重新分配每位居民的位置
正在更新 MHiYH SKSE NG所有文件必须来自同一版本:
- MHiYH.esl
- MHiYH.dll
- MHiYHController.pex
- MHiYHMCM.pex
- MHiYHScheduleManager.pex
- MMTYHNative.pex
- 所有vvvMarkHome*.pex文件
- Seq/MHiYH.seq
不要将新的ESL与旧的脚本、旧的DLL或旧的SEQ文件组合使用。
当前版本使用了更新的SKSE协同存档格式,并包含对早期MHiYH SKSE NG驻留数据的迁移逻辑。更新前请备份存档,并确保ESL、DLL、PEX文件及SEQ均来自同一版本。
由于当前版本包含被动守卫任务/包、调度器变更、对话流程变更、DLL变更及配套的Papyrus更新,更新前请备份存档。新游戏、安装MHiYH SKSE NG之前创建的存档,或备份的测试存档,仍是最安全的选择。
卸载从正在进行的存档中移除脚本模组通常不建议。
卸载前:
- 对每名已登记的居民使用“遗忘家园”
- 保存游戏
- 完全退出天际
- 备份保存
- 禁用该模组
删除后开始新游戏是最安全的选择。
技术设计
点击展开:原生数据库、任务别名、软件包、标记和序列化剧透:
显示
本地居民数据库SKSE插件使用Actor的FormID作为常驻身份标识键。
每个已注册的行为体都会收到一条包含以下内容的数据库记录:
- Actor FormID
- 居民栏位
- 家的标记
- 早餐标记
- 午餐标记
- 晚餐标记
- 睡眠标记
- 工作标记
- 守卫标记
- 早餐、午餐、晚餐、睡眠、工作、被动守卫和主动守卫的日程元数据
居民栏位范围为0到999。
重复注册同一actor将返回现有槽位,而非分配新槽位。
稳定的居民槽位映射每个包任务中,槽位27的居民始终对应Resident027。
- MHiYHHomeQuest.Resident027
- MHiYHBreakfastQuest.Resident027
- MHiYHLunchQuest.Resident027
- MHiYHDinnerQuest.Resident027
- MHiYHSleepQuest.Resident027
- MHiYHWorkQuest.Resident027
- MHiYH守卫任务.居民027
- 居民027
这会阻止重复分配位置时消耗额外的别名。
八个独立的包裹任务这个模组使用:
- MHiYH 家园任务
- MHiYH早餐任务
- MH山海午餐任务
- MHiYH晚餐任务
- MHiYH睡眠任务
- MHiYH工作任务
- MHiYH守卫任务
- MHiYH被动护卫任务
每个任务包含Resident000至Resident999。主动守卫和被动守卫使用独立的别名任务,但共享相同的守卫标记和时间窗口。
每位居民的别名都包含了与该任务相关的礼包。
住宅别名始终作为居民永久性的后备指派。调度器会根据居民的标记、启用状态、配置的时间范围以及当前期望活动,来填充或清除可选的กิจกรรม别名。
示例:
- 设置家园后,即可填充“家园任务-居民027”。
- 早餐设置会存储早餐标记并启用其日程安排
- 在设定的早餐时段内,调度器可能会填充 BreakfastQuest.Resident027
- 无早餐将禁用早餐,并清除其别名和标记。
动态活动优先级同一时间仅可应用一个MHiYH活动礼包。
当时间段重叠时,调度器会评估:
有效的活动顺序:
早餐 > 午餐 > 晚餐 > 睡眠 > 工作 > 被动警戒 > 主动警戒 > 回家
被动防御和主动防御共用防御标记,在正常运作时二者互斥。
Home沙盒是永久的、优先级最低的回退行为。
已命名链接引用每个行为都使用独立的基于关键字命名链接引用:
- MHiYHHomeMarkerLink
- MHiYH早餐标记链接
- MHiYH午餐标记链接
- MHiYHDinnerMarkerLink
- MHiYH睡眠标记链接
- MHiYH工作标记链接
- MHiYH守卫标记链接
任务别名成员资格决定了该角色是否拥有此包。
命名链接引用决定了包运行的位置。
运行时标记位置由动态创建的《天际》X标记来表示。
替换地点时,控制器:
- 创建新标记
- 将标记写入数据库
- 更新命名链接引用
- 填充或确认正确的任务别名
- 替换成功后删除之前的标记
这可以降低更新失败时破坏先前有效位置的概率。
包体激活与排期评估原生数据库会存储每个可选活动的标记、启用状态、开始时间和结束时间。
调度器评估:
- 所需标记是否存在
- 活动是否启用
- 当前游戏小时是否位于配置的时间间隔内
- 更高优先级的活动当前是否有效
- 期望的活动是否与当前应用的活动不同
一位居民获得了:
- 家宅行为通过MHiYHHomeQuest
- 通过MHiYHBreakfastQuest的早餐行为
- MHiYHLunchQuest中的午餐行为
- 通过MHiYHDinnerQuest实现的晚餐行为
- MHiYHSleepQuest中的睡眠行为
- 通过MHiYHWorkQuest实现工作行为
- 通过MHiYHGuardQuest激活守卫行为
- 通过MHiYHPassiveGuardQuest实现被动守卫行为
调度器仅处理期望状态发生变化的居民。变更的槽位在原生脏集合中去重,并通过世代感知队列消费。Papyrus每批最多应用25个槽位,使游戏能在批次之间让出控制权。
每个槽位在更改别名之前,会立即重新读取最新的期望活动。如果队列处理完成前发生了另一次调度刷新,过期的剩余工作将被新一代任务替换,而不会重放已过时的中间调度。正在进行的槽位会以原子方式完成,且仅在所有请求的别名操作成功后,已提交的应用状态才会被更新。
当每个世代构建时,玩家当前可比单元格或世界空间中的居民将使用一次距离快照按从近到远的顺序排列。其他居民随后按稳定的槽位顺序处理。清除别名会从该角色身上移除相应的别名包。
SKSE序列化居民信息已存储在SKSE共同存档中。
当前版本使用当前的SKSE共同存档格式,并包含对早期MHiYH SKSE NG数据的迁移处理。
加载存档时,DLL会恢复:
- 演员到槽位映射
- 数据库记录
- 全部七个位置标记的FormID
- 可选活动日程、被动/主动警卫模式及启用状态
- 命名的链接引用
Papyrus修复逻辑随后验证对应的任务别名状态,而日程管理器则重新应用当前期望的活动。
家族登记簿实施MHiYHHomeQuest同时也作为权威的居民名单。
其居所别名记载于家族登记簿中:
居民000 - 居民999
因此,家园任务会追踪:
当使用“遗忘之家”时,相关的“家园别名”会暂时重定向至一个无名的XMarker,以使《天际》缓存的书籍文本失效。
开发与测试披露
本模组借助AI工具开发而成。
开发过程中部分环节使用了AI辅助,包括:
- 代码生成与重构
- 帕皮鲁斯与SSEEdit脚本编写
- 记录结构分析
- 调试辅助
- 文档准备
整体设计决策、功能选择、集成、手动修正、打包及游戏内验证均由模组作者完成。
当前版本已完成基础
天际特别版1.5.97快乐流程测试.
测试流程包含:
- 注册追随者并指派家园
- 正在重新分配家园位置
- 分配早餐、午餐、晚餐、睡眠、工作和守卫区域
- 独立移除可选活动区域
- 通过MCM在被动防御和主动防御之间切换已配置的守卫位置
- 在一次对话会话中配置多个活动地点
- 遣返已解散的随从回家
- 正在快速旅行至指定家园
- 在家族登记册中添加和移除居民
- 使用“忘却故居”清除居民别名、标记、链接及数据库条目
- 正在保存并重新读取居民数据
此流畅性测试确认主要预期工作流在测试环境中能够正常运行,但这并不等同于全面的兼容性或压力测试。
版本1.1引入了餐点位置、动态单激活包调度器、搬家功能、重组后的活动子菜单以及SkyUI MCM。版本1.2进一步引入了批量生成感知调度队列、最近优先更新排序、将被动守卫设为默认守卫模式、可选的主动守卫MCM开关,以及改进的多地点对话循环。建议在备份存档上仔细测试这些系统,尤其是在更新现有居民数据库时。
队列变更属于预防性性能优化工作。它们降低了大量同时进行的Alias和EvaluatePackage操作引发单次峰值风险,但并未承诺1,000名居民的配置一定无压力。
可能仍存在边缘情况,尤其是:
- 自定义随从框架
- 任务控制的随从
- 高度定制的剧情脚本NPC
- 大型居民数据库
- 异常的加载顺序
- 1.5.97以外的运行时版本
目前,
Skyrim SE 1.5.97 是主要测试的运行环境.
仅当提供了兼容的DLL,并在文件部分明确列出时,其他运行时版本才应被视为受支持。
兼容性
该模组主要针对基于《天际》标准随从系统的随从而设计。
与自定义随从的兼容性取决于他们自身的系统是否覆盖:
- 玩家队友状态
- 解雇行为
- 任务别名包
- 包体评估
- 命名链接引用
- Actor 重定位
- 游戏时间或日程操控
随从框架及高度脚本化的自定义随从可能需要单独测试。
制作人员名单
原始模组与概念我的家就是你的家——一个随从模组由...创建
沃莱克.
天际特别版转换我的家就是你的家 —— Skyrim Special Edition转换为SSE格式,由
Allie1718.
SSE页面由以下用户上传
假尾巴.
打包文档中鸣谢的原始贡献者- ebg2465
- 希德兰纳克
- 彼得罗维奇
- 罗兰德
- joshx336
本项目是基于SKSE的独立重建,旨在还原原始概念。
全部功劳归于Volek、Allie1718以及原始贡献者们,感谢他们完成了原始设计、对话结构、实现以及SSE转换工作。
MHiYH 不包含或再分发任何部落界面资源、源代码、HTML、CSS、JavaScript、图标、字体或其他资源。部落仅作为设计和集成方面的灵感来源。
权限与免责声明
本项目与Bethesda Game Studios无关。
本模组按现状提供。
在安装、更新、翻译或移除脚本模组前,请务必备份您的存档。