可以使用形如 {物品名称} 的方式指代 NPC 或物品 id,执行时会自动进行替换,例如:

  1. // raid.flow
  2. select {r崔莺莺};ask {r崔莺莺} about 东厢

id 占位符的格式如下:
{<位置><关键字><品质><是否为精确查找><获取数量>}<可为 null 否>
除了关键字外,其他均为可选参数,下面来介绍这些可选参数:

位置

  • r: room 房间内
  • b: bag 包裹内
  • d: dialog 最近打开的列表面板内(目前支持仓库列表和商人列表)

    执行打开列表面板的系统命令后,需要调用 @dialog 以等待列表面板的确实打开,之后再使用 id 占位符。

如果未指定位置:

  • 也未指定品质,则会按照房间内、包裹内、列表面板内的顺序查找
  • 但指定了品质,则会按照包裹内、列表面板内的顺序查找

    品质

    对于物品,可以指定品质:

  • g:green 绿色

  • b:blue 蓝色
  • y:yellow 黄色
  • p:purple 紫色
  • o: orange 橙色
  • r:red 红色

如果物品名称是从系统提示中截取的,则已包含品质信息可直接使用:

  1. // raid.flow
  2. @tip 你从平一指购买了一枚($pill)。
  3. use {b(pill)}

建议指代物品时指定其品质。

是否为精确查找

默认使用模糊查找,即目标 NPC 或物品名称包含 {} 中给出的关键字即可。
添加 % 表示进行精确查找,物品名称必须完全吻合 {} 中给出的关键字。例如,下面语句中的前者就是精确查找:

  1. // raid.flow
  2. select {r财主女儿 崔莺莺%};ask {r崔莺莺} about 东厢

获取数量

如果希望获取数量而非 id,则可通过添加 # 标明。例如,将武道残页保存到仓库:

  1. // raid.flow
  2. [if] {b武道残页o%}? != null
  3. store {b武道残页o%#} {b武道残页o%}

可为 null 否

默认会持续等待,直到找到该 NPC 或物品。

为什么要如此设置?例如: go west ok {r丫鬟} go west 后的房间信息需要等待服务器返回,{r丫鬟} 会持续等到房间信息(包含房间内的 NPC 信息)返回,以便获取丫鬟的 id。

如果允许找不到,则需要添加 ?,未找到则为 null

  1. // raid.flow
  2. [if] {b蒙古g}? != null
  3. fenjie {b蒙古g}?