From 32dc0169098b36dd1e08c88933e266f2aae6297b Mon Sep 17 00:00:00 2001 From: mno <718135749@qq.com> Date: Wed, 9 Jul 2025 12:32:40 +0800 Subject: [PATCH] =?UTF-8?q?js=EF=BC=9A=E9=94=84=E5=9C=B0=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E9=BE=991.1.3=20(#1311)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 优化拾取逻辑 2. 调整部分路线的数据 3. 优化路线选择逻辑 --- repo/js/AutoHoeingOneDragon/README.md | 6 ++- .../js/AutoHoeingOneDragon/assets/index2.json | 8 +-- repo/js/AutoHoeingOneDragon/main.js | 52 ++++++++++++------- repo/js/AutoHoeingOneDragon/manifest.json | 2 +- .../0_6_纳塔/6707--纳塔_踞石山_庙宇_(9-11).json | 2 +- 5 files changed, 43 insertions(+), 27 deletions(-) diff --git a/repo/js/AutoHoeingOneDragon/README.md b/repo/js/AutoHoeingOneDragon/README.md index 77bc5446..05c34a8e 100644 --- a/repo/js/AutoHoeingOneDragon/README.md +++ b/repo/js/AutoHoeingOneDragon/README.md @@ -37,7 +37,7 @@ - - 默认选择 **运行锄地路线** ,选择该模式会按照后续设置选择并运行相应路线 - - 选项 **输出地图追踪文件** ,会将选择的路线读取并分组输出到js文件夹下pathingOut文件夹 - - 选项 **强制刷新所有路线cd** ,用于清除js记录的运行历史 - - **选择执行第几个路径组:** 本js会分组运行地图追踪,分组方式详见后续选项,需要分组运行时建议在一个配置组中填好配置之后直接【复制配置组】,再在复制的配置组中选择路径组并修改配队,战斗策略等信息 + - **选择执行第几个路径组:** 本js会分组运行地图追踪,分组方式详见后续选项,需要分组运行时请确保精英目标数量,小怪目标数量,各个路径组的标签等信息【完全相同】,复制配置组时未知原因无法正确复制配置,请不要使用 - **本路径组使用配队名称:** 填写该路径组使用的配队名称,js会自动切换 - **是否禁用js拾取:** 本js采用黑白名单结合的方式实现仅拾取部分物品(默认只拾取狗粮和晶蝶),如果你想要使用bgi默认的拾取以拾取绝大部分物品,请禁用 - **账户名称:** 本js支持多用户,不同账户的记录分开存储,当你需要使用多用户时,请在这里填写不同的文本来区分不同账号的记录,如果你只使用一个账号,请不要修改该选项 @@ -72,6 +72,10 @@ --- ### 更新日志 +### 1.1.3(2025.07.09) +1. 优化拾取逻辑 +2. 调整部分路线的数据 +3. 优化路线选择逻辑 ### 1.1.0(2025.07.08) 1. 优化日志输出 2. 新增估算剩余时间,并适配abgi diff --git a/repo/js/AutoHoeingOneDragon/assets/index2.json b/repo/js/AutoHoeingOneDragon/assets/index2.json index b090a9ae..eccd3fb0 100644 --- a/repo/js/AutoHoeingOneDragon/assets/index2.json +++ b/repo/js/AutoHoeingOneDragon/assets/index2.json @@ -430,12 +430,12 @@ { "fileName": "3211稻妻名椎滩东.json", "时间": 174.52, - "精英摩拉": 200, + "精英摩拉": 0, "小怪摩拉": 751.4285714, "小怪数量": 16, "水免": 1, "高危": 0, - "精英数量": 1 + "精英数量": 0 }, { "fileName": "3212稻妻名椎滩西.json", @@ -1610,12 +1610,12 @@ { "fileName": "6707--纳塔_踞石山_庙宇_(9-11).json", "时间": 224.23, - "精英摩拉": 200, + "精英摩拉": 0, "小怪摩拉": 1129, "小怪数量": 19, "水免": 1, "高危": 0, - "精英数量": 1 + "精英数量": 0 }, { "fileName": "6708--纳塔_踞石山_彩石顶3_(6-9).json", diff --git a/repo/js/AutoHoeingOneDragon/main.js b/repo/js/AutoHoeingOneDragon/main.js index 16bf9207..28881ab8 100644 --- a/repo/js/AutoHoeingOneDragon/main.js +++ b/repo/js/AutoHoeingOneDragon/main.js @@ -1,21 +1,26 @@ //拾取时上下滑动的时间 -const timeMoveUp = 300; +const timeMoveUp = 600; const timeMoveDown = 1200; (async function () { //自定义配置处理 const operationMode = settings.operationMode || "运行锄地路线"; - const k = settings.efficiencyIndex || 0.5; + let k = settings.efficiencyIndex || 0.5; + k = k / 1.25; let targetEliteNum = (+settings.targetEliteNum || 400); targetEliteNum += 5;//预留漏怪 - let targetMonsterNum = (+settings.targetMonsterNum || 2000); + let targetMonsterNum = (+settings.targetMonsterNum + 1 || 2000); targetMonsterNum += 25;//预留漏怪 const partyName = settings.partyName || ""; // 获取 settings 中的标签,如果没有则使用默认值 - let group1Tags = (settings.tagsForGroup1 || "蕈兽").split(",").filter(Boolean); - const group2Tags = (settings.tagsForGroup2 || "").split(",").filter(Boolean); - const group3Tags = (settings.tagsForGroup3 || "").split(",").filter(Boolean); - const group4Tags = (settings.tagsForGroup4 || "").split(",").filter(Boolean); + const group1Settings = settings.tagsForGroup1 || "蕈兽"; + const group2Settings = settings.tagsForGroup2 || ""; + const group3Settings = settings.tagsForGroup3 || ""; + const group4Settings = settings.tagsForGroup4 || ""; + let group1Tags = group1Settings.split(",").filter(Boolean); + const group2Tags = group2Settings.split(",").filter(Boolean); + const group3Tags = group3Settings.split(",").filter(Boolean); + const group4Tags = group4Settings.split(",").filter(Boolean); // 将 group2Tags、group3Tags 和 group4Tags 的内容添加到 group1Tags 中,并去除重复项 group1Tags = [...new Set([...group1Tags, ...group2Tags, ...group3Tags, ...group4Tags])]; @@ -228,7 +233,7 @@ async function findBestRouteGroups(pathings, k, targetEliteNum, targetMonsterNum pathing.G1 = G1; const G2 = pathing.mora_m; // 进入二组的收益 pathing.G2 = G2; - pathing.E1 = pathing.e === 0 ? 0 : ((G1 - G2) / pathing.e) ** k * (G1 / pathing.t); // 进入一组的效率 + pathing.E1 = pathing.e === 0 ? 0 : ((G1 - 0.5 * G2) / pathing.e) ** k * (G1 / pathing.t); // 进入一组的效率 pathing.E2 = pathing.m === 0 ? 0 : (G2 / pathing.m) ** k * (G2 / pathing.t); // 进入二组的效率 }); @@ -274,7 +279,7 @@ async function findBestRouteGroups(pathings, k, targetEliteNum, targetMonsterNum } // 循环调整目标精英怪数量 - while (iterationCount < 5) { + while (iterationCount < 10) { // 第一轮选择 selectRoutesByEliteTarget(currentTargetEliteNum); @@ -283,12 +288,16 @@ async function findBestRouteGroups(pathings, k, targetEliteNum, targetMonsterNum // 检查精英怪总数是否满足条件 const diff = totalSelectedElites - targetEliteNum; - currentTargetEliteNum -= Math.round(0.6 * diff); // 调整目标精英怪数量,乘以系数并取整 + currentTargetEliteNum -= Math.round(0.5 * diff); // 调整目标精英怪数量,乘以系数并取整 if (totalSelectedElites === targetEliteNum) { break; // 如果满足目标,直接终止循环 } + if ((totalSelectedElites > targetEliteNum) && iterationCount >= 5) { + break; // 如果满足目标,直接终止循环 + } + iterationCount++; // 增加循环次数 } @@ -368,7 +377,7 @@ async function runPathWithOcr(pathFilePath, targetTexts, blacklistKeywords) { "卵": "卯" }; let thisMoveUpTime = 0; - let lastMoveUp = 0; + let lastMoveDown = 0; let lastPickupTime = new Date(); // 定义状态变量 @@ -543,23 +552,23 @@ async function runPathWithOcr(pathFilePath, targetTexts, blacklistKeywords) { if (!foundTarget) { const currentTime = new Date().getTime(); // 获取当前时间(毫秒) - // 如果距离上次上翻超过1秒,则执行上翻 - if (currentTime - lastMoveUp > timeMoveDown) { - await keyMouseScript.runFile(`assets/滚轮上翻.json`); + // 如果距离上次下翻超过timeMoveUp秒,则执行下翻 + if (currentTime - lastMoveDown > timeMoveUp) { + await keyMouseScript.runFile(`assets/滚轮下翻.json`); - // 如果这是第一次上翻,记录这次上翻的时间 + // 如果这是第一次下翻,记录这次下翻的时间 if (thisMoveUpTime === 0) { thisMoveUpTime = currentTime; // 记录第一次上翻的时间 } - // 检查是否需要更新 lastMoveUp - if (currentTime - thisMoveUpTime >= timeMoveUp) { - lastMoveUp = currentTime; // 更新 lastMoveUp 为第一次上翻的时间 - thisMoveUpTime = 0; // 重置 thisMoveUpTime,以便下一次上翻时重新记录 + // 检查是否需要更新 lastMoveDown + if (currentTime - thisMoveUpTime >= timeMoveDown) { + lastMoveDown = currentTime; // 更新 lastMoveDown 为第一次下翻的时间 + thisMoveUpTime = 0; // 重置 thisMoveUpTime,以便下一次下翻时重新记录 } } else { // 否则执行下翻 - await keyMouseScript.runFile(`assets/滚轮下翻.json`); + await keyMouseScript.runFile(`assets/滚轮上翻.json`); } } @@ -820,6 +829,9 @@ async function updateCdTimeRecord(pathings, accountName) { const cdTimeData = pathings.map(pathing => ({ fileName: pathing.fileName, //description: pathing.description, + 精英数量: pathing.e, + 小怪数量: pathing.m, + 标签: pathing.tags, cdTime: pathing.cdTime })); diff --git a/repo/js/AutoHoeingOneDragon/manifest.json b/repo/js/AutoHoeingOneDragon/manifest.json index 94127e6a..9f2904b2 100644 --- a/repo/js/AutoHoeingOneDragon/manifest.json +++ b/repo/js/AutoHoeingOneDragon/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "锄地一条龙", - "version": "1.1.2", + "version": "1.1.3", "description": "一站式解决自动化锄地,支持只拾取狗粮,请阅读README.md后使用", "authors": [ { diff --git a/repo/js/AutoHoeingOneDragon/pathing/2-小怪2000/0_6_纳塔/6707--纳塔_踞石山_庙宇_(9-11).json b/repo/js/AutoHoeingOneDragon/pathing/2-小怪2000/0_6_纳塔/6707--纳塔_踞石山_庙宇_(9-11).json index f2d83929..d8002978 100644 --- a/repo/js/AutoHoeingOneDragon/pathing/2-小怪2000/0_6_纳塔/6707--纳塔_踞石山_庙宇_(9-11).json +++ b/repo/js/AutoHoeingOneDragon/pathing/2-小怪2000/0_6_纳塔/6707--纳塔_踞石山_庙宇_(9-11).json @@ -4,7 +4,7 @@ "type": "collect", "author": "Demo&汐&mno", "version": "1.1", - "description": " 路线信息:该路线预计用时253.99秒,包含4600只精英与17只小怪,预计收入920972摩拉,包含以下怪物:1只丘丘人、1只雷箭丘丘人、1只水丘丘萨满、3只疾讯勇士·引索客、1只疾讯勇士·荡风斥候、1只疾讯勇士·重刃讯使、2只幼匿叶龙、7只匿叶龙。", + "description": " 路线信息:该路线预计用时253.99秒,包含以下怪物:1只丘丘人、1只雷箭丘丘人、1只水丘丘萨满、3只疾讯勇士·引索客、1只疾讯勇士·荡风斥候、1只疾讯勇士·重刃讯使、2只幼匿叶龙、7只匿叶龙。", "bgi_version": "0.42.0", "authors": [ {