Skip to content

Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本(自用改版) | 无缝委托科研,全自动大世界

License

Notifications You must be signed in to change notification settings

JerryZhousy/AzurLaneAutoScript

 
 

Repository files navigation

| English | 简体中文 | 日本語 |

AzurLaneAutoScript

合并了多个alas fork

Discord QQ群

Azur Lane bot with GUI (Supports CN, EN, JP, TW, able to support other servers), designed for 24/7 running scenes, can take over almost all Azur Lane gameplay. Azur Lane, as a mobile game, has entered the late stage of its life cycle. During the period from now to the server down, please reduce the time spent on the Azur Lane and leave everything to Alas.

Alas is a free open source software, link: https://github.com/LmeSzinc/AzurLaneAutoScript

Alas,一个带GUI的碧蓝航线脚本(支持国服, 国际服, 日服, 台服, 可以支持其他服务器),为 7x24 运行的场景而设计,能接管近乎全部的碧蓝航线玩法。碧蓝航线,作为一个手游,已经进入了生命周期的晚期。从现在到关服的这段时间里,请减少花费在碧蓝航线上的时间,把一切都交给 Alas。

Alas 是一款免费开源软件,地址:https://github.com/LmeSzinc/AzurLaneAutoScript

EN support, thanks @whoamikyo and @nEEtdo0d.

JP support, thanks @ferina8-14, @noname94 and @railzy.

TW support, thanks @Zorachristine , some features might not work.

GUI development, thanks @18870 , say HURRAY.

这里是一张GUI预览图: gui

功能 Features

  • 出击:主线图,活动图,共斗活动,紧急委托刷钻石。
  • 收获:委托,战术学院,科研,后宅,指挥喵,大舰队,收获,商店购买,开发船坞,每日抽卡,档案密钥。
  • 每日:每日任务,困难图,演习,潜艇图,活动每日AB图,活动每日SP图,共斗活动每日,作战档案。
  • 大世界:余烬信标,每月开荒,大世界每日,隐秘海域,短猫相接,深渊海域,塞壬要塞。

突出特性:

  • 心情控制:计算心情防止红脸或者保持经验加成状态。
  • 活动图开荒:支持在非周回模式下运行,能处理移动距离限制,光之壁,岸防炮,地图解谜,地图迷宫等特殊机制。
  • 无缝收菜:时间管理大师,计算委托科研等的完成时间,完成后立即收获。
  • 大世界:一条龙完成,接大世界每日,买空港口商店,做大世界每日,短猫相接,购买明石商店,每27分钟清理隐秘海域,清理深渊海域和塞壬要塞,计划作战模式是什么垃圾,感觉不如Alas......好用
  • 大世界月初开荒:大世界每月重置后,不需要购买作战记录仪(5000油道具)即可开荒。

安装 Installation

中文安装教程,包含自动安装教程,使用教程,手动安装教程,远程控制教程。

设备支持文档,包含模拟器运行、云手机运行以及解锁各种骚方式运行。

正确地使用调度器

  • 理解 任务调度器 的概念

    在 Alas 中每个任务都是独立运行的,被一个统一的调度器调度,任务执行完成后会自动设置这个任务的下一次运行时间。例如,科研 任务执行了一个 4 小时的科研,调度器就会把 科研 任务推迟 4 小时,以达到无缝收菜的目的。

  • 理解 自动心情控制 机制

    Alas 的心情控制以预防为主,不会等到出现红脸弹窗才去解决,这样可以保持心情值在 120 以上,贪到 20% 的经验。例如,当前心情值是 113,放置于后宅二楼(+50/h),未婚(+0/h),Alas 会等到 12 分钟之后,心情值回复到 120 以上再继续出击。而在这个等待的期间,Alas 也会穿插执行其他任务。

  • 正确地使用调度器

    调度器的 错误使用方法是只开一两个 任务,手动管理任务或开关 Alas,调度器的 正确使用方法是启用全部 你觉得可能有用的任务,让调度器自动调度,把模拟器和 Alas 都最小化到托盘,忘记碧蓝航线这个游戏。

修改游戏设置

对照这个表格修改游戏内的设置,正常玩过游戏的都这么设置

对着改的意思是,这是统一的标准,照着给定的内容执行,不要问为什么,不允许有不一样的。

主界面 => 右下角:设置 => 左侧边栏:选项

