NC 分区委员会 - 核心

NC 分区委员会 - 核心

NC分区登记表,游戏内,供其他模组基于其构建。一个无自身UI的框架:它从nczoning.net获取位置模组的交互式地图,并将其作为只读API提供。当其他模组要求时安装它。

**NC 分区委员会**

夜晚集团 // 城市规划处

文书 NC-ZB-01 - 勘测登记册

NC 分区委员会 - 核心:游戏内的登记册,供其他模组在其基础上构建。


0. 本文书之性质

NC 分区委员会 - 核心 是一个框架——模组制作者的资源。它获取 NC 分区委员会 登记册——一张《赛博朋克2077》位置模组的交互式地图——并在游戏内以只读 API 的形式将其呈现给其他模组使用:包括每个已映射位置的名称、作者、世界坐标、分类、标签和所属区域。

它没有菜单,本身也不会执行任何操作。 只有当另一个模组将其列为前置要求时,你才需要安装它。单独安装它不会产生任何可见效果。


1. 更大的项目

核心是 NC 分区委员会(《赛博朋克2077》位置模组的交互式地图)在游戏内的一半。

  • 探索地图: nczoning.net
  • 加入社区: Locations Hub Discord

展示

[youtube]30Daism2E-c[/youtube]

预告片

[youtube]LJVJ2lN4aQ0[/youtube]


2. 我需要申报此文件吗?

只有当你想使用的模组要求时。核心是一个共享依赖项,就像 Codeware 或 RED4ext 一样:它位于后台,为请求数据的模组提供数据。

基于核心构建:NC 分区委员会 - 区域指南


3. 它在底层做什么

  • 每次游戏会话通过 HTTPS 下载一次登记册。
  • 将其缓存在磁盘上,因此在首次在线启动后可以离线工作,并能高效地重新验证(当没有变化时不会重新下载)。
  • 通过一个小型、稳定的 API 向 redscript 和 CET Lua 模组提供数据。
  • 告知消费模组你已经安装了哪些位置模组,以便它能标记出哪些已安装、哪些缺失。有些模组无法通过这种方式检查,会显示为 "未知" 而不是缺失:包括 AMM 位置模组,以及那些只附带 ArchiveXL .xl 文件的模组。

不会对你的游戏做任何更改:不写入,无遥测,不追踪位置。它唯一的 UI 元素是告知你登记册加载失败的警报。


4. 发放条件

必需:

RedFunctions 使核心能够检查你安装了哪些位置模组。Cyber Engine Tweaks 不再需要用于此目的或其他任何目的。

RedLogger 是核心写入其日志的地方。它使此模组拥有自己的日志文件,位于 r6\logs\mods\NCZoningCore__<date_time>.log,每次会话一个,保留最近五个。该文件是提交错误报告时需要附带的内容。

如果你同时运行 Redscript Configuration Framework 2.1.0,RedLogger 必须是 1.3.0 或更新版本。 RCF 会调用旧版本没有的 RedLogger 函数。Redscript 将所有已安装的模组编译为一个整体,因此此不匹配将导致编译失败,会使你机器上的所有 redscript 模组失效,而不仅仅是这一个。请更新 RedLogger。

可选:

Cyber Engine Tweaks 仅当消费模组本身是 CET Lua 模组时才需要。核心不使用它。

安装了 Redscript Configuration Framework 后,可以在游戏中阅读本文档和核心的日志:按 F8 并打开 RCF 中心的 DOCS 和 LOGS 页面。核心在那里没有设置——它只是归档其文书。


5. RedHttpClient 是可选的

RedHttpClient 是让游戏能够发出 HTTPS 请求的插件,也是核心接触网络的唯一原因。它是一个软依赖:核心即使没有它也能安装和运行。

安装了 RedHttpClient。 登记册会在每次会话时自动下载一次并保持最新。无需你操作。

没有 RedHttpClient。 核心永远不会打开网络连接。它从你自行下载的文件中读取登记册,并将其视为永久过期状态,因为它无法检查更新。当你需要更新的数据时,可以重新下载。

如果你跳过 RedHttpClient 并且不提供该文件,模组将没有任何数据。 它会在会话开始几秒钟后在屏幕上告知你这一点,而不是假装地图是空的。


6. 手动归档勘测

在你的《赛博朋克2077》文件夹中打开一个终端并运行:

curl.exe -L "https://api.nczoning.net/v1/locations" --create-dirs -o "r6\storages\NCZoningCore\locations.json"

这将创建 Cyberpunk 2077\r6\storages\NCZoningCore\locations.json。该文件夹是固定的:RedFileSystem 将每个模组限制在 r6\storages\<模组名称>\ 中,核心无法从其他任何位置读取。需要获取的文件只有一个。

输出路径是相对路径,因此请检查它是否落在了你想要的位置。将正确的文件下载到错误的文件夹中看起来完全成功,但实际上毫无作用:

