本篇采用模块化说明重构过程。
签到
由于签到逻辑由 1.x 的和游戏启动绑定变为独立执行,所以整体都需要重写。
整体分析
首先判断是否在主页面,不在则尝试返回主页面,不行则重启。
确认在主页面,点击右上角区域进入签到页面,然后签到。
签到完成,返回主页面。
具体实现
1
参照 startup.json
完成,后续可能做成 custom recognition。
这里用到了新的功能 pipeline_override
,做一个简单说明。
1 2 3 4 5 6 7 8 9 10 11
| "位于主界面": { "recognition": "OCR", "expected": "相伴", "roi": [ 8, 72, 1257, 534 ], "action": "DoNothing" }
|
global.json
中,完成了 “位于主界面” (判断当前处于主界面)功能,但是只有判断的功能,现在想让该功能的next 列表变为想要执行的签到任务,方法如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| { "name": "每日签到", "entry": "每日签到", "pipeline_override": { "override_位于主界面": { "next": [ "签到事件开始" ] }, "override_点击空白区域": { "next": [ "七日签到" ] }, "返回主界面_fast": { "interrupt": [ "点击空白区域", "关闭悬浮窗", "退出功能列表", "点击返回按钮", "退出作战", "退出主线", "加载中", "加载中1", "其他特殊退出" ] } } }
|
2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| "签到事件开始": { "next": [ "进入签到页面" ], "interrupt": [ "点击签到入口" ] }, "进入签到页面": { "next": [ "处于签到页面", "进入签到页面" ] }, "处于签到页面": { "next": [ "已签到" ], "interrupt": [ "点击空白区域", "未签到" ] }, "未签到": { "next": [ "点击签到" ] }, "已签到": { "next": [ "位于主界面" ], "interrupt": [ "点击空白区域", "七日签到", "返回主界面_fast" ] }, "七日签到": { "next": [ "点击七日签到" ] }
|
整体采取状态+动作的方式设计,确保不会出问题。