枫叶指令宏 完整语法规范文档

0 阅读43分钟

=========================

枫叶指令宏 完整语法规范文档

=========================

[枫叶指令宏输出强制校验规则清单] 语法规则强制要求: 唯一遵循原则: 仅以提供的枫叶指令宏语法规则为依据 禁止调取外部语法、自行拓展/修改语法逻辑 无法实现的功能必须明确告知,禁止编造语法

一、核心强制语法规范(最高优先级,违反必触发语法错误/执行失效)


1.1 左侧对齐规则

  • 强制要求:所有代码行必须从行首开始书写,禁止任何形式的缩进,包括空格、Tab制表符开头
  • 违规后果:任何带缩进的行都会被引擎判定为语法错误,直接无法执行
  • 校验标准:每行代码的第一个字符必须是指令字符,不允许出现任何空白字符开头

1.2 输入法规则

  • 强制要求:所有指令关键字、参数关键字必须使用小写英文字母输入,禁止使用大写字母、中文全角字符
  • 例外说明:仅文本内容、字符串变量、窗口名、识图标记中的中文/大写字母不受此限制
  • 违规后果:大写指令关键字会被引擎判定为无效指令,全角符号会触发参数解析失败

1.3 书写规则

  • 强制要求:指令与指令之间、指令与参数之间必须紧贴书写,不能有空格、退格符、换行符等空白字符
  • 例外说明:仅英文逗号,、反斜杠\可作为分隔符出现在指令与参数之间
  • 违规后果:指令间的空格会导致引擎无法识别完整指令,触发执行失效

1.4 注释规则

  • 强制要求:以英文分号;开头的行均为注释行,引擎执行时会完全忽略
  • 强制约束:注释必须独占一行,禁止写在指令同行的末尾,禁止与指令写在同一行
  • 合法示例: ; 这是一条合法注释,独占一行 延迟\500,500\
  • 非法示例: 延迟\500,500\ ; 这是非法注释,与指令同行

1.5 分隔符规则

1.5.1 指令分隔符

  • 强制要求:指令与参数之间必须使用反斜杠\分隔
  • 强制约束:即使指令没有参数,指令末尾也必须保留反斜杠\
  • 合法示例: 鼠标\左键单击
    延迟\100,300\

1.5.2 参数分隔符

  • 强制要求:同一指令内的多个参数之间,必须使用英文逗号,分隔
  • 强制约束:参数间不允许出现空格,必须紧贴逗号书写
  • 合法示例: 鼠标移动\777,574
    运算\3,加,4,运算结果\

1.6 变量调用规则

  • 强制要求:已定义的变量,必须使用@变量名的格式进行引用
  • 强制约束:变量名区分大小写,必须与定义时的名称完全一致,禁止缺省@符号
  • 合法示例: 变量\超时,0
    弹窗提示@超时\
  • 非法示例: 变量\超时,0
    弹窗提示\超时\ ; 非法,缺少@符号

1.7 指令分类与层级约束规则

【基本指令】 定义与核心约束:可独立执行的最小指令单元,格式为指令\参数\或指令\参数1,参数2\,可出现在脚本任意合法位置 【判断指令】 定义与核心约束:必须以如果\开头,后跟条件指令,通过成功\、失败\处理分支结果;成功\和失败\分支后仅可接基本指令,禁止嵌套判断指令、结构体 【条件指令】 定义与核心约束:仅可作为判断指令的条件单元,包括比较\、坐标找色\、范围找色\、识图\,不可独立执行 【条件连接指令】 定义与核心约束:仅可用于连接判断指令内的多个同类型条件指令,包括与\、或\,不可独立使用 【分支指令】 定义与核心约束:仅可依附判断指令存在,包括成功\、失败\,不可独立使用;分支末尾可接循环控制指令 【结构体】 定义与核心约束:包含多组指令的复合逻辑单元,包括循环结构体、模块结构体,必须成对出现,不可嵌套同类型结构体 【循环控制指令】 定义与核心约束:仅可在循环结构体内使用,包括返回循环\、终止循环\,必须独立成行,不可与其他指令写在同一行

====================== 二、基础核心指令


2.1 延迟指令(基本指令)

  • 指令格式:延迟\最小时长,最大时长\
  • 指令功能:在最小和最大时长之间随机等待指定毫秒数;若两个数值相同,则为固定时长等待
  • 参数全量说明:
    1. 最小时长:【必填】正整数,单位毫秒,支持变量引用(@变量名),等待时长的下限
    2. 最大时长:【必填】正整数,单位毫秒,支持变量引用(@变量名),等待时长的上限
  • 合法示例: 延迟\100,300\ ; 随机等待100~300毫秒 延迟\500,500\ ; 固定等待500毫秒 延迟@最小延迟,@最大延迟\ ; 传入变量参数
  • 注意事项:若最小时长大于最大时长,引擎会自动交换两个数值,不会触发语法错误

2.2 输入设备控制指令

2.2.1 鼠标类指令(基本指令) 1. 完整指令格式:鼠标\左键单击
功能说明:模拟鼠标左键按下后立即抬起,完成单次单击 参数说明:无参数 合法示例:鼠标\左键单击\

2. 完整指令格式:鼠标\左键按下\
功能说明:模拟鼠标左键按下不抬起,需配合鼠标\左键抬起\使用
参数说明:无参数
合法示例:鼠标\左键按下\

3. 完整指令格式:鼠标\左键抬起\
功能说明:模拟鼠标左键抬起,释放之前按下的左键
参数说明:无参数
合法示例:鼠标\左键抬起\

4. 完整指令格式:鼠标\右键单击\
功能说明:模拟鼠标右键按下后立即抬起,完成单次单击
参数说明:无参数
合法示例:鼠标\右键单击\

5. 完整指令格式:鼠标\右键按下\
功能说明:模拟鼠标右键按下不抬起,需配合鼠标\右键抬起\使用
参数说明:无参数
合法示例:鼠标\右键按下\