设置名称
帧数设置 60帧
大型作战设置 - 减少TB引导
大型作战设置 - 自律时自动提交道具
大型作战设置 - 安全海域默认开启自律
剧情自动播放 开启
剧情自动播放速度调整 特快
待机模式设置 - 启用待机模式
其他设置 - 重复角色获得提示
其他设置 - 快速更换二次确认界面
其他设置 - 展示结算角色

大世界 => 右上角:雷达 => 指令模块(order):潜艇支援:

设置名称
X 消耗时潜艇出击 取消勾选

主界面 => 右下角:建造 => 左侧边栏: 退役 => 左侧齿轮图标:一键退役设置:

设置名称
选择优先级1 R
选择优先级2 SR
选择优先级3 N
「拥有」满星的同名舰船时,保留几艘符合退役条件的同名舰船 不保留
「没有」满星的同名舰船时,保留几艘符合退役条件的同名舰船 满星所需或不保留

将角色设备的装备外观移除,以免影响图像识别

如何上报bug How to Report Bugs

在提问题之前至少花费 5 分钟来思考和准备,才会有人花费他的 5 分钟来帮助你。"XX怎么运行不了","XX卡住了",这样的描述将不会得到回复。

  • 在提问题前,请先阅读 常见问题(FAQ)
  • 检查 Alas 的更新和最近的 commit,确认使用的是最新版。
  • 上传出错 log,在 log/error 目录下,以毫秒时间戳为文件夹名,包含 log.txt 和最近的截图。若不是错误而是非预期的行为,提供在 log 目录下当天的 log和至少一张游戏截图。

已知问题 Known Issues

  • 无法处理网络波动,重连弹窗,跳小黄鸡。
  • 在极低配电脑上运行可能会出现各种问题,极低配指截图耗时大于1s,一般电脑耗时约0.5s,高配耗时约0.3s。
  • 演习可能SL失败,演习看的是屏幕上方的血槽,血槽可能被立绘遮挡,因此需要一定时间(默认1s)血量低于一定值(默认40%)才会触发SL。一个血皮后排就有30%左右的血槽,所以有可能在 1s 内被打死。
  • 极少数情况下 ADB 和 uiautomator2 会抽风,是模拟器的问题,重启模拟器即可。
  • 拖动操作在模拟器卡顿时,会被视为点击

Alas 社区准则 Alas Community Guidelines

#1416

文档 Documents

海图识别 perspective

海图识别 是一个碧蓝航线脚本的核心,如果只是单纯地使用 模板匹配 (Template matching) 来进行索敌,就不可避免地会出现 BOSS被小怪堵住 的情况。 Alas 提供了一个更好的海图识别方法,在 module.map_detection 中,你将可以得到完整的海域信息,比如:

2020-03-10 22:09:03.830 | INFO |    A  B  C  D  E  F  G  H
2020-03-10 22:09:03.830 | INFO | 1 -- ++ 2E -- -- -- -- --
2020-03-10 22:09:03.830 | INFO | 2 -- ++ ++ MY -- -- 2E --
2020-03-10 22:09:03.830 | INFO | 3 == -- FL -- -- -- 2E MY
2020-03-10 22:09:03.830 | INFO | 4 -- == -- -- -- -- ++ ++
2020-03-10 22:09:03.830 | INFO | 5 -- -- -- 2E -- 2E ++ ++

更多文档,请前往 WIKI

参与开发 Join Development

Alas 仍在活跃开发中,我们会不定期发布未来的工作在 Issues 上并标记为 help wanted,欢迎向 Alas 提交 Pull Requests,我们会认真阅读你的每一行代码的。

哦对,别忘了阅读 开发文档

相关项目 Relative Repositories

  • AzurStats,基于 Alas 实现的碧蓝航线掉落统计平台。
  • AzurLaneUncensored,与 Alas 对接的碧蓝航线反和谐。
  • ALAuto,EN服的碧蓝航线脚本,已不再维护,Alas 模仿了其架构。
  • ALAuto homg_trans_beta,Alas 引入了其中的单应性变换至海图识别模块中。
  • PyWebIO,Alas 使用的 GUI 库。
  • MaaAssistantArknights,明日方舟小助手,全日常一键长草,现已加入Alas豪华午餐 -> MAA 插件使用教程
  • FGO-py,全自动免配置跨平台开箱即用的Fate/Grand Order助手.启动脚本,上床睡觉,养肝护发,满加成圣诞了解一下?
  • StarRailCopilot,星铁速溶茶,崩坏:星穹铁道脚本,基于下一代Alas框架。

联系我们 Contact Us

