桌面应用RPA计算机视觉【免费下载链接】ZenlessZoneZero-OneDragon绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄项目地址https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon点击查看免费下载导读本文以 docs/game/screens/咖啡店.md 为骨架结合 ZenlessZoneZero-OneDragon绝区零一条龙的源码与配置完整拆解coffeeapp 的每日咖啡自动流程——从三个传送点六分街咖啡店 / 汀曼咖啡 / 片刻闲的差异化进入方式到「额外咖啡优先、汀曼特调兜底」的点单策略、基于 OCR 与 difflib 的咖啡名称匹配以及电量确认、点单后跳过、返回大世界与体力计划衔接的完整状态机。读完你将掌握该模块的运转原理、配置项与可复用的画面识别方法。模块定位每日一次的电量恢复与增益获取coffeeapp 是绝区零一条龙中的轻量日常应用其职责在 咖啡店主流程源码 的类注释中定义得十分明确咖啡店每日免费点单 1 杯咖啡恢复电量体力并获增益 buff。每日 1 次、04:00 重置。功能每天进入咖啡店点单一次通过喝咖啡恢复「电量」即体力并获得战斗增益 buff频率控制由 咖啡运行记录 继承的AppRunRecord机制保证每日仅执行一次并遵循游戏刷新时间偏移game_refresh_hour_offset见 应用工厂应用元信息APP_ID coffee、APP_NAME 咖啡店、优先级 500、需要通知定义于 咖啡应用常量。一个重要设计点是咖啡店流程本身不进入副本。是否在喝完咖啡后运行普通体力计划由配置项run_charge_plan_afterwards独立决定这与「一条龙」调度中日常应用的边界划分一致。入口与整体状态流转咖啡店模块的整体流转如下大世界 → Transport 传送 → 等待加载 → 移动交互(interact F) → 咖啡店 → 选咖啡 → 点单 → (不占用确认 / 点单后跳过) → 电量确认 → 返回大世界对应的状态机在 CoffeeApp 中由operation_node装饰器链式声明节点依次为传送→等待大世界加载→移动交互→等待咖啡店加载→对话选咖啡 / 选择咖啡→点单→不占用点单确认 / 点单后跳过→电量确认→返回大世界→结束后运行体力计划三个传送点两种进入形态传送点枚举定义于 咖啡传送点配置枚举区域传送点名称进入形态POINT_1六分街咖啡店咖啡列表直选旧版店铺画面POINT_2⭐澄辉坪汀曼咖啡对话点单汀曼大师对话框POINT_3⭐布亚斯特城区片刻闲对话点单汀曼大师对话框三种落点的差异化处理集中在 移动交互节点POINT_1 六分街-咖啡店传送后需turn_to_angle(180)转向正西再move_w前移随后 interact 进入咖啡店画面直接面对咖啡列表选咖啡POINT_2 澄辉坪-汀曼咖啡传送落点正对入口直接 interact 即可进入对话点单汀曼大师对话框选咖啡POINT_3 布亚斯特城区-片刻闲传送落点同样正对入口直接 interact 进入对话点单但二次运行当天已喝过时前方会有两段连续纯对话框需要逐个点击标题推进。源码在交互前固定time.sleep(1)注释明确这是为了「防止交互无效」对应 issue #2405 #2395 #2328。POINT_3 的实拍验证记录还指出落点在交互范围内时直接按 F 即可自动锁定汀曼大师无需移动——这修正了旧版本中「误判需要导航」的问题。画面识别coffee_shop.yml 的 9 个 Area咖啡店全部画面区域定义在 coffee_shop.ymlscreen_name: 咖啡店、app_id: coffee共 9 个 areaarea_name文本PC 坐标左,上,右,下用途点单点单1702,880-1914,1020POINT_1 右下角点单按钮咖啡列表空白132,682-1122,1054POINT_1 底部菜单白色文字 OCR 选咖啡对话框前往前往728,600-928,692保留区域当前流程不再使用对话框确认确认1040,600-1228,688额外咖啡确认点单后跳过跳过1684,64-1850,200点单动画跳过按钮需先 drag 显鼠标电量确认确认875,640-1200,754电量体力恢复确认弹窗不可贪杯确认确认882,606-1084,690已喝过提示右侧选项区域空白1438,536-1914,830对话点单的咖啡选项列表对话框标题-汀曼大师汀曼大师880,800-1040,840对话框标题识别并 OCR 点击推进对话值得注意的区域演化对话框前往与对话框确认仍保留在 screen_info 中但当前CoffeeApp不再使用「喝后副本入口」对话框确认仅用于额外咖啡的确认见文档「画面」节说明。这些坐标均以 2560×1440 分辨率为基准的 PC 布局pc_rect。对话点单识别快照两种关键状态文档以实拍截图记录了对话点单的两类识别快照匹配画面均为咖啡店is_precisefalse即低精度模板匹配避免因店铺装潢差异误判。状态一对话点单-已喝过态POINT_2 汀曼咖啡匹配 area对话框标题-汀曼大师text汀曼大师880,800-1040,840识别要点对话框内容和背景招牌文字不作为状态模板避免背景 OCR 干扰流转逻辑app 识别标题后按「额外咖啡优先、汀曼特调兜底」尝试点击没有命中候选咖啡时OCR 点击对话框标题推进对话标题消失后即视为已喝过。状态二对话点单-选项态POINT_3 片刻闲未喝过出现条件POINT_2/POINT_3 交互后当天未喝→ 汀曼大师对话框 右侧选项区域咖啡列表POINT_3 二次运行已喝过则前置两段纯对话框需逐个点标题推进全量 OCR 内容汀曼大师 / 对话正文如「您好想要喝点什么…这样的下雨天和热咖啡很配呢」/ 右侧选项区域咖啡列表 / 招牌文字MADE BY TINMASTER / TEA FIRST / 片刻闲 CuppaMoment关键 area右侧选项区域1438,536-1914,830——dialog_choose_coffee在此按优先级 OCR 点击额外咖啡或汀曼特调未命中则点对话框标题-汀曼大师推进。选咖啡策略额外咖啡优先、汀曼特调兜底候选列表的生成候选咖啡列表由 _get_coffee_to_choose 生成遍历图鉴服务提供的额外咖啡列表get_extra_coffee_list()跳过本次运行已喝过的最后固定追加「汀曼特调」若本次尚未喝过。即先尝试喝不占用每日次数的额外咖啡最后用汀曼特调收尾正式点单。额外咖啡在 coffee_data.yml 中通过extra: true标记目前包括「沙罗特调」「沙罗特调淡」「沙罗特调浓」等「汀曼特调」「新艾利都特调」为常规咖啡。每杯咖啡的语义由 Coffee 数据模型 描述extra可额外喝、不占用每日次数的咖啡without_benefitmission_type is None时判定为无增益咖啡。咖啡列表的 OCR 匹配POINT_1 咖啡列表画面选择咖啡节点 的匹配流程非常典型可复用于其他白色文字列表识别裁剪咖啡列表area132,682-1122,1054用cv2.inRange提取RGB 220~255 的白色文字掩码再dilate(5)膨胀后按位与得到仅含白色文字的图run_ocr识别文字对每个候选咖啡名用difflib.get_close_matches做近似匹配再用str_utils.find_by_lcs以LCS 相似度阈值 0.8 / 0.6 / 0.4 三级降级校验浓/淡特殊判断咖啡名与 OCR 结果必须同时包含或同时不包含「浓」「淡」字防止「沙罗特调浓」误匹配「沙罗特调淡」命中后点击 OCR 结果中心并上移 50px点击前time.sleep(0.5)防止点不到。未命中则round_retry等待后重试。对话点单的推进逻辑POINT_2 / POINT_3对话选咖啡节点 处理对话式点单先检测对话框标题-汀曼大师标题会持续到对话结束标题消失即按已喝过收尾标题存在时在右侧选项区域按优先级 OCR 点击候选咖啡命中后记录chosen_coffee与had_coffee_listPOINT_3 命中后直接进入点单后跳过状态首次点单后的动画在此跳过POINT_2 则进入已点单未命中候选咖啡时说明当前是纯对话框——识别并点击对话框标题推进不依赖具体台词避免背景文字干扰状态判断。点单、确认与收尾链路点单与额外咖啡分支点单节点 点击点单按钮后根据咖啡属性分流extra额外咖啡→STATUS_EXTRA_COFFEE进入不占用点单确认without_benefit无增益咖啡→STATUS_WITHOUT_BENEFIT按普通点单收尾普通咖啡 → 直接wait3进入点单后跳过。不占用点单确认依次尝试对话框确认与不可贪杯确认两个按钮。点单后跳过绝区零的「逆天按钮」处理点单后跳过节点 处理顺序先查电量确认弹窗出现即成功查点单后跳过1684,64-1850,200——由于游戏该按钮需要先拖动鼠标使其显形才能点击源码注释直言「绝区零逆天按钮」此处先用drag_to(startleft_top, endcenter)拖拽一次再执行click()再尝试不可贪杯确认已喝过场景。电量确认与返回大世界电量确认节点 点击电量确认后额外咖啡会回到选择咖啡节点继续尝试尚未喝过的额外咖啡最终以汀曼特调收尾普通咖啡则进入返回大世界。返回大世界节点由 BackToNormalWorld 实现。最后结束后运行体力计划节点 依据配置run_charge_plan_afterwards决定是否接着执行体力计划charge_planapp这是咖啡模块与体力消耗链路的衔接点。配置项详解咖啡模块配置类 CoffeeConfig 仅两个配置项配置键默认值说明transport_pointPOINT_1六分街-咖啡店选择三个传送点之一进入咖啡店run_charge_plan_afterwardsfalse咖啡流程结束后是否运行普通体力计划配置的读取、写入均通过ApplicationConfig基类的get/update完成由 应用工厂 在运行时按实例与分组创建图形化设置界面位于 咖啡设置浮窗通过 CoffeeAppSetting 以FLYOUT类型注册。实战建议若角色经常在澄辉坪/布亚斯特城区附近活动可将transport_point切换为POINT_2或POINT_3——这两个点传送落点正对入口无需转向移动直接 interact 即可流程更短POINT_1 则需要「转向正西 前移 交互」三步。已知待补与边界说明文档「待补」节如实记录了当前实现尚未覆盖或未实拍验证的场景属于该模块已知边界POINT_1 咖啡店画面正常态咖啡列表 OCR 选咖啡已实现逻辑待实拍补证POINT_2 对话点单正常态右侧选项选咖啡未喝过时点单后跳过 / 电量确认弹窗文档写作时本次已喝过、未触发不占用上限 / 无增益咖啡分支STATUS_EXTRA_COFFEE/STATUS_WITHOUT_BENEFIT额外咖啡会经过「不占用点单确认」并在电量确认后继续选咖啡无增益咖啡按普通点单收尾待补。源码阅读路径若需深入该模块建议按以下顺序阅读screen_info/coffee_shop.yml——全部画面区域定义coffee_app.py——完整状态机与 OCR 匹配实现coffee_config.py 与 coffee_app_factory.py——配置与装配coffee_data.yml——咖啡数据与extra标记compendium.py——Coffee数据模型与图鉴加载。从源码结构看CoffeeApp是绝区零一条龙中典型的「传送 → 交互 → 画面识别 → 分支确认 → 返回」轻量应用范式其对话框标题识别推进法、白色文字掩码 difflib LCS 的选咖啡匹配法以及「先 drag 显鼠标再点击」的疑难按钮处理均可作为同类日常应用钓鱼、报刊亭、拉面店等的参考实现。赞分享桌面应用RPA计算机视觉【免费下载链接】ZenlessZoneZero-OneDragon绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄项目地址https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon点击查看免费下载相关推荐三步实现Home Assistant让咖啡机每天7点自动煮好晨间咖啡三步实现Home Assistant让咖啡机每天7点自动煮好晨间咖啡 你是否也曾在清晨匆忙洗漱时才想起忘记提前煮咖啡本文将教你通过Home Assista文档教程智能家居物联网cargo-instruments 与 Xcode Instruments 的完美集成高级配置指南cargo instruments 与 Xcode Instruments 的完美集成高级配置指南 cargo instruments 是一款强大的 CargPySC2终极指南如何用Python打造你的星际争霸II AI训练环境PySC2终极指南如何用Python打造你的星际争霸II AI训练环境 PySC2是DeepMind开源的星际争霸II学习环境Python接口它为机器学习研人工智能强化学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考