6. 完整指令格式:鼠标\右键抬起\
功能说明:模拟鼠标右键抬起,释放之前按下的右键
参数说明:无参数
合法示例:鼠标\右键抬起\

7. 完整指令格式:鼠标滚轮\向上\
功能说明:模拟鼠标滚轮向上滚动一格
参数说明:无参数
合法示例:鼠标滚轮\向上\

8. 完整指令格式:鼠标滚轮\单击\
功能说明:模拟鼠标滚轮中键按下后立即抬起,完成单次单击
参数说明:无参数
合法示例:鼠标滚轮\单击\

9. 完整指令格式:鼠标滚轮\向下\
功能说明:模拟鼠标滚轮向下滚动一格
参数说明:无参数
合法示例:鼠标滚轮\向下\

10. 完整指令格式:鼠标移动\X,Y\
功能说明:将鼠标指针移动到屏幕绝对坐标(X,Y)处
参数说明:X、Y:【必填】正整数,屏幕像素坐标,支持变量引用
合法示例:
鼠标移动\777,574\
鼠标移动\@目标X,@目标Y\

11. 完整指令格式:相对移动\X偏移,Y偏移\
功能说明:从鼠标当前位置,相对移动指定的X、Y轴偏移量
参数说明:X偏移、Y偏移:【必填】整数,支持正负值,支持变量引用
合法示例:
相对移动\103,104\
相对移动\-50,20\

12. 完整指令格式:识图移动\X偏移,Y偏移\
功能说明:仅可在识图\指令执行成功后使用,自动移动到上一次识图结果的图像中心点,并叠加指定偏移量
参数说明:X偏移、Y偏移:【必填】整数,支持正负值,支持变量引用
合法示例:
识图移动\0,0\
识图移动\-103,104\

2.2.2 键盘类指令(基本指令) 1. 完整指令格式:按键\键名
功能说明:模拟指定按键按下后立即抬起,完成单次按键触发 参数全量说明:键名:【必填】固定键名字符串,详见支持列表,区分大小写 合法示例: 按键\Space
按键\a
按键\Enter\

2. 完整指令格式:按下\键名\
功能说明:模拟指定按键按下不抬起,需配合抬起\键名\使用,用于长按场景
参数全量说明:键名:【必填】固定键名字符串,详见支持列表,区分大小写
合法示例:
按下\Right\
按下\Ctrl\

3. 完整指令格式:抬起\键名\
功能说明:模拟指定按键抬起,释放之前按下的按键,必须与按下\键名\配对使用
参数全量说明:键名:【必填】固定键名字符串,与按下的键名完全一致
合法示例:
抬起\Right\
抬起\Ctrl\
  • 支持的键名完整列表:
    1. 功能键:Space(空格)、Enter(回车)、Backspace(退格)、Tab、esc、Delete、Insert、Home、End、PageUp、PageDown
    2. 方向键:Left(左方向)、Right(右方向)、Up(上方向)、Down(下方向)
    3. 修饰键:Ctrl、Alt、Shift
    4. 字母键:a-z 小写英文字母
    5. 数字键:0-9 主键盘数字、Numpad0-Numpad9 小键盘数字
    6. 功能键:F1-F12 顶部功能键

2.3 变量

2.3.1 变量定义指令(基本指令)

  • 指令格式:变量\变量名,初始值\
  • 指令功能:定义全局变量并赋予初始值;变量支持自动创建,无需提前定义,首次赋值时引擎会自动生成
  • 参数全量说明:
    1. 变量名:【必填】字符串,仅支持中文、英文字母、数字、下划线
    2. 初始值:【选填】支持数字、字符串,缺省时默认初始值为空字符串
  • 合法示例: 变量\超时,0
    变量\用户名,枫叶
    变量\空变量\
  • 注意事项:全局变量在脚本全生命周期内有效,重复定义同名变量会覆盖原有值

====================== 三、条件判断指令体系


3.1 判断指令基础固定结构

如果\条件指令\参数...
成功\基本指令1\基本指令2\基本指令3... 成功\基本指令1\基本指令2\基本指令3... 失败\基本指令a\基本指令b\基本指令c... 失败\基本指令a\基本指令b\基本指令c...

  • 核心约束:
    1. 必须以如果\开头,后跟完整的条件指令
    2. 成功\分支:条件成立时执行,可接多个基本指令(可开多个分支),禁止嵌套判断指令、结构体
    3. 失败\分支:条件不成立时执行,可接多个基本指令(可开多个分支),禁止嵌套判断指令、结构体
    4. 多个条件指令之间可使用与\、或\连接,实现复合条件判断
    5. 循环控制指令(返回循环\、终止循环\)可接在分支指令的末尾,且必须独立成行

3.2 核心条件指令

3.2.1 比较指令(条件指令)

  • 指令格式:比较\值1,比较符,值2,结果变量名\
  • 指令功能:对比两个值的大小/包含关系,将比较结果存入指定变量(1=真/条件成立,0=假/条件不成立)
  • 参数全量说明:
    1. 值1:【必填】数字、字符串或变量(@变量名),比较的左值
    2. 比较符:【必填】固定取值,仅支持:等于、不等于、大于、小于、大于等于、小于等于、字符包含
    3. 值2:【必填】数字、字符串或变量(@变量名),比较的右值
    4. 结果变量名:【必填】字符串,存储比较结果的变量名,无需提前定义
  • 合法示例: 变量\血量,20
    如果\比较@血量,小于,30,低血量
    成功\弹窗提示\血量过低!
    失败\弹窗提示\血量安全\
  • 注意事项:字符包含仅支持字符串比较,判断值1是否包含值2的完整内容

