news 2026/9/29 8:17:40

绝区零一条龙(ZenlessZoneZero-OneDragon)情报板全自动代行委托模块深入解析:发布、挑战与奖励的周循环实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
绝区零一条龙(ZenlessZoneZero-OneDragon)情报板全自动代行委托模块深入解析:发布、挑战与奖励的周循环实现
  • 桌面应用
  • RPA
  • 计算机视觉

【免费下载链接】ZenlessZoneZero-OneDragon

绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄

项目地址:https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
点击查看免费下载

本篇文章聚焦开源项目 ZenlessZoneZero-OneDragon(绝区零一条龙)中「情报板」模块的完整自动化链路。该模块面向游戏内「情报板」玩法(恶名狩猎 / 专业挑战室的代行委托发布、代行挑战与奖励兑换),以每周为周期自动刷新动态委托板面并代行出战。读完本文,你将掌握情报板模块的三阶段基础流程(发布委托 → 挑战 → 接收奖励)、GUI 配置项与底层参数、源码级节点状态机实现,以及周重置记录与经验估算的完整原理。

情报板模块是什么

情报板(intel_board)是绝区零一条龙中的一个独立应用模块,注册信息位于 intel_board_const.py:

  • APP_ID = 'intel_board'、APP_NAME = '情报板'、DEFAULT_GROUP = True、PRIORITY = 1300、NEED_NOTIFY = True。

从模块注释看,其核心职责是:刷新/筛选动态情报板上的代行委托(恶名狩猎 / 专业挑战室),代行出战清理板面。值得注意的是,代行他人的委托不消耗自身电量(可获得贡献点),而这些玩法自行挑战时才消耗电量——这正是情报板模块与「体力计划」(charge_plan_app.py)存在互补关系的原因。

该模块的工程结构完整遵循「工厂 + 配置 + 运行记录 + 应用本体」的模式:

  • 应用入口:intel_board_app.py
  • 应用工厂:intel_board_app_factory.py
  • 配置类:intel_board_config.py
  • 周运行记录:intel_board_run_record.py
  • 配置弹出框:intel_board_setting_flyout.py

基础流程:每周重置的三大阶段

情报板玩法以周为周期,模块基础流程(每周重置记录后执行)如下:

  1. 发布委托:在情报板发布恶名狩猎 / 专业挑战室委托,供其他玩家代行(或自己代行他人委托)。
  2. 挑战:在未达到周期上限时,按配置选择委托进行挑战(代行出战)。
  3. 接收奖励:接收委托奖励,并按配置优先级进行兑换。

1. 发布委托

1.1 恶名狩猎发布

发布恶名狩猎委托前,先进行 4 项跳过判断,任一命中即跳过发布:

  • 开关未开启(模块总开关关闭);
  • 达到委托并行上限(板面上并行委托数已满);
  • 达到委托发布次数上限(本周可发布次数已用完);
  • 电量不足。

随后进入发布选择,三选一:

  • 按恶名狩猎计划发布:依据 notorious_hunt_config.py 中配置的恶名狩猎计划(plan_list,含tab_name、category_name、mission_type_name、mission_name、level、predefined_team_idx、auto_battle_config、run_times、plan_times、notorious_hunt_buff_num、plan_id等字段)批量发布;
  • 按体力计划发布:接入「体力计划」(ChargePlan)体系,在计划执行到对应分类时顺带发布委托;
  • 自定义次数发布:手动指定发布次数,不依赖计划列表。
1.2 专业挑战室发布

专业挑战室发布的跳过判断与恶名狩猎一致(开关未开启 / 达到委托并行上限 / 达到委托发布次数上限 / 电量不足),但发布选择为二选一:

  • 按体力计划发布;
  • 自定义次数发布。

从源码看,体力计划(charge_plan_app.py)覆盖的训练副本包括「实战模拟室 / 区域巡防 / 专业挑战室 / 恶名狩猎-深度追猎」,与情报板发布的两类委托高度对应,因此按体力计划发布是最省心的联动方式。

