神之手 - 事件编辑器 - 自定义NPC工具

神之手 - 事件编辑器 - 自定义NPC工具

自动为自定义NPC创建星露谷物语事件。

模组工具

[center]GODLY HAND Scene Builder — 抢先预览版本 [BETA][/center]

[center]“虽然在开发过程中已进行广泛测试,但实际 NPC 项目可能会暴露出我无法独自复现的边界情况。如果出现问题,请在评论区提供你的环境配置,我会进行修复。”

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 主要目标 这是神之手(Godly Hand)——一个即将在 Nexus 发布的全功能一体式 NPC 创建工具——其中两个组件的抢先预览。此版本包含事件构建器和坐标拾取器——这些工具将取代编写自定义星露谷物语事件中最痛苦的部分。[/center]

如果你曾编写过自定义事件,你就会知道这个循环:打开文本编辑器,凭记忆开始编写一个用斜杠分隔的字符串。去查找内部地图名称,因为“ScienceHouse”不是你能猜出来的。输入一个感觉独特的事件 ID,然后后来在游戏中(没有有用的 SMAPI 错误信息)才发现它实际上早已是一个原版 ID。需要一个瓦片坐标,所以启动游戏,找到瓦片,把数字写在便签上,退出,然后返回字符串。忘记移动命令需要的是增量值(delta),而不是目标坐标,导致你的 NPC 滑出地图边缘。添加了一个玩家选择,它完美运行,只是问题在无限循环中不断重复询问,没有错误,没有日志,什么也没有——因为你的某个答案标签中包含了一个肖像令牌。你不知道那会破坏它。没人告诉你。游戏也没告诉你。你找到了一个四年前的论坛帖子才明白。

现在,从下拉菜单设置你的条件。在渲染的地图上点击一个瓦片来保存其坐标。通过一个会明确显示每个命令作用的助手,一条条地构建你的场景。运行语法检查,在进入游戏之前就能发现导致循环的 $ 令牌。下载一个 Content Patcher 就绪的 JSON。这就是事件构建器。

结合坐标拾取器一起使用——加载任意地图文件,点击瓦片,添加标签,组织到文件夹中,并可在需要位置信息时直接将其拉入事件构建器。

对其他工具感兴趣?请查看神之手的其他发布组件:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎬 事件构建器功能

🆔 事件 ID 生成,包含完整的原版冲突检测 原版星露谷物语有数百个事件 ID,分散在基础游戏中,并且它们不是连续的。如果你意外使用了相同的数字,其中任何一个都可能静默地窃取你的事件。点击“生成”按钮,工具会检查每个原版 ID、当前会话中已有的每个 ID,以及它上次生成的 ID,然后在自定义 NPC 的范围内选取下一个空闲数字——从 9871000 开始,位于基础游戏结束范围之后。你也可以输入自己的 ID,语法检查器会在它成为你的问题之前捕捉到与原版 ID 的冲突。

🗺️ 地图选择器,会告诉你地图的实际名称 内部名称并不直观。“ScienceHouse”是罗宾和德米特里厄斯的家。“JoshHouse”是乔治和艾芙琳的家。地图下拉菜单列出了每个星露谷物语地点,包含其内部名称以及用通俗易懂的语言描述的实际内容及居住者。选择一个,正确的名称会自动填入事件键。对于列表中未包含的地图(Mod 地点、自定义地图),有一个自定义输入字段。

⚙️ 基于字段构建的触发条件,无需记忆标记语法 好感度要求、前置事件 ID、星期几、时间窗口、天气条件、约会和婚姻标志、以及针对多个 NPC 的额外友谊检查——所有条件都通过表单字段设置,并自动组合成正确的斜杠分隔键。好感度字段使用心数,而非好感度点数——输入 8 心,输出会自动变成 2000,无需使用计算器。前置事件 ID 可以手动输入,也可以从已加载文件或当前会话中已有 ID 的下拉菜单中选择。

🎵 使用你熟悉的名称选择音乐 音乐字段是一个分类下拉菜单——季节性、节日、角色、地点、情绪等——所有原版曲目都使用你实际能识别的名称列出。“热带拉”而非“summer2”。“星之果实餐吧”而非“Saloon1”。自定义或未列出的提示音可以随时手动输入。如果一个已加载的事件使用了不常见的提示音,它不会被替换或丢失。

📍 NPC 和农民起始位置,从已保存的坐标提取 在场景顶部放置每个行动者的起始瓦片和面朝方向。任何需要瓦片位置的字段,如果你在坐标拾取器中保存了坐标,都会显示一个 📍 已保存 按钮——点击它,会显示一个按文件夹组织的已保存瓦片下拉菜单。选择一个瓦片,X、Y 和方向会同时填好。如果一个已命名的 NPC 没有设置起始位置,在生成之前,位置警告面板会标记出来。

