Skip to content

MaaLYSK开发规范

一、Pipeline JSON 文件管理规范

目录结构

所有 Pipeline JSON 文件统一存放在 /pipeline/ 目录下,按功能类型划分子文件夹:

bash
/pipeline/
  ├── base.json                 # 高复用基础节点(主页面点击、当前页面确认等)
  ├── mainmap.json              # 高复用导航节点(返回操作)
  ├── popop.json                # 高复用弹窗节点(牵绊度提升、点击空白继续等)
  ├── daily/                    # 日常
  ├── weekly/                   # 周常
  ├── fight/                    # 作战
  ├── event/                    # 限时活动
  ├── playtime/                 # 快乐出游(喵喵牌/娃娃机)
  └── feature/                  # 特色功能

文件命名规范

采用蛇形命名法(snake_case),全部使用小写字母,单词间以下划线连接。

存放位置命名要求示例
/pipeline/高复用节点文件与游戏启动文件,功能命名base.jsonmainmap.jsonpopop.json
./daily/日常任务,一般以 daily_ 为前缀daily_energy.jsondaily_shopping.json
./weekly/周常任务,一般以 weekly_ 为前缀weekly_end.jsonweekly_shopping.json
./fight/作战,使用战斗板块英文名称bounty_hunt.json
./event/限时活动,建议以 event_ 为前缀event_daily_get.jsonevent_shopping.json
./playtime/快乐出游小游戏,使用中文拼音或英文翻译catcard_collectweekly_game_catchtoy.json
./feature/特色功能,使用中文拼音或英文翻译message.jsontelephone.json

IMPORTANT

特殊说明

  • 限时活动中,每日领取、读剧情等节点可以直接复用,因此每次只需重新截图即可。小游戏等可以存个备份,最后加上活动的日期或活动名。
  • 特色功能部分目前只有手机读朋友圈/短信/电话等功能,后续如果板块增多需考虑加上phone的前缀。

文件存放规范

  • daily、weekly文件夹:放置仅为完成日常/周常而设定的任务

  • 其他文件夹:放置对应板块的任务,如快乐出游、战斗、限时活动等。

    可以利用对单个json加前缀的方式区别其属于日常/周常任务,如weekly_game_catchtoy.jsonevent_daily_get.json等。

二、节点命名规则

同样采用蛇形命名法(snake_case),但节点命名为中文,下划线为隔开前缀/后缀的标志。

多复用节点命名规则

多复用节点指可在多个 Pipeline 中重复使用的子流程,统一存放在 /pipeline/ 目录下。

目前多复用节点大致分为三类:入口导航节点、右上角返回节点、弹窗节点、选人节点。

其中,选人节点由于通用、无需新增,具体参照代码编写指南-选人模块进行使用即可。

文件功能说明命名规则示例
base.json主页面、各版块菜单的点击节点
对应页面的确认节点
各种通用 [JumpBack] 节点
点击xx
xx页面确认
点击商城
商城页面确认
进入手机信息
mainmap.json返回上一页按钮
返回上级页面
返回主页面
导航回xx页面(xx)导航回主页面
导航回上级页面
popop.json各类弹窗节点
(牵绊度提升、获取奖励)
退出xxpopop
确定返回xxpopop
取消返回xxpopop
退出牵绊度popop
退出获取奖励popop
确定返回快乐出游popop
  • 利用base里的节点可以很好地复用入口节点。

  • 利用popop里的节点可以很好地复用弹窗节点。

  • basepopop节点写好后,把它们添加到mainmap对应的“返回上一级页面”等节点中,便于更好的复用。

  • 请在写上述几类节点前,先查查这几个文件中有没有已经写好的节点,没有的话写好后也放到对应文件夹里。

  • 确定返回xxpopop取消返回xxpopop具体参照腾讯文档 - MaaLYSK收集表和代码编写指南

其他节点命名规则

具体参照MaaLYSK现有代码实例。

前缀规则

为了增强区分度,节点最好加上前缀以便区分,而不是简单地使用“一次点击”、“点点点”等名称。

  • 对于有日常周常活动之分的,加上日常_周常_的前缀。

    例:日常_点击礼包周常_点击礼包

  • 对于各个板块里的识别点击节点,加上各版块的前缀。

    例:喵喵牌_点击快乐出游芯核向左滑写真_选择祁煜

战斗规则

  • 自动追击命名规则:芯核自动追击1次、豆佬自动追击10次
  • 可以选择关卡的命名:选择追踪豆佬关卡,然后在interface中选择相关内容

其他规则

  • 每一个开始类节点(interface中的entry入口),命名为进入xx

    例:“进入星间探测”"进入自动读短信"

  • 节点命名尽量与识别内容(OCR文字、图片名称)进行匹配

    NOTE

    内容匹配:

    如OCR识别内容为确定,节点命名成”前缀_xx_确定“,不要写成确认

    图片里识别内容为一键领取等类似内容,节点命名与图片内容、图片名称尽量一致。