3.2.2 坐标找色指令(条件指令)

  • 指令格式:坐标找色\X坐标,Y坐标,目标颜色值,结果变量名\
  • 指令功能:获取屏幕指定像素点的颜色值,与目标颜色对比,将匹配结果存入变量(匹配成功=1,失败=0),同时将实际获取的颜色值存入结果变量
  • 参数全量说明:
    1. X坐标:【必填】正整数,屏幕像素X坐标,支持变量引用
    2. Y坐标:【必填】正整数,屏幕像素Y坐标,支持变量引用
    3. 目标颜色值:【必填】十六进制颜色字符串,格式为0xFFFFFF,支持变量引用
    4. 结果变量名:【必填】字符串,存储匹配结果与实际颜色值的变量名,无需提前定义
  • 合法示例: 如果\坐标找色\455,580,0xAE7222,色值结果
    成功\弹窗提示\找到颜色@色值结果
    失败\弹窗提示\颜色不匹配\

3.2.3 范围找色指令(条件指令)

  • 指令格式:范围找色\X1,Y1,X2,Y2,目标颜色值,渐变值,结果变量名,坐标X变量名,坐标Y变量名\
  • 指令功能:在指定矩形屏幕区域内查找目标颜色,支持颜色容差,将查找结果存入变量(找到=1,未找到=0),同时将第一个匹配点的坐标存入指定变量
  • 参数全量说明:
    1. X1,Y1:【必填】正整数,查找区域左上角的屏幕像素坐标,支持变量引用
    2. X2,Y2:【必填】正整数,查找区域右下角的屏幕像素坐标,支持变量引用
    3. 目标颜色值:【必填】十六进制颜色字符串,格式为0xFFFFFF,支持变量引用
    4. 渐变值:【必填】整数,取值范围0~255,颜色匹配容差;0为精确匹配,数值越大容差越大,支持变量引用
    5. 结果变量名:【必填】字符串,存储查找结果(1/0)的变量名,无需提前定义
    6. 坐标X变量名:【必填】字符串,存储第一个匹配点X坐标的变量名,无需提前定义
    7. 坐标Y变量名:【必填】字符串,存储第一个匹配点Y坐标的变量名,无需提前定义
  • 合法示例: 如果\范围找色\100,100,200,200,0xFFFFFF,0,找色结果,找色X,找色Y
    成功\鼠标移动@找色X,@找色Y
    失败\弹窗提示\未找到白色\

3.2.4 图像识别(识图)指令(条件指令)

  • 指令格式:识图\X1,Y1,X2,Y2,容错率,<识图标记>,标记结果变量,识图数量变量,识图X变量,识图Y变量,识别模式,超时时间\
  • 指令功能:在指定屏幕区域内,识别提前通过抓图工具保存的目标图像,返回识别结果、匹配数量与匹配坐标
  • 参数全量说明(按顺序):
    1. X1,Y1:【必填】正整数,识图区域左上角的屏幕像素坐标,支持变量引用
    2. X2,Y2:【必填】正整数,识图区域右下角的屏幕像素坐标,支持变量引用;全屏识别可设为0,0,0,0
    3. 容错率:【必填】浮点数,取值范围0.0~1.0;0.1表示10%匹配容差,数值越小匹配越精确,数值越大容错性越高
    4. <识图标记>:【必填】字符串,通过抓图工具保存图像时设置的标签名,必须用<>包裹,与抓图时的名称完全一致
    5. 标记结果变量:【必填】字符串,存储成功匹配的识图标签名的变量名,无需提前定义
    6. 识图数量变量:【必填】字符串,存储匹配到的图像总数量的变量名,无需提前定义
    7. 识图X变量:【必填】字符串,存储第一个匹配图像中心点X坐标的变量名,无需提前定义;引擎会自动生成识图X1、识图X2...变量存储多个匹配点坐标
    8. 识图Y变量:【必填】字符串,存储第一个匹配图像中心点Y坐标的变量名,无需提前定义;引擎会自动生成识图Y1、识图Y2...变量存储多个匹配点坐标
    9. 识别模式:【选填】(识别一次,默认(可不填))、(等待出现)、(等待消失)。
      • 识别一次:立即返回识别结果
      • 等待出现:持续识别直到目标图像出现,或达到超时时间
      • 等待消失:持续识别直到目标图像消失,或达到超时时间
    10. 超时时间:【选填】整数,单位秒,仅在模式2/3时生效;0表示无限等待,缺省默认为0
  • 合法示例: ; 识别一次模式 如果\识图\100,200,300,400,0.1,<开始游戏>,标记结果,识图数量,识图X,识图Y
    成功\识图移动\0,0\鼠标\左键单击
    失败\弹窗提示\识别失败\

; 等待出现模式,3秒超时 如果\识图\100,200,300,400,0.1,<开始游戏>,标记结果,识图数量,识图X,识图Y,等待出现,3
成功\识图移动\0,0\鼠标\左键单击
失败\弹窗提示\识别超时\

; 等待消失模式,5秒超时 如果\识图\100,200,300,400,0.1,<加载中>,标记结果,识图数量,识图X,识图Y,等待消失,5
成功\弹窗提示\加载完成
失败\弹窗提示\等待超时\

  • 核心注意事项:
    1. <识图标记>必须与抓图工具保存的标签名完全一致,包括大小写,且必须用<>包裹
    2. 仅识别成功后,才可使用识图移动\指令,否则会出现坐标错误
    3. 模式2/3下,引擎会阻塞主线程,直到满足条件或超时

3.3 复合条件连接指令

3.3.1 与指令(条件连接指令)

  • 指令格式:条件指令1\与\条件指令2\
  • 功能说明:连接多个条件指令,所有条件同时成立时,整体判断结果为真,执行成功\分支
  • 合法示例: 变量\a,1
    变量\b,2
    如果\比较@a,等于,1,结果1\与\比较@b,等于,2,结果2
    成功\弹窗提示\a=1且b=2\