智能调度系统完整逻辑流程图

系统概述

智能调度系统(OpsiScheduling)是AzurLaneAutoScript中用于协调大世界任务的核心调度器,负责在侵蚀1练级(OpsiHazard1Leveling)和黄币补充任务(OpsiMeowfficerFarming、OpsiObscure、OpsiAbyssal、OpsiStronghold)之间智能切换。


核心配置项

OpsiScheduling 配置

配置项 说明 默认值
Scheduler.Enable 智能调度总开关 false
OperationCoinsPreserve 侵蚀1黄币保留值(覆盖原配置) 0 (使用原配置)
ActionPointPreserve 行动力保留值(覆盖所有任务) 0 (使用原配置)
ActionPointNotifyLevels 行动力阈值通知列表 "500, 1000, 2000, 3000"
OperationCoinsReturnThreshold 黄币返回阈值 null (等于CL1保留值)
OperationCoinsReturnThresholdApplyToAllCoinTasks 黄币阈值是否适用于所有黄币补充任务 true
EnableMeowfficerFarming 启用短猫相接 true
EnableObscure 启用隐秘海域 false
EnableAbyssal 启用深渊海域 false
EnableStronghold 启用塞壬要塞 false

完整逻辑流程图

flowchart TD
    Start([用户启动OpsiScheduling任务]) --> CheckEnabled{智能调度<br/>是否启用?}

    CheckEnabled -->|否| End1([跳过执行])
    CheckEnabled -->|是| GetResources[获取当前资源状态]

    GetResources --> GetYellowCoins[读取当前黄币数量]
    GetYellowCoins --> GetActionPoint[进入行动力界面<br/>读取总行动力]
    GetActionPoint --> GetCL1Preserve[获取CL1黄币保留值<br/>优先使用智能调度配置]

    GetCL1Preserve --> CheckYellowCoins{黄币 < 保留值?}

    CheckYellowCoins -->|否| YellowCoinsEnough[黄币充足]
    CheckYellowCoins -->|是| YellowCoinsLow[黄币不足]

    %% 黄币充足分支
    YellowCoinsEnough --> GetMinAPReserve[获取CL1最低行动力保留值]
    GetMinAPReserve --> CheckMinAP{行动力 < 最低保留?}

    CheckMinAP -->|是| NotifyAPLow[推送通知:<br/>行动力低于最低保留]
    CheckMinAP -->|否| ExecuteCL1[执行侵蚀1练级]

    NotifyAPLow --> DelayScheduling1[延迟智能调度1小时]
    DelayScheduling1 --> End2([任务停止])

    ExecuteCL1 --> DisableAllCoinTasks[禁用所有黄币补充任务]
    DisableAllCoinTasks --> CallCL1[调用OpsiHazard1Leveling]
    CallCL1 --> End3([任务停止])

    %% 黄币不足分支
    YellowCoinsLow --> GetMeowAPPreserve[获取短猫行动力保留值<br/>优先使用智能调度配置]
    GetMeowAPPreserve --> CheckMeowAP{行动力 < 短猫保留值?}

    CheckMeowAP -->|是| NotifyBothLow[推送通知:<br/>黄币与行动力双重不足]
    CheckMeowAP -->|否| GetEnabledTasks[获取智能调度中<br/>启用的黄币补充任务]

    NotifyBothLow --> DelayScheduling2[延迟智能调度1小时]
    DelayScheduling2 --> End4([任务停止])

    GetEnabledTasks --> CheckTasksEmpty{启用的任务<br/>列表为空?}

    CheckTasksEmpty -->|是| DefaultMeow[默认启用短猫相接]
    CheckTasksEmpty -->|否| CheckTasksEnabled[检查各任务调度器状态]

    DefaultMeow --> CheckTasksEnabled

    CheckTasksEnabled --> AutoEnableTasks[自动启用未启用的任务]
    AutoEnableTasks --> NotifySwitchToCoin[推送通知:<br/>切换至黄币补充任务]
    NotifySwitchToCoin --> CallCoinTasks[调用所有可用的<br/>黄币补充任务]
    CallCoinTasks --> CheckCoolingDown{有冷却任务?}

    CheckCoolingDown -->|是| DelayToCD[延迟智能调度<br/>到冷却任务之后]
    CheckCoolingDown -->|否| End5([任务停止])

    DelayToCD --> End6([任务停止])

    style Start fill:#e1f5e1
    style End1 fill:#ffe1e1
    style End2 fill:#ffe1e1
    style End3 fill:#ffe1e1
    style End4 fill:#ffe1e1
    style End5 fill:#ffe1e1
    style End6 fill:#ffe1e1
