紅警2魔改小教程(3)——移動激光墻

hi,大家好,開場白被我用激光煮熟了。這里是烈蔥,今天將要帶來的是一篇魔改小教程,可能會略有難度,不懂的話可以來問我哦,主題是移動激光墻的效果實現(實際效果參考BV1LA411h7ru)。話不多說,我們開始吧!

所需軟件:XCC Mixer1.47(或1.48,比較推薦這兩個版本),NotePad++(用于編寫規(guī)則文件,沒有的話記事本也可以)。?
所需文件:規(guī)則文件,原版是rules.ini,尤里的復仇是rulesmd.ini,游戲完整文件一套。
實現此功能需要使用Ares拓展平臺(下載到的Ares壓縮包解壓到游戲文件夾內即可)。

首先,大致講解一下實現原理:

激光墻只不過是一種視覺效果,也就是所謂的障眼法,背后實際用的邏輯其實是軌道炮粒子系統。
給武器寫上軌道炮粒子系統,就可以設定穿透傷害(就是對發(fā)射軌跡上的目標造成的傷害),再結合激光武器邏輯,就可以實現類似激光墻的殺傷效果。

為了防止AI也使用這樣的單位,我們最好新增的單位來實現效果。由于兩個單位之間形成的激光墻效果比較容易理解,所以本文以兩輛車形成一道激光墻為例講解。
搜索載具注冊表注冊一個新單位,名字隨意,不與現有的重復且自己能記住就行。

此外還需要在步兵注冊表[InfantryTypes]下注冊一個新的步兵
然后找一輛能建造的載具,復制它的代碼并修改復制后的片段頭注冊名

比如我復制了光棱坦克的代碼,原注冊名是[SREF],我將其修改成了我在載具注冊表內新增的[LAWL01],為了不影響單位本身的攻擊,我這里使用載具內部的乘客來產生軌道炮粒子和激光效果。代碼示例:(需要Ares才能實現)
Promote.IncludePassengers=yes讓載具內的乘客始終保持與載具自身相同的等級
Survivor.RookiePassengerChance=0%新兵載具被摧毀乘客存活概率0%
Survivor.VeteranPassengerChance=0%老兵載具被摧毀乘客存活概率0%
Survivor.ElitePassengerChance=0%精英載具被摧毀乘客存活概率0%
NoManualUnload=yes禁止手動放出乘客
NoManualEnter=yes禁止手動載入乘客
Passengers=1可裝載一名乘客
InitialPayload.Types=LaSh01初始裝載車乘客的注冊名
InitialPayload.Nums=1初始裝載乘客的數量
OpenTopped=yes載具內的乘客可以直接向外開火攻擊
為了防止新載具跟其它單位之間形成激光墻效果,我們需要讓乘客只能攻擊母載具,這時候就需要要用到自定義護甲。我們任意搜索全局代碼中的一處空位,比如[Warheads]彈頭注冊表上面,直接寫上[ArmorTypes](同樣需要Ares)

然后依照“新護甲=默認等同的已存在護甲”這樣的格式來寫,當然右側也可以直接寫彈頭比例,0%的話可以做出無敵的效果,默認沒有任何彈頭能對它造成傷害,且無法瞄準它,包括AI的單位?。ㄕ堊⒁庾o甲名字要對上,如果對不上的話游戲就會當做無甲none處理)。最后不要忘了給你的新單位也裝備上這種新的護甲!

那么現在母載具的部分就已經完成,現在則是重頭戲,乘客:
為了讓乘客會主動攻擊母載具(我方的),就需要添加一句AttackFriendlies=yes,讓它會主動攻擊自己的單位,再添加一句StupidHunt=yes(受到命令攻擊不能直接攻擊的目標時不會做出任何響應)。
由于乘客會始終待在載具內,所以血量和模型完全無所謂了,重點則需要關注武器部分:
武器名字與現有的不重復且自己能記住就行,我們搜索光棱坦克的激光武器[Comet]并將其稍作修改:(名字不一定要和我的一樣)

AmbientDamage就是所謂的穿透傷害,它決定了對路徑上的敵人造成的傷害。
Projectile是拋射體,這里可以直接寫InvisibleHigh,那么Damage就可以寫大一些。
AttachedParticleSystem就是要使用的粒子系統,IsDetachedRailgun是Ares3.0版本(暫時還沒有正式版,只有測試版)新增的功能,可以無視上一次攻擊產生的粒子造成的無法發(fā)射的 影響。
OmniFire即為垂直發(fā)射,或全向開火,不用轉身就能向任意方向攻擊。
Range是乘客的武器攻擊射程,也決定了激光墻最多可以連接多遠

我們需要讓乘客只能攻擊母載具,所以需要使用新的彈頭,彈頭在[Warheads]注冊表下面注冊。

如上,不可以直接簡單的把其他護甲的比例全部寫成0%,如果那樣的話就會導致這個激光墻無法對其他任何目標造成傷害,也就失去了意義,所以再次引用Ares的語句:

Versus.none.ForceFire=no
Versus.none.Retaliate=no
Versus.none.PassiveAcquire=no
上面三句就可以讓使用這個彈頭的單位既不能主動攻擊none護甲的單位,被none護甲的單位攻擊也不能反擊,甚至強制命令其攻擊none護甲的單位也不能攻擊,但是none護甲的單位可以被其范圍攻擊傷害到。
我們還需要讓這個乘客能主動攻擊母載具,“Versus.新護甲=3%”可以讓這個乘客能直接攻擊新護甲的單位(護甲名字一定要寫英文和數字!?。。?!千萬不要寫中文!?。。?。
上述工作完成后,我們需要給這個彈頭設定一個不太小的殺傷半徑CellSpread,以確保能殺傷到經過的單位。此外,我們還需要防止友軍(或己方)單位被擊殺,具體代碼詳見下圖:

AffectsEnemies=
AffectsOwner=

然后就是比較難的軌道炮粒子系統部分:
這個也是需要注冊的!粒子系統的注冊表是[ParticleSystems],產生的粒子的注冊表是[Particles]。


這些參數具體可以參考2019版教程包中的粒子系統教程,這里作用不是太大,只是為了讓穿透傷害能夠正常生效,不想多做了解的可以直接照抄。

那么,如果上述工作都已經完成了,你就可以保存ini文件,打開游戲體驗一番啦~
很多參數都是可以改的哦,但是如果車輛較多就可能出現連接混亂的效果了,這也算是一個瑕疵吧。

還有什么別的想看的也可以直接在評論區(qū)提出來哦
這里是烈蔥,喜歡的話就支持一下我吧~