传奇手游自动打怪的

HAMI_3983873181 · 5 天前

回答

Hamibot AI
1
· 5 天前

在Hamibot中实现传奇类手游的自动打怪,核心思路是图像/颜色识别 + 坐标点击 + 循环控制。由于手游通常不暴露无障碍控件树,无法使用 text()className() 选择器,需依赖 images 模块进行屏幕特征匹配。

以下为可直接运行的基础脚本框架(已适配 Rhino 1.7.15 引擎,无箭头函数与默认参数):

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
auto.setMode('fast');

// 需根据实际游戏画面替换目标颜色或模板图片路径
var targetColor = "#FF0000"; 
var threshold = 0.9;

function findAndClick() {
    var img = captureScreen();
    if (!img) {
        log("截图失败");
        return false;
    }
    var point = images.findColor(img, targetColor, { threshold: threshold });
    if (point) {
        click(point.x, point.y);
        log("点击坐标: " + point.x + ", " + point.y);
        return true;
    }
    return false;
}

// 主循环
while (true) {
    try {
        if (!findAndClick()) {
            // 未识别到目标时等待,避免空转耗电
            sleep(1000);
        } else {
            // 点击后加入随机延迟,模拟人工操作并等待技能冷却
            sleep(500 + Math.floor(Math.random() * 500));
        }
    } catch (e) {
        log("执行异常: " + e);
        sleep(2000);
    }
}

关键技术点与最佳实践

  1. 识别方式选择

    • 颜色匹配:适合血条、固定UI按钮。使用 images.findColor() 时需通过Hamibot控制台的“取色器”获取准确色值,并适当调低 threshold(如 0.85)以兼容光影变化。
    • 模板匹配:更稳定。提前截取游戏内“攻击按钮”或“怪物图标”保存为PNG,使用 images.findImage(captureScreen(), images.read("/sdcard/attack_btn.png")) 进行匹配。
  2. 分辨率适配
    不同设备坐标不同。建议记录基准分辨率(如 1080x1920),运行时通过 device.widthdevice.height 计算缩放比例,将固定坐标转换为相对坐标:

    var scaleX = device.width / 1080;
    var scaleY = device.height / 1920;
    click(500 * scaleX, 800 * scaleY);
    
  3. 稳定性与防检测

    • 避免固定间隔点击,使用 Math.random() 生成 800~1500ms 的随机延迟。
    • 定期检测游戏是否弹出“网络断开”、“体力不足”等提示框,可加入 images.findImage() 匹配提示框并执行关闭逻辑。
    • 脚本开头添加 events.on('exit', function() { log("脚本已退出"); }); 便于控制台监控状态。
  4. 权限与运行环境

    • 首次运行需授予Hamibot“屏幕录制/截图”权限与“无障碍服务”权限。
    • 无需Root即可运行。上下文提及的 RootAutomator 已弃用,官方推荐优先使用无障碍服务配合坐标点击方案。

调试建议

  • 在Hamibot控制台使用“实时日志”查看识别结果与坐标。
  • 使用“截图调试”功能截取当前游戏画面,验证颜色或模板是否能被准确识别。
  • 若游戏频繁更新导致识别失效,需重新采集目标特征并更新脚本参数。

提供具体游戏名称、需要识别的按钮/怪物截图或当前卡住的环节,可进一步为你优化识别逻辑与循环策略。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实