脚本 · 语法参考

DSL 语法手册

纯文本指令,一行一条。90% 的场景用简写指令就够了,需要精细控制时再用完整写法。

总则

  1. 一行一条指令,以换行分隔。
  2. # 开头为注释行,引擎忽略;# === 分段名 === 用作大段分隔。
  3. 缩进只影响可读性,不影响逻辑。
  4. 简写指令与完整写法可以在同一脚本中混用。
  5. 中文全角符号与英文半角符号都能识别,推荐用英文半角。

头部配置

写在脚本最顶部,全部可选。不写则使用全局默认值。

#脚本: 野外刷怪
#绑定: 账号池
#模式: 轮询
#默认重试: 3
#默认等待: 0.5~1.5秒
配置项说明默认值
#脚本:脚本名称,仅作备注
#绑定:绑定的数据源名称
#模式:单账号轮询单账号
#默认重试:所有指令的默认重试次数3
#默认等待:动作后的默认随机等待0.5~1.5秒
单条指令内写的 重试: / 等待: 会覆盖头部默认值。

简写指令

简写指令把「前置识别 → 执行动作 → 后置校验」封装成一行,引擎自动展开为完整三步闭环。

点击

点击 <识别目标> [直到 <校验条件>]
写法自动展开
点击 yolo:close_btn前置 yolo:close_btn → 点击 → 校验目标消失
点击 ocr:"确认"前置 ocr:"确认" → 点击 → 校验文字消失
点击 yolo:monster 直到 ocr:"战斗中"点击怪物,以进入战斗作为校验
点击 yolo:skill_btn 直到 yolo:skill_cd点技能,以技能进入 CD 作为校验

不写 直到 时:YOLO 目标默认校验「消失」,OCR 文字默认校验「消失」。

长按

长按 <识别目标> <时长>秒 [直到 <校验条件>]

示例:长按 yolo:skill_btn 2秒 直到 ocr:"蓄力完成"

滑动

滑动 从(<x1>,<y1>)到(<x2>,<y2>) <时长>秒 [直到 <校验条件>]

示例:滑动 从(500,1200)到(500,400) 1.2秒 直到 yolo:target_item

滑动默认使用二次贝塞尔曲线,先加速后减速,控制点带随机偏移。

输入文字

输入 <输入框目标> 内容 "<文本>" [直到 <校验条件>]
输入 yolo:input_account 内容 "${account}"点击账号框输入账号,校验输入框显示内容
输入 ocr:"密码" 内容 "${password}"用文字定位输入框并输入密码
输入 yolo:chat_box 内容 "你好" 直到 ocr:"你好"输入后校验文字已出现在画面

引擎自动展开:识别输入框 → 点击聚焦 → 逐字符输入(每字 50~150ms 随机)→ 后置校验。

等待

等待 <识别条件> [最长N秒]
等待 <N>秒
等待 <N>~<M>秒
写法说明
等待 ocr:"战斗胜利"一直等到出现该文字
等待 yolo:monster 置信>0.7 最长10秒最多等 10 秒,出现即继续
等待 2秒固定等待,不推荐,尽量改用识别等待
等待 1~3秒随机等待,模拟真人停顿
等待 内部同样走三步闭环:等待目标出现(前置)→ 无动作 → 确认目标存在(后置)。 「等待识别条件」比「等待固定秒数」稳定得多,优先使用。

摇杆

摇杆 <方向> 持续<时长>秒

方向可选: 左上 右上 左下 右下

示例:摇杆 右上 持续1.5秒

完整写法

简写无法满足时(需要自定义前置条件或特殊校验)使用多行写法。

前置识别: yolo:monster 置信>0.7
执行: 点击 @monster
后置校验: ocr:"战斗中"
重试: 5
等待: 1.0~2.0秒
字段必需说明
前置识别动作前画面必须满足的条件,不满足则不执行
执行具体触控动作;无动作 表示只等待不操作
后置校验验证操作是否生效,不通过则整行重试
重试覆盖头部配置,默认 3
等待动作后到校验前的随机等待,默认 0.5~1.5 秒

@目标名 引用前置识别中已定位的目标坐标,避免重复识别。

识别条件

YOLO

yolo:monster 置信>0.7
不存在 yolo:close_btn

OCR

ocr:"战斗胜利"          # 精确匹配
ocr_contains:"网络"     # 包含匹配
不存在 ocr:"确认"       # 反向条件

VL 大模型

vl:"角色血量是否低于30%,只回答是或否"

VL 调用间隔不短于 5 秒,且仅作为兜底手段。

组合条件

yolo:login_btn 置信>0.6 且 ocr:"登录"

控制流

条件分支

如果 ocr:"账号或密码错误"
    标记失败
    跳过
否则
    标记成功
结束如果

循环

循环 5 次
    <指令块>
结束循环

循环
    <指令块>
结束循环

数据源轮询循环

循环(轮询)
    <登录 + 业务 + 登出切号>
结束循环

引擎自动管理:取出账号 → 执行循环体 → 登出 → 取下一条,直到数据源无待执行账号。

账号控制与状态标记

指令说明
标记成功把当前账号状态写回数据源为「成功」
标记失败把当前账号状态写回数据源为「失败」
跳过标记跳过,直接取下一条账号
停止立即停止整个脚本
状态: <名称>状态节点标记,不执行操作
引擎用 状态: 构建脚本状态表。当游戏画面与脚本进度不匹配时(例如中途掉线回到登录页), 会自动回退到最近的匹配状态节点继续执行,这是脚本能长期无人值守运行的关键。

变量

变量作用域说明
${account}仅登录阶段当前数据源行的账号
${password}仅登录阶段当前数据源行的密码

变量在执行时替换为当前账号对应的值。登录成功后的脚本行再使用变量,语法检查会标红警告。密码在日志中掩码显示。

完整脚本示例

单账号野外刷怪,全简写:

#脚本: 野外刷怪
#默认等待: 0.8~1.8秒

循环
    点击 yolo:monster 直到 ocr:"战斗中"
    等待 ocr:"战斗胜利" 最长30秒
    点击 yolo:loot

    如果 ocr:"网络断开"
        停止
    结束如果
结束循环

更多完整脚本见 脚本示例