3.3.2 或指令(条件连接指令)

  • 指令格式:条件指令1\或\条件指令2\
  • 功能说明:连接多个条件指令,任意一个条件成立时,整体判断结果为真,执行成功\分支
  • 合法示例: 变量\a,1
    变量\b,1
    如果\比较@a,等于,1,结果1\或\比较@b,等于,2,结果2
    成功\弹窗提示\a=1或b=2\
  • 注意事项:复合条件支持多个与\、或\连续连接,引擎按从左到右的顺序执行判断

====================== 四、结构体语法规范


4.1 循环结构体

4.1.1 循环基础固定结构 循环\循环次数
...循环体内的指令(支持基本指令、判断指令)... 结束循环\

  • 核心定义与约束:
    1. 必须以循环\开头,以结束循环\结尾,成对出现
    2. 循环次数:【必填】正整数,0表示无限循环,非0数字表示固定循环次数,支持变量引用
    3. 循环结构体不可嵌套循环结构体,如需嵌套逻辑,需通过模块调用实现
    4. 循环体内可包含基本指令、判断指令,禁止直接嵌套其他结构体
  • 基础合法示例: ; 左键连点10次 循环\10
    鼠标\左键单击
    延迟\100,200
    结束循环\

4.1.2 循环控制指令

  • 指令格式:返回循环
    功能说明:立即终止当前轮循环,跳转到循环开始位置,开启下一轮循环,当前轮后续指令不再执行 使用约束:
  1. 仅可在循环结构体内部使用
  2. 必须独立成行,禁止与其他指令写在同一行
  3. 可接在成功\失败\分支末尾,作为分支最后一行
  • 指令格式:终止循环
    功能说明:立即退出当前循环结构体,继续执行结束循环\之后的指令 使用约束:
  1. 仅可在循环结构体内部使用
  2. 必须独立成行,禁止与其他指令写在同一行
  3. 可接在成功\失败\分支末尾,作为分支最后一行 4.1.3 循环使用规范与正误示例
  • 合法示例(计数器): 变量\计数,0
    循环\0
    悬浮提示@计数,0,0,1
    如果\比较@计数,大于等于,10,结果
    成功\终止循环
    失败\运算@计数,加,1,计数
    延迟\1000,1000
    结束循环
    弹窗提示\计数完成\

  • 合法示例(带重试逻辑): 循环\10
    如果\识图\0,0,0,0,0.1,<数据名>,标记结果,识图数量,识图X,识图Y
    成功\识图移动\0,0\延迟\500,1000\鼠标\左键单击
    成功\终止循环
    失败\弹窗提示\失败!
    失败\返回循环
    结束循环\

  • 非法示例(控制指令与其他指令同行): 循环\10
    如果\识图\0,0,0,0,0.1,<数据名>,标记结果,识图数量,识图X,识图Y
    成功\识图移动\0,0\终止循环\ ; 非法,控制指令与其他指令同行 失败\弹窗提示\失败!\返回循环\ ; 非法,控制指令与其他指令同行 结束循环\


4.2 模块结构体

4.2.1 模块定义基础固定结构 模块定义\模块名
...模块内的指令(支持基本指令、判断指令、循环结构体、其他模块调用)... 结束模块定义\

  • 核心定义与约束:
    1. 必须以模块定义\开头,以结束模块定义\结尾,成对出现
    2. 模块名:【必填】字符串,仅支持英文字母、数字、下划线,禁止中文、特殊符号,区分大小写
    3. 模块内可包含基本指令、判断指令、循环结构体、其他已定义的模块调用,禁止嵌套定义新的模块
    4. 模块内可调用其他模块,但需避免递归调用(模块调用自身),否则会触发死循环
    5. 模块定义必须写在模块调用之前,否则引擎会判定为未定义模块

4.2.2 模块同步调用指令(基本指令)

  • 指令格式:模块\模块名\
  • 指令功能:同步执行已定义模块内的所有指令,等待模块内全部指令执行完毕后,再继续执行后续指令
  • 参数说明:模块名【必填】,与模块定义时的名称完全一致
  • 合法示例: ; 定义登录游戏的模块 模块定义\登录游戏
    鼠标移动\500,300
    鼠标\左键单击
    延迟\1000,1000
    按键\Enter
    结束模块定义\

; 调用模块 模块\登录游戏\

4.2.3 模块定时异步调用指令(基本指令)

  • 指令格式:模块定时\模块名,延迟时长,执行模式\
  • 指令功能:在指定延迟后,异步执行已定义的模块,不阻塞主线程运行,独立于主线程执行
  • 参数全量说明:
    1. 模块名:【必填】与模块定义时的名称完全一致
    2. 延迟时长:【必填】正整数,单位毫秒,首次执行/周期执行的延迟时间
    3. 执行模式:【必填】固定取值,仅支持:重复、一次、关闭
      • 重复:周期循环调用,每间隔指定延迟时长执行一次模块
      • 一次:单次调用,延迟指定时长后执行一次模块
      • 关闭:取消已设置的对应模块的定时任务
  • 合法示例: ; 定义提醒模块 模块定义\提醒
    弹窗提示\时间到!
    结束模块定义\

; 5秒后执行一次提醒模块 模块定时\提醒,5000,一次
延迟\10000,10000\

; 每5秒执行一次提醒模块,10秒后关闭 模块定时\提醒,5000,重复
延迟\10000,10000
模块定时\提醒,0,关闭\

  • 注意事项:主线程结束后,所有定时任务会自动清除;定时模块与主线程操作同一资源时,可能出现执行冲突

  • 综合合法结构示例 : ; 1.“如果-否则如果-否则”结构示例: 模块定义\否则如果
    如果\比较@a,等于,2,比较结果2
    成功\弹窗提示\a=2
    失败\弹窗提示\a既不是1也不是2
    结束模块定义\

变量\a,0
如果\比较@a,等于,1,比较结果1
成功\弹窗提示\a=1
失败\模块\否则如果\

