查看“模组:编辑 XNB 文件”的源代码
←
模组:编辑 XNB 文件
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
←[[模组:目录|目录]] 本页描述了如何编辑游戏文件以更改游戏中的数据、图像和地图。 ==介绍== ===什么是 XNB 文件?=== 游戏将数据、地图和纹理存储在 <samp>.xnb</samp> 这种压缩数据文件中,它们在游戏的 <samp>Content</samp> 文件夹中。 例如,对话期间显示的阿比盖尔的头像来自这个文件: <samp>Content\Portraits\Abigail.xnb</samp>。解包这个文件,你会得到 <samp>Abigail.png</samp> 这个图片文件,内容如下:<br />[[File:Modding - creating an XNB mod - example portraits.png]] (如果你使用 xnbcli 来解包,你通常会得到 <samp>Abigail.json</samp> 文件。 那只是用来打包回 <samp>.xnb</samp> 所需的文件,通常不需要更改它。) ===如何将更改应用到游戏中?=== 有3个方法可以使你的修改应用到游戏中: # [[模组:Content Patcher|创建一个Content Patcher内容包]](也见:{{nexus mod|1915|nexusmods.com上的Content Patcher}})。这不需要编程,仅编辑 JSON 文件就可以更改游戏的 XNB 数据,也无需替换实际的游戏文件。 # [[:en:Modding:Modder Guide/Get Started|制作一个 SMAPI 模组]] 并使用 [[:en:Modding:Modder_Guide/APIs/Content|内容 API]]。不过,这需要编程。 # 通过替换原始游戏文件来创建 XNB 模组。不再建议使用,本页面没有讲解; 访问 [[模组:使用 XNB 模组|使用 XNB 模组]] 获取更多信息。 ===在哪里可以得到帮助?=== 欢迎前往星露谷物语[[:en:Modding:Community|模组社区]]寻求帮助。 ==<span id="unpacking">解包游戏文件</span>== 你无法编辑 <samp>.xnb</samp> 文件其本身,你需要编辑其中的文件。 将文件从中取出叫做 '''解包'''; 把文件放入其中叫做 '''打包'''。 有两个主要的 XNB 解包工具可用: ===StardewXnbHack=== {{github|Pathoschild/StardewXnbHack#readme|StardewXnbHack}} 是用于解包 XNB 文件的开源且跨平台的工具。 它不能打包回 <samp>.xnb</samp> ,不过你也只在[[模组:Content Patcher|创建内容包]]时才需要打包回去。 如何操作: # [[模组:使用指南/入门#安装SMAPI|安装 SMAPI]] # {{github|Pathoschild/StardewXnbHack/releases|下载 StardewXnbHack}}(确保你下载的文件适用于你的系统,例如在Windows平台需要下载: StardewXnbHack-*-for-windows.zip 而不是 source code!) # 解压缩并放进 [[模组:使用指南/入门#找到你的游戏文件夹|你的游戏文件夹]], 也就是让 <samp>StardewXnbHack.exe</samp> 文件位于与{{executable name|StardewValley}}相同的目录下. # 双击运行 <samp>StardewXnbHack.exe</samp> (Windows)、<samp>StardewXnbHack.sh</samp> (Linux)、 <samp>StardewXnbHack.command</samp> (MacOS) 来解包游戏文件夹中 <samp>Content</samp> 文件夹下的所有 XNB 文件。 就是这样!它将会把解包的内容放入游戏文件夹下的 <samp>Content (unpacked)</samp> 文件夹。解包出的文件可用于创建 [[模组:Content Patcher|Content Patcher]] 的内容包。 ===xnbcli=== {{github|LeonBlade/xnbcli#readme|xnbcli}} 是用于打包和解包 XNB 文件的开源且跨平台的工具。它无法解包带有数据模型的 XNB 文件 (例如 <samp>Data\FishPondData</samp> 或者 <samp>Data\Movies</samp>),并且需要手动编辑数据文件才能与 Content Patcher 等模组一起使用。 如何操作: <ol> <li>{{github|LeonBlade/xnbcli/releases|下载 xnbcli}}。 (确保你下载的文件适用于你的系统,例如在Windows平台需要下载:<samp>xnbcli-windows-x64.zip</samp> 而不是 source code!)</li> <li>解压缩下载的文件: # 找到你要解包的文件。 # 将它放进 xnbcli 的 <samp>packed</samp> 文件夹。 # 双击 <samp>unpack.bat</samp> (Windows)、<samp>unpack.sh</samp> (Linux)、<samp>unpack.command</samp> (Mac)。 # 检查 <samp>Unpacked</samp> 文件夹,解包后的文件在该文件夹中 (如果你没有一次性解包很多文件,它可能会在屏幕上闪烁并瞬间消失,这很正常!无论如何,请注意检查 <samp>Unpacked</samp> 文件夹。注意 1.4 引入了 xnbcli 无法处理的新数据模型格式;对于某些数据文件,你需要使用 [[#StardewXnbHack|StardewXnbHack]] 才行。) </li> <li>编辑解压缩的文件(请参见下文)。</li> <li>如果这是一个数据文件(而不是图像或地图),要替换或编辑该文件,则需要删除 XNB 元数据。当前的 JSON 文件内容应如下所示: <syntaxhighlight lang="js"> { "header": { "target": "w", "formatVersion": 5, "hidef": true, "compressed": true }, "readers": [ { "type": "Microsoft.Xna.Framework.Content.DictionaryReader`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]", "version": 0 }, { "type": "Microsoft.Xna.Framework.Content.Int32Reader", "version": 0 }, { "type": "Microsoft.Xna.Framework.Content.StringReader", "version": 0 } ], "content": { "0": "Weeds/0/-1/Basic/Weeds/A bunch of obnoxious weeds." } } </syntaxhighlight> 只需删除 除了内容字段(content)以外的所有内容,就像这样: <syntaxhighlight lang="js"> { "0": "Weeds/0/-1/Basic/Weeds/A bunch of obnoxious weeds." } </syntaxhighlight></li> </ol> '''故障排除:''' * 如果您在 Linux 或者 Mac 上遇到权限问题: *# 打开一个终端(在 MacOS 中,在 Spotlight 中搜索“终端”或者英文“Terminal”) *# 输入 <code>chmod +x </code>, 并以一个空格结束输入,现在不要按 Enter 键。 *# 拖拽 <samp>unpack.sh</samp> (Linux) 或 <samp>unpack.command</samp> (Mac) 到终端窗口上以输入文件路径。 *# 按 Enter 键。如果操作正确,终端将不会显示任何消息,权限问题应该解决了。 *# 重新尝试运行 <samp>pack.sh</samp> (Linux) 或 <samp>pack.command</samp> (Mac). * 如果在 Windows 上遇到无法识别的命令,请执行以下操作: *# 确保你没有误下载 源代码zip! ==打包游戏文件== 你不需要打包游戏文件,如果你正在使用 [[模组:Content Patcher|Content Patcher]] 的话。<br /> 使用 <samp>.json</samp>, <samp>.png</samp>, 或者 <samp>.tbin</samp> 文件连接到你的 <samp>content.json</samp>. 如果你确实想打包,则需要使用 [[#xnbcli|xnbcli]]: # 找到你要重新打包的文件。 # 复制到 xnbcli 的 <samp>unpacked</samp> 文件夹。 # 双击 <samp>pack.bat</samp> (Windows)、<samp>pack.sh</samp> (Linux)、<samp>pack.command</samp> (Mac)。 # 移动打包后的 <samp>.xnb</samp> 文件至原来的位置。 ==进行修改== ===数据=== 每个 XNB 都有自己的格式。请参阅[[模组:目录#高阶主题]]中的文档。 ===图像=== [[File:Modding - creating an XNB mod - example tilesheet.png|thumb|一个spritesheet的示例,它由像[[File:Modding - creating an XNB mod - example tile 1.png]]这样的图块整齐排列而成]] 一些定义: * '''spritesheet''' 指的是包含小图像的 PNG 文件(小图像通常排列成规则的网格形式)。每一块小图像都称为一个 '''sprite'''。例如,在<samp>Content\Maps\spring_objects.xnb</samp>中,每个游戏内物品都有一个 sprite。 * '''tilesheet''' 是 Spritesheet 的同义词,用于地图图块。在tilesheet中,每个方格称为“图块(tile)”,大小为 16×16 像素。 * '''portrait''' 是<samp>Content\Characters\*.xnb</samp>的spritesheets中的sprite。 Spritesheets 易于编辑: # [[#解包游戏文件|解包]]你想要更改的文件。 # 用图像编辑器(例如Windows平台上的 [http://www.getpaint.net/download.html Paint.NET],或是适用于Windows/Linux/Mac平台的 [https://www.gimp.org/downloads/ GIMP])打开已解包的 <samp>.png</samp>文件。注意,使用支持透明通道(即ARGB 中的 A:alpha 通道)的图像编辑器(例如 Photoshop)非常重要,因此不推荐使用Windows自带的画图。 # 直接对图像进行更改。 # [[#解包游戏文件|重新打包文件]] 然后复制到原位置。 就是这样!然后你就可以打开游戏以看看你做出的修改了! [[Category:模组]] [[en:Modding:Editing XNB files]] [[es:Modding:Edición de archivos XNB]] [[pt:Modificações:Editando arquivos XNB]] [[ru:Модификации:Редактирование XNB-файлов]] [[tr:Modlama:XNB Dosyaları Düzenleme]]
该页面使用的模板:
Template:Executable name
(
查看源代码
)
Template:Github
(
查看源代码
)
Template:Nexus mod
(
查看源代码
)
返回至
模组:编辑 XNB 文件
。
导航菜单
个人工具
创建账户
登录
名字空间
模组
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
未翻译的页面
帮助:编辑入门
随机页面
链接
官方网站
官方论坛
官方商品
社交媒体
工具
链入页面
相关更改
上传文件
特殊页面
页面信息