全面战争模组中文站全面战争模组中文站
搜索/

搜索教程

输入标题,直接打开已发布教程。

输入教程标题开始搜索。

教程目录

制作兵种:远程单位

创建时间:2026年9月3日最后更新:2026年9月6日

远程单位不是在land_units_tables里填一个伤害数字就结束。它至少要经过“单位 → 远程武器 → 投射物”这条链;爆炸、破片、弹丸外观和切换弹药会继续向下连接。

本篇以震旦玉勇弩手wh3_main_cth_inf_jade_warrior_crossbowmen_0作为普通远程步兵模板,只讲 RPFM 中的数据配置,不制作模型、动画、弹丸模型或特效资产。想逐列理解远程武器、投射物、爆炸、破片、穿透和弹药切换时,继续阅读《远程武器详解》;本篇只说明怎样把现有链路接入一个新兵种。

本例适合什么情况

玉勇弩手适合演示“普通步兵使用单一弩箭弹药”的基础链路。火枪、喷火、多弹丸、曲射、制导、投掷武器、骑射、战车乘员和火炮可能使用不同动作、射击方式、武器入口或附加表,不能把本例的弩箭参数当成通用远程模板。

制作自己的远程单位时,先在land_units_tables找到最接近的原版单位,沿Primary Missile Weapon跳到missile_weapons_tables,再沿Default Projectile跳到projectiles_tables。对比两到三个射击方式相同的单位,并对武器或投射物使用查找引用,确认记录是否共享以及是否存在额外弹药、爆炸、破片、穿透或显示分支。

原版模板从依赖项 → 游戏文件中查找,截图的Game-RO:表示只读。若缓存里混有其他 Mod,转到定义也可能打开它们的同名记录;检查文件来源,不把“只读”当成“必定原版”。不要从Assembly Kit 文件复制或导入制作数据。下文修改全部在自己的 Pack 内进行,不修改原版文件。

需要一行模板时,在原版表里点击行号选中完整行并复制,粘贴到自己 Pack 内同种、同版本的新建表单。若采用整份导入法,先把自己的data__改成带个人前缀的文件名,例如twcn_ranged,再只保留需要的行;筛选隐藏不等于删除,其余行仍在文件里。文件重命名防止整个原版同路径文件被覆盖,行内 Key 改名则用于建立独立的新武器,两件事不能互相代替。

远程攻击的数据链

land_units_tables.Primary Missile Weapon
    ↓
missile_weapons_tables.Default Projectile
    ↓
projectiles_tables
    ├─ Projectile Display → projectile_displays_tables
    ├─ Explosion Type → projectiles_explosions_tables
    │                    └─ Shrapnel → projectile_shrapnels_tables
    ├─ Scaling Damage → projectiles_scaling_damages_tables
    └─ Projectile Penetration → projectile_penetration_junctions_tables

本例这种基础弓弩只需要前三层;没有爆炸、破片、制导或穿透时,不要创建对应记录。其他类型应以原版模板实际使用的分支为准。

本篇常用表单

表单 作用
land_units_tables 保存远程武器 Key、弹药容量、射击精度、装填技能和是否散兵等单位级数据。
missile_weapons_tables 注册远程武器,并指向默认投射物。
projectiles_tables 保存射程、弹速、伤害、散布、装填、弹丸数量和特殊效果引用。
missile_weapons_to_projectiles_tables 为同一远程武器添加可切换的额外弹药。
projectile_shot_type_enum_tables 定义射击类型,以及是否需要效果解锁、是否替代其他射击类型。
projectile_shot_type_displays_tables 定义弹药切换的图标和声音;显示名称、提示另写在本地化中。
projectile_displays_tables 指定弹丸的可视模型和相关显示。
projectiles_explosions_tables 配置爆炸范围、伤害、推力、特效、音效和友军伤害。
projectile_shrapnels_tables 配置爆炸后产生的破片投射物。
projectiles_scaling_damages_tables 让伤害随目标生命比例缩放。
projectile_penetration_junctions_tables 配置弹丸穿透不同目标后的表现。

建立远程武器

本例的原版玉勇弩手在land_units_tables中使用:

Primary Missile Weapon = wh3_cth_crossbow_bolt
Primary Ammo           = 22
Accuracy               = 10
Can Skirmish            = true
  1. 在原版missile_weapons_tables找到wh3_cth_crossbow_bolt,将完整行复制到自己 Pack 的同种表单。
  2. 把复制行的Key改成twcn_tutorial_cth_crossbow_weapon,或者使用自己的唯一名称。
  3. 把新单位的land_units_tables.Primary Missile Weapon改成这个新 Key。
  4. 根据定位设置Primary Ammo、Accuracy和Can Skirmish。

这里的 Key 和数值只属于弩手案例。若参考单位的主要远程武器字段为空,应继续检查它是否通过战场器械、乘员武器配置或额外武器连接开火,而不是强行填写一个Primary Missile Weapon。

原版玉勇弩手武器的 Key、默认投射物及弹药池选择