Loading

侵蚀1练级任务逻辑

flowchart TD
    CL1Start([OpsiHazard1Leveling开始]) --> CL1CheckSmart{智能调度<br/>是否启用?}

    CL1CheckSmart -->|否| CL1Traditional[传统模式:<br/>黄币不足时延迟任务]
    CL1CheckSmart -->|是| CL1GetYellow[获取当前黄币数量]

    CL1GetYellow --> CL1GetPreserve[获取黄币保留值<br/>优先使用智能调度配置]
    CL1GetPreserve --> CL1CheckYellow{黄币 < 保留值?}

    CL1CheckYellow -->|否| CL1Continue[继续执行侵蚀1]
    CL1CheckYellow -->|是| CL1GetAP[获取当前行动力]

    CL1GetAP --> CL1GetMeowAP[获取短猫行动力保留值<br/>优先使用智能调度配置]
    CL1GetMeowAP --> CL1CheckAP{行动力 < 短猫保留值?}

    CL1CheckAP -->|是| CL1NotifyBoth[推送通知:<br/>黄币与行动力双重不足]
    CL1CheckAP -->|否| CL1GetEnabledTasks[获取智能调度中<br/>启用的黄币补充任务]

    CL1NotifyBoth --> CL1Delay1[延迟侵蚀1任务1小时]
    CL1Delay1 --> CL1End1([任务停止])

    CL1GetEnabledTasks --> CL1AutoEnable[自动启用未启用的任务]
    CL1AutoEnable --> CL1NotifySwitch[推送通知:<br/>切换至黄币补充任务]
    CL1NotifySwitch --> CL1CallCoin[调用所有可用的<br/>黄币补充任务]
    CL1CallCoin --> CL1CheckCD{有冷却任务?}

    CL1CheckCD -->|是| CL1DelayToCD[延迟侵蚀1到冷却任务之后]
    CL1CheckCD -->|否| CL1End2([任务停止])

    CL1DelayToCD --> CL1End3([任务停止])

    %% 继续执行侵蚀1的流程
    CL1Continue --> CL1SetAP[设置行动力<br/>预设为120点]
    CL1SetAP --> CL1NotifyAPThreshold[检查并推送<br/>行动力阈值通知]
    CL1NotifyAPThreshold --> CL1CheckMinAP{行动力 < 最低保留?}

    CL1CheckMinAP -->|是| CL1NotifyAPLow[推送通知:<br/>行动力低于最低保留]
    CL1CheckMinAP -->|否| CL1Execute[执行战略搜索]

    CL1NotifyAPLow --> CL1Delay2[延迟侵蚀1任务1小时]
    CL1Delay2 --> CL1End4([任务停止])

    CL1Execute --> CL1Rescan1[第一次重扫:<br/>战略搜索后完整镜头重扫]
    CL1Rescan1 --> CL1CheckFixedPatrol{启用舰队<br/>强制移动?}

    CL1CheckFixedPatrol -->|是且无事件| CL1FixedPatrol[执行定点巡逻扫描]
    CL1CheckFixedPatrol -->|否| CL1HandleAfter[处理战后事件]

    CL1FixedPatrol --> CL1Rescan2[第二次重扫:<br/>舰队移动后再次重扫]
    CL1Rescan2 --> CL1HandleAfter

    CL1HandleAfter --> CL1SubmitData[提交CL1数据到遥测]
    CL1SubmitData --> CL1CheckSwitch[检查任务切换]
    CL1CheckSwitch --> CL1Loop([循环继续])

    CL1Traditional --> CL1TraditionalDelay[延迟到服务器刷新]
    CL1TraditionalDelay --> CL1End5([任务停止])

    style CL1Start fill:#e1f5e1
    style CL1End1 fill:#ffe1e1
    style CL1End2 fill:#ffe1e1
    style CL1End3 fill:#ffe1e1
    style CL1End4 fill:#ffe1e1
    style CL1End5 fill:#ffe1e1
    style CL1Loop fill:#e1e1ff
Loading

黄币补充任务逻辑(以短猫相接为例)

