一个基于 Python + 图像识别 + 输入自动化 的 FH6 视觉脚本工具。
支持 循环跑图 / 批量买车 / 超级抽奖 / 移除车辆 / 多模块串联 / 无限循环挂机。
仅供 Python 自动化技术交流与学习使用,请勿用于商业用途或破坏游戏平衡。
因使用本工具造成的任何后果(包括但不限于封号、异常、损失等),由使用者自行承担。
FH6Auto 是一个围绕游戏界面自动识别与流程控制设计的桌面自动化工具。
项目以 图像识别 作为流程引导核心,尽量避免纯按键脚本“盲操作”带来的失控风险。
工具通过以下方式实现自动执行:
- 截图识别当前游戏状态
- 动态判断是否进入目标页面
- 触发键盘 / 鼠标操作
- 在出错时自动尝试恢复运行环境
相比传统纯按键脚本,本项目在稳定性、适应性和可控性方面更好。
- 自动进入菜单
- 自动切换创意中心 / EventLab
- 自动输入蓝图分享代码
- 自动匹配目标车辆
- 自动循环开始赛事
- 支持按设定次数重复执行
- 自动进入车辆收藏
- 自动定位目标品牌
- 自动选择指定车辆
- 自动重复购买
- 支持按设定次数批量执行
- 自动进入买车流程
- 自动定位目标车辆
- 自动进入升级 / 熟练度界面
- 自动按技能矩阵点技能
- 支持技能点耗尽后自动结束模块
支持模块串联形成完整流水线:
跑图 → 买车 → 抽奖 → 重置计数 → 下一轮
可配置:
- 是否继续到下一模块
- 是否在三模块完成后重新循环
- 总循环次数
- 近似无限挂机执行
请先购买一辆用于跑图的 斯巴鲁 Impreza 22B-STi Version,并完成以下准备:
- 调校至 S2 900
- 将该车辆加入收藏
- 不要有任何涂装
- 关闭任何滤镜、HDR等影响色彩的内容
- 游戏已经正常启动
- 游戏设置为 简体中文
- 键盘输入法切换为 英文键盘
- 游戏内建议设置为 自动转向 , 自动挡 ,难度 所向披靡
- 游戏界面尽量保持稳定
- 不要随意切换到其他窗口,以免影响识图结果
在程序主界面中可设置:
- 跑图次数
- 买车次数
- 抽奖次数
- 蓝图分享代码
- 总循环次数
- 是否串联下一模块
- 是否启用三模块大循环
- 是否开启自动重启机制
- 自动重启命令
在“超级抽奖”模块区域中:
- 点击方向按钮添加技能路径
- 点击“清除矩阵”重置路径
- 蓝色格子表示当前技能行走路径
可独立启动任意模块:
- 循环跑图
- 批量买车
- 超级抽奖
程序会从对应模块开始执行。
如果勾选箭头处的“继续”选项,则模块会自动串联,例如:
- 跑图完成后继续买车
- 买车完成后继续抽奖
如果再勾选 LOOP -> 循环清零,则三模块完成后会自动进入下一轮。
可通过以下方式停止:
- 点击界面中的停止按钮
- 按下键盘 F8
停止后程序会尽量:
- 停止当前线程
- 释放所有已按下的按键
- 恢复主界面状态
项目支持替换主要识图模板,常见自定义图片如下:
CCbrand.png:消耗品车辆品牌consumablecar.png:用于点技能拿超级抽奖的消耗品车newCC.png:标记新车的消耗品车skillcar.png:用于跑图刷技能点的车辆该车辆必须已加入收藏,并在图中显示收藏图标
项目中的 images 模板图支持:
- 优先读取程序目录外部
images - 外部没有时再读取内置资源
- 启动时可自动释放模板图到外部目录
这样做的好处是:
- 用户可以自行替换模板
- 可微调识图适配不同画质 / 分辨率 / UI 状态
- 更方便维护与迭代
如果执行过程中发生以下情况:
- 图像识别失败
- 当前界面异常
- 流程中断
- 游戏闪退
程序会优先尝试:
- 检查游戏进程
- 聚焦游戏窗口
- 退回漫游 / 菜单
- 自动恢复到可继续执行的状态
如果启用了自动重启:
- 会尝试使用预设命令重新启动游戏
- 并在识别到继续界面后恢复流程
自动恢复不能保证 100% 成功,但相比无保护脚本,稳定性会更高。
本项目并不是简单的固定坐标点击器,而是结合以下技术进行界面识别:
pyautogui截图opencv-python (cv2)模板匹配numpy图像处理
对当前游戏界面进行识别后,再决定下一步动作,因此相比纯脚本具有更高的适应性与可控性。
传统脚本常见问题包括:
- 不判断页面状态
- 一直机械按键
- 一旦卡界面就彻底跑偏
本项目尽量通过识图确认:
- 当前是否在漫游界面
- 是否进入主菜单
- 是否找到指定按钮
- 是否已进入升级页
- 是否出现继续游戏 / 欢迎界面 / 重启页面
只有识别到正确状态,才执行后续动作。
项目内包含多层保护逻辑,例如:
关键步骤前会确认:
- 是否成功进入菜单
- 是否识别到目标页面
- 是否找到指定图片模板
- 是否仍在运行状态
当模块执行失败时,会尝试:
- 检测游戏进程是否仍存在
- 自动聚焦游戏窗口
- 自动尝试退回菜单 / 漫游
- 从中断模块继续执行剩余流程
当检测到游戏进程不存在时,可选择:
- 执行自定义启动命令
- 等待游戏重新启动
- 自动识别欢迎页 / 继续游戏界面
- 尝试重新回到游戏并恢复执行
脚本停止时会主动释放:
- 方向键
- Enter / Esc / Backspace / Space
- 持续按住的 W 键等
避免因为异常退出导致“卡键”。
你可以把它理解成一个可编排的小型挂机流水线:
- 先跑图刷收益
- 再自动买车
- 然后自动点熟练度拿抽奖
- 完成后进入下一轮
配合总循环数设置,可以长时间无人值守运行。
如果将循环次数设置得足够高,也可视作“无限循环挂机”。
超级抽奖模块支持手动设置技能点路径。
用户可以通过 UI 中的方向按钮,自定义:
- 上
- 下
- 左
- 右
形成一条技能路径矩阵,用于适配不同车辆的熟练度树。
本项目主要基于以下 Python 技术栈:
- customtkinter:现代化桌面 UI
- opencv-python:模板匹配 / 图像识别
- numpy:图像数组处理
- pyautogui:截图与基础自动化
- pydirectinput:更适合游戏场景的输入模拟
- ctypes / win32gui:窗口聚焦、DPI 适配、底层输入
- threading:后台任务执行
- PIL:资源图像加载
- requests:版本更新检查
- 面向 Windows 环境
- 支持不同分辨率下的模板缩放匹配
- 使用 DPI 感知处理,减少高缩放显示下的坐标偏差
- 支持主界面最小化执行逻辑
- 支持热键 F8 紧急停止