回答
编写小游戏自动化脚本(自动看广告、跳过广告、合成玩法)需要结合 Hamibot 的 UI 控件识别与图像识别能力。由于广告 SDK 和游戏渲染方式差异较大,脚本需采用模块化设计并预留适配空间。以下为可直接运行的基础框架与实现指南。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 配置参数
var AD_WATCH_TIMEOUT = 30000;
var SKIP_KEYWORDS = ["跳过", "关闭", "X", "跳过广告", "跳过视频"];
var WATCH_KEYWORDS = ["观看广告", "看视频领奖励", "免费获取", "看广告"];
var GAME_CLICK_INTERVAL = 800;
// 主循环
while (true) {
try {
handleAds();
playMergeGame();
sleep(2000);
} catch (e) {
log("运行异常: " + e);
sleep(3000);
}
}
// 广告处理模块
function handleAds() {
// 1. 优先尝试跳过
for (var i = 0; i < SKIP_KEYWORDS.length; i++) {
var btn = text(SKIP_KEYWORDS[i]).findOne(800);
if (btn) {
log("检测到跳过按钮");
btn.click();
sleep(1500);
return;
}
}
// 2. 尝试触发观看广告
for (var j = 0; j < WATCH_KEYWORDS.length; j++) {
var btn = text(WATCH_KEYWORDS[j]).findOne(800);
if (btn) {
log("触发观看广告");
btn.click();
waitForAdEnd();
return;
}
}
}
// 等待广告结束
function waitForAdEnd() {
var start = new Date().getTime();
while (new Date().getTime() - start < AD_WATCH_TIMEOUT) {
var closeBtn = text("关闭").findOne(500);
if (closeBtn) {
closeBtn.click();
log("广告结束");
return;
}
sleep(1000);
}
log("广告超时,返回上一页");
back();
}
// 合成类游戏模块
function playMergeGame() {
// 合成类游戏多使用 Canvas 或自定义 View,UI 树通常无法获取元素
// 方案 A:固定坐标点击(需根据设备分辨率适配)
var centerX = device.width / 2;
var centerY = device.height * 0.6;
click(centerX, centerY);
sleep(GAME_CLICK_INTERVAL);
// 方案 B:图像识别(推荐)
// var target = images.read("./merge_target.png");
// var point = images.matchTemplate(captureScreen(), target, { threshold: 0.8 }).point;
// if (point) { click(point.x, point.y); }
}
关键实现说明
- 跳过/观看广告:广告按钮文案因 SDK 而异。脚本通过遍历常见关键词匹配
text()控件,找到后点击并等待。若广告无明确控件,可改用desc()或id()匹配。 - 广告结束检测:采用轮询检测“关闭”按钮或超时机制。部分广告会直接返回游戏界面,可结合
currentActivity()判断是否已切回主界面。 - 合成类游戏自动化:
- 若游戏使用原生控件,可直接用
text()/id()定位格子并点击。 - 若为 Canvas 渲染(绝大多数合成游戏),需使用
images模块进行模板匹配或颜色定位。建议先截取目标格子图片,使用images.matchTemplate()获取坐标后点击。 - 坐标方案需配合
device.width/device.height做比例换算,避免不同分辨率失效。
- 若游戏使用原生控件,可直接用
稳定性与最佳实践
- 随机延迟:在
sleep()中加入随机值(如sleep(500 + random(0, 300)))降低风控触发概率。 - 异常恢复:主循环包裹
try...catch,超时或卡死时调用back()或home()重置状态。 - 权限要求:确保已开启无障碍服务、悬浮窗权限(用于截图识别)及后台运行权限。
- 调试工具:使用 Hamibot 客户端的“布局分析”查看控件属性;使用“截图分析”获取图像识别阈值。
适配建议
不同游戏与广告联盟的 UI 结构差异较大。首次运行前,建议:
- 打开目标游戏,使用 Hamibot 布局分析器记录广告按钮的
text/desc/id。 - 对合成界面截图,提取关键格子的颜色特征或模板图片。
- 将实际特征替换到脚本的关键词数组或图像识别逻辑中。
如需针对具体游戏提供控件定位策略或图像识别参数调优方法,可提供游戏名称或界面截图特征,我将给出精确的适配代码。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实