; 2.模块嵌套调用示例 : 模块定义\a
循环\2\ ; 循环2次 按键\a\ ; 每次按一下a 结束循环
结束模块定义\

循环\3
模块\a\ ; 调用3次模块 结束循环\

; 3.模块嵌套调用示例: 模块定义\a
循环\2\ ; 循环2次 按键\a\ ; 每次按一下a 结束循环
结束模块定义\

循环\3
模块\a\ ; 调用3次模块 结束循环\

五、全量功能指令详解(参数全量说明)


5.1 文本与语音类指令

5.1.1 文本输入指令(基本指令)

  • 指令格式:文本输入\输入内容\
  • 指令功能:模拟键盘输入指定文本到当前激活的窗口,支持中文、英文、数字与特殊字符,支持变量引用
  • 参数说明:输入内容【必填】,支持纯文本、字符串变量(@变量名)
  • 合法示例: 文本输入\枫叶指令宏
    文本输入\当前用户:@用户名\
  • 注意事项:执行前需确保目标输入框处于激活状态,否则会输入到错误位置

5.1.2 文本播报指令(基本指令)

  • 指令格式:文本播报\播报文本,等待模式,语速,音量\
  • 指令功能:调用系统语音引擎,对指定文本进行语音播报,支持变量引用,可控制播报模式、语速与音量
  • 参数全量说明:
    1. 播报文本:【必填】支持纯文本、字符串变量(@变量名),需要播报的内容
    2. 等待模式:【必填】固定取值:等待、不等待
      • 等待:主线程阻塞,等待播报完成后再执行后续指令
      • 不等待:主线程不阻塞,播报与后续指令同步执行
    3. 语速:【必填】整数,取值范围-10~10;数值越大语速越快,0为系统默认语速
    4. 音量:【必填】整数,取值范围0~100;0为静音,100为系统最大音量
  • 合法示例: 文本播报\枫叶指令宏,等待,5,80
    文本播报\当前计数为@计数,不等待,0,100\

5.1.3 数值运算指令(基本指令)

  • 指令格式:运算\数值1,运算符,数值2,结果变量名\
  • 指令功能:对两个数值进行算术运算,将运算结果存入指定的结果变量中
  • 参数全量说明:
    1. 数值1:【必填】数字或数字型变量(@变量名),运算的左值
    2. 运算符:【必填】固定取值,仅支持:加、减、乘、除、取余
    3. 数值2:【必填】数字或数字型变量(@变量名),运算的右值
    4. 结果变量名:【必填】字符串,存储运算结果的变量名,无需提前定义
  • 合法示例: 运算\3,加,4,运算结果
    运算@超时,加,1,超时
    运算\10,乘,@倍率,最终值\
  • 注意事项:除法运算为整数除法,若需小数运算需提前转换;除0运算会触发执行错误

5.1.4 随机数生成指令(基本指令)

  • 指令格式:随机数\最小值,最大值,结果变量名\
  • 指令功能:生成指定范围(包含最小值、最大值两端)的随机整数,存入指定变量
  • 参数全量说明:
    1. 最小值:【必填】整数,支持变量引用,随机数范围的下限
    2. 最大值:【必填】整数,支持变量引用,随机数范围的上限
    3. 结果变量名:【必填】字符串,存储随机数结果的变量名,无需提前定义
  • 合法示例: 随机数\100,200,随机值
    随机数@最小随机,@最大随机,随机延迟\
  • 注意事项:若最小值大于最大值,引擎会自动交换两个数值,不会触发语法错误

5.2 文字识别(OCR)类指令

5.2.1 字库文字识别指令(基本指令)

  • 指令格式:文字识别\X1,Y1,X2,Y2,容错率,<字库数据名>,识别结果变量\
  • 指令功能:基于提前制作的字库,识别指定屏幕区域内的文字,将识别结果存入指定变量
  • 参数全量说明:
    1. X1,Y1:【必填】正整数,识别区域左上角屏幕坐标,支持变量引用
    2. X2,Y2:【必填】正整数,识别区域右下角屏幕坐标,支持变量引用
    3. 容错率:【必填】浮点数,取值范围0.0~1.0,匹配容差
    4. <字库数据名>:【必填】提前制作的字库数据标签,必须用<>包裹,与字库名称完全一致
    5. 识别结果变量:【必填】字符串,存储识别文字结果的变量名,无需提前定义
  • 合法示例: 文字识别\0,0,116,41,0.1,<主字库>,识别结果
    弹窗提示@识别结果\

5.2.2 大模型文字识别指令(基本指令)

  • 指令格式:大模型文字识别\X1,Y1,X2,Y2,识别结果变量,字段数量变量,坐标X变量,坐标Y变量\
  • 指令功能:调用内置大模型OCR引擎,识别指定屏幕区域内的所有文字,返回识别结果、字段数量与文字坐标
  • 参数全量说明:
    1. X1,Y1:【必填】正整数,识别区域左上角屏幕坐标,支持变量引用
    2. X2,Y2:【必填】正整数,识别区域右下角屏幕坐标,支持变量引用;全屏识别设为0,0,0,0
    3. 识别结果变量:【必填】字符串,存储识别到的完整文字内容的变量名,无需提前定义
    4. 字段数量变量:【必填】字符串,存储识别到的文字字段总数量的变量名,无需提前定义
    5. 坐标X变量:【必填】字符串,存储第一个文字字段中心点X坐标的变量名,无需提前定义
    6. 坐标Y变量:【必填】字符串,存储第一个文字字段中心点Y坐标的变量名,无需提前定义
  • 合法示例: 大模型文字识别\0,0,116,41,识别结果,字段数量,文字X,文字Y
    弹窗提示@识别结果\

5.3 系统与程序控制类指令