flowchart TD
    MeowStart([OpsiMeowfficerFarming开始]) --> MeowCheckCL1{启用了CL1?}

    MeowCheckCL1 -->|否| MeowExecute[执行短猫任务]
    MeowCheckCL1 -->|是| MeowGetThreshold[获取黄币返回阈值]

    MeowGetThreshold --> MeowCheckThresholdNull{阈值为null?}

    MeowCheckThresholdNull -->|是| MeowExecute
    MeowCheckThresholdNull -->|否| MeowCheckYellowStart{任务开始前:<br/>黄币 >= 返回阈值?}

    MeowCheckYellowStart -->|是| MeowReturnCL1Start[禁用所有黄币补充任务<br/>返回CL1]
    MeowCheckYellowStart -->|否| MeowExecute

    MeowReturnCL1Start --> MeowNotifyReturn1[推送通知:<br/>黄币充足切换回侵蚀1]
    MeowNotifyReturn1 --> MeowCallCL1_1[调用OpsiHazard1Leveling]
    MeowCallCL1_1 --> MeowEnd1([任务停止])

    %% 执行短猫任务
    MeowExecute --> MeowSetAP[设置行动力保留值<br/>优先使用智能调度配置]
    MeowSetAP --> MeowCheckAPFirst[首次检查行动力]
    MeowCheckAPFirst --> MeowNotifyAPThreshold[检查并推送<br/>行动力阈值通知]

    MeowNotifyAPThreshold --> MeowCheckSmart{智能调度<br/>是否启用?}

    MeowCheckSmart -->|否| MeowRun[执行短猫搜索]
    MeowCheckSmart -->|是| MeowGetAPPreserve[获取行动力保留值<br/>优先使用智能调度配置]

    MeowGetAPPreserve --> MeowCheckAPLow{行动力 < 保留值?}

    MeowCheckAPLow -->|否| MeowRun
    MeowCheckAPLow -->|是| MeowNotifyAPLow[推送通知:<br/>短猫行动力不足]

    MeowNotifyAPLow --> MeowDelay[延迟短猫1小时]
    MeowDelay --> MeowCheckCL1Enabled{启用了CL1?}

    MeowCheckCL1Enabled -->|是| MeowCallCL1_2[切换回OpsiHazard1Leveling]
    MeowCheckCL1Enabled -->|否| MeowEnd2([任务停止])

    MeowCallCL1_2 --> MeowEnd3([任务停止])

    %% 执行短猫搜索
    MeowRun --> MeowSearch[执行战略搜索]
    MeowSearch --> MeowRescan[重扫地图]
    MeowRescan --> MeowHandleAfter[处理战后事件]
    MeowHandleAfter --> MeowCheckSwitch[检查任务切换]

    MeowCheckSwitch --> MeowCheckYellowLoop{循环中:<br/>黄币 >= 返回阈值?}

    MeowCheckYellowLoop -->|是| MeowReturnCL1Loop[禁用所有黄币补充任务<br/>返回CL1]
    MeowCheckYellowLoop -->|否| MeowLoop([循环继续])

    MeowReturnCL1Loop --> MeowNotifyReturn2[推送通知:<br/>黄币充足切换回侵蚀1]
    MeowNotifyReturn2 --> MeowCallCL1_3[调用OpsiHazard1Leveling]
    MeowCallCL1_3 --> MeowEnd4([任务停止])

    style MeowStart fill:#e1f5e1
    style MeowEnd1 fill:#ffe1e1
    style MeowEnd2 fill:#ffe1e1
    style MeowEnd3 fill:#ffe1e1
    style MeowEnd4 fill:#ffe1e1
    style MeowLoop fill:#e1e1ff
Loading

其他黄币补充任务逻辑(隐秘海域/深渊海域)

