指令语法

模拟器需要一个由指令组成的脚本提供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数据名。

注意

模拟器界面中显示的背包状态为光标当前指令执行之后的状态。就算一行中有多个指令,您也可以移动光标查看各个指令对应的游戏状态。

物品语法

大多数指令需要通过此语法设定物品。如 getdrop等。见 物品语法.

属性语法

属性语法以 属性+值 的方式提供一些指令的元数据。语法为:

[key1=value1, key2=value2, ...]
# `:` 和 `=` 都可用于分隔
[key1:value1, key2:value2, ...]

通常,属性名 key以短横线命名法命名(kebab-case),而数值可以是以下几类:

  • 布尔 bool - truefalse
    • 如果值为true,可以不写,如[equip][equip=true]
  • 整数 integer - 十进制或0x开头的十六进制,比如10, 0xa.
  • 浮点数 float - 十进制浮点数,如1.2。(不支持科学计数法)
  • 词语 words - 由字母组成的一个或多个词语,由短横线,下划线或空格分隔。如hello my-world
  • 引号词 quoted - 打上引号的内容,支持任何字符,如"你好世界"(注意必须是英文的引号)。
  • 尖括号词 angled - 和词语类似,但打上<>,内容不允许空格。如<Foo>

技巧

通常情况下,词语,引号词,尖括号词都可作为字符串类型使用。但有些情况下它们的意思不同。