5.3.1 运行程序指令(基本指令)

  • 指令格式:运行程序\目标地址\
  • 指令功能:运行本地程序、打开本地文件、访问指定URL网址
  • 参数说明:目标地址【必填】,支持本地程序路径、本地文件路径、HTTP/HTTPS网址
  • 合法示例: 运行程序\notepad.exe
    运行程序\www.baidu.com/\ 运行程序\D:\测试文件.txt\

5.3.2 关闭程序指令(基本指令)

  • 指令格式:关闭程序\进程名\
  • 指令功能:强制关闭指定名称的系统进程
  • 参数说明:进程名【必填】,完整进程名称,包含后缀名(如微信.exe),区分大小写
  • 合法示例: 关闭程序\微信.exe
    关闭程序\notepad.exe\

5.3.3 关机操作指令(基本指令)

  • 指令格式:关机操作\关机类型\
  • 指令功能:执行Windows系统关机操作
  • 参数说明:关机类型【必填】,固定取值:正常关机、强制关机
  • 合法示例: 关机操作\正常关机\

5.4 状态获取类指令

5.4.1 获取鼠标坐标指令(基本指令)

  • 指令格式:获取鼠标\X坐标变量,Y坐标变量\
  • 指令功能:获取鼠标当前所在的屏幕坐标,将X、Y值分别存入指定变量
  • 参数说明:X坐标变量、Y坐标变量【必填】,存储坐标的变量名,无需提前定义
  • 合法示例: 获取鼠标\当前X,当前Y
    弹窗提示@当前X,@当前Y\

5.4.2 获取系统时间指令(基本指令)

  • 指令格式:获取时间\年变量,月变量,日变量,时变量,分变量,秒变量\
  • 指令功能:获取当前系统时间,将年、月、日、时、分、秒分别存入对应的指定变量
  • 参数说明:6个变量名均为【必填】,分别存储年、月、日、时、分、秒的数值,无需提前定义
  • 合法示例: 获取时间\年,月,日,时,分,秒
    弹窗提示@年-@月-@日 @时:@分:@秒\

5.5 字符串处理类指令

5.5.1 字符串长度获取指令(基本指令)

  • 指令格式:字符串长度\源字符串,长度结果变量\
  • 指令功能:获取指定字符串的字符总长度,将数值结果存入指定变量
  • 参数全量说明:
    1. 源字符串:【必填】纯文本或字符串变量(@变量名),待统计的字符串
    2. 长度结果变量:【必填】字符串,存储长度数值的变量名,无需提前定义
  • 合法示例: 大模型文字识别\598,665,686,707,识别结果
    字符串长度@识别结果,长度结果
    弹窗提示@长度结果\

5.5.2 字符串单字符检索指令(基本指令)

  • 指令格式:检索字符串\源字符串,字符位置,结果变量\
  • 指令功能:从源字符串中取出指定位置的单个字符,存入指定变量;字符位置从1开始计数
  • 参数全量说明:
    1. 源字符串:【必填】纯文本或字符串变量(@变量名),待检索的字符串
    2. 字符位置:【必填】正整数,要提取的字符位置,从1开始计数,支持变量引用
    3. 结果变量:【必填】字符串,存储提取到的单字符的变量名,无需提前定义
  • 合法示例: 检索字符串@识别结果,1,首字符
    弹窗提示@首字符\

5.5.3 坐标提取指令(基本指令)

  • 指令格式:坐标提取\源字符串,坐标X变量,坐标Y变量\
  • 指令功能:从包含坐标信息的源字符串中,自动提取X、Y坐标数值,分别存入指定变量
  • 参数全量说明:
    1. 源字符串:【必填】纯文本或字符串变量(@变量名),包含坐标信息的字符串
    2. 坐标X变量:【必填】字符串,存储提取到的X坐标数值的变量名,无需提前定义
    3. 坐标Y变量:【必填】字符串,存储提取到的Y坐标数值的变量名,无需提前定义
  • 合法示例: 大模型文字识别\0,0,200,200,坐标文本
    坐标提取@坐标文本,目标X,目标Y
    鼠标移动@目标X,@目标Y\

5.5.4 字符提取指令(基本指令)

  • 指令格式:提取字符\源字符串,提取规则,结果变量名\
  • 指令功能:从源字符串中提取符合指定规则的字符,将提取结果存入指定变量
  • 参数全量说明:
    1. 源字符串:【必填】纯文本或字符串变量(@变量名),待提取的原始字符串
    2. 提取规则:【必填】固定取值,仅支持:英文字母、大写字母、小写字母、中文字符、数字字符
    3. 结果变量名:【必填】字符串,存储提取结果的变量名,无需提前定义
  • 合法示例: 提取字符\abc123中文,英文字母,提取结果\ ; 提取结果="abc" 提取字符\手机号138-0013-8000,数字字符,手机号\ ; 手机号="13800138000" 提取字符@识别结果,中文字符,中文内容\

====================== 六、窗口控制类指令全解


6.1 窗口激活与移动指令

6.1.1 激活窗口指令(基本指令)

  • 指令格式:激活窗口\窗口名\
  • 指令功能:将指定名称的窗口置顶并激活为当前活动窗口
  • 参数说明:窗口名【必填】,窗口标题的关键词,支持模糊匹配,无需完整标题
  • 合法示例: 激活窗口\QQ
    激活窗口\无标题 - 记事本\

6.1.2 移动窗口指令(基本指令)

  • 指令格式:移动窗口\窗口名,X坐标,Y坐标\
  • 指令功能:将指定名称的窗口移动到屏幕指定坐标位置(窗口左上角对齐该坐标)
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. X坐标,Y坐标:【必填】正整数,目标位置的屏幕像素坐标,支持变量引用
  • 合法示例: 移动窗口\地下城与勇士,0,0
    移动窗口\记事本,@窗口X,@窗口Y\

6.2 窗口状态判断与信息获取指令

