Skip to content

Releases: deYangar/FH6_Auto

v1.3.4

Choose a tag to compare

@github-actions github-actions released this 09 Aug 15:58

v1.3.4

🔧 修复

删车筛选失效:5 步跳搜导致短文本目标被跳过

  • 现象:v1.3.3 删车筛选阶段搜索 S1 等短文本目标时,列表持续向下滑动直到判到底,目标选项缺失,筛选失败中止删车。跑图选车筛选不受影响(目标均为长文本且靠前,首屏 OCR 即命中)
  • 根因:v1.3.3 将筛选搜索从 _search_and_focus(逐键搜索:每按 1 次 ↓ 就 OCR 一次)改为 _search_with_skip(5 步跳搜:每按 5 次 ↓ 才 OCR 一次)。短文本目标(如 S1,仅 2 字符)OCR 偶发漏识别时,5 次 ↓ 后目标已滚出可见区,后续再也找不到。同时新代码缺少 first_check 保护,step 0 未按键即开始累积卡底计数
  • 修复:回退 filter_nav.py 筛选搜索逻辑至 v1.3.2 的 _search_and_focus 逐键搜索,恢复 first_check 保护。v1.3.3 的其他改进(YOLO 校验、专精稳定化、等待硬上限等)全部保留
  • 影响范围:仅 filter_nav.py(-133/+100 行),不涉及其他模块

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 05 Aug 10:24

v1.3.3

🚀 优化与提速