三、图片存放规范

目录结构

所有图片资源统一存放在 /image/ 目录下,按功能模块划分子文件夹:

bash
/image/
  ├──                   # 通用图片(领取、确认、关闭、男主图片识别等)
  ├── login/            # 登录相关图片
  ├── mainmap/          # 主界面导航返回相关图片
  ├── popop/            # 弹窗退出相关图片
  ├── fight/            # 战斗相关图片
  ├── event/            # 限时活动相关图片
  ├── phone/            # 手机相关图片
  ├── playtime/         # 快乐出游相关图片
      ├── catcard/      # 喵喵牌
      ├── catchtoy/     # 娃娃机
  ├── feature/          # 特色功能相关图片
  ├── task/             # 任务完成相关图片(主要为日常、周常)
      ├── daily/        # 日常
      ├── weekly/       # 周常
  └── shopping/         # 购物相关图片(通用)
      ├── daily/        # 日常购物(对应 daily_shopping.json)
      ├── weekly/       # 周常购物(对应 weekly_shopping.json)
      └── event/        # 活动购物(对应 event_shopping.json)

图片引用

在 JSON 文件中引用图片时,使用相对路径:

json
"商城每日礼包": {
  "recognition": {
    "type": "TemplateMatch",
    "param": {
      "template": ["shopping/daily/商城每日免费礼包.png"],
      "roi": [60, 279, 583, 926],
      "order_by": "Score",
      "threshold": [0.85]
    }
  },
  "action": {
    "type": "Click",
    "param": {}
  },
  "timeout": 5000,
  "next": ["每日礼包领取", "每日礼包售罄"]
},

四、MaaLYSK格式化要求

MaaLYSK 使用一系列的格式化工具来保证仓库中的代码和资源文件美观统一,以便于维护和阅读

请确保在提交之前已经格式化,或是启用 Pre-commit Hooks 进行自动格式化

格式化插件列表

目前启用的格式化工具如下:

文件类型格式化工具
JSON/Yamlprettier
MarkdownMarkdownLint

其中,prettier使用MaaFW的格式化小工具 | prettier-plugin-maafw-sort进行格式化。

Prettier 插件,按照生命周期顺序自动排序 pipeline 字段

sh
npm i -D @nekosu/prettier-plugin-maafw-sort

利用 Pre-commit Hooks 自动进行代码格式化

TIP

实际协作中,在 vscode 中开发,安装推荐的插件后,基本就可以完成自动格式化了,故该部分可跳过。

  1. 确保你的电脑上有 Python 与 Node 环境

  2. 在项目根目录下执行以下命令

    bash
    pip install pre-commit
    pre-commit install

如果pip安装后依然无法运行pre-commit,请确认pip安装地址已被添加到PATH

接下来,每次提交时都将会自动运行格式化工具,来确保你的代码格式符合规范

手动触发: pre-commit run --all-files

五、代码编写规范

采用pipelineV2、interfaceV2规范。

六、各种ROI、target

放置一点通用节点的roi、target参数,方便统一使用

1、侧边点击的target(在获得奖励、领取等页面点击的侧面):[19,936,12,13],[64, 894, 3, 3](娃娃机结算卡) 芯核追击完成获得奖励

2、fight/自动追击1次.png(芯核为单独位置,此为零点追踪的通用位置)

  • ROI:[208, 939, 45, 45]
  • target:[179, 952, 30, 20]

3、fight/自动追击10次.png

  • ROI:[338, 941, 50 42]
  • target:[318, 954, 30, 20]

4、选择追踪关卡:

  • 9:ROI: [408, 306, 60, 68], target: [427, 330, 28, 30]

  • 8:ROI: [522, 445, 47, 50], target: [542, 461, 22, 22]

  • 7:ROI: [443, 589, 47, 68], target: [467, 611, 17, 15]

  • 6:ROI: [312, 712, 35, 55], target: [336, 732, 15, 15]

  • 5:ROI: [153, 612, 42, 47], target: [172, 629, 19, 18]

  • 4:ROI: [290, 494, 40, 51], target: [308, 510, 16, 17]

  • 3:ROI: [121, 358, 46, 50], target: [144, 378, 18, 14]

  • 2:ROI: [269, 261, 46, 52], target: [292, 282, 15, 14]

  • 1:ROI: [171, 167, 44, 53], target: [192, 188, 16, 14]

5、主页面识别(可以用共用节点已在主页面

ROI:[20, 56, 49, 35]

6、横屏战斗点击空白处关闭

  • ROI:[510,534,253,134]

7、退出战斗按钮

退出战斗按钮

ROI:[63,1,84,66]

8、检测到道具框(体力耗尽/喵喵牌耗尽等)

道具框检测

ROI:[412, 407, 137, 48]

9、返回键识别

返回键

ROI:[0,0,88,132]