6.2.1 判断窗口指令(基本指令)

  • 指令格式:判断窗口\窗口名,判断模式,结果变量名\
  • 指令功能:判断指定窗口的状态,将结果存入变量(符合条件=1,不符合=0)
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. 判断模式:【必填】固定取值:激活、存在
      • 激活:判断窗口是否为当前激活的活动窗口
      • 存在:判断窗口是否存在于系统中
    3. 结果变量名:【必填】字符串,存储判断结果的变量名,无需提前定义
  • 合法示例: 判断窗口\QQ,存在,窗口存在结果
    如果\比较@窗口存在结果,等于,1,比较结果
    成功\弹窗提示\窗口存在
    失败\弹窗提示\窗口不存在\

6.2.2 获取当前窗口名指令(基本指令)

  • 指令格式:获取窗口名\结果变量名\
  • 指令功能:获取当前激活的活动窗口的完整标题,存入指定变量
  • 参数说明:结果变量名【必填】,存储窗口标题的变量名,无需提前定义
  • 合法示例: 获取窗口名\当前窗口
    弹窗提示@当前窗口\

6.2.3 获取窗口详细信息指令(基本指令)

  • 指令格式:获取窗口信息\窗口名,位置X变量,位置Y变量,宽度变量,高度变量\
  • 指令功能:获取指定窗口的位置与尺寸信息,分别存入对应的变量
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. 位置X变量:【必填】存储窗口左上角X坐标的变量名,无需提前定义
    3. 位置Y变量:【必填】存储窗口左上角Y坐标的变量名,无需提前定义
    4. 宽度变量:【必填】存储窗口宽度的变量名,无需提前定义
    5. 高度变量:【必填】存储窗口高度的变量名,无需提前定义
  • 合法示例: 获取窗口信息\QQ,pX,pY,pW,pH
    弹窗提示@pX,@pY,@pW,@pH\

6.3 窗口属性修改指令

6.3.1 更改窗口大小指令(基本指令)

  • 指令格式:更改窗口大小\窗口名,宽度,高度\
  • 指令功能:修改指定窗口的宽度和高度
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. 宽度:【必填】正整数,窗口目标宽度,单位像素,支持变量引用
    3. 高度:【必填】正整数,窗口目标高度,单位像素,支持变量引用
  • 合法示例: 更改窗口大小\QQ,500,500
    更改窗口大小\记事本,@窗口宽,@窗口高\

6.3.2 更改窗口标题指令(基本指令)

  • 指令格式:更改窗口标题\窗口名,新标题\
  • 指令功能:修改指定窗口的标题文本
  • 参数全量说明:
    1. 窗口名:【必填】原窗口标题关键词,支持模糊匹配
    2. 新标题:【必填】修改后的窗口完整标题,支持变量引用
  • 合法示例: 更改窗口标题\QQ,我的QQ窗口\

6.3.3 更改窗口透明度指令(基本指令)

  • 指令格式:更改窗口透明\窗口名,透明度\
  • 指令功能:修改指定窗口的透明度
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. 透明度:【必填】整数,取值范围0~255;0为完全透明,255为完全不透明,支持变量引用
  • 合法示例: 更改窗口透明\QQ,128
    更改窗口透明\记事本,@透明值\

6.4 窗口后台模式指令

6.4.1 开启后台指令(基本指令)

  • 指令格式:开启后台\窗口名,后台模式\
  • 指令功能:开启指定窗口的后台模式,实现后台键鼠操作、识图找色,不影响前台操作
  • 参数全量说明:
    1. 窗口名:【必填】窗口标题关键词,支持模糊匹配
    2. 后台模式:【必填】固定取值:1、1+、2、2+、3,不同模式适配不同窗口类型
  • 合法示例: 开启后台\QQ,1\

6.4.2 关闭后台指令(基本指令)

  • 指令格式:关闭后台\窗口名\
  • 指令功能:关闭指定窗口的后台模式,恢复正常前台操作模式
  • 参数说明:窗口名【必填】窗口标题关键词,支持模糊匹配
  • 合法示例: 关闭后台\QQ\

====================== 七、辅助功能指令全解


7.1 提示类指令

7.1.1 弹窗提示指令(基本指令)

  • 指令格式:弹窗提示\提示内容\
  • 指令功能:弹出系统消息提示框,显示指定内容,会阻塞主线程,点击确定后才继续执行后续指令
  • 参数说明:提示内容【必填】,支持纯文本、变量引用(@变量名),支持多变量拼接
  • 合法示例: 弹窗提示\操作完成
    弹窗提示\当前血量:@血量,蓝量:@蓝量\

7.1.2 悬浮提示指令(基本指令)

  • 指令格式:悬浮提示\提示文本,X坐标,Y坐标,提示编号\
  • 指令功能:在屏幕指定位置显示悬浮窗提示,不阻塞主线程,可同时显示多个悬浮提示
  • 参数全量说明:
    1. 提示文本:【必填】支持纯文本、变量引用,悬浮窗显示的内容
    2. X坐标,Y坐标:【必填】正整数,悬浮窗显示位置的屏幕像素坐标,支持变量引用
    3. 提示编号:【必填】整数,取值范围1~20,每个编号对应一个独立悬浮窗,重复编号会覆盖原有内容
  • 合法示例: 悬浮提示\脚本运行中,0,0,1
    悬浮提示\当前计数:@计数,100,0,2\

7.1.3 坐标提示指令(基本指令)

  • 指令格式:坐标提示\X坐标,Y坐标\
  • 指令功能:在屏幕指定坐标位置显示标记提示,用于定位坐标点
  • 参数说明:X坐标,Y坐标【必填】正整数,屏幕像素坐标,支持变量引用
  • 合法示例: 坐标提示@识图X,@识图Y
    坐标提示\777,574\

7.2 屏幕抓图与截图指令

