From fcc475aed7e85d26da0f1087b937e351a20127b9 Mon Sep 17 00:00:00 2001 From: yan Date: Tue, 17 Feb 2026 12:02:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor(AutoPlan):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=A7=84=E5=88=92=E9=85=8D=E7=BD=AE=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用索引变量替代硬编码数组下标提高代码可读性 - 重构运行类型配置解析,支持更灵活的参数结构 - 完善地脉开采功能配置项,增加更多可配置参数 - 添加详细的注释说明各类配置参数的作用和格式 - 优化数组遍历逻辑,避免直接使用固定下标访问元素 --- repo/js/AutoPlan/main.js | 73 +++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/repo/js/AutoPlan/main.js b/repo/js/AutoPlan/main.js index 6a90fb083..eda6a98e5 100644 --- a/repo/js/AutoPlan/main.js +++ b/repo/js/AutoPlan/main.js @@ -201,14 +201,17 @@ async function loadMode(Load, autoOrderSet, runConfig) { item => { // 将当前项按"|"分割成数组 let arr = item.split("|") - - let runType = arr[0]; // 解析运行类型 - let days = arr[1].trim() !== "" - ? arr[1].split('/').map(d => parseInt(d.trim())).filter(d => !isNaN(d)) + // 类型|执行日期|执行顺序 + let index=0 + let runType = arr[index]; // 解析运行类型 + index++ + let days = arr[index].trim() !== "" + ? arr[index].split('/').map(d => parseInt(d.trim())).filter(d => !isNaN(d)) : []; + index++ // 解析顺序值,处理可能的无效值 let order = (() => { - const rawOrder = arr[2]; // 获取原始值 + const rawOrder = arr[index]; // 获取原始值 if (rawOrder == null || String(rawOrder).trim() === "") { return 0; // 若为空或无效值,默认返回 0 } @@ -225,13 +228,20 @@ async function loadMode(Load, autoOrderSet, runConfig) { autoLeyLineOutcrop: undefined // 地脉信息对象 } + index++ + if (!config.user.runTypes.includes(runType)) { throwError(`运行类型${runType}输入错误`) - } else if (config.user.runTypes[0] === runType) { - let partyName = arr[3]; // 解析队伍名称 - let domainName = arr[4]; // 解析秘境名称 - let domainRoundNum = arr[5]; // 解析副本轮数 - let sundaySelectedValue = arr[6]; // 解析周日|限时选择的值 + } + else if (config.user.runTypes[0] === runType) { + //"|队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日,..." + let partyName = arr[index]; // 解析队伍名称 + index++ + let domainName = arr[index]; // 解析秘境名称 + index++ + let domainRoundNum = arr[index]; // 解析副本轮数 + index++ + let sundaySelectedValue = arr[index]; // 解析周日|限时选择的值 // 检查秘境名称是否有效 if (!config.domainNames.has(domainName)) { @@ -261,16 +271,47 @@ async function loadMode(Load, autoOrderSet, runConfig) { autoFight.domainRoundNum = domainRoundNum // 副本轮数 autoFight.sundaySelectedValue = sundaySelectedValue // 周日|限时选择的值 - autoOrder.autoFight=autoFight // 将秘境信息对象添加到秘境顺序对象中 - - }else if(config.user.runTypes[1]===runType){ + } + else if(config.user.runTypes[1]===runType){ + //"|队伍名称|国家|刷几轮|花类型|好感队|是否使用脆弱树脂|是否使用须臾树脂|是否前往合成台合成浓缩树脂|是否使用冒险之证|发送详细通知|战斗超时时间,..." let autoLeyLineOutcrop={ - count: 0, - country: undefined, - + count: 0, // 刷几次(0=自动/无限) + country: undefined, // 国家地区 + leyLineOutcropType: undefined, // 需映射为经验/摩拉 + useAdventurerHandbook: false, // 是否使用冒险之证 + friendshipTeam: "", // 好感队伍ID + team: "", // 主队伍ID + timeout: 120, // 超时时间(秒) + isGoToSynthesizer: false, // 是否前往合成台 + useFragileResin: false, // 使用脆弱树脂 + useTransientResin: false, // 使用须臾树脂(须臾=Transient) + isNotification: false // 是否通知 } + index++ + autoLeyLineOutcrop.team=arr[index] + index++ + autoLeyLineOutcrop.country=arr[index] + index++ + autoLeyLineOutcrop.count=arr[index] + index++ + autoLeyLineOutcrop.leyLineOutcropType=arr[index] + index++ + autoLeyLineOutcrop.friendshipTeam=arr[index] + index++ + autoLeyLineOutcrop.useFragileResin=arr[index] + index++ + autoLeyLineOutcrop.useTransientResin=arr[index] + index++ + autoLeyLineOutcrop.isGoToSynthesizer=arr[index] + index++ + autoLeyLineOutcrop.useAdventurerHandbook=arr[index] + index++ + autoLeyLineOutcrop.isNotification=arr[index] + index++ + autoLeyLineOutcrop.timeout=arr[index] + autoOrder.autoLeyLineOutcrop=autoLeyLineOutcrop // 将地脉信息对象添加到顺序对象中 } // 将秘境顺序对象添加到列表中