diff --git a/repo/js/铁匠铺/README.md b/repo/js/铁匠铺/README.md index 23fa102d..2f171078 100644 --- a/repo/js/铁匠铺/README.md +++ b/repo/js/铁匠铺/README.md @@ -1,9 +1,9 @@ // ==UserScript== -// @name 自动锻造魔矿脚本 -// @version 2.00523 -// @description 自动前往铁匠铺并锻造魔矿,通过识图模式自动选择矿石 -// @author 呱呱 z -// @match 原神版本:5.6;BGI 版本:0.45.1 +// @name 自动锻造魔矿脚本 +// @version 2.2.1 +// @description 自动前往铁匠铺并锻造魔矿,通过识图模式自动选择矿石 +// @author 呱呱z +// @match 原神版本:5.6;BGI 版本:0.45.1 // ==/UserScript== /\*\* @@ -54,18 +54,27 @@ 本脚本目前处于测试阶段,欢迎反馈问题至 QQ:1765137214。 ## 更新日志 + +### 2.2.1(2025.08.03) + +- 加快锻造速度 +- 优化通知逻辑,减少通知被吞概率 + ### 2.1 -- 使用新版版本号 -- 5.7 提高了锻造上限,因此使用锻造次数从3改成了4 + +- 使用新版版本号 +- 5.7 提高了锻造上限,因此使用锻造次数从 3 改成了 4 ### 2.00523(2025.05.23) + - 新增仅领取锻造 - 优化点击逻辑 -- 修复点击锻造的次数超过3次的bug - +- 修复点击锻造的次数超过 3 次的 bug + ### 2.0(2025.05.22) + - 新增矿石不足时自动选择备用选矿 - + ### 1.40521(2025.05.21) - 新增矿石未能识别时自动选择备用选矿 diff --git a/repo/js/铁匠铺/main.js b/repo/js/铁匠铺/main.js index 75421741..786e1116 100644 --- a/repo/js/铁匠铺/main.js +++ b/repo/js/铁匠铺/main.js @@ -144,12 +144,12 @@ async function tryForgeOre(oreType, skipCheckOres = []) { if (imageResult) { found = true; imageResult.click(); - await sleep(1000); - if (notice) { - notification.send(`找到矿石: ${OreChineseMap[oreType]}`); - } else { - log.info(`找到矿石: ${OreChineseMap[oreType]}`); - } + await sleep(100); + // if (notice) { + // notification.send(`找到矿石: ${OreChineseMap[oreType]}`); + // } else { + log.info(`找到矿石: ${OreChineseMap[oreType]}`); + // } determineOre(oreType); // 点击“开始锻造”按钮并进行OCR识别 @@ -162,20 +162,22 @@ async function tryForgeOre(oreType, skipCheckOres = []) { ConfirmButton.click(); clickAttempts++; } - await sleep(1500); + await sleep(200); let ocrResults = captureGameRegion().find( RecognitionObject.ocr(ocrRegion.x, ocrRegion.y, ocrRegion.width, ocrRegion.height) ); if (ocrResults) { - log.info(`${ocrResults.text}`); + // log.info(`${ocrResults.text}`); if (ocrResults.text.includes("今日已无法锻造")) { if (notice) { - notification.send("检测到 今日已无法锻造 停止脚本"); + notification.send("检测到 今日已无法锻造 结束锻造"); } else { - log.info("检测到 今日已无法锻造 停止脚本"); + log.info("检测到 今日已无法锻造 结束锻造"); } - await click(960, 800); - await sleep(1000); + await sleep(100); + await click(960, 1042); + await sleep(200); + await click(960, 1042);// 多次点击结束弹窗 return true; // 终止锻造流程 } else if (ocrResults.text.includes("材料不足")) { @@ -185,12 +187,20 @@ async function tryForgeOre(oreType, skipCheckOres = []) { log.info("检测到 材料不足 跳过当前矿物。请检查背包,及时补充矿物。"); } clickAttempts--; // 出现材料不足时减去一次点击计数 - await click(960, 800); - await sleep(1000); + await sleep(100); + await click(960, 1042); + await sleep(200); + await click(960, 1042);// 多次点击结束弹窗 return false; // 跳过当前矿石 } } if (clickAttempts === 4) { + await sleep(1000); + if (notice) { + notification.send("锻造已完成"); + } else { + log.info("锻造已完成"); + } return true; // 达到点击上限,终止锻造流程 } } @@ -270,13 +280,11 @@ async function forgeOre(smithyName) { let ClaimAll = captureGameRegion().find(ClaimAllRo); if (ClaimAll.isExist()) { ClaimAll.click(); - await sleep(1000); + await sleep(500); let ConfirmButton = captureGameRegion().find(ConfirmDeployButtonRo); if (ConfirmButton.isExist()) { ConfirmButton.click(); - if (ocrResults.text.includes("配方")) { - ocrResults.click(); - } + await sleep(500); await click(220, 150); await sleep(1000); // 点击进入锻造界面 } else { @@ -301,14 +309,17 @@ async function forgeOre(smithyName) { } } - // 退出锻造前判断配方,如果出现“锻造队列”则点击 + // 退出锻造前判断配方,点击“锻造队列”,再次确认使用的矿物已经锻造结果 const ocrRegionAfter = { x: 185, y: 125, width: 670 - 185, height: 175 - 125 }; let ocrResultsAfter = captureGameRegion().find( RecognitionObject.ocr(ocrRegionAfter.x, ocrRegionAfter.y, ocrRegionAfter.width, ocrRegionAfter.height) ); if (ocrResultsAfter.text.includes("锻造队列")) { + await sleep(1000);//等待僵直 ocrResultsAfter.click(); - await sleep(1000); + await sleep(200); + ocrResultsAfter.click(); + await sleep(500); } break; // 退出锻造界面检测循环 } @@ -317,7 +328,7 @@ async function forgeOre(smithyName) { log.error("经过多次尝试,未能进入锻造界面"); } } else { - log.info("未能找到对话界面锻造图标,无法进入锻造流程"); + log.error("未能找到对话界面锻造图标,无法进入锻造流程"); } // 退出锻造界面并返回主界面 @@ -337,16 +348,23 @@ async function forgeOre(smithyName) { await genshin.returnMainUi(); if (notice) { notification.send("自动锻造矿石脚本开始"); + } else { + log.info("自动锻造矿石脚本开始"); } + await autoSmithy(smithyName); await forgeOre(smithyName); await genshin.returnMainUi(); - // 后退两步 + //后退两步 { keyDown("S"); await sleep(1000); keyUp("S"); await sleep(1000); } - if (notice) { - notification.send("自动锻造矿石脚本结束"); - } + //if (notice) { + // notification.send("自动锻造矿石脚本结束"); + //} + //else { + log.info("自动锻造矿石脚本结束"); + //} + })(); diff --git a/repo/js/铁匠铺/manifest.json b/repo/js/铁匠铺/manifest.json index c249edbf..c2dc9734 100644 --- a/repo/js/铁匠铺/manifest.json +++ b/repo/js/铁匠铺/manifest.json @@ -1,9 +1,9 @@ { "manifest_version": 1, "name": "自动锻造魔矿(识图版)", - "version": "2.2", + "version": "2.2.1", "bgi_version": "0.44.0", - "description": "自动选择铁匠铺和使用矿物去锻造精锻矿。\n新增功能:仅领取锻造 - 允许用户仅领取已完成的锻造物品,而不进行新的锻造。\n \n使用前请阅读“readme”文件以获取更多详细信息。 \n---更新说明--- \n- 请查阅readme", + "description": "自动选择铁匠铺和使用矿物去锻造精锻矿。\n \n使用前请阅读“readme”文件以获取更多详细信息。 \n---更新说明--- \n- 请查阅readme", "tags": [ "铁匠铺", "锻造",