指令语法
模拟器需要一个由指令组成的脚本提供IST步骤。大多数指令对应游戏中的操作,比如拿道具,丢道具,切换装备等。
指令可以被分为三大类:
- 操作类 Actions: 对应游戏中的操作,如:拿 -
get
, 捡起 -pick-up
,手持 -hold
。 - 注解类 Annotations: 前缀为
:
,用于改配置,如::slots
用于更改装备格子数。 - 高级类 Supercommands: 前缀为
!
,用于高级操作,如直接修改内存。这些操作通常无法在游戏中直接完成。
空白字符,如空格和换行,会被完全忽略。所以一个指令可以写成多行,多个指令也能写在一行。指令间可以加分号;
,也可以不加。
# 以下2个指令相同
get 1 apple 2 pot-lid hammer;
get
1 apple
2 pot-lid
hammer
# 多个指令在同一行,也不需要用分号隔开
hold 2 apples drop
# 但隔开可能更好看
hold 2 apples; drop
通常情况下,语法是区分大小写的。但包括物品搜索在内的某些功能不区分大小写。这里建议仅在必要情况下使用大写,其他情况都用小写。必要情况例如设定GDT数据名。
物品语法
大多数指令需要通过此语法设定物品。如 get
, drop
等。见 物品语法.
属性语法
属性语法以 属性+值 的方式提供一些指令的元数据。语法为:
[key1=value1, key2=value2, ...]
# `:` 和 `=` 都可用于分隔
[key1:value1, key2:value2, ...]
通常,属性名 key
以短横线命名法命名(kebab-case
),而数值可以是以下几类:
- 布尔
bool
-true
或false
- 如果值为
true
,可以不写,如[equip]
同[equip=true]
。
- 如果值为
- 整数
integer
- 十进制或0x
开头的十六进制,比如10
,0xa
. - 浮点数
float
- 十进制浮点数,如1.2
。(不支持科学计数法) - 词语
words
- 由字母组成的一个或多个词语,由短横线,下划线或空格分隔。如hello my-world
。 - 引号词
quoted
- 打上引号的内容,支持任何字符,如"你好世界"
(注意必须是英文的引号)。 - 尖括号词
angled
- 和词语类似,但打上<
和>
,内容不允许空格。如<Foo>
。