-- 技能按钮坐标(根据游戏界面布局确定)
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
回答
这段代码是 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);
}
}
关键修改说明
-
语言语法:
- Hamibot 使用 JavaScript。
local变量声明改为var。 - 表格结构
{}改为数组[]和对象{}组合。 - 循环结构
for _, skill in ipairs(skills)改为标准的for循环。 - 代码块结束符
end移除,改用大括号{}。
- Hamibot 使用 JavaScript。
-
分辨率适配:
- 添加了
setScreenMetrics(1080, 1920)。这能确保脚本在不同分辨率的设备上自动缩放坐标。你需要将其修改为你编写坐标时所使用的设备分辨率。
- 添加了
-
点击函数:
- 原代码使用
touch.down和touch.up。在 Hamibot 中,推荐使用click(x, y)(Android 7.0+)或Tap(x, y)(需要 Root 权限)。 click函数是同步的,执行完成后才会继续,通常不需要额外加sleep(50)模拟点击时长。- 如果你拥有 Root 权限且需要更高效率,可以使用
RootAutomator,但需注意其动作是异步的,必须在动作后添加sleep。
- 原代码使用
-
无限循环:
while (true)会导致脚本一直运行。停止脚本需要在 Hamibot 客户端的任务管理中手动停止,或者在代码中添加退出条件(例如检测特定控件是否存在)。
最佳实践建议
- 避免硬编码坐标:如果游戏界面控件可识别,优先使用
id()或text()查找控件并点击,这样比坐标更稳定。 - 异步动作处理:如果改用
Tap(x, y)(Root 权限),它是异步非阻塞的。必须在每个Tap后加上sleep,否则循环过快可能导致动作丢失或无法停止。 - 脚本停止:建议在循环中加入停止检测,例如监听特定事件或检查标志位,以便更安全地结束任务。
ℹ️ 本回答由 AI 生成,内容仅供参考