js:锄地一条龙1.1.3 (#1311)

1. 优化拾取逻辑
2. 调整部分路线的数据
3. 优化路线选择逻辑
This commit is contained in:
mno
2025-07-09 12:32:40 +08:00
committed by GitHub
parent 1cd734fc84
commit 32dc016909
5 changed files with 43 additions and 27 deletions

View File

@@ -37,7 +37,7 @@
- - 默认选择 **运行锄地路线** ,选择该模式会按照后续设置选择并运行相应路线 - - 默认选择 **运行锄地路线** ,选择该模式会按照后续设置选择并运行相应路线
- - 选项 **输出地图追踪文件** 会将选择的路线读取并分组输出到js文件夹下pathingOut文件夹 - - 选项 **输出地图追踪文件** 会将选择的路线读取并分组输出到js文件夹下pathingOut文件夹
- - 选项 **强制刷新所有路线cd** 用于清除js记录的运行历史 - - 选项 **强制刷新所有路线cd** 用于清除js记录的运行历史
- **选择执行第几个路径组:** 本js会分组运行地图追踪分组方式详见后续选项需要分组运行时建议在一个配置组中填好配置之后直接【复制配置组】,再在复制配置组中选择路径组并修改配队,战斗策略等信息 - **选择执行第几个路径组:** 本js会分组运行地图追踪分组方式详见后续选项需要分组运行时请确保精英目标数量,小怪目标数量,各个路径组的标签等信息【完全相同】,复制配置组时未知原因无法正确复制配置,请不要使用
- **本路径组使用配队名称:** 填写该路径组使用的配队名称js会自动切换 - **本路径组使用配队名称:** 填写该路径组使用的配队名称js会自动切换
- **是否禁用js拾取** 本js采用黑白名单结合的方式实现仅拾取部分物品默认只拾取狗粮和晶蝶如果你想要使用bgi默认的拾取以拾取绝大部分物品请禁用 - **是否禁用js拾取** 本js采用黑白名单结合的方式实现仅拾取部分物品默认只拾取狗粮和晶蝶如果你想要使用bgi默认的拾取以拾取绝大部分物品请禁用
- **账户名称:** 本js支持多用户不同账户的记录分开存储当你需要使用多用户时请在这里填写不同的文本来区分不同账号的记录如果你只使用一个账号请不要修改该选项 - **账户名称:** 本js支持多用户不同账户的记录分开存储当你需要使用多用户时请在这里填写不同的文本来区分不同账号的记录如果你只使用一个账号请不要修改该选项
@@ -72,6 +72,10 @@
--- ---
### 更新日志 ### 更新日志
### 1.1.32025.07.09
1. 优化拾取逻辑
2. 调整部分路线的数据
3. 优化路线选择逻辑
### 1.1.02025.07.08 ### 1.1.02025.07.08
1. 优化日志输出 1. 优化日志输出
2. 新增估算剩余时间并适配abgi 2. 新增估算剩余时间并适配abgi

View File

@@ -430,12 +430,12 @@
{ {
"fileName": "3211稻妻名椎滩东.json", "fileName": "3211稻妻名椎滩东.json",
"时间": 174.52, "时间": 174.52,
"精英摩拉": 200, "精英摩拉": 0,
"小怪摩拉": 751.4285714, "小怪摩拉": 751.4285714,
"小怪数量": 16, "小怪数量": 16,
"水免": 1, "水免": 1,
"高危": 0, "高危": 0,
"精英数量": 1 "精英数量": 0
}, },
{ {
"fileName": "3212稻妻名椎滩西.json", "fileName": "3212稻妻名椎滩西.json",
@@ -1610,12 +1610,12 @@
{ {
"fileName": "6707--纳塔_踞石山_庙宇_(9-11).json", "fileName": "6707--纳塔_踞石山_庙宇_(9-11).json",
"时间": 224.23, "时间": 224.23,
"精英摩拉": 200, "精英摩拉": 0,
"小怪摩拉": 1129, "小怪摩拉": 1129,
"小怪数量": 19, "小怪数量": 19,
"水免": 1, "水免": 1,
"高危": 0, "高危": 0,
"精英数量": 1 "精英数量": 0
}, },
{ {
"fileName": "6708--纳塔_踞石山_彩石顶3_(6-9).json", "fileName": "6708--纳塔_踞石山_彩石顶3_(6-9).json",

View File

@@ -1,21 +1,26 @@
//拾取时上下滑动的时间 //拾取时上下滑动的时间
const timeMoveUp = 300; const timeMoveUp = 600;
const timeMoveDown = 1200; const timeMoveDown = 1200;
(async function () { (async function () {
//自定义配置处理 //自定义配置处理
const operationMode = settings.operationMode || "运行锄地路线"; 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); let targetEliteNum = (+settings.targetEliteNum || 400);
targetEliteNum += 5;//预留漏怪 targetEliteNum += 5;//预留漏怪
let targetMonsterNum = (+settings.targetMonsterNum || 2000); let targetMonsterNum = (+settings.targetMonsterNum + 1 || 2000);
targetMonsterNum += 25;//预留漏怪 targetMonsterNum += 25;//预留漏怪
const partyName = settings.partyName || ""; const partyName = settings.partyName || "";
// 获取 settings 中的标签,如果没有则使用默认值 // 获取 settings 中的标签,如果没有则使用默认值
let group1Tags = (settings.tagsForGroup1 || "蕈兽").split("").filter(Boolean); const group1Settings = settings.tagsForGroup1 || "蕈兽";
const group2Tags = (settings.tagsForGroup2 || "").split("").filter(Boolean); const group2Settings = settings.tagsForGroup2 || "";
const group3Tags = (settings.tagsForGroup3 || "").split("").filter(Boolean); const group3Settings = settings.tagsForGroup3 || "";
const group4Tags = (settings.tagsForGroup4 || "").split("").filter(Boolean); 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 中,并去除重复项 // 将 group2Tags、group3Tags 和 group4Tags 的内容添加到 group1Tags 中,并去除重复项
group1Tags = [...new Set([...group1Tags, ...group2Tags, ...group3Tags, ...group4Tags])]; group1Tags = [...new Set([...group1Tags, ...group2Tags, ...group3Tags, ...group4Tags])];
@@ -228,7 +233,7 @@ async function findBestRouteGroups(pathings, k, targetEliteNum, targetMonsterNum
pathing.G1 = G1; pathing.G1 = G1;
const G2 = pathing.mora_m; // 进入二组的收益 const G2 = pathing.mora_m; // 进入二组的收益
pathing.G2 = G2; 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); // 进入二组的效率 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); selectRoutesByEliteTarget(currentTargetEliteNum);
@@ -283,12 +288,16 @@ async function findBestRouteGroups(pathings, k, targetEliteNum, targetMonsterNum
// 检查精英怪总数是否满足条件 // 检查精英怪总数是否满足条件
const diff = totalSelectedElites - targetEliteNum; const diff = totalSelectedElites - targetEliteNum;
currentTargetEliteNum -= Math.round(0.6 * diff); // 调整目标精英怪数量,乘以系数并取整 currentTargetEliteNum -= Math.round(0.5 * diff); // 调整目标精英怪数量,乘以系数并取整
if (totalSelectedElites === targetEliteNum) { if (totalSelectedElites === targetEliteNum) {
break; // 如果满足目标,直接终止循环 break; // 如果满足目标,直接终止循环
} }
if ((totalSelectedElites > targetEliteNum) && iterationCount >= 5) {
break; // 如果满足目标,直接终止循环
}
iterationCount++; // 增加循环次数 iterationCount++; // 增加循环次数
} }
@@ -368,7 +377,7 @@ async function runPathWithOcr(pathFilePath, targetTexts, blacklistKeywords) {
"卵": "卯" "卵": "卯"
}; };
let thisMoveUpTime = 0; let thisMoveUpTime = 0;
let lastMoveUp = 0; let lastMoveDown = 0;
let lastPickupTime = new Date(); let lastPickupTime = new Date();
// 定义状态变量 // 定义状态变量
@@ -543,23 +552,23 @@ async function runPathWithOcr(pathFilePath, targetTexts, blacklistKeywords) {
if (!foundTarget) { if (!foundTarget) {
const currentTime = new Date().getTime(); // 获取当前时间(毫秒) const currentTime = new Date().getTime(); // 获取当前时间(毫秒)
// 如果距离上次翻超过1秒,则执行 // 如果距离上次翻超过timeMoveUp秒,则执行
if (currentTime - lastMoveUp > timeMoveDown) { if (currentTime - lastMoveDown > timeMoveUp) {
await keyMouseScript.runFile(`assets/滚轮翻.json`); await keyMouseScript.runFile(`assets/滚轮翻.json`);
// 如果这是第一次翻,记录这次翻的时间 // 如果这是第一次翻,记录这次翻的时间
if (thisMoveUpTime === 0) { if (thisMoveUpTime === 0) {
thisMoveUpTime = currentTime; // 记录第一次上翻的时间 thisMoveUpTime = currentTime; // 记录第一次上翻的时间
} }
// 检查是否需要更新 lastMoveUp // 检查是否需要更新 lastMoveDown
if (currentTime - thisMoveUpTime >= timeMoveUp) { if (currentTime - thisMoveUpTime >= timeMoveDown) {
lastMoveUp = currentTime; // 更新 lastMoveUp 为第一次翻的时间 lastMoveDown = currentTime; // 更新 lastMoveDown 为第一次翻的时间
thisMoveUpTime = 0; // 重置 thisMoveUpTime以便下一次翻时重新记录 thisMoveUpTime = 0; // 重置 thisMoveUpTime以便下一次翻时重新记录
} }
} else { } 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 => ({ const cdTimeData = pathings.map(pathing => ({
fileName: pathing.fileName, fileName: pathing.fileName,
//description: pathing.description, //description: pathing.description,
精英数量: pathing.e,
小怪数量: pathing.m,
标签: pathing.tags,
cdTime: pathing.cdTime cdTime: pathing.cdTime
})); }));

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 1, "manifest_version": 1,
"name": "锄地一条龙", "name": "锄地一条龙",
"version": "1.1.2", "version": "1.1.3",
"description": "一站式解决自动化锄地支持只拾取狗粮请阅读README.md后使用", "description": "一站式解决自动化锄地支持只拾取狗粮请阅读README.md后使用",
"authors": [ "authors": [
{ {

View File

@@ -4,7 +4,7 @@
"type": "collect", "type": "collect",
"author": "Demo&汐&mno", "author": "Demo&汐&mno",
"version": "1.1", "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", "bgi_version": "0.42.0",
"authors": [ "authors": [
{ {