制作第一个模组
下面用一个数值修改走完 RPFM 的基本流程:把震旦玉勇的基础近战防御从34改为100。
开始前应已完成首次启动与初始设置,并能在
依赖项中看到游戏文件。操作时关闭游戏,并暂时停用其他会修改玉勇数据的 Mod。
为什么选择 land_units_tables
对第一次制作 Mod 的用户来说,修改单位数值是最简单、方便且直观的入门操作。它不需要先理解模型、贴图、动画、脚本和多张数据表之间的复杂关系,只要找到一个数值、修改并保存,就能在游戏中看到变化。
这次选择land_units_tables,是因为它保存了陆战单位的许多核心战斗数据。玉勇的基础近战防御就直接写在这张表的melee_defence列中,把34改为100即可得到明显的游戏内变化,非常适合用来确认第一个 Mod 是否制作成功。
这篇教程真正要学习的并不只是把一个数值从34改成100,而是借助这个简单修改,完整走一遍制作数据类 Mod 的基本流程:
- 新建 Pack、设置文件名并保存到正确位置。
- 在
依赖项中查找原版数据表和单位记录。 - 复制原版记录并创建新表,或者把原始表导入自己的 Pack。
- 为导入的表文件重新命名,避免使用
data__覆盖原版同名数据表。 - 只保留需要修改的单位记录,减少冲突和不必要的数据。
- 修改数值、保存 Pack、运行诊断并进入游戏检查结果。
掌握这些操作后,即使以后修改的不是近战防御,也可以沿用相同思路:先找到负责该内容的数据表,再把需要的原版记录放进自己的 Pack,完成修改、保存和测试。
land_units_tables不只包含近战防御。它可以直接设置领导力、近战攻击、冲锋加成、弹药容量、射击精度、装填技能、额外生命值和多种伤害抗性,也可以指定单位使用的护甲、盾牌、近战武器、远程武器、实体、动画、坐骑、阵型间距、属性组和语音,还包含隐蔽与侦测、AI 战斗定位、占领能力、自动结算分类和默认战斗模式等设置。
有些列保存的是数值,有些列只是指向其他表的记录。例如
armour选择护甲记录,primary_melee_weapon选择近战武器记录;决定面板护甲强度、基础武器杀伤、破甲武器杀伤和攻击间隔的数值还要到被引用的表中查看。land_units_tables也不负责单位人数、招募费用、招募建筑、单位名称、兵牌或模型外观,这些内容需要其他表或 Loc 文件。第一个练习只修改它直接保存的melee_defence。
新建并保存 Pack
- 打开
PackFile → 新建 PackFile,也可以按Ctrl+N。 - 新建后左侧会出现
new_pack.pack。按Ctrl+S打开保存窗口;新建 Pack 本身不会自动弹出保存窗口。 - 在保存窗口中进入《全面战争:战锤 III》的
data文件夹。 - 将文件名设为
tutorial_first_mod.pack并保存。
常见的保存位置如下,实际 Steam 库和盘符以你的电脑为准:
……\SteamLibrary\steamapps\common\Total War WARHAMMER III\data\tutorial_first_mod.pack
不要覆盖
data.pack、db.pack等原版文件,也不要使用已经存在的 Mod 文件名。新 Pack 默认是Mod类型;如需确认,右键 Pack 根节点,查看更改 PackFile 类型 → Mod左侧是否有选中标记。
这次会遇到三个名称,照下面分别处理即可:
| 名称 | 本例填写或保留的值 | 为什么 |
|---|---|---|
| 磁盘上的 Pack 文件名 | tutorial_first_mod.pack |
用来在启动器中找到这份练习 Mod,可换成自己的独特名字。 |
| Pack 内部的 DB 文件名 | tutorial_first_mod |
创建表时填写,或导入后把data__改成它;不要添加.pack后缀。 |
| 行内单位 Key | wh3_main_cth_inf_jade_warriors_0 |
必须保留,才能修改原版玉勇;随意改名会变成另一条记录。 |
找到玉勇的数据
- 如果左下角没有
依赖项面板,打开视图 → 切换依赖面板。 - 在依赖项筛选框中输入
land_units_tables。 - 展开
游戏文件 → db → land_units_tables,双击data__。 - 在表格下方的筛选栏中输入
wh3_main_cth_inf_jade_warriors_0并按Enter。 - 确认表格只剩这条玉勇记录。
标签名中的Game-RO:表示这份数据来自游戏文件依赖、正在只读查看,并不单独证明它是 CA 原版数据;依赖缓存也可能包含其他 Mod。本例要同时核对游戏文件来源、land_units_tables和原版文件名data__,不要打开同目录下作者自定义命名的表,也不要使用Assembly Kit 文件中的结果。只读页只供查找和复制,不能直接保存修改。
复制完整数据行
如果准备使用下面的“方法一:创建空表”,先复制玉勇记录;如果准备使用“方法二:导入原始表”,可以跳过这一节。
- 保持数据表的全部列可见。
- 点击玉勇记录最左侧的行号,选中整行。行号会随游戏和工具版本变化,不必与图中的
1447相同。 - 按
Ctrl+C复制。
不要在复制前隐藏列。RPFM 只会复制当前显示的列;缺少列的数据粘贴到新表后,会产生空字段或错误引用。复制完成后再隐藏无关列没有问题。
在自己的 Pack 中创建数据表
创建land_units_tables有两种常用方法。第一种是创建空表后粘贴目标记录,Pack 最干净;第二种是把原始表导入 Pack,再删除不需要的记录,适合习惯先取得完整原表再筛选的用户。两种方法最后都只应留下玉勇这一条记录,选择其中一种即可。
方法一:创建空表
- 在左上角
Pack 内容中右键tutorial_first_mod.pack。 - 点击
创建 → 创建 DB 数据表。 - 文件名填写
tutorial_first_mod。 - 在下方筛选框输入
land_units_tables,然后在中间的下拉框选择land_units_tables。 - 点击
确定。
完成后,Pack 中会出现db → land_units_tables → tutorial_first_mod。双击tutorial_first_mod打开空白表格。
方法二:导入原始表
- 在
Pack 内容中先单击tutorial_first_mod.pack,确保它是当前目标 Pack。 - 在
依赖项筛选框中输入land_units_tables。 - 展开
游戏文件 → db → land_units_tables,右键data__并点击导入。 - 在
Pack 内容中展开db → land_units_tables,确认已经出现data__。 - 右键这个
data__文件,点击重命名/移动,将文件名改为tutorial_first_mod。不要勾选启用全路径移动,也不要重命名land_units_tables文件夹。
导入后必须重命名
data__。 如果 Mod 中仍然保留db/land_units_tables/data__这个原版内部路径和文件名,游戏加载 Mod 时会用它覆盖原版同名数据表,而不是只覆盖你修改的玉勇记录。这不会改坏硬盘中的原版data.pack,但会让你的 Mod 接管整张原版表,容易造成大范围兼容问题。应把文件改成自己独有的名称,例如tutorial_first_mod。
- 双击重命名后的
tutorial_first_mod,在表格筛选栏中输入wh3_main_cth_inf_jade_warriors_0并按Enter。 - 点击玉勇记录最左侧的行号,选中完整一行。
- 清空筛选栏并按
Enter,让全部记录重新显示。此时玉勇这一行仍应保持选中。 - 使用表格工具栏或右键菜单中的
反选;如果使用右键菜单,应在仍被选中的玉勇行上点击右键。确认玉勇不再处于选中状态,而其他记录全部被选中。 - 在任意一个已选中的其他记录上点击右键,再点击
删除行,只留下玉勇记录。 - 确认右下角的行数显示为
1/1,并再次核对剩下的Key是wh3_main_cth_inf_jade_warriors_0。
执行
反选前必须先清空筛选条件。反选只会处理当前表格中可见的记录;如果筛选结果中只显示玉勇,直接反选不会选中那些被筛选隐藏的记录,也就无法删除它们。
修改数值
如果使用方法一,先完成下面两步;如果使用方法二,表格中已经只剩玉勇,可以直接修改Melee Defence。
- 右键空白表格,点击
粘贴为新行,也可以按Ctrl+Shift+V。 - 确认右下角的行数显示为
1/1。
接下来两种方法的操作相同:
- 为了方便查看,可以打开表格下方的
Columns,先勾选隐藏列顶部的总开关,再取消Key和Melee Defence两行的隐藏勾选,只显示这两列。拖动表头右边界可加宽列。使用方法一时,这一步必须放在复制完成之后。 - 双击
Melee Defence列中的34,输入100并按Enter。
截图中的new_pack_2.pack是本次演示新建的独立 Pack;你已经保存过的话,这里显示的是tutorial_first_mod.pack。判断编辑目标要看所属 Pack 和自建表文件名,不要把临时 Pack 名称当成必须照抄的内容。
左侧文件位于自己的 Pack 中,标签也不再以Game-RO开头,因此这里的内容可以编辑。不要修改Key,它用于确定这条记录覆盖的是哪个原版单位。
100是本次用于观察变化的基础近战防御值,直接输入数字,不输入100%、+100或中文单位。它不表示“免疫全部近战攻击”。如果想先做较小的变化,也可填44,即在本例原值34上增加10点;同一次验证只改这一列,确认流程成功后再按陆战单位详解学习其他字段。
保存并运行诊断
- 按
Ctrl+S保存 Pack。 - 确认保存成功。只有打开这一份 Pack 时,标题末尾的
*应消失;多 Pack 工作时还要核对自己的 Pack 是否保存,不能只看包含其他文件状态的总标题。Ctrl+S会保存所有打开的 Pack,不希望保存其他文件时,应右键目标 Pack 根节点并点击保存 Pack。 - 打开
视图 → 切换诊断窗口。 - 点击诊断面板左侧的三角形按钮重新检查。
- 等待诊断完成,再查看结果。只打开本文这一份练习 Pack、且依赖设置正确时,目标是没有相关错误或警告;如果同时打开多份 Pack,先看每条消息的
Pack和路径,确认它属于哪个文件,不要把所有计数都算到当前表头上。
图中教学副本已保存为.tmp_firstmod_capture.pack,而下方警告的Pack列指向另一份new_pack.pack。这说明多 Pack 诊断会把其他打开文件的问题一起列出;不能通过隐藏警告来“修复”,也不应为了清零擅自删除其他 Pack 的数据。本文只改玉勇这一行,应重点核对自建land_units_tables/tutorial_first_mod有没有缺列、错误引用或重复记录。
诊断通过只说明 Pack 的结构和引用没有发现问题,不等于已经完成游戏内验证。
在游戏中检查
- 关闭 RPFM 或保持 Pack 已保存,然后打开《全面战争:战锤 III》启动器。
- 在模组管理器中启用
tutorial_first_mod.pack,暂时关闭其他 Mod。 - 启动游戏并进入自定义战斗。
- 选择震旦军队,查看玉勇的近战防御。
预期结果是玉勇的近战防御明显提高。游戏版本、难度、技能和战场效果可能继续修改单位面板中的最终数值,因此不要只凭是否恰好显示100判断 Pack 有没有加载。
如果启动器中找不到 Mod,检查 Pack 是否位于游戏的data文件夹、扩展名是否确实为.pack、PackFile 类型是否为Mod。如果数值没有变化,先确认 Mod 已启用,再关闭其他会修改land_units_tables的 Mod 后重试。
完成测试后,可以继续保留这个练习 Mod,也可以先在启动器中停用,再从data文件夹移走tutorial_first_mod.pack。