dir r6\storages\NCZoningCore

你应该能看到 locations.json,大小约为 260 KB(它会随登记册增长;任何小于 ~10 KB 的文件都意味着你保存的是一个错误页面,而不是数据)。

Vortex 或手动安装: 无需特殊操作。上面的命令就是全部所需。

Mod Organizer 2: 游戏目录是虚拟化的,因此请改为在你的 overwrite\ 文件夹中运行该命令,或者在某个模组文件夹内创建 r6\storages\NCZoningCore\locations.json 并让 MO2 部署它(这样可以将其排除在 overwrite 之外,并能干净地卸载)。

无论如何,overwrite 路径也是模组本身的写入位置:安装了 RedHttpClient 后,游戏的写入会通过虚拟文件系统,MO2 会将其放入 overwrite\r6\storages\NCZoningCore\。因此,如果你稍后添加 RedHttpClient,它会刷新你已经放在那里的文件,而不是在其他地方创建第二个副本。


6a. 可选 - 一键刷新

适用于熟悉创建小型批处理文件的用户。完全是可选的——上面的单条命令实际上就是你所需要的全部。

将此保存为 refresh-nczoning-data.bat。其中没有任何内容特定于你的机器:%~dp0 是文件自身的文件夹,因此它会自行计算路径,无需编辑任何内容。

@echo off
set "DEST=%~dp0overwrite\r6\storages\NCZoningCore\locations.json"
set "LOG=%~dp0refresh-nczoning-data.log"
echo [%DATE% %TIME%] fetching NC Zoning Board registry> "%LOG%"
curl.exe -L --fail --create-dirs -o "%DEST%" "https://api.nczoning.net/v1/locations" >> "%LOG%" 2>&1
if errorlevel 1 (
  echo   FAILED - see %LOG%
  pause
  exit /b 1
)
for %%A in ("%DEST%") do set SIZE=%%~zA
echo   OK - wrote %SIZE% bytes to:
echo   %DEST%
if %SIZE% LSS 10000 echo   WARNING: too small - probably an error page, not the data.
pause
  • Mod Organizer 2: 将其放在你的 MO2 实例 文件夹中——即包含 mods\profiles\overwrite\ 的那个文件夹——然后在 工具 > 可执行文件 中添加它,不要添加任何参数,并从下拉菜单中运行它。
  • Vortex 或手动安装: 将其放在你的《赛博朋克2077》文件夹中,并将 DEST 行改为 set "DEST=%~dp0r6\storages\NCZoningCore\locations.json" —— 这里不涉及 overwrite\。然后直接双击它即可。

请使用批处理文件,而不是将 MO2 直接指向 curl.exe。将整个命令放入启动器的参数框通常会导致什么都不发生——没有文件,没有错误,没有线索,因为控制台窗口在退出瞬间就关闭了。批处理文件在每次运行时会在其旁边写入一个日志并保持窗口打开,因此失败时会告诉你出了什么问题。

这是一种便利,而不是 RedHttpClient 的替代品。 模组仍会将文件视为永久快照并会如此说明。当你需要更新数据时,请重新运行该按钮。


7. 安装

  1. 安装上述前置要求。
  2. 下载 NC 分区委员会 - 核心 并将 r6 文件夹解压到你的《赛博朋克2077》根目录。 最终路径应类似于: Cyberpunk 2077\r6\scripts\NCZoningCore\
  3. 仅当你跳过了 RedHttpClient 时: 运行上面的 curl 命令下载登记册。

兼容模组管理器,或手动安装。


8. 面向模组作者 - 基于登记册构建

从 redscript 或 CET Lua 基于 NCZoningCore 进行构建。完整的消费者指南和两种语言的实操示例位于 GitHub 仓库 中。

简而言之:redscript 消费者 import NCZoning.Api.*(或使用 @if(ModuleExists("NCZoning.Api")) 进行软依赖保护)并订阅 NCZoning-DataReady / -DataRefreshed / -DataError 事件。CET Lua 消费者调用 NCZoningApi 门面并观察 NCZoningApi.OnDataReady 以获取数据就绪信号。


9. 致谢

  • Kaoziun 感谢最初的 NC Zoning 构想和社区领导。
  • Akiway 对 NC Zoning 地图 UI 和 UX 的改进。
  • psiberx 感谢 Codeware。
  • DigitalVixen 感谢 RedFunctions、RedLogger 和 Redscript Configuration Framework。
  • rayshader 感谢 RedHttpClient、RedData 和 RedFileSystem。
  • 登记册所映射的位置模组作者,以及 Locations Hub 社区。

10. 免责声明

本模组在 LLM 的协助下开发。所有游戏内测试和代码验证均由人工完成。没有 rogue AI 被允许通过 Blackwall。


已向 NC 分区委员会申报 - 夜晚集团城市规划处。 委员会记录已建成之物。它并不负责建设。

nczoning.net