2. 挑战(代行出战)

在未达到周期上限时,模块按配置选择委托进行挑战。这里的「挑战」在实现上就是代行他人委托出战,具体节点链路见下文「源码实现」部分。

3. 接收奖励

  1. 接收委托奖励(通关结算后自动领取);
  2. 按配置优先级进行兑换(点数兑换入口位于情报板界面,对应界面区域见 intel_board.yml 中的「点数兑换」区域)。

源码实现:情报板应用的节点状态机

IntelBoardApp 继承自ZApplication,将上述三大阶段拆解为一条清晰的操作节点链,逐节点 OCR / 模板匹配 / 点击驱动。

入口与界面定位

  • 初始化加载(起始节点):调用self.ctx.lost_void.init_lost_void_det_model()预加载模型,失败即round_fail。
  • 返回录像店:通过Transport(self.ctx, '录像店', '房间')传送到录像店——这是情报板的入口场景。
  • 打开情报板:先判断周期完成状态(exp_complete或progress_complete,命中即返回「本周期已完成」),再点击大世界「功能导览」按钮进入功能面板。
  • 点击情报板:对截图 OCR「情报板」文本并点击,进入板面。

发布与筛选(板面操作)

进入板面后,模块会维护一个「是否已筛选」标记(self.has_filtered):

  • 刷新委托:若已筛选过,点击情报板「刷新按钮」(模板匹配,模板位于 assets/template/intel_board/refresh,对应区域定义在 intel_board.yml 的「刷新按钮」);否则返回「未筛选」状态。
  • 打开筛选:先查找「点数兑换」区域确认板面就绪,再点击「筛选按钮」,最多重试 60 次。
  • 重置筛选:在筛选弹层内 OCR「重置」并点击,清空历史筛选条件。
  • 选择恶名狩猎 / 选择专业挑战室:在「搜索区域」内分别 OCR「恶名狩猎」或「专业挑战室」文本并点击,实现按委托类型筛选。
  • 关闭筛选:点击「关闭筛选」区域,同时将has_filtered置为True。

寻找委托与自我帖子规避

「寻找委托」节点是整个模块最有特色的部分:

  1. 对全屏做 OCR,收集文本为恶名狩猎或专业挑战室(CommissionType枚举,定义见 intel_board_app.py)的委托条目,按 y 坐标排序;
  2. 用模板匹配「Star」标记(模板位于 assets/template/intel_board/Star,阈值 0.8),识别自己发布的帖子(游戏内会打星标);
  3. 过滤与 star 在 x 轴重叠的委托(expand_pixel = 30的扩展区间),避免点击自己发布的帖子造成无效代行;
  4. 点击第一个有效委托;若当前屏没有,则在「搜索区域」内滚动(scroll_times上限 5 次),翻页继续寻找,超过上限返回「无委托」。

接取委托与编队出战

  • 接取委托:连续 OCR 匹配目标动作,「接取委托」「前往」为等待态,「委托代行中」为成功态。
  • 下一步:识别「预备编队」页面确认进入编队环节;识别「接取失败」(lcs_percent=0.75)则转入失败处理;否则持续点击「下一步」「无报酬模式」推进流程。
  • 选择预备编队:若配置predefined_team_idx == -1则跳过(使用游戏内配队),否则调用ChoosePredefinedTeam选择对应预备编队。
  • 点击出战:OCR「出战」并点击进入战斗。
  • 委托代行中弹窗:处理「至少选择1位代理人出战」与「委托代行中」两类弹窗;若未选择代理人,自动回退使用ctx.team_config.team_list[0](第一支预备编队)重新出战。

