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