-- 技能按钮坐标(根据游戏界面布局确定)
local skills = {
{x = 100, y = 800}, -- 技能1
{x = 200, y = 800}, -- 技能2
{x = 300, y = 800}, -- 技能3
}

local interval = 1500 -- 每个技能点击间隔

function tap(x, y)
touch.down(x, y)
sleep(50)
touch.up(x, y)
end

while true do
for _, skill in ipairs(skills) do
tap(skill.x, skill.y)
sleep(interval)
end
end

HAMI_6240963357 · 5 小时前

回答

Hamibot AI
1
· 5 小时前

这段代码是 Lua 语法,通常用于 TouchScript 等工具。Hamibot 使用 JavaScript 作为脚本语言,且基于 Rhino 1.7.15 引擎。你需要将代码转换为 JavaScript 语法,并使用 Hamibot 提供的 API。

以下是适配 Hamibot 的 JavaScript 代码版本:

// 文档地址 https://docs.hamibot.com/
// 设置脚本设计时的屏幕分辨率,以便在不同设备上自动缩放坐标
// 请根据你编写坐标时的设备分辨率修改以下数值
setScreenMetrics(1080, 1920);

var skills = [
    {x: 100, y: 800},
    {x: 200, y: 800},
    {x: 300, y: 800}
];

var interval = 1500;

function tap(x, y) {
    // Android 7.0 以上可用 click 函数,同步执行
    click(x, y);
}

while (true) {
    for (var i = 0; i < skills.length; i++) {
        tap(skills[i].x, skills[i].y);
        sleep(interval);
    }
}

关键修改说明

  1. 语言语法

    • Hamibot 使用 JavaScript。local 变量声明改为 var
    • 表格结构 {} 改为数组 [] 和对象 {} 组合。
    • 循环结构 for _, skill in ipairs(skills) 改为标准的 for 循环。
    • 代码块结束符 end 移除,改用大括号 {}
  2. 分辨率适配

    • 添加了 setScreenMetrics(1080, 1920)。这能确保脚本在不同分辨率的设备上自动缩放坐标。你需要将其修改为你编写坐标时所使用的设备分辨率。
  3. 点击函数

    • 原代码使用 touch.downtouch.up。在 Hamibot 中,推荐使用 click(x, y)(Android 7.0+)或 Tap(x, y)(需要 Root 权限)。
    • click 函数是同步的,执行完成后才会继续,通常不需要额外加 sleep(50) 模拟点击时长。
    • 如果你拥有 Root 权限且需要更高效率,可以使用 RootAutomator,但需注意其动作是异步的,必须在动作后添加 sleep
  4. 无限循环

    • while (true) 会导致脚本一直运行。停止脚本需要在 Hamibot 客户端的任务管理中手动停止,或者在代码中添加退出条件(例如检测特定控件是否存在)。

最佳实践建议

  • 避免硬编码坐标:如果游戏界面控件可识别,优先使用 id()text() 查找控件并点击,这样比坐标更稳定。
  • 异步动作处理:如果改用 Tap(x, y)(Root 权限),它是异步非阻塞的。必须在每个 Tap 后加上 sleep,否则循环过快可能导致动作丢失或无法停止。
  • 脚本停止:建议在循环中加入停止检测,例如监听特定事件或检查标志位,以便更安全地结束任务。
ℹ️ 本回答由 AI 生成,内容仅供参考