图中仍是原版模板,不是已经制作好的新单位。武器 Key 和默认投射物 Key 恰好同名,但属于两张不同的表,不要求永远同名。若只修改单位弹药容量而不改武器、弹丸行为,可以直接引用原版武器,不必复制整条链。

missile_weapons_tables.Default Projectile决定默认弹药;Use Secondary Ammo Pool只有确实使用land_units_tables.Secondary Ammo时才勾选,误勾可能让单位看似有主弹药却无法正常射击。

本例没有第二弹药池,直接保留Use Secondary Ammo Pool = false、Primary Ammo = 22、Accuracy = 10和Can Skirmish = true。想让弩手坚持原地射击、由玩家手动后撤时,可以将新单位的Can Skirmish设为false;想保留原版散兵行为则保持true。加弹药改Primary Ammo,加射程或弹丸杀伤改下节投射物,三种需求不用同时改全部字段。

建立投射物

从模板远程武器的Default Projectile继续找到原版projectiles_tables,把完整行复制到自己的表单。需要独立修改弹丸时,把复制行的Key改为twcn_tutorial_cth_crossbow_bolt,再将新武器的Default Projectile改成这个值。保持原版弹丸不变时,则保留原引用,不需要新建投射物。

原版弩箭使用普通射击类型,爆炸连接为空,弹丸数为一

图中Shot Type = small_arm_default、Explosion Type为空、Projectile Number = 1,是普通弩箭的起点,不是所有远程武器的固定配置。右侧还有很多列,需要横向滚动查看;不要只复制画面里可见的几个单元格。

重点列可以分为四组:

类别 常用列
射程与弹道 Effective Range、Minimum Range、Muzzle Velocity、Gravity、Max Elevation、Expiry Range
射击精度与散布 Marksmanship Bonus、Spread、Calibration Distance、Calibration Area
基础远程杀伤、破甲远程杀伤与目标 Damage、AP Damage、Bonus V Infantry、Bonus V Large、Can Damage Buildings、Can Damage Vehicle
射击节奏 Base Reload Time、Projectile Number、Burst Size、Burst Shot Delay、Shots Per Volley

Projectile Number是同一时刻发出的弹丸数,Burst Size是一次射击中的连续发射,Shots Per Volley还会受武器和动画设计影响。数值能填进去,不代表现有射击动画能自然配合。

玉勇弩箭的起始数据可直接对照:

字段 原版值 想调整什么时才改
category、shot_type arrow、small_arm_default 本例保持不变;arrow同时用于这类弩箭,不要自行编写crossbow类别。
effective_range、minimum_range 160、0 调整可选射程。
muzzle_velocity 45 改变弹速时还要核对弹道、动画和命中表现。
damage、ap_damage 18、6 分别调整单枚弹丸的基础及破甲远程杀伤。
base_reload_time 13 改基础装填时间,最终节奏还受装填技能和动作影响。
projectile_number、burst_size 1、1 本例保持单枚、单次;散射和连射应换用对应模板。

当前原版投射物实际使用arrow、artillery、axe、grenade、javelin、misc、musket、sling八种category值。这是投射物内部分类,不是单位分类;普通弩箭保留arrow,火枪应从musket模板开始,火炮则先核对器械使用的炮弹链。射击类型的完整选项与启用条件见远程武器详解。

切换第二种弹药

这里换用“收割者弩炮”的原版结构演示,不是在玉勇弩手身上自动启用第二弹药。它的武器 Key 为wh2_main_def_reaper_bolt_thrower_bolt,默认投射物也是这个 Key;连接表只额外连接wh2_main_def_reaper_bolt_thrower_bolt_spread。

  1. 确定自己的武器 Key,并让missile_weapons_tables.Default Projectile指向默认弹药。
  2. 在projectiles_tables准备第二弹药记录。沿用原版行为可直接引用已有 Key,需要改变参数才复制并改名。
  3. 在missile_weapons_to_projectiles_tables新建连接:Missile Weapon填自己的武器 Key,Projectile填第二弹药 Key。两列共同标识连接,不要重复添加同一对值,也不必再把默认弹药添加一次。
  4. 检查两条投射物的Shot Type。收割者弩炮默认使用artillery_default,散射使用artillery_canister;到projectile_shot_type_enum_tables检查对应类型的Requires Effect Enabling和Supersedes Shot Type,不要只换一个看起来像弹药名称的字符串。
  5. 分别检查两条投射物的Projectile Shot Type Display。收割者弩炮使用bolt_thrower_single_shot和bolt_thrower_multi_shot,它们连接的是projectile_shot_type_displays_tables,不是弹丸模型表projectile_displays_tables。
  6. 自定义切换按钮时,在显示表复制记录并改成独立 Key,配置Icon Name和UI Sound Event,再让投射物引用它。本地化使用projectile_shot_type_displays_onscreen_name_<显示Key>及projectile_shot_type_displays_tooltip_text_<显示Key>;名称、提示不是直接填进 DB 的中文列。原样沿用已有按钮时可以保留原版显示记录。