7.2.1 抓图指令(基本指令)

  • 指令格式:抓图\X1,Y1,X2,Y2,数据名,处理模式,阈值\
  • 指令功能:抓取指定屏幕区域的图像,进行灰度处理后,存储为指定名称的识图数据,用于后续识图指令
  • 参数全量说明:
    1. X1,Y1:【必填】正整数,抓图区域左上角屏幕坐标,支持变量引用
    2. X2,Y2:【必填】正整数,抓图区域右下角屏幕坐标,支持变量引用
    3. 数据名:【必填】字符串,存储的识图数据名称,后续识图时用<数据名>引用
    4. 处理模式:【必填】固定取值:灰度阈值,图像灰度处理模式
    5. 阈值:【必填】整数,灰度处理的阈值,取值范围0~255
  • 合法示例: 抓图\0,0,100,100,开始按钮,灰度阈值,150\

7.2.2 截图指令(基本指令)

  • 指令格式:截图\X1,Y1,X2,Y2,截图文件名\
  • 指令功能:截取指定屏幕区域的图像,保存为图片文件到本地
  • 参数全量说明:
    1. X1,Y1:【必填】正整数,截图区域左上角屏幕坐标,支持变量引用
    2. X2,Y2:【必填】正整数,截图区域右下角屏幕坐标,支持变量引用;全屏截图设为0,0,0,0
    3. 截图文件名:【必填】字符串,保存的图片文件名称,无需后缀名
  • 合法示例: 截图\0,0,0,0,全屏截图
    截图\100,100,200,200,区域截图\

============================================================ 八、快速上手示例

; 1 自动打开记事本并输入文字 运行程序\notepad.exe
延迟\1000,1500
激活窗口\记事本
延迟\500,500
文本输入\Hello World\

; 2 定时检测窗口 模块定义\窗口检测
判断窗口\微信,存在,存在结果
如果\比较@存在结果,等于,1,比较结果
成功\弹窗提示\微信已运行!\模块定时\窗口检测,0,关闭
失败\悬浮提示\未检测到微信,100,100,1
结束模块定义\

模块定时\窗口检测,5000,重复
延迟\10000,10000\

; 3 图像识别点击关闭按钮 变量\左,600\变量\上,400\变量\右,800\变量\下,600
循环\0
如果\识图@左,@上,@右,@下,0.1,<图标>,标记,数量,X,Y,等待出现,10
成功\识图移动\0,0\鼠标\左键单击\延迟\500,500\终止循环
失败\延迟\1000,1000
结束循环
弹窗提示\广告已关闭\

; 4 一个简单倒计时 变量\倒计时,5\ ; 设置初始值

循环\5\ ; 循环5次 悬浮提示\剩余 @倒计时 秒,0,0,1
延迟\1000,1000\ ; 等待1秒 运算@倒计时,减,1,倒计时\ ; 倒计时减1 结束循环\

弹窗提示\时间到!\

; 5 移动鼠标到 a b 的图像 中间 如果\识图\0,0,0,0,0.1,,标记结果,识图数量,X1,识图Y\与\识图\0,0,0,0,0.1,,标记结果,识图数量,X2,识图Y
成功\运算@X2,减,@X1,距离
成功\运算@距离,除,2,半
成功\运算@X1,加,@半,中间
成功\鼠标移动@中间,@识图Y\

====================== 九、完整综合脚本示例

; 综合示例:自动登录游戏+循环检测血量+超时退出 ; 1. 初始化变量 变量\登录成功,0
变量\重试次数,0
变量\最大重试,3\

; 2. 定义登录模块 模块定义\登录游戏
鼠标移动\500,300
鼠标\左键单击
延迟\1000,1500
按键\Enter
延迟\2000,3000
结束模块定义\

; 3. 执行登录流程,带重试机制 循环\0
; 超过最大重试次数退出 如果\比较@重试次数,大于等于,@最大重试,重试结果
成功\弹窗提示\登录重试次数耗尽,退出脚本
成功\终止循环\

; 识别开始游戏按钮 如果\识图\100,200,300,400,0.1,<开始游戏>,标记结果,识图数量,识图X,识图Y,等待出现,3
成功\识图移动\0,0\鼠标\左键单击\延迟\500,1000
成功\模块\登录游戏
成功\变量\登录成功,1
成功\终止循环
失败\运算@重试次数,加,1,重试次数
失败\延迟\1000,2000
结束循环\

; 4. 登录成功后,循环检测血量 如果\比较@登录成功,等于,1,登录结果
成功\弹窗提示\登录成功,开始血量监控
成功\循环\0
; 坐标找色检测血量条颜色 如果\坐标找色\455,580,0xAE7222,血量色值
成功\悬浮提示\血量正常,0,0,1
失败\弹窗提示\血量过低,自动退出
失败\终止循环
; 延迟1秒检测一次 延迟\1000,1000
结束循环
失败\弹窗提示\登录失败\

====================== 十、AI生成代码强制自检清单

生成代码后,必须逐条校验以下规则,全部符合才可输出,否则会触发语法错误/执行失效

  1. 所有代码行严格左侧对齐,无任何空格、Tab开头的缩进
  2. 所有指令关键字、参数关键字均为小写英文字母,无中文全角符号
  3. 所有指令与参数之间用\分隔,无参数的指令末尾也保留\
  4. 同一指令的多个参数之间用英文逗号,分隔,无空格
  5. 所有变量引用均使用@变量名格式,无缺省@的情况
  6. 所有注释均以;开头且独占一行,无注释与指令同行的情况
  7. 成功\、失败\分支后仅接基本指令,无嵌套判断指令、结构体的情况
  8. 循环控制指令返回循环\、终止循环\均独立成行,无其他指令同行的情况
  9. 循环结构体、模块结构体均成对出现,无嵌套同类型结构体的情况
  10. 模块定义均写在模块调用之前,无调用未定义模块的情况
  11. 所有指令的参数数量、顺序、取值范围均符合本文档规范,无缺省必填参数的情况
  12. 识图移动\指令仅用在识图\指令的成功\分支内,无单独使用的情况