MOD 制作教程 🏠 主页

六、国家 factions.ini 代码讲解

factions.ini 定义游戏国家/阵营。格式与游戏本体 data/factions_ini.js 完全一致。每个 [节名] 是一个阵营,节名即阵营 ID。

6.1 完整示例

[guard]
name=自由同盟
short=同盟军
color=#3f8ce0
color2=#9fd0ff
dark=#17324f
desc=以美国为领衔的同盟阵线,具有装甲精良、火力均衡,拥有狙击手与高精度火炮。
unique=["sniper","grizzly"]
tint=#3f8ce0

[cz_nation]
name=苍蓝共和国
short=苍蓝军
color=#2a8fd8
color2=#9fd8ff
dark=#0e2f4f
desc=新国家示例,擅长空军与快速机动。
unique=["cz_jetFighter"]
excludeUnits=["rifleman"]
tint=#2a8fd8

6.2 字段速查

[Faction]>name= (string) — 阵营全称。
对局内玩家名称显示。
[Faction]>short= (string) — 简称。
遭遇战界面下拉框、大厅、编辑器显示。
[Faction]>color= (hex) — 主色。
单位轮廓、阵营标识的主色。
[Faction]>color2= (hex) — 高光色。
装饰高光。
[Faction]>dark= (hex) — 暗色。
阴影/描边。
[Faction]>desc= (string) — 阵营描述。
科技树/选择界面显示。
[Faction]>unique= (JSON 数组) — 专属单位列表。
必须用 JSON 数组语法,如 unique=["sniper","grizzly"]。对应单位需在 units.ini 中定义并设 faction= 或通过其他方式限定。
[Faction]>excludeUnits= (JSON 数组) — 从通用列表排除的单位。
可选。如 excludeUnits=["rifleman"] 表示该阵营用自家步兵替换通用步枪兵(需自己定义同名单位)。
[Faction]>tint= (hex) — 阵营着色(同 color)。
兼容字段。
重点:数组字段(unique / excludeUnits)必须使用 JSON 数组语法 ["a","b"]。若写成逗号分隔的字符串 unique=sniper,grizzly,当只有一个元素时会被解析成字符串而非数组,导致专属/排除逻辑失效。

6.3 让新国家可用

定义阵营后,还需配合两点才能真正在游戏中选择:

  1. 在 units.ini / buildings.ini 中给该阵营专属的单位/建筑设置 faction=cz_nation;
  2. 遭遇战界面按 R.FACTIONS 列出可选阵营(跳过 neutral),新阵营会自动出现。
中立阵营 [neutral] 不要修改:它是中立建筑的归属阵营,参与胜负逻辑。