flowchart TD
    ObscureStart([OpsiObscure/OpsiAbyssal开始]) --> ObscureCheckCL1{启用了CL1?}

    ObscureCheckCL1 -->|否| ObscureExecute[执行任务]
    ObscureCheckCL1 -->|是| ObscureGetThreshold[获取黄币返回阈值]

    ObscureGetThreshold --> ObscureCheckThresholdNull{阈值为null?}

    ObscureCheckThresholdNull -->|是| ObscureExecute
    ObscureCheckThresholdNull -->|否| ObscureCheckApplicable{当前任务在<br/>适用范围内?}

    ObscureCheckApplicable -->|否| ObscureExecute
    ObscureCheckApplicable -->|是| ObscureCheckYellowStart{任务开始前:<br/>黄币 >= 返回阈值?}

    ObscureCheckYellowStart -->|是| ObscureReturnCL1Start[禁用所有黄币补充任务<br/>返回CL1]
    ObscureCheckYellowStart -->|否| ObscureExecute

    ObscureReturnCL1Start --> ObscureNotifyReturn1[推送通知:<br/>黄币充足切换回侵蚀1]
    ObscureNotifyReturn1 --> ObscureCallCL1_1[调用OpsiHazard1Leveling]
    ObscureCallCL1_1 --> ObscureEnd1([任务停止])

    %% 执行任务
    ObscureExecute --> ObscureGetNext[获取下一个目标<br/>隐秘坐标/深渊记录器]
    ObscureGetNext --> ObscureCheckContent{有可执行内容?}

    ObscureCheckContent -->|否| ObscureNoContent[没有可执行内容]
    ObscureCheckContent -->|是| ObscureRun[执行自动搜索]

    ObscureNoContent --> ObscureCheckSmartNoContent{智能调度<br/>是否启用?}

    ObscureCheckSmartNoContent -->|否| ObscureTraditionalDelay[延迟到服务器刷新<br/>或2.5小时后]
    ObscureCheckSmartNoContent -->|是| ObscureCheckYellowNoContent{黄币 < CL1保留值?}

    ObscureTraditionalDelay --> ObscureEnd2([任务停止])

    ObscureCheckYellowNoContent -->|是| ObscureTryOther[尝试其他黄币补充任务]
    ObscureCheckYellowNoContent -->|否| ObscureDisableTask[禁用当前任务<br/>延迟到30天后]

    ObscureTryOther --> ObscureCheckOtherAvail{有其他可用任务?}

    ObscureCheckOtherAvail -->|是| ObscureCallOther[调用下一个黄币补充任务]
    ObscureCheckOtherAvail -->|否| ObscureCallCL1_2[返回OpsiHazard1Leveling]

    ObscureCallOther --> ObscureEnd3([任务停止])
    ObscureCallCL1_2 --> ObscureEnd4([任务停止])
    ObscureDisableTask --> ObscureEnd5([任务停止])

    %% 执行自动搜索
    ObscureRun --> ObscureSearch[执行自动搜索]
    ObscureSearch --> ObscureHandleAfter[处理战后事件]
    ObscureHandleAfter --> ObscureCheckSwitch[检查任务切换]

    ObscureCheckSwitch --> ObscureCheckYellowLoop{循环中:<br/>黄币 >= 返回阈值?}

    ObscureCheckYellowLoop -->|是| ObscureReturnCL1Loop[禁用所有黄币补充任务<br/>返回CL1]
    ObscureCheckYellowLoop -->|否| ObscureCheckForceRun{ForceRun<br/>是否启用?}

    ObscureReturnCL1Loop --> ObscureNotifyReturn2[推送通知:<br/>黄币充足切换回侵蚀1]
    ObscureNotifyReturn2 --> ObscureCallCL1_3[调用OpsiHazard1Leveling]
    ObscureCallCL1_3 --> ObscureEnd6([任务停止])

    ObscureCheckForceRun -->|是| ObscureLoop([循环继续])
    ObscureCheckForceRun -->|否| ObscureFinish[根据智能调度状态<br/>完成任务]

    ObscureFinish --> ObscureCheckSmartFinish{智能调度<br/>是否启用?}

    ObscureCheckSmartFinish -->|是| ObscureDisableFinish[禁用任务调度]
    ObscureCheckSmartFinish -->|否| ObscureDelayFinish[延迟到服务器刷新<br/>或2.5小时后]

    ObscureDisableFinish --> ObscureEnd7([任务停止])
    ObscureDelayFinish --> ObscureEnd8([任务停止])

    style ObscureStart fill:#e1f5e1
    style ObscureEnd1 fill:#ffe1e1
    style ObscureEnd2 fill:#ffe1e1
    style ObscureEnd3 fill:#ffe1e1
    style ObscureEnd4 fill:#ffe1e1
    style ObscureEnd5 fill:#ffe1e1
    style ObscureEnd6 fill:#ffe1e1
    style ObscureEnd7 fill:#ffe1e1
    style ObscureEnd8 fill:#ffe1e1
    style ObscureLoop fill:#e1e1ff
Loading

行动力阈值通知逻辑