✍️ 安全编辑与直接语法——处理同一场景的两种方式 场景命令面板有一个模式切换开关。直接语法是原始文本区域——每个命令独占一行,可以手动编辑任何内容。安全编辑将相同文本渲染为可点击列表。蓝色行是构建器知道如何编辑的命令——点击它,它会重新在构建器中打开,并预填当前值,随时可以修改。使用 ▲ ▼ 箭头可以重新排列任何行。使用 ⧉ 复制一行,然后通过出现在行间的虚线粘贴区域,将其粘贴到序列中的任意位置。使用 × 删除一行。直接语法和安全编辑是同一份文本——在它们之间切换不会丢失任何内容。

🧰 命令面板,为每个主要命令提供构建器 一排颜色编码的按钮涵盖了所有常见的事件命令,分为六组:移动(蓝色)、计时(黄色)、对话(紫色)、动画(绿色)、音频(紫罗兰色)、摄像机(青色)。悬停在任意按钮上即可查看其确切的语法片段以及用通俗语言描述的功能及使用时机。点击它会打开该命令的专用表单——填写字段,完成的命令行会精确地插入到场景中光标所在位置。已在场景中的命令可以在安全编辑模式下点击,以重新打开相同的已预填表单,修改所需内容,并覆盖该行。

➡️ 带有瓦片数学功能的移动构建器 移动命令需要的是增量值(delta),而非目标坐标。这是人们经常出错的地方。移动构建器有两种模式。输入数字让你直接输入 dx 和 dy。瓦片数学读取你已保存的坐标,显示起始瓦片和结束瓦片下拉菜单,选择合适的轴,并为你计算偏移量——它甚至会在两个瓦片在两个轴上都不同,从而需要第二个移动命令来处理对角线时警告你。面朝方向是一个必填的下拉菜单,而非可选的附加项,这样你就不会意外发布一个 NPC 只是滑过并一直朝南看的场景。

🎞️ 用于动画命令的可视化帧选择器 动画(animate)命令需要一个用空格分隔的帧号列表。手动编写这个列表并一次就写对是不太可能的。在动画构建器内部点击帧选择器按钮,加载行动者的精灵表 PNG,每个帧都会以网格形式展示——你实际的像素。按你希望它们播放的顺序点击帧。右侧的实时预览会以动画命令所使用精确毫秒/帧的速度播放你的序列——所见即所得。已在序列中的帧会在其下方显示其位置编号。多次点击同一帧可创建来回播放的效果。点击“撤消”移除最后一个选择。

