
在之前的专栏中,我们已经初步探讨了 【属性继承】 的基础用法。而本次,经过一段时间的深入学习与实战验证,我将为大家带来 稍显硬核的进阶技巧,希望大家能够学到一些东西,并且养成这样的习惯。
前排特别鸣谢: 感谢 @九千天华 与 @三个冲 两位技术大佬的悉心指导与经验分享,为本篇内容提供了关键思路!
先把“拆分读取规则一图流”放在这

拆分读取规则一图流 by九千天华与双杀步枪 ,出处:网页链接
首先基于“拆分读取规则一图流”我们得知[#Include]下拆分的第一个子ini文件会被后续拆分的子ini优先读取,所以我们可以利用这个特性创建一个“核心继承模块ini文件”,以便后续所有子文件都可以随意继承其内模块。
Rulesmd.ini内
[#include]
0=InheritanceCore.ini ; 核心继承模块
+=List.ini ; 注册列表模块
+=AARules.ini ; 主体规则文件
;;名字自己起,不必和我一样,自己要能看得懂。 当我们注册完成后进入核心继承模块"InheritanceCore.ini"去进行定义,以载具为例
InheritanceCore.ini(核心继承模块)内
[GeneralVehicleType] ; 最基础的坦克模块
[AlliedVehicleType]:[GeneralVehicleType] ; 盟军基础坦克模块
[SovietVehicleType]:[GeneralVehicleType] ; 苏军基础坦克模块
[YuriVehicleType]:[GeneralVehicleType] ; 尤里基础坦克模块 接下来我们定义一个白板犀牛坦克作为最基础的坦克模块
仅保留最基础的关键词条
[GeneralVehicleType] ; 最基础的坦克模块
Primary=120mm ; 主武器
Category=AFV ; 单位类型——战车
Turret=yes ; 单位有无炮塔
OpportunityFire=yes ; 移动时能否开火
Armor=heavy ; 护甲类型——重甲
Strength=400 ; 生命值
TechLevel=2 ; 科技等级
Sight=8 ; 视野范围
Speed=6 ; 移动速度
Cost=900 ; 售价
Soylent=900 ; 回收价格
ROT=5 ; 转向速率
IsSelectableCombatant=yes ; 能否被N键选中
Size=3 ; 载具内占用体积
Crusher=yes ; 是否可以碾压步兵
TooBigToFitUnderBridge=true ; 是否不能在桥下停留
IsTilter=yes ; 斜坡上是否会倾斜
Locomotor={4A582741-9839-11d1-B709-00A024DDAFD1}
MovementZone=Destroyer ; 寻路方式-陆地,并试图摧毁障碍物和碾压沙袋
ThreatPosed=40 ; 威胁值 然后我们给不同阵营加上阵营限制,并赋予专属工厂【该词条仅为演示方便】
增加所属国Owner,并设定独立的生产工厂。
[AlliedVehicleType]:[GeneralVehicleType] ;盟军基础坦克
Owner=British,French,Germans,Americans,Alliance ; 所属国——盟军
BuiltAt=GAWEAP ; 只能从这里生产【Ares】狗屋
[SovietVehicleType]:[GeneralVehicleType] ;苏军基础坦克
Owner=Russians,Confederation,Africans,Arabs ;所属国——苏军
BuiltAt=NAWEAP ; 只能从这里生产【Ares】狗屋
[YuriCtVehicleType]:[GeneralVehicleType] ;尤里基础坦克
Owner=YuriCountry ; 所属国——尤里
BuiltAt=YAWEAP ; 只能从这里生产【Ares】狗屋
为了方便演示,就以三阵营基础坦克为例
AARules.ini内 ; 拆分的规则文件
[MTNK]:[AlliedVehicleType] ; 灰熊坦克
[HTNK]:[SovietVehicleType] ; 犀牛坦克
[LTNK]:[YuriCtVehicleType] ; 狂风坦克
; 这样继承之后,Rulesmd.ini内同词条的基础属性会被[GeneralVehicleType]内词条覆盖
; 更加趋向于模块化管理的特性。 这样每个国家的特色坦克都只会从自己所属的重工产出了

InheritanceCore.ini内 ; 核心继承模块
[GeneralVehicleType] ; 最基础的坦克模块
…… ; 其它词条
HasRadialIndicator=yes ; 是否拥有攻击范围圆弧【ARES】支持所有类型
ProtectedDriver=no ; 驾驶员是否被保护【ARES】
CanBeDriven=yes ; 空载具能否被占领【ARES】
[AlliedVehicleType]:[GeneralVehicleType] ; 盟军基础坦克
Speed=20 ; 将速度改为20
[SovietVehicleType]:[GeneralVehicleType] ; 苏军基础坦克
Explodes=yes ; 死亡后爆炸
DeathWeapon=NukePayload ; 死亡武器——核弹,需连用Explodes=yes
[YuriCtVehicleType]:[GeneralVehicleType] ; 尤里基础坦克
TurretSpins=yes ; 是否旋转炮台 这样所有继承词条都由上至下继承了下来

全局的范围显示,时空加速的灰熊,内置核弹的犀牛,自娱自乐的狂风
以上只是示例,你可以给每个阵营单独设定不同军衔之类的属性。
当基础属性被继承下来之后,可以在[新单位块]内增删修改少量词条即可完成新单位的创建。
InheritanceCore.ini内 ; 核心继承模块
[GunType_Machine] ; 武器开火动画-机枪类
Anim=MGUN-N,MGUN-NE,MGUN-E,MGUN-SE,MGUN-S,MGUN-SW,MGUN-W,MGUN-NW ; 8向开火动画
OccupantAnim=UCFLASH ; 建筑内使用该武器开火的动画
AARules.ini内 ; 拆分的规则文件
[M60]:[GunType_Machine] ; 大兵主武器
[Para]:[GunType_Machine] ; 大兵副武器
[MP5]:[GunType_Machine] ; 海豹主武器 这样定义以后方便寻找合适的开火动画,直接继承[GunType_Machine]模块就可以实现

大兵蹲下的火舌是SHP中自带的
而且这些模块也相应自由,比如一键让所有该类武器弹头命中位置发光
[GunType_Machine] ; 武器开火动画-机枪类
Bright=yes ; 弹头命中点发光(覆盖弹头下同名设定值) 这样一个基础模块就应运而生了

伤害不高,瞎眼性极强。
下面这个是16向动画,需要写16个动画。如果需要复用的话,最好还是建立一个相对完整的[喷火器继承块]为好。(当然,Ares最多支持32向的开火动画)

火焰动画为我本人制作,帅气的步兵来自艾木魁大佬
接下来就是常用模块,比如[载员逻辑块],具体教程请看链接→网页链接
InheritanceCore.ini内 ; 核心继承模块
[OpenToppedModule] ; 载员逻辑模块
PipScale=Passengers ; 单位格子种类-乘客
Passengers=5 ; 单位运兵数量,可以随便设置,
OpenTopped=yes ; 载员可对外开火
SizeLimit=1 ; 限制载员最大体积
; ↑↑↑↑↑↑↑↑基础词条↑↑↑↑↑↑↑↑
; ↓↓↓↓↓↓↓↓关键词条↓↓↓↓↓↓↓↓
InitialPayload.Types=E1,E2 ; 初始装载车乘客的注册名【Ares】
InitialPayload.Nums=1,1 ; 初始装载车乘客的数量【Ares】
NoManualUnload=no ; 禁止手动卸载乘客【Ares】
NoManualEnter=no ; 禁止手动载入乘客【Ares】
; ↑↑↑↑↑↑↑↑关键词条↑↑↑↑↑↑↑↑
; 以下是一些不太重要的词条
EnterTransportSound=EnterTransport ; 装载的声音
LeaveTransportSound=ExitTransport ; 卸载的声音
Explodes=no ; 死亡后是否爆炸,若为yes则杀死所有乘客!
Survivor.RookiePassengerChance=75% ; 载员存活率【Ares】
Survivor.VeteranPassengerChance=85% ; 载员存活率【Ares】
Survivor.ElitePassengerChance=95% ; 载员存活率【Ares】
Promote.IncludePassengers=no ; 乘客始终保持与载具自身相同的等级【Ares】
Experience.PromotePassengers=yes ; 载具满级后载员能否获得经验【Ares】
Experience.FromPassengers=yes ; 乘客开火载具能否得到经验【Ares】
Experience.PassengerModifier=1.0 ; 乘客击杀,载具获得经验百分比,默认100%【Ares】 网页链接需要引用时,只需要继承后再修改少量语句即可,同理的还有其它[基础兵种模块],[自定义导弹模块],[基础无源超级武器模块](红色警戒INI基础教程——拔地而起的建筑群)等,当你把这些基础模块定义完善了以后,一个最初的MOD框架也基本完善了,未来如果哪个框架出了问题,一目了然,修改也更加便捷。
补充一点。一个[单位块]可继承多个块,最初的专栏也有示范。
那么本次教程就到此为止啦,有什么建议可以给我留言,我会进行详细补充,谢谢大家。
顺便推广一下我们的INI萌新交流群:796097515

期待您的点赞