
亨利的感知 - 战利品与物体高亮显示
《天国:拯救 II》的拾取物与物体高亮模组。
查看大图[size=5]前言[/size]
我最初制作 [url=https://www.nexusmods.com/kingdomcomedeliverance2/mods/1722]Loot Beacon - Never Miss a Drop or Corpse (Highlight Pickable Items)[/url] 是因为我花了一整天在深草丛中寻找 Canker's Mace。它通过粒子信标让附近的战利品更容易被发现,玩家的反馈也帮助改进了颜色和可见度。
[b]Henry's Senses[/b] 是它的原生 ASI 后继版本。按下一个键即可用轮廓、填充或角括号高亮附近的战利品和草药。它建立在相同的理念之上,并加入了模型高亮、更广泛的检测范围以及可为不同物体和游玩风格配置的分组。
目前仍处于早期阶段。如果有东西没有被高亮、显示异常或无法正常工作,请附上你的游戏/模组版本、设置和日志进行反馈。感谢你的尝试!
[size=5]主要功能[/size]
[list]
[]高亮附近可搜刮的尸体、动物尸体、掉落物品、容器和草药[/]
[]轮廓、填充或角括号,可透过墙壁和草丛显示;可选仅显示可见表面模式[/]
[]可选分组:活着的 NPC、动物以及门、床和工作台等可交互物体[/]
[]每个分组可配置颜色、样式、范围、持续时间和快捷键[/]
[]脉冲、切换、按住和始终激活模式[/]
[]使用游戏自身的战利品检查,对被盗、空、上锁及其他带标签物体进行过滤[/]
[]键盘和 XInput 手柄绑定,包括修饰键组合[/]
[]保存 INI 时实时重新加载配置[/]
[][url=https://github.com/tkhquang/KCD2Tools]开源[/url],基于 [url=https://github.com/tkhquang/DetourModKit]DetourModKit[/url] 模组框架构建[/]
[/list]默认的 Auto 渲染器使用模型高亮,在无法绘制时回退为角括号。
[size=5]要求[/size]
[list]
[]PC 版《天国:拯救 II》;基于 Steam 1.5.6 构建[/]
[]ASI 加载器 - [b]不包含[/b](见下方第 1 步)[/]
[/list]
[size=5]安装[/size]
这是一个 [b].asi[/b] 插件,需要 [b]ASI 加载器[/b],下载包中[b]不附带[/b]该加载器。
[size=4]找到安装文件夹[/size]
打开你的 KC:D 2 安装文件夹,然后打开包含 [b]WHGame.dll[/b] 的 Bin/Win64MasterMaster... 子文件夹。在 Steam 上路径为:
[code]<KC:D 2 installation folder>/Bin/Win64MasterMasterSteamPGO/[/code]其他平台使用各自的 Bin/Win64MasterMaster... 文件夹;请通过 WHGame.dll 来识别正确的文件夹。加载器和模组文件直接放入此文件夹。
[size=4]第 1 步:安装 ASI 加载器[/size]
如果你已经为 KC:D 2 安装了可用的 ASI 加载器,请跳到第 2 步。同一个加载器可以加载 Henry's Senses、TPVCamera 和其他 ASI 模组。
下载 ThirteenAG 的 [url=https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases]Ultimate ASI Loader[/url] 的[b]其中一个 x64[/b] 变体:
[list]
[][url=https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/dinput8-x64.zip][b]dinput8.dll[/b][/url] - 如果 dinput8.dll 未被使用,通常选择此项。[/]
[][url=https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/version-x64.zip][b]version.dll[/b][/url] - 当 dinput8.dll 已被占用时的替代选择,包括被 KCSE 占用的情况。[/]
[][url=https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/winmm-x64.zip][b]winmm.dll[/b][/url] - 如果 version.dll 也被占用或无法加载时的另一个替代选择。[/]
[/list]将所选 ZIP 中的 DLL 解压到 WHGame.dll 旁边。使用 [b]x64[/b] 版本,而不是 Win32,并且只安装一个 Ultimate ASI Loader 变体。不要覆盖属于其他模组的 DLL。
[b]使用 [url=https://www.nexusmods.com/kingdomcomedeliverance2/mods/3332]Kingdom Come Script Extender (KCSE)[/url]?[/b] KCSE 使用 [b]dinput8.dll[/b]。保留 KCSE 的文件,并将 Ultimate ASI Loader 安装为同一文件夹中的 [b]version.dll[/b] 或 [b]winmm.dll[/b]。从上方下载中选择一个未使用的名称;不要重命名或替换 KCSE 的 DLL。
[size=4]第 2 步:安装模组[/size]
从 Files 标签页或 [url=https://github.com/tkhquang/KCD2Tools/releases]GitHub Releases[/url] 下载 Henry's Senses 发布压缩包。将其内容直接解压到 WHGame.dll 和加载器 DLL 旁边的[b]同一文件夹[/b]中,不要额外创建以压缩包命名的子文件夹。
[list]
[][b]KCD2_HenrySenses.asi[/b] - 模组本体。[/]
[][b]KCD2_HenrySenses.ini[/b] - 设置。[/]
[][b]KCD2_HenrySenses.particles.xml[/b] - 可选的自定义粒子效果。如果你在某个分组中使用 HenrySenses. 效果,请将其与 ASI 放在一起;默认没有分组使用粒子。[/]
[/list]Henry's Senses 不使用 Mods 文件夹。旧的 Lua Loot Beacon 可以保留安装,使用其默认的 [b]F4[/b] 绑定。
[b]文件夹结构:[/b]
[code]
Bin/Win64MasterMasterSteamPGO/
|-- WHGame.dll (游戏文件,已存在)
|-- dinput8.dll (ASI 加载器;见上方 KCSE 说明)
|-- KCD2_HenrySenses.asi (本模组)
|-- KCD2_HenrySenses.ini (设置)
|-- KCD2_HenrySenses.particles.xml (可选粒子效果)
\-- KCD2_HenrySenses.log (模组加载时创建)[/code]使用 KCSE 时,此示例中的 dinput8.dll 属于 KCSE;你选择的 ASI 加载器(version.dll 或 winmm.dll)放在它旁边。
[size=4]第 3 步:启动并验证[/size]
启动游戏,加载存档,按 [b]H[/b](或按住 [b]RB + 按 Start[/b])高亮战利品。[b]Left Shift + H[/b](或按住 [b]RB + 按 Back[/b])高亮草药。
检查 ASI 旁边是否生成了 [b]KCD2_HenrySenses.log[/b]。如果缺失,请检查 ASI 和 x64 加载器 DLL 是否直接位于 WHGame.dll 旁边,然后尝试另一个未使用的加载器变体并重新启动。只替换你安装的 Ultimate ASI Loader DLL;保留 KCSE 和其他模组的 DLL。在 Wine/Proton 上,还要检查下方的 override。
更新时,在解压新压缩包之前备份你自定义的 INI,然后将你的设置重新应用到提供的 INI 上。
[size=5]Linux / Steam Deck (Wine/Proton)[/size]
在 Steam 上游戏的 [b]属性 -> 启动选项[/b]中,为你选择的加载器 DLL 添加 override:
[code]WINEDLLOVERRIDES="dinput8=n,b" %command%[/code]如果使用该加载器名称,请改用 version=n,b 或 winmm=n,b。如果你同时使用 KCSE 的 dinput8.dll 和 version.dll 加载器,请保留两个 override:
[code]WINEDLLOVERRIDES="dinput8,version=n,b" %command%[/code]对于命令行启动,在启动命令前设置相同的 WINEDLLOVERRIDES 值。保留其他模组所需的任何 override。
[size=5]默认控制[/size]
所有按键均可在 KCD2_HenrySenses.ini 中重新绑定。
[list]
[][b]高亮战利品和可屠宰的动物尸体:[/b] H,或手柄上按住 RB + 按 Start。[/]
[][b]高亮草药:[/b] Left Shift + H,或手柄上按住 RB + 按 Back。[/]
[/list]高亮会脉冲显示 [b]5 秒[/b],然后在 [b]1 秒[/b]内淡出,范围为 [b]20 米[/b]。Loot、Butcher 和 Herbs 分组默认启用;其他分组默认禁用。Loot 分组排除空和被盗目标;Butcher 单独高亮可屠宰的动物尸体。默认情况下,高亮会在[b]对话[/b]期间隐藏。菜单打开时分组快捷键也可用。
[size=5]配置[/size]
使用记事本等文本编辑器打开 ASI 旁边的 [b]KCD2_HenrySenses.ini[/b]。保存文件即可在游玩时应用更改。以分号开头的行是解释选项的注释。
[size=4]共享设置和高亮分组[/size]
[b]高亮分组[/b]是你希望一起看到的一组事物。每个 Highlight.<Name> 部分都可以有自己的颜色、按键、范围和行为。[b]你可以自由创建自己的分组。[/b]将 <Name> 替换为你选择的唯一标签,例如 [Highlight.Gathering],并在 Targets 中组合任何受支持的目标类型。名称只是一个标签;Targets、Only 和 Except 定义该分组高亮的内容。名称必须唯一,忽略大小写。
提供给你的分组是可编辑、重命名、删除或作为你自己组合起点的可用示例:
[list]
[][b]Loot(启用):[/b]尸体、动物尸体、物品和容器,排除空或被盗目标。[/]
[][b]Butcher(启用):[/b]可屠宰的动物尸体。[/]
[][b]Locked(禁用):[/b]上锁且非空的容器。[/]
[][b]Stolen(禁用):[/b]被盗物品、容器、尸体和动物尸体,排除空目标。[/]
[][b]Herbs(启用):[/b]未采摘的草药和蘑菇,以轮廓显示。[/]
[][b]Places(禁用):[/b]门、工作台、床、使用点和 other usable objects。实验性功能。[/]
[][b]Living(禁用):[/b]活着的 NPC 和动物,马和狗有单独的颜色。[/]
[][b]Hostiles(禁用):[/b]强盗、库曼人和其他公敌。[/]
[/list][b]Settings[/b] 部分提供共享默认值。分组部分内的值会[b]仅对该分组[/b]覆盖该默认值。例如,更改 Settings 下的 Key 会改变 Loot 和 Butcher 的绑定,但 Herbs 保留其自身的 LShift+H,Gamepad_RB+Gamepad_Back 绑定。过滤器属于各个分组;Loot 的 Except 列表不适用于 Butcher。
为多个分组设置相同的 [b]Key[/b],可让它们一起激活,同时保留各自的颜色、过滤器和样式。
编辑现有部分以进行以下常见更改:
[list]
[][b]看得更远:[/b]增加 Settings 下的 Radius(米;默认 20)。分组自身的 Radius 优先。[/]
[][b]让脉冲显示更久:[/b]增加 Settings 下的 Duration(秒;默认 5)。[/]
[][b]用红色高亮被盗战利品:[/b]在 Highlight.Stolen 下设置 Enabled = true。普通 Loot 分组会继续跳过被盗战利品。[/]
[][b]显示活着的人和动物:[/b]启用 Highlight.Living。[/]
[][b]单独高亮公敌:[/b]启用 Highlight.Hostiles;对于敌对 NPC,它会覆盖 Living。[/]
[][b]显示门、床和工作台:[/b]启用 Highlight.Places。此检测为实验性功能。[/]
[][b]隐藏墙壁和草丛后的高亮:[/b]在 Render 下设置 SeeThrough = false。[/]
[][b]在小游戏期间也隐藏高亮:[/b]在 Settings 下设置 HideIn = Dialogue, Minigame。[/]
[/list]
[size=4]每个分组显示的内容[/size]
[b]Enabled = true[/b] 开启分组;false 关闭。 [b]Targets[/b] 列出其高亮的内容,以逗号分隔:
[list]
[][b]Loot:[/b] Corpses, Carcasses, Items, Containers, Herbs[/]
[][b]Living creatures:[/b] NPCs, Animals, Horses, Dogs, Critters[/]
[][b]Interactive objects:[/b] Doors, Workstations, Beds, Seats, UseSpots, Objects[/]
[/list][b]Only[/b] 将分组限制为匹配的物体;[b]Except[/b] 排除匹配的物体。可用标签为 Stolen、Locked、Empty、Butcherable、Hostile 和 Unconscious。例如,Targets = Containers 配合 Only = Locked 显示上锁容器,而 Except = Empty 跳过空容器。使用多个过滤器时,每个 Only 条目都必须匹配,且任何 Except 条目都不能匹配。
对于自定义选择,Class:、Name: 和 Model: 匹配物体的类、名称或模型文件名。匹配不区分大小写;星号匹配任意文本,问号匹配一个字符。[b]Targets = Model:barrel[/b] 选择文件名包含 "barrel" 的模型。这些选择不应用可搜刮性检查。
[size=4]行为和外观[/size]
设置分组的 [b]Mode[/b] 以选择其按键的工作方式:
[list]
[][b]Pulse:[/b]按一次显示高亮 Duration 秒。再次按下可重新开始计时。[/]
[][b]Toggle:[/b]按一次开启高亮,再按一次关闭。[/]
[][b]Hold:[/b]按住按键时高亮保持可见。[/]
[][b]Always:[/b]无需按键,高亮始终开启。[/]
[/list][b]FadeOut[/b] 控制它们消失所需秒数;默认是 [b]1 秒[/b]。[b]HideIn[/b] 接受 Dialogue、Combat 和 Minigame,默认是 [b]Dialogue[/b]。添加 Combat 或 Minigame 可在这些情况下也隐藏高亮。菜单打开时分组快捷键也可用。
[b]Style[/b] 选择 Outline(边缘)、Fill(着色)、OutlineFill(两者)或 Box(角括号)。共享的 Render Style 是 [b]OutlineFill[/b];Herbs 将其覆盖为 [b]Outline[/b]。
Render 下的主要外观设置包括:
[list]
[][b]OutlineWidth:[/b]轮廓厚度,以剪影遮罩像素为单位。
默认:2.0[/]
[][b]Strength:[/b]边缘亮度;越高越亮。
默认:0.5[/]
[][b]FillOpacity:[/b]填充不透明度,从 0(不可见)到 1(不透明)。
默认:0.35[/]
[][b]Softness:[/b]模糊像素数;较高的值会柔化并变细轮廓。
默认:0.0[/]
[][b]MinOpacity:[/b]距离淡出期间的最低亮度。降低它可启用淡出。
默认:1.0(无距离淡出)[/]
[/list]启用后,距离淡出从 FadeStart(12 米)开始,并在分组的 Radius 处达到 MinOpacity。FadePower(1.0)塑造淡出曲线;较高的值会让高亮在更远处保持更亮。
[size=4]颜色[/size]
[b]Color[/b] 设置没有自身颜色的目标的颜色。使用 [b]RRGGBB[/b] 或 [b]RRGGBBAA[/b] 十六进制:FF8000 和 FF8000FF 都表示橙色。使用[url=https://www.fleevio.com/en/tools/color-picker]颜色选择器[/url]选取或转换颜色,复制 [b]HEX (no #)[/b] 或 [b]HEX + alpha (no #)[/b],然后粘贴到 Color 或目标冒号后:
[code]
Color = FF8000FF
Targets = Items:FF8000FF, Containers:FFD000FF[/code]最后的 AA 字节对高亮会被忽略。使用 Render 下的 FillOpacity 调整填充透明度,并使用 Style 选择轮廓或填充。[b]FocusTint[/b] 仅使用[b]六位数字[/b],不带 #。
当激活的分组重叠时,[b]文件中靠后的分组胜出[/b]。将通用分组放在前面,将更具体分组放在后面,例如先 Loot 后 Stolen。
[size=4]聚焦和粒子效果[/size]
在分组中设置 [b]Focus = true[/b],可在该分组激活时使背景变暗并着色。在 Render 下,[b]FocusDarken[/b] 控制变暗程度:0.0 保持亮度不变,1.0 为黑色;随附的 INI 使用 0.5。[b]FocusTint[/b] 默认为 B8C4D8;FFFFFF 移除着色。该效果会在 FocusFadeIn(0.4 秒)内渐入,并随分组的 FadeOut 渐出。Outline 和 OutlineFill 物体会保持明亮;Fill 和 Box 物体会随背景一起变暗。默认没有分组启用 Focus。
在分组中添加 [b]Effect = HenrySenses.sparks[/b] 或 [b]Effect = HenrySenses.glow[/b],可获得能透过墙壁显示的粒子;这些需要在 INI 旁边有 KCD2_HenrySenses.particles.xml。诸如 particles_smithery.particles_smithery.sparks 之类的游戏效果会被墙壁遮挡。[b]EffectScale = 1.0[/b] 设置大小倍率(0.1 到 10;默认 1.0)。空 Effect = 或 Effect = None 禁用粒子。
[b]Focus[/b]、[b]Effect[/b] 和 [b]EffectScale[/b] 是独立的设置键。要为战利品启用聚焦和火花,请在现有 [b]Highlight.Loot[/b] 部分内添加以下行。去掉模板中用于注释的前导分号:
[code]
Focus = true
Effect = HenrySenses.sparks
EffectScale = 1.0[/code]
[size=4]示例:创建你自己的采集分组[/size]
在 INI 末尾添加这个新部分,将掉落物品和草药组合到一个切换键下。你可以再用另一个唯一名称复制它,并选择不同的目标、过滤器和控制:
[code]
[Highlight.Gathering]
Enabled = true
Targets = Items:FF8000FF, Herbs:40FF40FF
Style = Outline
Key = F8,Gamepad_RB+Gamepad_DpadLeft
Key.Consume = true
Mode = Toggle
Radius = 40[/code]保存后,[b]F8[/b] 或 [b]RB + 方向键左[/b] 可在 [b]40 米[/b]内切换橙色物品轮廓和绿色草药轮廓。该分组会继承 FadeOut 和 HideIn 等共享设置。如果你希望它跳过被盗物品,请在此部分添加 [b]Except = Stolen[/b]。作为文件中的最后一个分组,对于重叠目标,它会优先于先前的激活分组。
[size=5]键盘和手柄[/size]
在 Settings 下设置 [b]Key[/b] 以使用共享控制,或在分组内设置以使用独立控制。H、F7 和 Mouse4 等具名按键可用;LShift+H 是组合键。将其留空或使用 NONE 可移除绑定。
共享绑定默认为 [b]H[/b] 或 [b]RB + Start[/b]。要将手柄组合替换为 [b]RB + 方向键左[/b],请使用 Settings 下的以下条目:
[code]
Key = H,Gamepad_RB+Gamepad_DpadLeft
Key.Consume = true[/code]逗号表示“任一绑定”;加号表示“按住第一个按钮并按第二个按钮”。Herbs 有自己的 Key,默认为 [b]Left Shift + H[/b] 或 [b]RB + Back[/b],因此要更改其控制需单独编辑该部分。
[b]Key.Consume = true[/b] 会在按住时对游戏隐藏该组合的最后一个按钮,因此方向键左不会同时触发其游戏操作。对于共享绑定和 Herbs,它[b]默认开启[/b]。只有数字手柄按钮和鼠标滚轮可以被消耗;修饰键、键盘按键和模拟扳机仍会传递给游戏。
手柄输入使用 [b]XInput[/b]。对于其他手柄,请使用 Steam Input 或 XInput 转换层。参见 [url=https://github.com/tkhquang/DetourModKit?tab=readme-ov-file#supported-input-names]Supported Input Names[/url] 和 [url=https://github.com/tkhquang/DetourModKit?tab=readme-ov-file#gamepad-compatibility]Gamepad Compatibility[/url] 参考。
INI 记录了所有设置、默认值和更多示例。
[size=5]已知限制[/size]
[list]
[]可交互物体检测为实验性功能;某些物体可能会被漏掉或错误高亮。[/]
[]某些物体没有适合绘制轮廓的模型,使用 Auto 渲染器时会改用括号。[/]
[]如果检测或渲染停止工作,游戏更新可能需要模组更新。[/]
[/list]
[size=5]故障排除[/size]
[list]
[]在 Settings 下设置 LogLevel = DEBUG,保存 INI 并复现问题。[/]
[]检查 ASI 旁边的 KCD2_HenrySenses.log。它记录了检测决策,以及你保存 INI 时的状态报告。[/]
[]如果加载后轮廓失败或世界消失,请在 Render 下设置 Backend = Markers 并重启游戏。[/]
[/list]请附上日志、INI、游戏/模组版本和复现步骤来[url=https://github.com/tkhquang/KCD2Tools/issues]报告问题[/url]。截图和位置有助于处理错误高亮。
[size=5]鸣谢和源代码[/size]
核心功能使用 [url=https://github.com/tkhquang/DetourModKit]DetourModKit[/url] 构建。
[list]
[][url=https://github.com/ThirteenAG/Ultimate-ASI-Loader]Ultimate ASI Loader[/url] by ThirteenAG - ASI 加载层[/]
[][url=https://github.com/cursey/safetyhook]SafetyHook[/url] by cursey - 挂钩[/]
[][url=https://github.com/zyantific/zydis]Zydis[/url] / [url=https://github.com/zyantific/zycore-c]Zycore[/url] by Florian Bernd & Joel Hoener - SafetyHook 使用的反汇编[/]
[][url=https://github.com/brofield/simpleini]SimpleIni[/url] by Brodie Thiesfield - INI 配置[/]
[][url=https://github.com/microsoft/DirectXMath]DirectXMath[/url] by Microsoft - 数学原语[/]
[]Warhorse Studios - Kingdom Come: Deliverance II[/]
[]Loot Beacon 玩家 - 关于可见性和颜色可访问性的反馈[/*]
[/list]
我所有的《天国:拯救 II》模组和工具都可以在这个 [url=https://github.com/tkhquang/KCD2Tools]GitHub 仓库[/url]中找到。欢迎贡献或提出改进建议!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。