💬 对话标签助手,带悬停描述 每个说话(speak)、消息(message)和头顶文本(textAboveHead)字段下方都有一个标签面板。肖像表情($0 到 $5)、动态文本插入(@, %spouse, %farm, %pet, %name)以及结构性标签(如 #$b# 用于新对话框)都以可点击按钮的形式列出。点击任意标签即可将其插入到光标位置。悬停以查看其确切作用及有效位置的描述。高级标签——$c 用于基于机会的对话,$d 用于世界状态检查,$y 用于快速的是/否响应——在一个切换开关后面,这样在你需要它们之前不会让面板显得杂乱。

❓ 玩家选择与分支 你可以为任何事件添加一个选择题。为问题指定说话者,编写问题文本,并根据需要添加任意数量的答案选项——每个选项都有自己的标签、对话键和分支脚本。每个分支都有自己的场景面板,你可以在其中编写玩家选择该选项后发生的情况:移动、表情、友谊变化、更多对话、如果需要还可以是当天结束。分支是一个完整的子场景,而不是单行。同一事件中支持多个独立的问答序列——添加一个额外的分支组,使用一个标记按钮(该按钮会精确地放在光标位置)将其放入场景中,每个组独立处理自己的问题和答案。

🔌 兼容 ValleyTalk 的分支生成 分支系统了解 ValleyTalk。在每个分支组中切换它,构建器会自动将每个答案的回应键注册为正确角色的对话文件中与事件并列的对话条目——工具生成的 Characters/Dialogue 块会处理所有这些。如果你加载了一个使用 ValleyTalk 的文件然后改变了主意,一个按钮就能从会话输出中剥离每个 ValleyTalk 特定的块,清除 Characters/Dialogue 条目中的 VT 回应键,并移除任何最终为空的对话块。其他所有内容保持不变。

[url=https://www.nexusmods.com/stardewvalley/mods/30319]https://www.nexusmods.com/stardewvalley/mods/30319[/url]

🔍 语法检查,捕捉静默错误 在生成前的任何时候运行一次完整检查。它能捕捉到 SMAPI 无法明确标记的问题:与原版 ID 冲突的事件 ID、起始时间不小于结束时间的时间窗口、超过 2400 硬上限的时间值、冲突的约会和婚姻条件、以及没有起始位置的行动者。它还能捕捉 $ 令牌循环——即肖像标签($0, $h 等)最终出现在选择标签内,而不是问题或分支对话中,这会导致选择在游戏中无声地无限重复询问,日志中没有任何错误。当发现此问题时,会出现一个“剥离”按钮,可以一键从场景中所有答案标签和所有分支面板中移除违规令牌,而不会影响问题文本或肖像令牌有效分支对话。

📂 加载现有事件文件进行编辑 已经有一个 Data/Events JSON 文件?加载它,工具会解析每个事件条目,显示包含地图名称、事件 ID、触发条件和任何加载警告的完整列表,并让你可以点击任何条目来填充构建器——条件、位置、音乐、场景命令和分支都会从文件中加载。不支持或不寻常的事件键标志(如 /c, /n, 或 /j)会被标记为警告而非静默丢弃,以便你知道哪些内容没有转移。损坏的 JSON 和格式正确但有误的文件会分别显示专门的错误信息。已加载条目的事件 ID 可以从同一会话中任何其他事件的前置条件下拉菜单中选取,以便你的事件链能了解其自身的前置条件。

📋 会话累积——无需手动合并 JSON 即可构建整个文件 生成一个事件,它就会进入会话。构建下一个事件,再次生成,它就会被添加进去——不是一个单独文件,而是同一个文件。会话面板显示其中事件的数量,并告诉你刚刚改变了哪一个。事件按目标堆叠,因此一个城镇事件和一个海滩事件会自动进入同一输出中的独立 Data/Events 块。完成后,下载整个文件。清除会话以重新开始。你不需要手动触碰 JSON。

🔀 合并到现有文件 已有一个想要添加事件的文件?将其与会话输出一起上传并合并。该工具会将你的新事件折叠到现有的 Changes 数组中,将条目合并到匹配的块中,而不是复制它们。下载已合并的、可立即使用的文件。

⬇ 下载或复制输出 生成一次即可获得两个选项。下载将 JSON 直接保存到你的计算机,准备好放入你的 Mod 的 assets 文件夹。复制可将其放入你的剪贴板。每次重新生成时,之前的输出都会保存为备份,只需单击一下即可访问——因此重新生成不会给你带来任何损失。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📍 坐标拾取器功能

🗺️ 加载并渲染任意星露谷物语地图文件 上传一个 .tbin 或 .tmx 文件,地图会渲染在一个可点击的画布上——显示你实际的瓦片,而非颜色网格。可以随地图文件一起加载图集 PNG,以获得完全渲染的视图。缩放控件让你能精确定位小瓦片。当你移动时,光标所在瓦片的坐标会显示在画布底部,因此你始终知道点击前确切的位置。

🖱️ 点击即可保存、添加标签、归入文件夹,并直接使用 当你点击一个瓦片时,会打开一个保存面板,显示地图名称和你所在位置的 X 和 Y 坐标。为其添加标签,设置面朝方向,选择一个文件夹,然后保存。每个保存的坐标立即可在事件构建器中使用——任何包含 X 和 Y 的位置字段都会显示一个 📍 已保存 下拉菜单。选择一个已保存的瓦片,地图名称、X、Y 和方向会同时填好。

📁 用于组织位置的文件夹系统 坐标会被放入你创建的命名文件夹中。可以为每个 NPC、每个地图创建一个文件夹,或使用与你项目匹配的任何结构。已保存的瓦片会在列表中内联显示其地图名称、X、Y 和方向,因此无需打开任何东西即可一目了然。在工作过程中可以重命名和重新排列文件夹。

⬇ 跨会话导出和重新导入 将所有文件夹导出为一个纯文本 .txt 文件,该文件读起来像一份清晰的参考表——文件夹名称、标签、地图名称、坐标、方向。将任何之前的导出文件重新导入工具,它会干净地合并:坐标会进入匹配的文件夹名称,新文件夹名称会被添加,不会替换任何内容。将导出文件与你的 Mod 文件一起保存,你永远不会需要从头开始重新映射位置。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📥 安装

此工具完全在你的浏览器中运行。无需安装任何东西。

HTML 版本——推荐大多数用户使用

  1. 下载 GodlyHand_SceneBuilder.html
  2. 在 Chrome、Firefox 或 Edge 中打开它
  3. 完成——无需设置

JSX 版本——用于 Claude / React 环境

  1. 下载 GodlyHand_SceneBuilder.jsx
  2. 将其放入 Claude.ai 或任何 React sandbox 并运行

两个版本功能完全相同。下载后无需互联网连接。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📋 要求

你的地图文件 坐标拾取器支持 .tbin 和 .tmx 文件。使用 xnbextract 或 Content Patcher 包从 Content 文件夹提取基础游戏地图。Mod 地图以相同方式工作。

瓦片位置必须来自游戏内 所有 X/Y 坐标和面朝方向必须来自实际游戏过程或坐标查找 Mod——Nexus 上的 Debug Mode 和 Tile Info 都是可靠的。如果你加载地图文件,坐标拾取器能帮你完成大部分工作。该工具用于组织你的数据,它不会凭空生成位置。

现代浏览器 Chrome、Firefox 或 Edge。下载后无需互联网连接。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━