Mod语法

来自RustedWarfare Wiki
AbAb留言 | 贡献2022年4月14日 (四) 23:41的版本 →‎mod-info.txt文件

ini文件

ini文件一般是以ini为后缀名的用于决定一个自定义单位特性的纯文本格式文件。特别的,作为模板代码的ini文件后缀名可以是任意的。

组成

ini文件由段落和注释组成,而段落又由属性组成。多样化的段落和属性组合使得ini文件能够描述多种多样的单位,甚至于使得单位彻底改变原版游戏玩法。

段落

段落以以形如[section]的文本开头,至另一段落开始或文件末尾结束。段落将功能不同的属性分成若干部分。

属性

属性是形如key:value的单行文本(或key:"""多行文本"""的多行文本),用于实现单位的各项功能。

基本语法

打开[游戏目录]\assets\units,选择一个文件夹进入,你将看到一个以ini作为扩展名的文件以及其它文件。 打开这个ini文件后,一个描述单位信息的基本结构就会出现在你的记事本(或者其它文本编辑软件)里。 一个mod单位的ini文件基本可以这样表示:

[部分1]
[属性1]:[值1]

[部分2]
[属性2]:[值2]

举例,单位侦察者的ini文件是scout.ini,打开后,第一个看到的“部分”是[core],它描述单位的核心信息,例如血量、价格名称等等。 [core]以下直到[graphics](也即另一个“部分”)前的内容都属于[core]。 例如:

 [core]
 name: scout

在这段内容中,“name”属性用于指定单位的名称,当未指定单位显示什么名称时,游戏就以它的值(即“scout”)显示单位名称(如果游戏语言是英文)。

事实上,在Rusted Warfare中,也存在不以ini为后缀名的ini文件,它们的主要作用是作为模板代码被一般的ini文件调用。

注释

注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。注释只是为了提高可读性,不会被计算机编译。

铁锈战争的.ini文件语法在注释方面提供了三种方式:

(1)用#进行单行的注释

在行的开头加上#意味着计算机不会编译该行内容。

[projectile_1]
#directDamage: 20
#有人反映单发伤害太低,这里改成了30
directDamage: 30
…

(2)用""""""的组合进行多行注释

在行头使用"""作为起始,在之后的任意位置使用"""作为结束。在其之间的内容均不会被编译。

"""
这是三个英文引号
实际上这个组合还有个功能,就是用它引住key: value的value使value可以换行输入如:
builtFrom_1_name: airFactory
可以是
builtFrom_1_name: """airF
actory"""
可是有一种情况,你用多行注释注释掉了有换行输入的内容它显然就会混乱,也就是目前的情况
"""

(3)用[comment_NAME]进行成节的注释

该节之后的行直到下一个节前一行均不会被编译。

[comment_hiddenAction_1]
autoTriggerOnEvent: created
addGlobalTeamTags: 计时
[comment_1]
maxHp: 2000
[core]
#[comment_NAME]节下的东西是不会被编译的,去引用它会提示找不到任何key
@copyFromSection: comment_1
…


模板语法

(待补充)

代码表

为了方便Mod开发者进行代码的编写,一种被称作代码表的工具被制作出来,用于对照代码与其作用。

具体的代码表可以参考这里

mod-info.txt文件

普通的.txt文件。放在mod文件夹的根目录时会被游戏自动读取。提供mod的描述信息。

相关参数介绍:

#(必填)
[mod]
#(选填)告诉游戏能够支持该mod运行的最低游戏版本。若不满足最低版本,提示后仍可加载,但除地图外不可用,同时不提供代码错误的报错提醒。
minVersion: v1.14
#(必填)该mod在游戏中显示的标题。
title: Mega Builders
#(选填)该mod在游戏中显示的描述。使用"\n"使其在游戏中换行显示(pc版并不会换行显示)。
description: Example mod which replaces builders with Mega Builders.

#(选填,在游戏中播放mod中的.ogg文件作为背景音乐)#关于.ogg文件的说明仍待补充
[music]
#填音乐文件夹路径。
sourceFolder: soundtrack
#当使用该mod的单位时仅播放该mod的音乐,填"true"或"false"。
whenUsingUnitsFromThisMod_playExclusively: true

#该文件支持单行注释
"""和
多行
注释"""

all-units.template文件

可以理解为特殊的.ini文件。文件中的代码会自动应用到所有的.ini文件中。若存在代码错误,报错不会指向其本身,而是其所应用的.ini文件。(用途举例待补充)