武器系统全解¶
1.什么是武器 对于军事帝来说,什么猛禽,大黄蜂,T90之类东西都叫作武器,所以军事帝总是希望在mod里见到这些“武器”,甚至自己学习mod技术的也有。 可惜,mod教程说的总是那么不明不白,因为mod教程用的是通行于moder之中的术语体系,不明白这些体系的军事帝们看来mod真是件莫名其妙的事情。
下面讲一些必须知道的术语,也是入门的底子。
单位。一切飞机坦克建筑士兵都被称为『单位』,有时候也叫物体。坦克,飞机,都不是武器!作为moder,要清楚认识到自己操纵的是游戏,而不是过一把军事帝YY的瘾。 武器:广义武器指一切能够造成随便什么东西生命值减少的手段,狭义的武器单独指一切单位的攻击手段,即发动攻击指令后发射的那个东西。武器系统由三大组件构成。
弹头:现实中的意思大概是什么手枪一颗子弹,最后打中人体的是弹头。对于mod术语来说,弹头是武器代码的三大组件中的一个。 抛射体:应该和军事无关,这是一个mod术语,三大组件的一个。
武器:上文的攻击手段。单位的攻击模式直接关联此部分。也叫武器代码,武器名,武器主体,总之各有各的说法。 如果搞不清楚,就是Primary,Secondary,ElitePrimary,EliteSecondary,DeathWeapon,Weapon12345678里填写的注册名。
2.三大组件
简单说来,武器系统的组成是这样
/抛射体
武器名
\弹头
三个组件设定范围如下 在武器里设定 攻击力,射程,开火频率,开火声音, 并指定关联的抛射体和弹头。各种代码均见“武器代码中文注释” 在抛射体里设定 主要是有形抛射体的图形,攻击范围,可选的溅射和空爆武器 各种代码均见“武器代码中文注释” 在弹头里设定 主要是装有此弹头的武器对于不同装甲类型的伤害值比例,爆炸动画,步兵死亡动画,影响范围,各种代码均见“武器代码中文注释”
英文注释包含基础知识,必看。因为不看注释导致的一切问题后果自负,包括剁手,被大湿群嘲等等
注:一切动画都在ART里,所有对于动画的引用都必须填写ART里的注册名,动画要在rules里的[Animations]注册。 不知道什么是什么的话,直接复制你看上的某单位的武器的弹头的动画代码AnimList。更加详细的做法请看视频
原版注释提供的语句并非每一句都适合于RA2引擎,有些是TS引擎残留,已经失效了。建议查代码词典弄清楚具体的效果。
反对军事帝YY的原因就是你完全可以写一个极大的伤害,秒杀一切,射程全图,开火频率极高,都是自由操控的。 这样的东西只是一个很厉害的名字,和现实里那些“武器”根本屁大的关系都没有。沉迷于这种弱智修改的人,不配继续搞下去了。
在每一部分的代码里又可以分成两类,图像控制代码和属性代码,很多绚丽的武器只是使用了华丽的爆炸动画而已,和杀伤力无关。 所以,为了写出绚丽的武器,只要学会运用图形控制代码就可以了。 注意,图形控制代码完全不影响武器的威力,可以一拳打出一个核弹,也可以默不作声杀人于无形之中。真正起效的代码都是属性代码
查看武器的途径是首先根据某个单位的注册名找到单位代码,然后由primary=之类找到武器名,再由武器名中的Projectile=和Warhead=找到抛射体和弹头。 如此操作一次,弄清楚这三个组件的查找方式即可。单位-武器-抛射体和弹头
3.武器设计 在你完全弄清楚了武器系统的结构之后,你就可以写出自己的武器了。最最简单的办法是复制一段原来的武器代码的所有部分,然后更改注册名,这已经是一个全新的武器了。 把某个单位的武器关联改成它,就是换好了武器。当然,因为是完全复制,实际运用起来并无任何区别。 然后你就可以试试修改射程,伤害值,这样进入游戏时候已经有所不同了。 然后你可以试试修改抛射体,也就是找一个自己喜欢的单位,把它的武器的抛射体名字抄下来,换到刚才写的武器抛射体里。 同样,你也可以复制一个抛射体,改名,做出一个新的。弹头同理。不过弹头是要注册的。
参考以上内容,自己弄出一个带有全新抛射体和弹头的武器就算合格。
这已经完成了武器系统的扫盲,下面是进阶内容。
1.四大抛射体类型
带有Inviso=yes的抛射体为无形抛射体。特性是瞬间击中,典型如原版中所有机枪类武器,不会miss也不存在飞行时间 带有Arcing=yes的抛射体为弧线抛射体。特性是速度不可控制,攻击移动目标时可能miss。典型如原版所有炮类武器 带有ROT=(数字大小)的抛射体为导弹类武器,特性是可以追踪。 带有Vertical=yes的抛射体为垂直抛射体,就是飞艇的炸弹。
如果你实在搞不清这些概念,和别人对话时尽量使用原代码,不会导致误解。
四大类型互相冲突,一个抛射体只能有一种性质。性质和图像毫无关系,图形是炮弹的抛射体也可以追踪,只要把Arcing换成ROT。 没有看得见图像的炮弹也不会瞬间击中,只要它的抛射体还是Arcing。 Inviso=yes和Image=INVISO不是一回事,前者是抛射体性质,后者仅仅是个图形控制代码。
2.非弹头特效 鸡光,电流,辐射,电波并非是抛射体性质,它们是武器代码的一部分,表示此武器除了使用抛射体部分中写的图形之外还使用这些系统绘制的武器特效。 通常这些武器都是瞬间抛射体。当然,一个带有短暂鸡光效果的导弹也能做出什么“鸡光制导”的效果来。
在Art中可以设定抛射体尾烟。关键词Trailer。可以是线性尾烟,如普通的导弹的白烟,也可以是连续动画尾烟,如V3的动画烟雾。 开火动画不仅是开火动画,还有些别的用途。
3.原版特殊武器
溅射,空爆武器 典型的溅射武器为光棱,特点是在主武器击中敌人后产生几个预先设定好的子武器随机攻击周围物体。关键代码ShrapnelWeapon=和ShrapnelCount=。 溅射武器必须击中步兵(Infantry)或载具(Vehicle)和战机(Aircraft)类或树木和路灯(Terrain)才能产生子武器。 典型的空爆武器原版中并没有直接体现。http://tieba.baidu.com/f?kz=658072524的2L有一个示范。关键代码Airburst=yes和AirburstWeapon=。 Cluster=在原版引擎空爆中无效,锁定为⑨。两类都填武器名。 Ares新增一类分裂武器Splits,实际上是特殊的空爆,详见Ares说明书
注意,空爆和溅射的子武器必须作为某单位的某一武器。 鉴于很多人根本不理解,那么做一个不适当的比喻:假设红警中每个武器都必须由一个东西发出,否则就会弹框。但是溅射武器由什么发出呢? 你可以想象为:在主武器命中目标时目标地点产生了那个挂着子武器的单位,并开火,开火完毕后消失。这只是用来帮助你了解载体的作用,和实际的运行机理完全无关 Ares提供了可新增的WeaponTypes注册列表来解决问题
动画伤害:ART里的动画也是可以填写Damage=的,但是动画伤害在原版引擎开放度极低。动画弹头被锁定为Fire2,如果动画名字是INVISO的话就锁定为Super。 在Npext和ARES里Warhead在动画里也有效了。动画伤害的作用方式是每帧都产生damage中写的伤害,所有最好用一个一帧空动画产生伤害,用Next=来播放真正需要的动画。 比如在某个武器的开火动画上写上很大的伤害,这个单位就会在开火的同时杀死自己。 这样可以做一个“自杀”武器。或者是开火后用一个空白动画Loop若干帧后Next出一个有效杀伤动画自杀,是延时自杀。
子机发射器:这些武器并非真正的造成伤害的武器,而是发射一种飞机,由这种飞机来攻击。 子机有两种模式,导弹型和战机型。导弹型子机和一般武器型导弹的区别就是子机导弹是可以拦截的。 子机导弹的伤害数据和飞行数据在rules的general部分里,在原版引擎下你绝不可能添加任何新的子机导弹,在ares的基础上才可以。 子机导弹内容见文章末尾,普通的战机发射器参考原版航母。 航母在原版不可以是飞行的,回收必须落地。ares可使用飞行航母。 子机发射器武器发射的子机和武器本身无关,子机的类别在发射器使用者里指定。学不会的小白就老老实实看看航母的代码
辐射:辐射兵展开。辐射代码是RadLevel=,原版中不得小于100。辐射是独立于三大组件的,只是必须写在武器主体部分。 辐射的爆发面积由带有辐射代码的武器主体的弹头面积决定。 另外,子武器的辐射代码无效。NP的辐射自由度高得多,ARES暂不支持自定义辐射
混乱,心控武器:神经车和尤里的弹头决定。混乱弹头的武器伤害为混乱帧数,控制弹头的武器伤害为控制数目,仅对YR引擎有效。
盖特系统: 笨蛋太多,英语白太多,于是还是写上盖特系统的真实控制原理吧。 每个使用盖特系统的单位都有一个计数器,当单位保持在攻击状态时,计数器每帧增加RateUp的数值,反之,每帧减少RateDown。 如果RateDown的数值为0,则只要停止攻击立刻回到初始档位。 单位在计数器到达第一档之前使用12武器,第二档之前用34武器,第三档之前56武器,第四档之前……同理。 只要越过倒数第二档的计数器值,就会开始最终武器。最高档位的数值只不过和ratedown一起决定了如果进入最后阶段,停止攻击后多久掉档。 如果是NPEXT或Ares的循环盖特,则决定下一循环开始之前保持最高档多久。
貌似盖特系统最高支持12或14武器。 盖特的1357号武器视为主武器,2468号视为副武器,你可以把盖特当成一个多组主武器副武器的单位。
粒子武器:最最熟悉的就是共灰的喷火碉堡。那就是一个最最典型的纯火焰粒子武器。其他类型如病狙的死亡动画刷粒子,还有维修车的维修火花,都是带有粒子的武器。 能作为伤害的是轨道炮(Railgun),火焰(Fire)和毒气(Gas)。注意这三种名字是一类表现模式的描述,而不是对其动画的说明。 像病狙的毒气一样乱飘的火苗是gas而不是fire。粒子系统鉴定的唯一依据是运行模式。 粒子系统说明http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=12917 粒子系统的调用参考原有的武器:FireballLauncher,LtRail,而病狙刷粒子的关键在于VIRUSD的ART设定中。 动画刷粒子的语句适合一切动画。开火动画刷粒子的话开火动画最多一帧。这种情况就是1帧空动画刷粒子然后Next的事情了。粒子都不存在所有者,被粒子杀死的单位不计经验。
声波武器:海豚,特色是穿透,经过的体积越大伤害越大。注意,RA2引擎中不存在物理体积,看起来再大的坦克占地都只有一格。有体积的只有建筑。
运动模式波:磁电,强制将对方的运动模式修改为弹头里写的那一种,无视speed。 见http://tieba.baidu.com/f?kz=153865085。jumpjet和超时空有效,因为这两种模式刚好无视speed。
飞碟吸:只有jumpjet载具可以有效使用飞碟吸
伊文炸弹:只有步兵类单位可以有效使用伊文炸弹
高阶特殊武器
碎片武器:除了上述几种非常规武器之外还有更加非常规武器,因为碎片本身根本就不是拿来做武器的,这是一种“超常运用”。 详细内容在DIY。http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=878和http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=14036
多重弹头武器(适用于ARES环境) 在ARES中,空爆抛射体的数量不再恒定为⑨了,而是可以定义空爆覆盖范围,所以可以空爆出一种垂直抛射体的武器,让其原地爆炸。 这就是爆出第二种弹头了。这样你可以做出带有混乱效果又有常规伤害的武器,之类。 更巧妙的是,抛射体可以通过空爆套上第二武器,第二武器又可以刷出第三武器,……就是无限弹头。
多层溅射武器 常规的溅射武器的子武器再设定溅射就是多层溅射。SuperComet就是个两层溅射。无聊的话,做个10层溅射都没问题。 溅射和空爆的武器如果写的还是自己,自体溅射的话,会产生可怕的后果,不怕死机的可以自己试试。
刷兵武器(仅限于非原版引擎,需要熟练的Ares知识,小白慎用) 即基因突变的原理,动画生成单位,可在全局新增 用多重弹头武器,第一层刷出一个兵,后续层把这个兵杀死突变为自己的兵,因为过程是瞬间完成的,看起来刷的其实是自己的兵。 Ares可直接刷出自己的兵。 注意,如果主武器是自杀武器,开火后单位立刻死亡,多层武器将不会展开。这种情况只能用动画延时自杀。此外,刷出来的兵可以作为溅射物。
补充材料.障眼法 是什么让我们区分一个单位?从一个玩家的角度来看,不过是单位本身素材,语音,运动方式,载具运动声音,开火声音,炮弹,弹头动画。 所谓障眼法,就是对这些东西的修改,从而达成完全不同的效果。典型的例子是狂风和灰熊,两者本质上没有任何区别,只是车的素材和开火report不同而已。 记住几条关键代码,就是report,animlist和image。替换了这些东西,就能做出看似完全不同的单位。 所以,如果我要油井可以自己建造,单纯启用了可能很多不足;想让曾哥进入游戏却苦于他的平民属性,如果没有耐心逐句解析代码,就是障眼法的所用之处。 复制一个电厂之类,给他加上油井关键代码,足够了。要做一个新单位曾哥,直接复制一个动员兵,替换音效武器生命护甲,结束了。
我们最要摆脱的一个误区,就是观念中把单位的声音图形等外在效果和单位本身绑定,认为有犀牛坦克开火声音的武器一定是犀牛坦克炮,核弹的动画一定代表着极高杀伤力,等等。 他们只是可以调用的动画而已!明白这一点,就是障眼法的第一步。然后,想要创建具有某个属性的单位,只要复制一个差不多那个属性的单位,替换障眼法的代码,行了。 这样,就有了创造无数单位的钥匙。不需要真的做到,只要游戏里面看起来是那个样子,ok
单位的障眼法就在于主体素材的调用,即车身,炮塔,语音。对于玩家来说,只有这些是外在的。内在的属性比如生命值,护甲是无法看出的,毕竟红警不是星际。 也就是说,这些东西的变化就足以令玩家认为障眼法做出的新单位是完全不同的了。 武器的障眼法在于武器主体的炮口动画、开火音效和可能使用的绘图特效(见武器扫盲教程),射弹的弹体图形,弹头的爆炸动画。 通常来说,使用不同的动画不会对武器本身属性有任何影响。moder就算再没有创意,做东西全是障眼法,只要素材不一样,效果不一样,就能给人新意的感觉。 所以即使是只会通过复制来新增单位的菜鸟,也可以用这种方法开创自己的天地。
补充材料.护甲 RA2体系的护甲并非星际一样精确地可以减少若干点伤害,而是在武器伤害值的处理上做手脚。某弹头的武器击中某护甲的单位后,单位受到的伤害是武器伤害X弹头里对于此护甲的比例。 内定护甲共11种,Ares可以添加新的护甲类型。 护甲类型没有任何使用限制,只是通常某种类型的护甲用在建筑,某种用于步兵,某种用于建筑罢了。 完全可以给一个步兵装上载具甲,使他完全不怕海豹的枪,却很容易被坦杀消灭、
补充材料. 子机导弹(V3、无畏、雷鸣)类的控制请参阅全局代码: V3RocketPauseFrames=0 倾斜开始前滞留0桢 V3RocketTiltFrames=60 倾斜到发射位置(角度)需要60帧 V3RocketPitchInitial=0.21 导弹初始倾斜为0.2190度 V3RocketPitchFinal=0.5 导弹点火倾斜为0.590度 V3RocketTurnRate=0.05 导弹拐弯速率 V3RocketRaiseRate=1 巡航导弹每次升高多少 V3RocketAcceleration=0.4 发射加速度0.4 V3RocketAltitude=768 巡航导弹达到这么高后水平移动 V3RocketDamage=200 伤害200 V3RocketEliteDamage=400 精英伤害400 V3RocketBodyLength=256 导弹长256Leptons V3RocketLazyCurve=yes 是否是抛物线弹道,也就是不使用巡航导弹使用的RaiseRate和Altitude两个参数。并且如果PitchFinal设定成了垂直于地面的90°,那么即便是初中生也知道这会导致导弹再也飞不回来
V3Warhead=V3WH V3火箭的弹头 V3EliteWarhead=V3EWH 精英V3火箭的弹头
原版无法新增子机导弹,ares可新增 方法是将Ares提供的语句添加在你新增子机导弹本体上,不是发射者上 更不是给Ares代码随便改个名字然后写在全局里,我见过无数菜逼这么乱搞了,引以为戒。
子机导弹飞行方式解析http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=9795 子机导弹如何发射常规抛体武器http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=11757
特殊应用: 当PitchFinal为0,且导弹发射时的高度低于Altitude,导弹会平行于发射者和目标的连线持续飞行而不会命中。 当Altitude和BodyLength为0,TurnRate为0.01,PitchFinal不低于0.13时,导弹会飞过目标并持续飞行而不命中。