OCR 选车提速 + 三阶段点击 fallback(PR #29,@hui-shao)

  • 搜索层提速:每步固定连按 5 次 ↓ 后做 1 次 OCR,OCR 频率从 1/1 降到 1/5(向下搜索安全:目标只能从屏底进入,跳 5 步后屏底进入 5 行新内容);卡底判定完整保留(像素差 3 次无变化 + OCR 文本相似 2 次 + 循环检测)
  • 命中层修复:点击坐标改为复选框中心 (rx1+rx2)/2,修复原 panel 水平中心点击距离复选框约 230px 导致勾选失败的问题;改为 SendMessage 单次后台点击 + hold=0.12 延长按压,避免复选框反复 toggle
  • 三阶段 fallback:① 鼠标后台点击 + 多次采样稳定判定(最快路径)→ ② 盲 Enter 兜底(失败回滚)→ ③ 键盘移动高亮 + Enter + 校正扫描(最稳路径保留)
  • 实测提速:列表 50 行、目标在 35 行时,约 14s → 6s(约 2~3 倍)

🔧 修复

后台车辆专精加点与全局恢复稳定性(PR #28,@AriaSulT)

  • 专精加点重构:归一化 ROI 检测技能树右上最终节点完成状态(粉色占比 ≥0.15);加点弹窗状态机(弹窗头部 lime 占比 ≥0.25 + 文本判定);「车辆已满专精」锁定弹窗检测与自动关闭;弹窗关闭等待(2.5s);光标归位(Down×6 + Left×6)与本地重试
  • 后台输入稳定化:检测到用户按 Alt/Win 切窗时暂停按键投递(0.15s 稳定等待 + 20ms 轮询),避免游戏失焦时把技能树两步操作拆开导致加错点或流程中断
  • 新增 481 行回归测试覆盖上述路径

筛选三阶段 fallback:阶段 3 预检修复

  • 阶段 3 按 Enter 前预检复选框状态:已勾选直接返回 True,避免第三次 toggle 导致筛选静默失效(慢机器采样漏判 + 阶段 2 双 Enter 翻转场景)
  • 卡底 / 循环 / 命中时补 _save_filter_debug 调试截图
  • 清理死代码:删除 _search_and_focus 与 enter_first=True 死分支

升级与调校等待硬上限 60s → 90s

  • 测试机加载慢时 61s 硬上限不够,_wait_for_uandt_ready 硬上限改为 max(90, timeout+45);交互超时(16s 按 Esc 自动续期)与慢速 Esc 间隔(3s)不变

超抽选车:YOLO 等级标签二次校验误杀真目标

  • 现象:超抽流程中 YOLO 已识别目标车辆(车型分类 conf 0.89+、NEW 角标交叉验证 conf 0.95+ 均通过),但等级标签 conf 波动至 0.34 时,二次校验硬门槛(0.50)不通过,降级模板匹配(classS2829.png)同样失败,最终拒绝上车,本批超抽直接结束
  • 原因:
    1. v1.3.1 将 YOLO 等级标签硬门槛定为 0.50,但该类实测 conf 波动范围 0.3~0.9,真目标标签可低至 0.34,0.50 门槛按高值设定导致误杀
    2. 门槛不过时降级的模板匹配兜底:模板 classS2829.png 截自左上角「选中车辆信息卡」,与车卡网格上的等级标签样式(边框/背景)不一致,网格区域匹配得分天然低于 0.72 阈值,兜底形同虚设且进一步误杀
  • 修复:YOLO 分支等级标签硬门槛 0.50 → 0.30(与 NEW 角标交叉验证阈值 tag_conf_floor 一致);YOLO 判定通过后不再触发冗余模板匹配
  • 验证:真实截图复现确认,真目标标签 conf 0.64~0.83 正常关联,波动低值 0.34 亦可过硬校验;模板匹配仅保留给 YOLO 完全未检出等级标签(cls_conf=0)的场景

🧪 测试与清理

  • 修复两个陈旧回归测试:test_strict_matcher_selects_first_visible_new_car 补 use_yolo=False(v1.3.0 后 YOLO 默认接管导致合成截图测试失效);删除守护已移除逻辑的孤儿测试 test_template_miss_checks_current_focus_before_navigation
  • 新增 tests/test_filter_nav.py:三阶段状态机测试(含阶段 3 预检回归)

🙏 感谢

感谢 @hui-shao(OCR 选车提速 + 三阶段点击 fallback)与 @AriaSulT(后台车辆专精加点与全局恢复稳定性)的贡献!

新项目推荐

🎰 FH6_Auto_Wheelspin — 自动消耗抽奖

刷图攒了一堆抽奖次数懒得手动点?新开源的配套工具 SuperDraw全自动消耗超级抽奖 / 普通抽奖:

  • 纯后台运行:PrintWindow 截图 + PostMessage 输入,不抢前台、不动鼠标,游戏不用置顶
  • OCR 实时识别奖品:PP-OCRv6 异构加速(DirectML GPU + Intel NPU),抽什么看得清清楚楚
  • 限定车双源判定,杜绝误卖:重复车弹窗缩写(内置 47 辆限定车别名表)+ 结果卡片完整车名多帧累积,任一命中即保留;Forza Edition 标记单独保护,同名普通车不会误判
  • 策略灵活:限定车保留 / 自定义保留列表 / 售价阈值,三者可叠加
  • 收益自动统计:抽到 CR、卖车 CR、保留车辆价值分类累计,抽奖历史带判定原因
  • 卡住自救:状态超时 45 秒自动 Esc 回主菜单重试

绿色单文件,Intel NPU 用户选 Full 版,AMD / 老机器选 Lite 版。刷图 + 删车 + 抽奖,三件套齐了 😎

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 31 Jul 12:09

v1.3.2

热修复版本:修复 v1.3.1 删车流程误上车的问题,删车逻辑回退至稳定的两段式判定。

升级须知

  • 无需改动配置,直接替换主程序即可
  • 本版本仅包含删车流程修复,其余行为与 v1.3.1 完全一致

修复

删车流程:筛选后点击第一辆车会误上车(#26)

  • 现象:删车筛选完成后,游戏默认已选中左上角第一辆车。此时进入删车流程,脚本点击车卡后人物直接上车,后续找不到移除按钮,整个流程中断
  • 原因:v1.3.1 为省去每车 2 秒的盲找等待,将删车逻辑改为「点击车卡 → 无条件按 Enter → 找移除按钮」单段式。但筛选后第一辆车处于已选中状态,点击车卡会直接打开车辆菜单,紧跟的 Enter 选中了菜单第一项(上车),导致误上车
  • 修复:回退至 v1.3.0 的两段式逻辑——
    1. 点击车卡后,先直接查找「从车库移除」按钮(阈值 0.70)
    2. 找到则直接点击(点击打开的菜单中即可命中按钮,无需 Enter)
    3. 未找到时才按 Enter 呼出完整菜单,再查找一次(阈值 0.75)
    4. 仍未找到则 ESC + 右移跳过该车
  • 代价:无法移除的车辆每辆多约 1.5 秒查找时间,换取流程正确性

新项目推荐

🎰 FH6_Auto_Wheelspin — 自动消耗抽奖

刷图攒了一堆抽奖次数懒得手动点?新开源的配套工具 SuperDraw全自动消耗超级抽奖 / 普通抽奖:

  • 纯后台运行:PrintWindow 截图 + PostMessage 输入,不抢前台、不动鼠标,游戏不用置顶
  • OCR 实时识别奖品:PP-OCRv6 异构加速(DirectML GPU + Intel NPU),抽什么看得清清楚楚
  • 限定车双源判定,杜绝误卖:重复车弹窗缩写(内置 47 辆限定车别名表)+ 结果卡片完整车名多帧累积,任一命中即保留;Forza Edition 标记单独保护,同名普通车不会误判
  • 策略灵活:限定车保留 / 自定义保留列表 / 售价阈值,三者可叠加
  • 收益自动统计:抽到 CR、卖车 CR、保留车辆价值分类累计,抽奖历史带判定原因
  • 卡住自救:状态超时 45 秒自动 Esc 回主菜单重试

绿色单文件,Intel NPU 用户选 Full 版,AMD / 老机器选 Lite 版。刷图 + 删车 + 抽奖,三件套齐了 😎

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 29 Jul 06:29

v1.3.1

稳定性修复版本:后台输入失焦自愈、YOLO 首启竞态修复、删车流程提速。

升级须知

  • 无需改动配置。YOLO 默认置信度由 0.7 调整为 0.65,仅影响首次使用(无配置文件)的默认值;老用户界面滑条保存的值不受影响

修复

后台输入:游戏失焦后 W 键长按失效

  • 现象:跑图中点了一下其他软件再切回来,车停住不动,脚本"不再油门",只能等完赛/卡死保护触发才恢复
  • 原因:后台长按依赖 auto-repeat 按键包(lParam bit30=1),游戏失焦清空键状态后会过滤自动重复包,长按永久失效
  • 修复:后台输入循环每 2 秒对按住键改发一次"新鲜按下"包,游戏键状态 2 秒内自愈

YOLO 识别:首次启动静默降级模板匹配

  • 现象:第一次下载释放使用,即使勾选了 YOLO 识别,实际仍走图像匹配,且无任何提示
  • 原因:首次启动模型释放(后台拷贝数十 MB)与 YOLO 加载竞态,读到写了一半的模型文件导致加载失败;原逻辑单次失败即永久放弃,失败原因只打控制台
  • 修复:
    • 资源释放改为原子方式(.tmp 拷贝 + 改名),读取方永远不会看到半截文件
    • YOLO 加载改为最多重试 3 次(间隔 5 秒),失败原因与推理后端(DirectML/CPU)写入界面日志
    • 勾掉再勾选 YOLO 开关可立即触发重试

YOLO 模式:等级标签不再每次回退模板匹配

  • 现象:YOLO 已命中目标车卡,日志里却仍出现 classS1702.png 模板匹配
  • 原因:YOLO 等级标签置信度门槛沿用模板的 0.72,但该类别实测 conf 仅 0.5~0.7,几乎必然回退冗余模板校验
  • 修复:YOLO 分支等级标签 conf ≥0.50 直接过硬校验(已有车型分类 + NEW 角标双重交叉验证保底),并放宽标签的车卡归属判定;模板路径阈值不变

删车流程:补上点击车卡后的 Enter 动作

  • 点击车卡后"从车库移除"按钮只是半露出,原逻辑先盲找 1.5 秒(永远过不了线)再 Enter 重找,每辆车白浪费 2 秒+
  • 现改为:点击 → Enter → 等 0.7s → 找按钮,单段完成

手动停止后清空超抽记忆页码

  • 手动停止(F8 / 停止按钮)后通常会增删车辆,记忆页码不再可靠,下次超抽从第 1 页重新搜索
  • 任务正常完成的自动停止仍保留页码记忆("下次从第 N 页开始搜"功能不受影响)

改进

  • 后台输入循环异常防护:单次发送失败只计数,不再静默杀死整个重复线程
  • YOLO 识别勾选框下方新增置信度滑条说明文字
  • YOLO 默认置信度 0.7 → 0.65

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 09:36

v1.3.0

本次更新采用 YOLO 深度学习识别超抽选车与删车,相较传统图片匹配,速度与准确性均大幅优化。

升级须知

  • 本次集成 YOLO 深度学习识别,安装包体积增加约 37MB
  • 无需手动操作:首次启动自动释放模型到 exe 旁边 onnx_models/yolo_best.onnx
  • 自训模型直接覆盖该文件即可生效(内置模型永远不会覆盖外部文件)

新功能

YOLO 识别(超抽选车,默认开启)

  • 深度学习模型识别"全新车卡 + NEW 角标"双目标,方案1(兰博基尼)等车卡识别稳定性大幅提升
  • 防误选双保险:NEW 角标交叉验证 + 等级模板二次校验,避免误选非全新车
  • 列优先选车顺序(列内上→下,列间左→右),与视觉扫描习惯一致
  • 空页快速翻页:连续 ≥6 帧且 ≥2.5 秒无目标提前翻页,不再空等 15 秒超时
  • 界面提供识别开关 + 置信度滑条(默认 0.7,即时生效,设置落盘)
  • 关闭识别或模型缺失时自动降级原模板匹配,旧流程不受影响

标注训练工具包(仓库内 yolo_tool/)

  • 网页截图标注(模型辅助打标)→ 一键续训 → ONNX 导出 → 一键部署主程序,全流程闭环
  • 用法见仓库 yolo_tool/README.md

改进

  • YOLO 模型外置:更新模型只需替换 exe 旁 onnx_models/yolo_best.onnx,免重编译
  • 超级抽奖默认改为模式 2(从设计与喷涂开始)
  • UI:YOLO 设置与"等待指令"按钮同列竖排
  • Steam/Xbox 平台分离重构:平台模块切换改为运行时 hook,告别编译期文件 swap 污染(PR #23,感谢 @hui-shao)
  • 修复版本更新弹窗的按钮异常(askyesno 对话框)(PR #23,感谢 @hui-shao)
  • 标注工作台:新增"删除文件"按钮(图+标注送回收站可还原)、截图失败自动重试、模型打标自动去重(互斥类重叠框)、默认置信度 0.5

修复

  • 修复 YOLO 分支点击不中车(坐标未加游戏窗口屏幕区域偏移)
  • 修复空页每页空耗 15 秒超时
  • 修复真全新车被误拒(NEW 角标校验阈值与车卡阈值解耦)

贡献者

  • @hui-shao:Steam/Xbox 平台分离重构 + 更新弹窗修复(PR #23)

v1.2.13

v1.2.13 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Jul 07:34

v1.2.13(测试版)

发车前等待可自定义

  • 新增配置项 race_start_wait(默认 15 秒):跑图每轮发车前的等待时长改读此值,加载慢的机器可调大、想跑快可调小
  • Steam 版与 Xbox 版跑图逻辑同步支持,日志「等待赛事加载(Ns)」实时反映实际等待值
  • 不加界面控件,直接改 config.json;非法值自动回退 15,负值按 0 处理

配置文档

  • 新增 config.example.json:全部字段带行内中文注释,仅供对照参考(含 // 注释,禁止直接改名为 config.json,否则会被判定配置损坏重置)
  • README 新增「配置文件说明」章节:顶层字段 / 流程阶段字段(chk_N、next_N 串联逻辑)/ 方案字段三张表

v1.2.12

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:55

v1.2.12

筛选导航修复

  • 像素级卡底检测:筛选面板到底后连续 3 次按↓像素无变化即判定到底,不再依赖 OCR 文本精确匹配,彻底解决 OCR 抖动导致的死循环
  • page_key 模糊比较:允许 ≤1 行文本差异,OCR 单行抖动不破坏卡底检测
  • 校正扫描收缩:高亮验证失败后的来回扫描从 ↑8+↓16 缩至 ↑3+↓6,减少鬼畜
  • 筛选面板下移 32px:修正面板捕获区域底部截断,底部行(含勾选框□)完整识别
  • 步数上限 80→62:匹配满配列表 62 行,无需多余步数

超级抽奖优化

  • scale 缓存:前 2 辆全量搜索 40 个缩放比(~5s/帧),第 3 辆起只搜缓存附近 5 个缩放比(<1s/帧),选车速度大幅提升
  • 双层超时:绝对超时 15s(防无目标时无限循环)+ 确认窗口 3s(从首次找到目标后计时)
  • 页码记忆修正:第 N 页找到车后下次直接从第 N 页开始搜索(修复原来 -1 导致永远少跳一页的 bug)
  • 识别阈值恢复原版 0.85:修复 UnsplashZ 调低到 0.82/0.80 导致错误车辆踩线通过的问题
  • strong_threshold 0.86→0.80:高分候选第 1 帧即可通过兜底返回

删车逻辑修复

  • 移除焦点兜底逻辑:原逻辑在 removecarobject.png 未匹配时直接 Enter 打开焦点车卡验证"移除"按钮,会误删非目标车辆。恢复为主模板匹配 + 翻页的保守策略

线程安全与稳定性(来自 PR #22)

  • 修复暂停/终止后重启任务的偶发闪退(心跳线程、后台输入、GDI 资源生命周期竞态)
  • 新任务排队等待旧 runner 完全退出后再启动
  • runner 使用启动时配置快照,不再跨线程读取 Tk 控件
  • 单实例互斥,防止多实例同时控制游戏窗口
  • Focus Hook 注入/卸载增加 5s 超时,已有模块复用避免重复注入

任务3 车辆识别改进(来自 PR #22)

  • 改为视觉顺序优先(按列→行排序),不再选模板最高分车辆,避免跳过当前"全新"车
  • 连续 2 帧空间一致性确认,过滤菜单动画/hover 瞬时误判

构建改进(来自 PR #22)

  • build.bat 优先使用仓库 .venv,版本读取修复
  • 新增 --smoke-test 打包验证参数
  • Action 支持测试版 tag 前缀(test-v),测试版不会被正式版用户更新检测抓到

贡献者

  • UnsplashZ:线程安全修复、任务3视觉首车、任务4焦点验证、构建改进(PR #22)🙏

v1.2.11.3 测试版

v1.2.11.3 测试版 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Jul 06:47

v1.2.11.3 测试版

筛选导航修复

  • 像素级卡底检测:筛选面板到底后连续 3 次按↓像素无变化即判定到底,不再依赖 OCR 文本精确匹配,彻底解决 OCR 抖动导致的死循环
  • page_key 模糊比较:允许 ≤1 行文本差异,OCR 单行抖动不破坏卡底检测
  • 校正扫描收缩:高亮验证失败后的来回扫描从 ↑8+↓16 缩至 ↑3+↓6,减少鬼畜
  • 筛选面板下移 32px:修正面板捕获区域底部截断,底部行(含勾选框□)完整识别
  • 步数上限 80→62:匹配满配列表 62 行,无需多余步数

超级抽奖优化

  • scale 缓存:前 2 辆全量搜索 40 个缩放比(~5s/帧),第 3 辆起只搜缓存附近 5 个缩放比(<1s/帧),选车速度大幅提升
  • 双层超时:绝对超时 15s(防无目标时无限循环)+ 确认窗口 3s(从首次找到目标后计时)
  • 页码记忆修正:第 N 页找到车后下次直接从第 N 页开始搜索(修复原来 -1 导致永远少跳一页的 bug)
  • 识别阈值恢复原版 0.85:修复 UnsplashZ 调低到 0.82/0.80 导致错误车辆踩线通过的问题
  • strong_threshold 0.86→0.80:高分候选第 1 帧即可通过兜底返回

删车逻辑修复

  • 移除焦点兜底逻辑:原逻辑在 removecarobject.png 未匹配时直接 Enter 打开焦点车卡验证"移除"按钮,会误删非目标车辆。恢复为主模板匹配 + 翻页的保守策略

线程安全与稳定性(来自 PR #22)

  • 修复暂停/终止后重启任务的偶发闪退(心跳线程、后台输入、GDI 资源生命周期竞态)
  • 新任务排队等待旧 runner 完全退出后再启动
  • runner 使用启动时配置快照,不再跨线程读取 Tk 控件
  • 单实例互斥,防止多实例同时控制游戏窗口
  • Focus Hook 注入/卸载增加 5s 超时,已有模块复用避免重复注入

任务3 车辆识别改进(来自 PR #22)

  • 改为视觉顺序优先(按列→行排序),不再选模板最高分车辆,避免跳过当前"全新"车
  • 连续 2 帧空间一致性确认,过滤菜单动画/hover 瞬时误判

构建改进(来自 PR #22)

  • build.bat 优先使用仓库 .venv,版本读取修复
  • 新增 --smoke-test 打包验证参数
  • Action 支持测试版 tag 前缀(test-v),测试版不会被正式版用户更新检测抓到

贡献者

  • UnsplashZ:线程安全修复、任务3视觉首车、任务4焦点验证、构建改进(PR #22)🙏

v1.2.11.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 15:46

v1.2.11.0

🐛 筛选导航 Bug 修复(v1.2.10.0 回归)

v1.2.10.0 的 OCR 视觉导航在部分分辨率/DPI 下会误判,导致筛选失败:

  • 卡底检测误判:高亮在可见区内移动时 OCR 文字不变,旧版连续 2 次不变即判"到底"放弃。新版加入高亮行下标追踪 + 64×64 像素差兜底,高亮在动就不判卡底
  • 循环检测误判:OCR 噪声导致页面指纹偶然重复即判"列表循环"。新版加 ≥3 步门槛 + 像素校验,画面有变化不判循环
  • 回顶检测同类误判:_scroll_to_top 文字不变时加像素差确认,高亮还在上移就不停
  • 短目标 OCR 容错:S1/S2/A 等 ≤3 字符目标被读成 SI/51/S 时精确匹配全 miss。新增常见易混字符模糊匹配(I↔1, 5↔S, Z↔2),S2 不会误匹配 S1

以上修复覆盖所有筛选场景(跑图选车/删车筛选,Steam/Xbox 共用 FilterNavMixin)。

👍 评价弹窗改为"取消"

完赛评价弹窗动作从"点踩"改为"取消"(下移两格 + Enter),Steam/Xbox 同步。

🔧 功能调整

  • 方案1 购买 Revuelto 滚动次数 4→5
  • 蓝图搜索网络波动重试:OCR 只识别到"确定"无"挑战"入口 → 自动关掉弹窗重新搜索(最多 2 次),Steam/Xbox 同步
  • 阶段3 搜索逻辑提取为 _input_share_code() 方法,支持重试复用

🔇 日志降噪

  • 更新检查超时从 ERROR + traceback 文件改为一句提示,超时 10s→5s
  • 终极安全匹配调试截图加开关门控,不开调试不再写盘
  • 游戏进程检测日志细化:区分 tasklist 命令失败 / 游戏没开 / 进程在但窗口找不到 / PID 解析失败

🐛 进程检测修复

tasklist 无匹配时某些 Windows 版本返回退出码 1,check_output 直接抛异常 → 改用 subprocess.run 不管退出码都读 stdout。

v1.2.10.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 09:08

v1.2.10.0

🔍 筛选导航重写:OCR 视觉导航替代固定按键

旧版删车筛选/跑图选车用固定"按 N 下"导航,其他账号因车辆拥有情况不同会错位选错选项。新版按文字目标导航,自动适配任意账号:

  • Y 打开筛选 → X 重置残留勾选 → 逐键 OCR 搜索,目标入屏瞬间直接 Enter(零过头)→ 复选框像素差验证 → 未命中自动回滚 + 点击兜底 → ESC 关闭
  • 目标选项缺失(账号没有该类车)→ 报错放弃该环节,不带错误筛选继续跑(防卖错车)
  • 配置变成文字目标列表,其他账号改 JSON 文字即可适配,不用再数"按几下"

👎 评价弹窗改为 OCR 点踩

赛事评价弹窗从图片匹配改为 OCR 识别,动作改为"下移一格 + Enter 点踩"。

🐛 Bug 修复(7 项)

  • 修复二次 OCR 验证"按键没生效重按"分支必崩
  • 修复 lambda 捕获 except 块变量(Python3 出块即删除)
  • 修复 find_image_ultimate_safe 模板全失败时 UnboundLocalError
  • 修复 config.json 损坏日志缺少异常原因
  • 修复 recovery.py 裸 except
  • 修复启动崩溃(log 节流变量未初始化)
  • 修复截图缓存中毒(PrintWindow 失败后 GDI 对象被反复复用)

⚡ 性能优化

  • OCR:rec 输入宽 320→240(耗时 -20~25%);det 预处理缓冲复用;筛选面板 det 提速 ~44%
  • 截图:DC/位图缓存复用(省 ~1ms/帧);GDI 失败兜底不再崩 bot
  • 模板匹配:灰度/边缘模板按 scale 惰性缓存
  • 日志:100ms 批量节流渲染
  • 筛选按键提速 ~2 倍 + 丢键容错
  • 完赛检测间隔 1.0→0.5s
  • 多线程匹配线程数 cpu//2,留更多核心给游戏

🔧 OCR 模型

换用 PP-OCRv6 small(det 9.4MB + rec 20.2MB,字典 18708 字符),移除 tiny(错误率过高)。

⚙️ 配置变更(自动迁移,无需手动改)

方案新增两个字段:

{
  "sell_filter": ["重复项", "S2", "顶级超跑", "全轮驱动"],
  "race_filter": ["收藏", "复古拉力赛车", "传奇"]
}
  • sell_filter:删车筛选目标(方案1 默认 重复项+S2+顶级超跑+全轮驱动;方案2 默认 S1+漂移赛车+后轮驱动+传奇)
  • race_filter:跑图选车筛选目标(默认 收藏+复古拉力赛车+传奇 = Mad Mike 808 Wagon)
  • 其他账号只需把选项文字改成自己列表里的实际文字即可

🔄 Xbox 版选车同步

Xbox 版跑图选车升级为与 Steam 版一致的 OCR 视觉导航 + OCR 上车检测。

🧹 代码清理

删除约 370 行死代码(旧选车流程遗留方法、未用导入、孤儿文件);OCR 上车检测抽取为共享方法;调试截图统一;Xbox 版 OCR 区域对齐 Steam 版。