Skip to content

Latest commit

 

History

History
170 lines (126 loc) · 4.17 KB

File metadata and controls

170 lines (126 loc) · 4.17 KB

脚本语法规则

位置

脚本文件:ESP32目录/resources/macros/......(.m文件)

语法

基本语法
A:0.1

按下A,0.1秒后抬起

1

抬起所有按键,等待1秒

A|B|HOME:0.5

同时按下A、B、Home键,0.5秒后抬起

按键对应关系

Y/X/A/B键对应:Y, X, A, B

L/ZL/R/ZR键对应: L/ZL/R/ZR

-/+/Capture/Home键对应:MINUS, PLUS, CAPTURE, HOME

十字键方向对应:TOP, BOTTOM, LEFT, RIGHT, TOPLEFT, TOPRIGHT, BOTTOMLEFT, BOTTOMRIGHT , CENTER (若同时设置多个十字键防线,会变为Center)

左/右摇杆按下:LPRESS, RPRESS

左右摇杆方向调整:LSTICK@+100,-20 RSTICK@-128,127(第一个数字为负为左,正为右;第二个数字为纵坐标,负为上,正为下。取值范围均为:-128-127)

进阶语法
--返回游戏界面(非Home页面)--
<return_game>
[common.return_home]
A:0.1
1.5

--: 以此开头的行为注释(必须在行首使用)

<return_game>: 宏的区块开始标识,并标记区块名称,可通过[目录.文件.区块名称]调用,同时还可以设置web接口调用标题与参数

[common.return_home]: 区块调用,调用common.m文件return_home区块

实际案例
--雷吉洛克/雷吉斯奇鲁--
<regirock|雷吉洛克/雷吉斯奇鲁(定点)|999999--secondary|副设备(副设备启动游戏时校验)|False>
{
    [common.wakeup_joystick]
    [pokemon.swsh.common.restart_game]
    body:
    A:0.1
    1
    A:0.1
    1.2
    A:0.1
    6.5
    [pokemon.swsh.common.battle_check_shiny]
    A:0.1
    0.5
    # 走到左上角墙角
    LStick@-127,0:1.8
    LStick@9,0:0.05
    0.3
    LStick@0,-127:0.8
    LStick@0,9:0.05
    0.2
    LStick@0,-127:0.3
    LStick@9,0:0.05
    0.3
    LStick@-127,0:0.3
    LStick@9,0:0.05
    0.7
    # 踩灯 第3排
    LStick@0,127:1.71
    LStick@0,-9:0.05
    0.3
    LStick@127,0:2.5
    LStick@-9,0:0.05
    0.7
    # 踩灯 第2排
    LStick@0,-127:0.52
    LStick@0,9:0.05
    0.3
    LStick@-127,0:2.1
    LStick@9,0:0.05
    0.7
    # 踩灯 第1排
    LStick@0,-127:0.52
    LStick@0,9:0.05
    0.3
    LStick@127,0:2.7
    3
    # 等待 并走到石像前
    A:0.1
    1
    LStick@-127,0:0.5
    0.2
    LStick@0,-127:1
    0.2
}
  • 标题行:

    • 以--分割标题与参数部分,支持多参数。

    • 标题部分以|分割,分为3部分。第一部分为区块名称,脚本内部调用使用。第二部分为中文名称,web管理时只能看到中文名称,没有中文名称的区块不展示。第三部分为默认循环次数,web管理界面选择这个脚本时,会把循环次数首先设置为这个默认值。

    • 参数部分以|分割,分为3部分。第一部分为参数名称,第二部分为中文名称,同样是web管理时展示使用,第三部分为参数默认值,也是web管理时页面选择脚本时,该参数会默认修改为设定的值

  • "body:" : 标记重复运行时循环起始位置,body:标记前一般为前置设置

  • /# : 注释行,无实际意义(必须在行首使用)

  • {}: 匿名区块,单独使用无实际意义,后可跟?或*语句

    {5}?secondary
    
  • ?secondary: 根据配置中的secondary标识,设置{}内部分脚本是否执行

    {5}*5
    
  • *5: {}内部分脚本重复执行5次

  • ?与*运算支持表达式,如:

    # 暂停五秒,并循环3次(2+1)
    
    {5}*(1+2)
    
    # 暂停五秒,因为3>2为True
    
    {5}?(3>2)
    
    # 暂停五秒,并循环a+b次,小数部分截取(虽然支持变量,但是由于变量本质上都界面发送,都是字符串,所以要先把变量转化为数值才可以计算)
    
    {5}*(int(float(a)+float(b))
    
    # 当A为True,B为False的时候暂停5秒(还是由于变量本质都是字符串的原因,要以字符串形式判断,由于bool类型的强制类型转换比较特殊,建议直接判断字符串内容即可,注意字符串大小写)
    
    {5}?(a=="True" and b=="False")