铁匠铺js——2.2.1优化 (#1454)

* 2.2.1更新


### 2.2.1(2025.08.03)

-   加快锻造速度
-   优化通知逻辑,减少通知被吞概率

* Update main.js
This commit is contained in:
呱呱z
2025-08-03 02:46:36 +08:00
committed by GitHub
parent 6904fa2098
commit 37a6de176e
3 changed files with 64 additions and 37 deletions

View File

@@ -1,9 +1,9 @@
// ==UserScript==
// @name 自动锻造魔矿脚本
// @version 2.00523
// @description 自动前往铁匠铺并锻造魔矿,通过识图模式自动选择矿石
// @author 呱呱 z
// @match 原神版本5.6BGI 版本0.45.1
// @name 自动锻造魔矿脚本
// @version 2.2.1
// @description 自动前往铁匠铺并锻造魔矿,通过识图模式自动选择矿石
// @author 呱呱z
// @match 原神版本5.6BGI 版本0.45.1
// ==/UserScript==
/\*\*
@@ -54,16 +54,25 @@
本脚本目前处于测试阶段,欢迎反馈问题至 QQ1765137214。
## 更新日志
### 2.2.12025.08.03
- 加快锻造速度
- 优化通知逻辑,减少通知被吞概率
### 2.1
- 使用新版版本号
- 5.7 提高了锻造上限因此使用锻造次数从3改成了4
- 使用新版版本号
- 5.7 提高了锻造上限,因此使用锻造次数从 3 改成了 4
### 2.005232025.05.23
- 新增仅领取锻造
- 优化点击逻辑
- 修复点击锻造的次数超过3次的bug
- 修复点击锻造的次数超过 3 次的 bug
### 2.02025.05.22
- 新增矿石不足时自动选择备用选矿
### 1.405212025.05.21

View File

@@ -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("自动锻造矿石脚本结束");
//}
})();

View File

@@ -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": [
"铁匠铺",
"锻造",