自动战斗与结算

  • 加载自动战斗指令:predefined_team_idx == -1时使用模块配置auto_battle_config(默认「全配队通用」),否则使用所选预备编队的auto_battle配置,再通过auto_battle_context.init_auto_op加载。
  • 等待战斗画面加载:识别「战斗画面-按键-普通攻击」或「按键-交互」区域确认进入战斗,最多重试 60 次。
  • 战斗前移动:恶名狩猎调用NotoriousHuntMove(self.ctx, 3)走位开怪;专业挑战室则向前移动 1.5 秒确保能开怪。
  • 开始自动战斗 / 战斗中:启动自动战斗并轮询check_battle_state,单节点超时 600 秒,依据battle_assistant_config.screenshot_interval控制截图间隔。
  • 检查回到委托列表:OCR「周期内可获取」确认结算后回到列表,并累计计数(notorious_hunt_count/expert_challenge_count)。
  • 点击结算按钮:连续点击「完成 / 下一步 / 确认」直至回到委托列表。

周期完成判定与收尾

  • 检查进度:OCR 读取情报板「进度文本」区域(intel_board.yml 中坐标约 322,1019-513,1061)的进度代币值,将/归一化为/后解析;普通模式下代币值 ≥ 1000 即标记progress_complete完成;刷经验模式按见下节。
  • 结束处理:汇总输出「完成 恶名狩猎: N, 专业挑战室: N, 累计经验: N」并触发通知(NotifyTiming.CURRENT_DONE, detail=True)。
  • 完成后返回大世界:调用BackToNormalWorld回到大世界,整个周期流程结束。

配置项与 GUI 入口

情报板配置类 IntelBoardConfig 提供三个核心配置项:

配置键类型默认值说明
predefined_team_idxint-1预备编队下标,-1代表不选择、使用游戏内配队;否则使用对应下标(idx)的预备编队
auto_battle_configstr全配队通用自动战斗配置名称,仅在predefined_team_idx == -1时生效
exp_grind_modeboolFalse是否开启「刷满经验」模式;开启后按累计经验判断完成,而非情报板进度代币

GUI 配置弹出框位于 intel_board_setting_flyout.py,包含四个控件:

  1. 预备编队(下拉框):选项为「游戏内配队(-1)」加全部预备编队列表;
  2. 自动战斗(下拉框):由get_auto_battle_op_config_list(sub_dir='auto_battle')加载自动战斗配置列表,且仅在选择「游戏内配队」时可见(联动_update_auto_battle_visibility);
  3. 刷满经验(开关):对应exp_grind_mode;
  4. 重置进度(按钮):一键清空progress_complete、notorious_hunt_count、expert_challenge_count、base_exp,方便手动提前开启新一轮。

工厂类 intel_board_app_factory.py 统一负责应用、配置与运行记录的创建,运行记录还注入了game_refresh_hour_offset(游戏内每天刷新的偏移小时数,来自账号配置),确保重置判定与游戏内时间对齐。

周重置记录:进度、次数与经验估算

IntelBoardRunRecord 是情报板的状态持久化核心,继承AppRunRecord并指定record_period=AppRunRecordPeriod.WEEKLY(周周期)。记录字段如下:

  • progress_complete:本周期进度是否已满(1000/1000);
  • notorious_hunt_count:本周期恶名狩猎完成次数;
  • expert_challenge_count:本周期专业挑战室完成次数;
  • base_exp:根据 OCR 进度估算的基础经验值(计数为 0 时的历史经验)。

周重置机制

application_run_record.py 中的_should_reset_by_dt对周周期采用「周日零点」判断:get_sunday_dt(self.dt) != get_sunday_dt(current_dt)时触发重置。结合game_refresh_hour_offset换算游戏内时间,实现与游戏周刷新对齐的自动重置;同周未完成时只重置运行状态、保留周计数(见check_and_update_status)。

经验累计与估算逻辑

模块内固定经验常量:EXP_PER_NOTORIOUS_HUNT = 500、EXP_PER_EXPERT_CHALLENGE = 250、EXP_TARGET = 5000。累计经验公式:

total_exp = base_exp + notorious_hunt_count × 500 + expert_challenge_count × 250

