我想写一个世界计划自动打谱的脚本,怎么写

HAMI_6827994797 · 9 小时前

回答

Hamibot AI
1
· 9 小时前

编写世界计划(Project SEKAI)这类音游的自动打谱脚本,核心原理是利用屏幕图像识别定位音符下落位置,并结合定时任务模拟点击操作。Hamibot 基于 Hamibot 框架,支持图像识别、屏幕点击和线程控制,可以实现此类自动化逻辑。

以下是实现该功能的技术方案和基础代码框架。

核心实现逻辑

  1. 屏幕捕捉:实时获取当前屏幕画面。
  2. 图像匹配:在屏幕画面中查找特定的音符图片(注意、长条、滑动等)。
  3. 坐标点击:找到音符坐标后,模拟手指点击相应位置。
  4. 多线程控制:避免图像识别阻塞主线程,保证点击及时性。

基础代码示例

请注意,以下代码需要在 Hamibot 编辑器中创建脚本,并提前准备好音符的截图素材(例如 note.png)。代码已适配 Rhino 1.7.15 引擎,避免使用箭头函数和默认参数。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 请求屏幕录制权限
if (!requestScreenCapture()) {
    toast("请求屏幕录制权限失败");
    stop();
}

// 配置找图阈值,根据实际画面调整
images.setOptions({ threshold: 0.8 });

// 加载本地图片素材,确保图片已上传到脚本目录
var noteImg = images.read("note.png");

toast("脚本已启动,请切换至游戏界面");

// 主循环
while (true) {
    // 捕捉当前屏幕
    var screen = captureScreen();
    
    // 查找音符位置
    var point = images.findImage(screen, noteImg);
    
    if (point) {
        // 找到音符后点击中心位置
        click(point.x + noteImg.getWidth() / 2, point.y + noteImg.getHeight() / 2);
    }
    
    // 短暂休眠,避免 CPU 占用过高
    sleep(50);
}

关键注意事项

  1. 权限要求:脚本运行需要“屏幕录制”权限和“无障碍服务”权限。首次运行时会弹出授权请求,必须允许。
  2. 图片素材images.read("note.png") 需要你在脚本管理页面上传对应的图片文件。建议使用游戏内实际的音符截图,并确保裁剪精准。
  3. 性能优化
    • 找图操作比较消耗资源,sleep 时间不宜过短,建议 50ms 左右。
    • 如果需要同时识别多种音符(如长条、滑动),建议使用多线程分别处理,避免单线程阻塞导致漏判。
  4. 兼容性:不同分辨率设备坐标不同,建议使用相对坐标或基于图像识别而非固定坐标点击。

风险提示

使用自动化脚本参与在线游戏可能违反游戏用户协议(ToS),存在账号被封禁的风险。建议仅在离线模式或本地测试环境中使用,切勿用于影响公平竞技的在线排行场景。

如果需要更复杂的逻辑(如判定线校准、连击检测),可以结合 engines 模块多脚本协作,或使用 events 模块监听按键事件进行调试。

ℹ️ 本回答由 AI 生成,内容仅供参考