任务调度功能旨在完成复杂的战斗安排,一般有两种情况会用到任务调度功能。
你可以在本项目 examples 文件夹下找到该示例配置文件
# 功能 9-3AD 批量练级
all_ships: # 所有参与轮换的舰船
- 骏河
- 鹰潭
- 85工程
- 格拉摩根
- 石勒苏益格
- 赛尔弗里吉
- 沙恩霍斯特
- 不屈
- 光荣
# banned_ship: -1 # -1 表示全体舰船位置不做限制
banned_ship:
- [] # 0 号位空着
- ["85工程"] # 旗舰不能是85工程
- ["不屈", "骏河", "鹰潭", "格拉摩根", "石勒苏益格", "赛尔弗里吉", "沙恩霍斯特", "不屈", "光荣"] # 这个位置只能是 85 工程
- [""] # 后面的不做限制, 但是必须像这样占位
- [""]
- [""]
- [""]
default_level_limit: 110 # 默认等级限制(2-111 之间的整数), 达到该等级后换下, 110 满级船不允许上场
level_limit:
# 吹雪: 111 # 满级吹雪可以上场
85工程: 111 # 满级85工程可以上场
72工程: 100 # 72工程 100 级后不允许上场
骏河: 30 # 骏河 30 级以后不允许上场
鹰潭: 100
default_repair_mode: 2 # 默认修理方式, 1:中破修, 2:大破修
repair_mode: # 针对舰船特别指定修理方式, 优先级高于 default_repair_mode
85工程: 1 # 85工程中破修
ship_count: 6 # 舰队舰船数量
fleet_id: 3 # 该任务占用的舰队编号, 不能用第1舰队
times: 200 # 任务次数
max_repair_time: 86400 # 最大修理时间(秒), 超出该时间则使用快速修复, 这里是 1 天也就是相当于不允许使用快修.
quick_repair: False # 不存在能够参与轮换的舰队时是否使用快修.
destroy_ship_types: null # 要解装哪些舰船, null 表示全部解装
# destroy_ship_types: ["DD", "CA", "CV"] 只解装驱逐, 重巡, 航母
示例代码。
请注意,file_path
参数务必使用绝对路径,暂时不支持相对路径。
# 任务调度功能,设置好后可以轮换练船,理论上可以无限轮换,直到手动停止
import os
from autowsgr.port.task_runner import FightTask, TaskRunner
from autowsgr.scripts.main import start_script
from autowsgr.fight.normal_fight import NormalFightPlan
timer = start_script(f"{os.path.dirname(os.path.abspath(__file__))}/user_settings.yaml")
plan = NormalFightPlan(timer, "normal_fight/9-3AD.yaml")
runner = TaskRunner() # 注册 TaskRunner
runner.tasks.append(
FightTask(
timer,
file_path=r"C:\\Users\\huany\\Desktop\\Projects\\Auto-WSGR-dev\\Auto-WSGR\\examples\\fight_task_example.yaml", # 任务配置文件路径,这个地方填写自己写好的配置文件
)
) # 添加任务 (仅支持绝对路径)
runner.run() # 启动调度器
大体相同,只需要把 plan
注册为活动图的 EventFightPlanxxx
。
敬请期待。
由于 TaskRunner 需要初始化港口舰船信息,其前摇非常长,约有 1~2min。
由于无法识别浴室正在修理的舰船,初始化时会将所有处于修理状态的涉及舰船快速修复。请保证账号拥有数量足够的 "快速修理工具"。
一般 100 个快速修理就够用了,如果不够用脚本挂 1-2 挂一天就可以。
任务调度逻辑中,每个任务的执行优先级等同于加入 TaskRunner.tasks
的顺序,请将可能需要等待的任务置于最前面。
例如多次建造任务应该放在炸鱼任务的前面,这样才能在等待舰船建造的间隙炸鱼。
其余场景同理,存在大量等待时间的任务应该被放在最前面。