收割者弩炮的原版连接:同一武器额外连接散射投射物

两种弹药也不是只换图标:本例默认弹药一次生成1枚弹丸,散射弹药一次生成16枚,两者伤害和目标加成分别配置。修改时应一起检查Projectile Number、每枚弹丸伤害和散布,不能把单发弹的伤害原封不动乘到十几枚弹丸上。

“可以切换第二种弹药”与Use Secondary Ammo Pool不是一回事。前者增加可选投射物,后者选择该武器消耗哪一套单位弹药。不要为开启切换按钮而顺手勾选第二弹药池。

普通弓、弩、火枪没有切换弹药时,不需要这张连接表。

是否需要第二弹药不能只看单位“有两种攻击”。先搜索模板的远程武器 Key,确认missile_weapons_to_projectiles_tables确实存在额外连接,再复制对应结构。

爆炸、破片和穿透

  • 投射物会爆炸:在projectiles_tables.Explosion Type连接projectiles_explosions_tables。
  • 爆炸会产生破片:在爆炸记录的Shrapnel连接projectile_shrapnels_tables,破片本身再指向另一条projectiles_tables记录。
  • 需要穿透:使用Projectile Penetration及projectile_penetration_junctions_tables。
  • 需要目标血量缩放:连接projectiles_scaling_damages_tables。
  • 需要自定义弹丸外观:连接projectile_displays_tables,但显示资产本身仍需正确文件。

以下改用死啸者火箭发射器的分裂链说明:它适合演示“第一阶段爆炸产生新投射物”,不代表普通弩箭必须连接爆炸。只给弩箭添加普通命中爆炸时,应另找这种行为的原版模板,不必复制整条火箭链。

死啸者火箭发射器第一阶段爆炸的引爆方式、半径与破片连接

爆炸表中,Key供投射物的Explosion Type引用;引爆方式、爆炸类型、半径、持续时间、传播速度和伤害分别配置,Shrapnel不为空时再连接破片。本例的Key = wh3_dlc23_chd_deathshrieker_rocket_stage_1,Detonator Type = fuse、Detonation Radius = 5、Shrapnel = deathshrieker_rocket。引爆条件还涉及上游投射物数据,不是填了破片 Key 就一定在正确的位置分裂。

在 projectile_shrapnels_tables 中查看破片使用的投射物、数量和发射方式

破片表中,Key供爆炸记录引用,Projectile指向破片实际生成的另一条projectiles_tables记录,Amount、Launch Type和Sector Angle配置数量及发射方式。本例为8、hemisphere、160。图示的三个部分分别是破片 Key、第二阶段投射物、数量与散射配置。

第一阶段投射物 wh3_dlc23_chd_deathshrieker_rocket_stage_1
  → 同名的第一阶段爆炸
  → 破片 deathshrieker_rocket
  → 8 枚 wh3_dlc23_chd_deathshrieker_rocket_stage_2_shrapnel
  → 第二阶段爆炸 wh3_dlc23_chd_deathshrieker_rocket_stage_2

破片不是直接填写一组额外伤害,而是生成新的投射物。需要独立修改整套分裂武器时,把需要改变的投射物、爆炸、破片记录分别复制改名,并从下游到上游接回自己的 Key;不改的模型、音效和特效仍可引用原版。检查每一级的直接命中伤害、爆炸伤害和破片数量,不能把某一列当成整发武器的最终总伤害。

引爆器detonator_type在当前原版使用percussive和fuse,分别对应接触引爆与引信路线;本例空中分裂沿用fuse,还须保留上游引信条件。破片launch_type使用hemisphere或sector,是半球与扇区发射方式,sector_angle再配置相关角度。本例直接保留hemisphere、160和amount = 8;它们不是要求任何破片武器都填相同的数值。

穿透连接也可能由同一个分组对应多条目标类型记录组成,复制自定义分组时要保留它需要的整组连接,不能随便留一行。Scaling Damage的生命值条件是目标生命比例,不是直接填“还剩多少点血”。具体字段和更多对应截图见《远程武器详解》。

这些效果可以互相嵌套,错误也会成倍增加。第一次制作远程兵种时,先让普通投射物稳定命中并结算伤害,再逐项添加爆炸或破片。

游戏内检查

  1. 检查射程圈、弹药容量和面板远程威力。
  2. 分别测试近距离、最大射程和不同高度目标。
  3. 观察弹道、散布、弹速和装填动作是否匹配。
  4. 测试对步兵、大型单位、建筑和载具的伤害。
  5. 有爆炸时同时测试友军伤害、推力和特效。
  6. 有第二弹药时反复切换,确认两种弹药都能耗弹和造成伤害。

RPFM 诊断无法证明发射挂点、动画事件、弹丸模型和特效在战场中正确;这些必须实战观察。

图片查看
100%

滚轮或按钮缩放 · 拖动或滑动查看 · Esc 关闭