找回密码
 初始化身份识别芯片
查看: 2257|回复: 3

【基础教程】Ajimu特调:战术系统

[复制链接]

势力巨擘

今日Java气候:晴转行星杀手。

发表于 2023-7-28 23:13:34 | 显示全部楼层 |阅读模式
本帖最后由 Ajimu 于 2023-7-28 23:13 编辑

战术系统,包括舰船的F和部分舰船的右键。

F系统很好理解,即ship_data.csv中的system id一列。

右键系统,又称特殊系统,是shield type设置为PHASE后,在defense id一列填写的系统。

在原版的例子有先锋级的阻尼、所有的相位以及096新增的不败的右键罐式。这些系统和F没有区别,但是又存在一些细微的区别,我会在下文讲到。

但首先还是从添加一个系统开始。

如何添加一个战术系统

你需要准备以下内容:system文件,ship_systems.csv,#scripts(*.java),#ai(*.java)

其中带有#的内容并非是必须的。

System文件

system文件用于告诉游戏,系统的id是什么,是什么类型的系统,具体的运作(即上述script),具体的ai(即上述ai)。

我们打开一个原版的system文件ammofeed.system

  1. <div style="text-align: left;">
  2. <div>{
  3. <span style="white-space:pre">        </span>"id":"ammofeed",//和ship_system.csv中的id保持一致
  4. <span style="white-space:pre">        </span>"type":"STAT_MOD",//类型
  5. <span style="white-space:pre">        </span>"aiType":"WEAPON_BOOST",//ai类型,填写为custom可以提供一个aiScript来使用自定义的ai
  6. <span style="white-space:pre">        </span>
  7. <span style="white-space:pre">        </span>"statsScript":"data.shipsystems.scripts.AmmoFeedStats",//运行的文件
  8. <span style="white-space:pre">        </span>
  9. <span style="white-space:pre">        </span>"weaponGlowColor":[255,200,0,155],
  10. <span style="white-space:pre">        </span>"weaponTypes":[BALLISTIC],
  11. <span style="white-space:pre">        </span>
  12. <span style="white-space:pre">        </span>"useSound":"system_ammo_feeder",
  13. <span style="white-space:pre">        </span>"outOfUsesSound":"gun_out_of_ammo",
  14. }</div></div>
复制代码
系统类型有很多种,modding使用较多的是STAT_MOD,需要提供一个script来运行。

此外还有ENGINE_MOD,只有ENGINE_MOD可以激活平时不使用的专属系统引擎,这些引擎contrailSize一栏为128,只有在ENGINE_MOD启用时才会启动,例如极光-级的两个前侧小引擎。需要提供一个script来运行。

WEAPON,在启动时会从船上所有的SYSTEM槽位进行一次开火,武器为填写的武器。

DRONE_LAUNCHER,无人机系统。涉猎不深因此不能给出教学。

PHASE_CLOAK,相位系统。额外提供类似原版相位线圈的渲染,你也可以不使用。需要提供一个script来运行。


SHIP_SYSTEMS.CSV

用来填写系统其他参数的文件。需要使用专门的csv编辑器打开,另请注意编码格式。



SCRIPT
一份java代码,以实现系统的效果。建议以extends BaseShipSystemScript来实现你的系统。
  1. <div style="text-align: left;">public class BaseShipSystemScript implements ShipSystemStatsScriptAdvanced {</div><div style="text-align: left;">public void apply(MutableShipStatsAPI stats, String id, State state, float effectLevel) {</div><div style="text-align: left;">}//这里通常是系统主要的部分,每帧运作一次。</div><div style="text-align: left;">//state表示系统的状态。</div><div style="text-align: left;">//effectlevel是0-1的数,在IN阶段,effectlevel从0提高到1,在ACTIVE阶段保持为1,在OUT阶段从1降低至0,匀速。</div><div style="text-align: left;">//不包含时间,但是如果你一定要用,可以使用CombatEngineAPI中的方法获取上一帧的时长。</div><div style="text-align: left;">
  2. </div><div style="text-align: left;">public void unapply(MutableShipStatsAPI stats, String id) {</div><div style="text-align: left;">}</div><div style="text-align: left;">//这里是系统结束时需要做的操作,一般将船重置回初始状态。</div><div style="text-align: left;">//自动调用,但也可以在system文件里禁止自动调用。</div><div style="text-align: left;">//注意,unapply通常会在舰船出生的一瞬间被调用一次,因此参数应当在unapply中先初始化,以避免出现各种问题。</div><div style="text-align: left;">
  3. </div><div style="text-align: left;">//其他部分请自行翻译,通常来说非主要功能</div><div style="text-align: left;">}</div>
复制代码


AI
你可以使用原版AI,但是可能会因为系统不同而出现无法初始化或是不能正确工作的问题。
如果要自行设计AI,可以参考原版shipsystems文件夹中的ai文件夹。里面有一个被留下当范例的ai。
对于单F的舰船来说没有太大问题,对于可能出现的双系统船,需要注意原版的绝大多数系统ai不支持放在右键。仅有原版可以放在右键的ai才能放在右键。如果要设计双系统舰船,请自行设计ai。
你可以通过AIFlags来传递需要战术系统使用的坐标或是目标。







战列舰长

发表于 2023-7-28 23:31:47 | 显示全部楼层
说起来霸主新出的那个板砖就是双战术系统,一个是F测距开火,另一个热诱弹是什么按键?

点评

板砖不是教会的嘛,和霸主啥关系  详情 回复 发表于 2023-7-29 10:09
右键,以及那个是罐式高射炮,和蝎尾狮同款  详情 回复 发表于 2023-7-29 09:58

势力巨擘

今日Java气候:晴转行星杀手。

 楼主| 发表于 2023-7-29 09:58:03 | 显示全部楼层
社爆传说 发表于 2023-7-28 23:31
说起来霸主新出的那个板砖就是双战术系统,一个是F测距开火,另一个热诱弹是什么按键? ...

右键,以及那个是罐式高射炮,和蝎尾狮同款

英仙统领

达尔德蜂群意识体

通讯记者

发表于 2023-7-29 10:09:43 | 显示全部楼层
社爆传说 发表于 2023-7-28 23:31
说起来霸主新出的那个板砖就是双战术系统,一个是F测距开火,另一个热诱弹是什么按键? ...

板砖不是教会的嘛,和霸主啥关系

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2024-12-22 12:00

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio

快速回复 返回顶部 返回列表