From 390ee974bf5c7c3936b2ef012f62150069fd05c9 Mon Sep 17 00:00:00 2001 From: yan Date: Fri, 16 Jan 2026 17:16:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=B7=BB=E5=8A=A0=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现了 realTimeMissions 函数用于处理实时任务 - 支持自动对话、自动战斗、自动拾取三种实时任务类型 - 添加了 real_time_missions 配置选项到设置界面 - 集成实时任务调度器替代原有的固定任务执行方式 - 支持通用任务和非通用任务的差异化处理 - 更新了任务执行流程以使用新的实时任务机制 --- repo/js/FullyAutoAndSemiAutoTools/main.js | 31 +++++++++++++++++-- .../FullyAutoAndSemiAutoTools/settings.json | 13 ++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/repo/js/FullyAutoAndSemiAutoTools/main.js b/repo/js/FullyAutoAndSemiAutoTools/main.js index 4efdec94e..9165a9504 100644 --- a/repo/js/FullyAutoAndSemiAutoTools/main.js +++ b/repo/js/FullyAutoAndSemiAutoTools/main.js @@ -93,6 +93,31 @@ const timeType = Object.freeze({ } }); +/** + * 实时任务处理函数 + * @param {boolean} is_common - 是否为通用任务标志 + * @returns {void} 无返回值 + */ +async function realTimeMissions(is_common = true) { + let real_time_missions = settings.real_time_missions // 从设置中获取实时任务列表 + if (!is_common) { // 处理非通用任务 + if (real_time_missions.includes("自动战斗")) { + // await dispatcher.runAutoFightTask(new AutoFightParam()); + await dispatcher.runTask(new SoloTask("AutoFight")); // 执行自动战斗任务 + } + return // 非通用任务处理完毕后直接返回 + } + // 处理通用任务 + if (real_time_missions.includes("自动对话")) { + dispatcher.addTrigger(new RealtimeTimer("AutoSkip")); // 添加自动对话触发器 + } + if (real_time_missions.includes("自动拾取")) { + // 启用自动拾取的实时任务 + dispatcher.addTrigger(new RealtimeTimer("AutoPick")); // 添加自动拾取触发器 + } + +} + async function init() { let settingsConfig = await initSettings(); let utils = [ @@ -466,7 +491,8 @@ async function init() { log.debug(`[RUN]{0}[RUN]`, JSON.stringify([...list])) } // 启用自动拾取的实时任务,并配置成启用急速拾取模式 - dispatcher.addTrigger(new RealtimeTimer("AutoPick", {"forceInteraction": true})); + // dispatcher.addTrigger(new RealtimeTimer("AutoPick")); + await realTimeMissions() } return true } @@ -1051,7 +1077,8 @@ async function runPath(path) { await pathingScript.runFile(path) if (team.fight) { //启用战斗 - await dispatcher.runAutoFightTask(new AutoFightParam()); + // await dispatcher.runAutoFightTask(new AutoFightParam()); + await realTimeMissions(false) } log.debug("路径执行完成: {path}", path) RecordPath.paths.add({timestamp: Date.now(), path: path}) diff --git a/repo/js/FullyAutoAndSemiAutoTools/settings.json b/repo/js/FullyAutoAndSemiAutoTools/settings.json index a4d113cba..3773c1e66 100644 --- a/repo/js/FullyAutoAndSemiAutoTools/settings.json +++ b/repo/js/FullyAutoAndSemiAutoTools/settings.json @@ -46,9 +46,16 @@ }, { "name": "http_api", - "type": "input-text", - "label": "[默认CD算法api]\ncron解析Http地址\n[请部署bettergi-scripts-tools可支持]", - "default": "http:///bgi/cron/next-timestamp" + "type": "input-text", + "label": "[默认CD算法api]\ncron解析Http地址\n[请部署bettergi-scripts-tools可支持]", + "default": "http:///bgi/cron/next-timestamp" + }, + { + "name": "real_time_missions", + "type": "multi-checkbox", + "label": "实时任务", + "options": ["自动对话","自动战斗","自动拾取"], + "default": ["自动拾取"] }, { "type": "separator"