flowchart TD
    APStart([行动力设置完成]) --> APCheckSmart{智能调度<br/>是否启用?}

    APCheckSmart -->|否| APEnd1([跳过通知])
    APCheckSmart -->|是| APGetCurrent[获取当前行动力总量]

    APGetCurrent --> APGetLevels[解析配置的阈值列表<br/>如: 500,1000,2000,3000]
    APGetLevels --> APFindThreshold[从高到低遍历阈值<br/>找到第一个 <= 当前行动力的阈值]

    APFindThreshold --> APCheckFirst{是否首次调用?}

    APCheckFirst -->|是| APSaveThreshold[保存当前阈值<br/>不发送通知]
    APCheckFirst -->|否| APCheckChanged{阈值区间<br/>是否变化?}

    APSaveThreshold --> APEnd2([完成])

    APCheckChanged -->|否| APEnd3([无变化,不通知])
    APCheckChanged -->|是| APCheckDirection{当前阈值<br/>是否为null?}

    APCheckDirection -->|是| APBelowLowest[降到最低阈值以下]
    APCheckDirection -->|否| APCompare{当前阈值 ><br/>上次阈值?}

    APBelowLowest --> APNotifyBelow[推送通知:<br/>行动力降至X以下]
    APNotifyBelow --> APUpdateLast[更新上次通知的阈值]
    APUpdateLast --> APEnd4([完成])

    APCompare -->|大于| APRise[行动力增加]
    APCompare -->|小于| APFall[行动力减少]

    APRise --> APNotifyRise[推送通知:<br/>行动力升至X+]
    APFall --> APNotifyFall[推送通知:<br/>行动力降至X+]

    APNotifyRise --> APUpdateLast2[更新上次通知的阈值]
    APNotifyFall --> APUpdateLast2
    APUpdateLast2 --> APEnd5([完成])

    style APStart fill:#e1f5e1
    style APEnd1 fill:#ffe1e1
    style APEnd2 fill:#ffe1e1
    style APEnd3 fill:#ffe1e1
    style APEnd4 fill:#ffe1e1
    style APEnd5 fill:#ffe1e1
Loading

黄币返回阈值计算逻辑

flowchart TD
    ThresholdStart([计算黄币返回阈值]) --> ThresholdCheckCL1{CL1是否启用?}

    ThresholdCheckCL1 -->|否| ThresholdReturn1([返回: null, null])
    ThresholdCheckCL1 -->|是| ThresholdCheckSmart{智能调度<br/>是否启用?}

    ThresholdCheckSmart -->|否| ThresholdGetOriginal[获取CL1原配置保留值]
    ThresholdCheckSmart -->|是| ThresholdCheckApplicable{当前任务在<br/>适用范围内?}

    ThresholdGetOriginal --> ThresholdReturn2([返回: null, CL1保留值<br/>禁用黄币检查])

    ThresholdCheckApplicable -->|否| ThresholdGetSmart1[获取智能调度CL1保留值]
    ThresholdCheckApplicable -->|是| ThresholdGetSmart2[获取智能调度CL1保留值]

    ThresholdGetSmart1 --> ThresholdReturn3([返回: null, CL1保留值<br/>禁用黄币检查])

    ThresholdGetSmart2 --> ThresholdGetConfig[读取OperationCoinsReturnThreshold配置]
    ThresholdGetConfig --> ThresholdCheckZero{配置值 == 0?}

    ThresholdCheckZero -->|是| ThresholdReturn4([返回: null, CL1保留值<br/>禁用黄币检查])
    ThresholdCheckZero -->|否| ThresholdCheckNull{配置值 == null?}

    ThresholdCheckNull -->|是| ThresholdUseDefault[使用默认值<br/>等于CL1保留值]
    ThresholdCheckNull -->|否| ThresholdUseConfig[使用配置值]

    ThresholdUseDefault --> ThresholdCalculate[计算最终阈值:<br/>CL1保留值 + 返回阈值]
    ThresholdUseConfig --> ThresholdCalculate

    ThresholdCalculate --> ThresholdReturn5([返回: 返回阈值, CL1保留值])

    style ThresholdStart fill:#e1f5e1
    style ThresholdReturn1 fill:#ffe1e1
    style ThresholdReturn2 fill:#ffe1e1
    style ThresholdReturn3 fill:#ffe1e1
    style ThresholdReturn4 fill:#ffe1e1
    style ThresholdReturn5 fill:#e1ffe1
Loading

任务优先级与执行顺序

黄币补充任务固定顺序

当需要尝试其他黄币补充任务时,按以下固定顺序:

  1. OpsiObscure (隐秘海域)
  2. OpsiAbyssal (深渊海域)
  3. OpsiStronghold (塞壬要塞)
  4. OpsiMeowfficerFarming (短猫相接)