刷经验模式(exp_grind_mode)下的完成判定为total_exp >= 5000。当计数均为 0 但 OCR 读到进度代币current > 0时,按「专业挑战一次 70 代币 = 250 经验」的比例估算base_exp = ((current + 69) // 70) × 250,从而兼容「本周期开始前已有历史进度」的场景——这是 intel_board_app.py 中check_progress节点的关键推断逻辑。

关键场景速查

  • 只想代行蹭贡献点、不耗电:保持普通模式,让模块自动刷新 / 筛选 / 代行,进度代币满 1000 后自动停止,等待下周重置。
  • 想要刷满每周经验:开启「刷满经验」,模块会以 5000 经验为目标持续代行恶名狩猎(500 经验/次)与专业挑战室(250 经验/次),并在完成时输出累计经验。
  • 多账号 / 多预备编队:为不同实例配置不同的predefined_team_idx与自动战斗配置,运行记录按实例隔离(instance_idx)。
  • 进度异常:在配置弹出框点击「重置进度」清空周记录即可重新开始。

相关文档与资源

  • 模块状态机主实现:intel_board_app.py
  • 配置与记录:intel_board_config.py、intel_board_run_record.py
  • 界面区域定义:intel_board.yml
  • 模板资源:assets/template/intel_board/Star、assets/template/intel_board/refresh
  • 联动玩法:体力计划 charge_plan_app.py、恶名狩猎配置 notorious_hunt_config.py
  • 桌面应用
  • RPA
  • 计算机视觉

【免费下载链接】ZenlessZoneZero-OneDragon

绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄

项目地址:https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
点击查看免费下载

相关推荐

上一篇:WTF-Solidity 安全攻防 S15:预言机价格操纵攻击原理与 Foundry 实战复现
下一篇:train-llm-from-scratch 的 GRPO / RLVR 实战指南:无需 Critic 的分组相对策略优化实现推理能力

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 8:17:27

Qt QHash核心操作与性能优化:插入、遍历、删除避坑指南

做 Qt 开发这些年,QHash 几乎是绕不开的基础容器,但很多人的使用方式还停留在“能跑就行”:插入用 insert,取值用 value,遍历用迭代器,删除用 remove。表面看起来没问题,可真到了数据量大、并发…

作者头像 李华
网站建设 2026/9/29 8:15:38

矩阵左乘与右乘的几何意义:从线性变换到基变换

1. 先把矩阵看成“动作”:线性变换的几何直觉很多学生第一次学矩阵乘法时,最困惑的不是怎么算,而是“算完之后到底发生了什么”。尤其是AB和BA,明明只是调换了一下左右位置,结果却经常不一样,甚至形状都变了…

作者头像 李华
网站建设 2026/9/29 8:14:13

CTF安卓逆向入门:从Java层到SO层的静态分析实战详解

简介:一份面向CTF逆向方向安卓篇学习者的系统入门资料,适合CTF参赛者、移动应用安全测试人员,以及刚接触Android逆向的初学者。内容以APKToolBOX与jadx两款工具为主线,完整介绍APK反编译、Java字节码还原、MainActivity与FlagActi…

作者头像 李华
网站建设 2026/9/29 8:12:13

学黑客技术前必读:白帽黑帽、法律红线与正确入行路径

外行看黑客,总觉得是一群躲在屏幕背后、敲几行命令就能攻破银行系统、让网站瘫痪、还能全身而退的“数字侠客”。尤其是各种影视作品把黑客渲染成无所不能的孤胆英雄之后,越来越多年轻人跑来问我:“我想学黑客技术,从哪里开始&…

作者头像 李华
网站建设 2026/9/29 8:11:28

基于Java的大学生零花钱智慧管理系统

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与意义 随着移动互联网和移动支付的普及,大学生的消费场景日益丰富,从日常餐饮、学习用品到娱乐社交,资金流动频繁且分散…

作者头像 李华