// 悟空控制平板
auto();

console.log("悟空法力启动");
toast("3秒后开始");
sleep(3000);

// 返回桌面
home();
sleep(1000);

// 点击屏幕中心
click(1280, 800);
sleep(2000);

// 向下滑动
swipe(1280, 1200, 1280, 800, 300);

console.log("完成");
toast("悟空法力施展完毕");

HAMI_6171752888 · 9 小时前
第 1 条补充
·
9 小时前

auto.waitFor();

log("打开 QQ");
toast("3秒后打开 QQ");
sleep(3000);

// 返回桌面
home();
sleep(1000);

// 点击 QQ 图标(你的坐标)
click(1280, 800);
log("已点击 QQ");

toast("QQ 已打开");
auto.waitFor();

log("开始刷动态");
toast("3秒后开始刷");
sleep(3000);

// 连续滑动 10 次
for (let i = 0; i < 10; i++) {
swipe(1280, 1200, 1280, 800, 300);
log(第 ${i+1} 次滑动);
sleep(1500);
}

toast("刷完了");
auto.waitFor();

// 模拟业力识别
let karmaType = "恐惧"; // 可以从三界系统获取

if (karmaType == "恐惧") {
toast("检测到恐惧业力,返回桌面冷静一下");
home();
} else if (karmaType == "愿力") {
toast("愿力升起,打开 QQ 传递善意");
click(1280, 800);
}

回答

Hamibot AI
1
· 9 小时前

这段脚本可以实现基础的坐标操作。为了提升稳定性和兼容性,建议进行以下优化:

  1. 无障碍服务等待:使用 auto.waitFor() 代替 auto()auto() 在无障碍服务未启动时会直接停止脚本,而 auto.waitFor() 会等待服务启动后继续运行,避免脚本意外终止。
  2. 日志输出:推荐使用 log() 代替 console.log(),以便在 Hamibot 控制台统一查看日志。
  3. 代码规范:在脚本开头添加文档地址注释,便于维护和查阅。
  4. 分辨率适配:坐标操作依赖屏幕分辨率,不同设备需要调整坐标值。若需更高兼容性,建议结合 images 找图或 widgets 控件操作。

优化后的代码如下:

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

log("悟空法力启动");
toast("3 秒后开始");
sleep(3000);

// 返回桌面
home();
sleep(1000);

// 点击屏幕中心
click(1280, 800);
sleep(2000);

// 向下滑动
swipe(1280, 1200, 1280, 800, 300);

log("完成");
toast("悟空法力施展完毕");

注意:坐标操作在不同分辨率的设备上可能失效,建议在实际运行前确认设备分辨率或使用找图功能替代固定坐标。


补充回答 1

这段脚本逻辑清晰,但在 Hamibot 环境中存在语法兼容性和稳定性风险。Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,不完全支持 ES6 语法,且坐标操作受分辨率影响较大。

主要优化建议:

  1. 语法兼容性:将 let 改为 var,去除模板字符串(`...${}...`),改用字符串拼接,确保在 Rhino 引擎下稳定运行。
  2. 应用启动:使用 launchApp 代替 home() 加坐标点击,避免不同设备分辨率导致点击失败。
  3. 服务等待auto.waitFor() 只需在脚本开头调用一次,无需重复调用。
  4. 代码规范:在代码开头添加文档地址注释。

优化后的代码如下:

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

log("打开 QQ");
toast("3 秒后打开 QQ");
sleep(3000);

// 启动 QQ 应用
launchApp("QQ");
sleep(5000);
log("已点击 QQ");

toast("QQ 已打开");

log("开始刷动态");
toast("3 秒后开始刷");
sleep(3000);

// 连续滑动 10 次
var i = 0;
while(i < 10) {
    swipe(1280, 1200, 1280, 800, 300);
    log("第 " + (i + 1) + " 次滑动");
    sleep(1500);
    i++;
}

toast("刷完了");

// 模拟业力识别
var karmaType = "恐惧";  // 可以从三界系统获取

if (karmaType == "恐惧") {
    toast("检测到恐惧业力,返回桌面冷静一下");
    home();
} else if (karmaType == "愿力") {
    toast("愿力升起,打开 QQ 传递善意");
    // 若需再次打开可调用 launchApp("QQ")
}

注意事项:

  1. 坐标适配swipeclick 的坐标基于特定分辨率(如 1920x1080 或 2560x1600)。在不同平板上运行时,需根据实际屏幕尺寸调整坐标值,或使用 images.findMultiColors 进行找图操作以提高兼容性。
  2. 权限要求:脚本运行需要授予 Hamibot 无障碍服务权限,launchApp 不需要额外权限,但界面操作依赖无障碍服务。
  3. 循环语法:使用 while 循环配合 var 是 Rhino 引擎中最稳定的写法,避免使用 for (let ...) 结构。
ℹ️ 本回答由 AI 生成,内容仅供参考