任务切换规则

flowchart LR
    CL1[侵蚀1练级] -->|黄币不足| Coins[黄币补充任务]
    Coins -->|黄币充足| CL1
    Coins -->|无内容| NextCoin[下一个黄币补充任务]
    NextCoin -->|所有任务无内容| CL1
Loading

关键特性说明

1. 智能调度启用判定

智能调度功能由 OpsiScheduling.Scheduler.Enable 控制,通过 is_smart_scheduling_enabled(config) 函数统一判断。

2. 配置优先级

  • 黄币保留值: 智能调度配置 > CL1原配置
  • 行动力保留值: 智能调度配置 > 各任务原配置

3. 推送通知条件

所有推送通知需要同时满足:

  1. 智能调度已启用
  2. OpsiGeneral.NotifyOpsiMail 已启用
  3. Error.OnePushConfig 已正确配置(provider不为null)

4. 任务完成策略

  • 智能调度启用: 禁用任务调度器,由智能调度统一管理
  • 智能调度关闭: 延迟到服务器刷新或指定时间后再运行

5. 黄币返回阈值适用范围

通过4个独立开关控制哪些黄币补充任务应用返回阈值:

  • EnableMeowfficerFarming: 短猫相接(默认启用)
  • EnableObscure: 隐秘海域(默认关闭)
  • EnableAbyssal: 深渊海域(默认关闭)
  • EnableStronghold: 塞壬要塞(默认关闭)

6. 行动力阈值通知机制

  • 维护上次通知的阈值状态
  • 仅在跨越阈值区间时发送通知
  • 支持升至/降至两种方向的通知

核心类与方法

OpsiScheduling 类

方法 说明
run_smart_scheduling() 智能调度主入口
_switch_to_coin_task() 切换到黄币补充任务
_execute_hazard1_leveling() 执行侵蚀1练级
_notify_coins_ap_insufficient() 黄币与行动力双重不足通知
_notify_ap_insufficient() 行动力不足通知
_notify_switch_to_coin_task() 切换到黄币补充任务通知

CoinTaskMixin 类

方法 说明
_get_operation_coins_return_threshold() 计算黄币返回阈值
_get_smart_scheduling_operation_coins_preserve() 获取智能调度黄币保留值
_get_smart_scheduling_action_point_preserve() 获取智能调度行动力保留值
_check_yellow_coins_and_return_to_cl1() 检查黄币并返回CL1
_disable_all_coin_tasks_and_return_to_cl1() 禁用所有黄币补充任务并返回CL1
_try_other_coin_tasks() 尝试其他黄币补充任务
_finish_task_with_smart_scheduling() 根据智能调度状态完成任务
_handle_no_content_and_try_other_tasks() 处理无内容情况并尝试其他任务
notify_push() 发送推送通知

OpsiHazard1Leveling 类

方法 说明
os_hazard1_leveling() 侵蚀1练级主循环
check_and_notify_action_point_threshold() 检查并推送行动力阈值通知
notify_push() 发送推送通知

数据流向

flowchart LR
    Config[配置文件] --> Scheduler[OpsiScheduling]
    Scheduler --> CL1[OpsiHazard1Leveling]
    Scheduler --> Meow[OpsiMeowfficerFarming]
    Scheduler --> Obscure[OpsiObscure]
    Scheduler --> Abyssal[OpsiAbyssal]
    Scheduler --> Stronghold[OpsiStronghold]

    CL1 --> Scheduler
    Meow --> Scheduler
    Obscure --> Scheduler
    Abyssal --> Scheduler
    Stronghold --> Scheduler

    Scheduler --> Notify[推送通知系统]
    CL1 --> Notify
    Meow --> Notify
    Obscure --> Notify
    Abyssal --> Notify
Loading

总结

智能调度系统通过以下机制实现任务的智能协调:

  1. 资源监控: 实时监控黄币和行动力状态
  2. 任务切换: 根据资源状态在CL1和黄币补充任务间切换
  3. 优先级管理: 按固定顺序尝试黄币补充任务
  4. 推送通知: 关键状态变化时及时通知用户
  5. 配置覆盖: 智能调度配置优先于原任务配置
  6. 灵活控制: 支持启用/禁用特定黄币补充任务

About

Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本(自用改版) | 无缝委托科研,全自动大世界

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 98.9%
  • CSS 0.6%
  • Batchfile 0.4%
  • TypeScript 0.1%
  • Shell 0.0%
  • Vue 0.0%